Browse Source

推送同步

master
La123123 1 day ago
parent
commit
acbcdca058
  1. 8
      .idea/.gitignore
  2. 9
      .idea/admin.iml
  3. 6
      .idea/inspectionProfiles/Project_Default.xml
  4. 6
      .idea/misc.xml
  5. 8
      .idea/modules.xml
  6. 6
      .idea/prettier.xml
  7. 6
      .idea/vcs.xml
  8. 63
      im-admin-ui/src/api/im/userGroup/index.ts
  9. 66
      im-admin-ui/src/api/im/userGroup/types.ts
  10. 63
      im-admin-ui/src/api/im/userLable/index.ts
  11. 66
      im-admin-ui/src/api/im/userLable/types.ts
  12. 234
      im-admin-ui/src/views/im/userGroup/index.vue
  13. 234
      im-admin-ui/src/views/im/userLable/index.vue
  14. 2
      im-admin/.idea/encodings.xml
  15. BIN
      im-admin/ruoyi-admin/target/classes/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapper.class
  16. BIN
      im-admin/ruoyi-admin/target/classes/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapper.class
  17. 4
      im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapper.java
  18. 2
      im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapperImpl.java
  19. 4
      im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapper.java
  20. 2
      im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapperImpl.java
  21. 105
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserGroupController.java
  22. 105
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserLableController.java
  23. 43
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java
  24. 43
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLable.java
  25. 48
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserGroupBo.java
  26. 48
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserLableBo.java
  27. 56
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserGroupVo.java
  28. 56
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserLableVo.java
  29. 15
      im-admin/ruoyi-im/src/main/java/org/dromara/im/mapper/ImUserGroupMapper.java
  30. 15
      im-admin/ruoyi-im/src/main/java/org/dromara/im/mapper/ImUserLableMapper.java
  31. 68
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserGroupService.java
  32. 68
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserLableService.java
  33. 133
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserGroupServiceImpl.java
  34. 133
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserLableServiceImpl.java
  35. 7
      im-admin/ruoyi-im/src/main/resources/mapper/im/ImUserGroupMapper.xml
  36. 7
      im-admin/ruoyi-im/src/main/resources/mapper/im/ImUserLableMapper.xml
  37. 14
      im-admin/ruoyi-im/target/classes/META-INF/mps/autoMapper
  38. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.class
  39. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.class
  40. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupToImGroupVoMapper.class
  41. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.class
  42. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.class
  43. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImUserToImUserVoMapper.class
  44. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.class
  45. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.class
  46. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.class
  47. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.class
  48. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.class
  49. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBoToImUserMapper.class
  50. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.class
  51. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.class
  52. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.class
  53. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.class
  54. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.class
  55. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImUserVoToImUserMapper.class
  56. 6
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.java
  57. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapperImpl.java
  58. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.java
  59. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapperImpl.java
  60. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapper.java
  61. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapperImpl.java
  62. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.java
  63. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapperImpl.java
  64. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.java
  65. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapperImpl.java
  66. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapper.java
  67. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapperImpl.java
  68. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.java
  69. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapperImpl.java
  70. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.java
  71. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapperImpl.java
  72. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.java
  73. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapperImpl.java
  74. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.java
  75. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapperImpl.java
  76. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.java
  77. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapperImpl.java
  78. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapper.java
  79. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapperImpl.java
  80. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.java
  81. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapperImpl.java
  82. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.java
  83. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapperImpl.java
  84. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.java
  85. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapperImpl.java
  86. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.java
  87. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapperImpl.java
  88. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.java
  89. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapperImpl.java
  90. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapper.java
  91. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapperImpl.java

8
.idea/.gitignore

@ -0,0 +1,8 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

9
.idea/admin.iml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/inspectionProfiles/Project_Default.xml

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

6
.idea/misc.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/admin.iml" filepath="$PROJECT_DIR$/.idea/admin.iml" />
</modules>
</component>
</project>

6
.idea/prettier.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myConfigurationMode" value="AUTOMATIC" />
</component>
</project>

6
.idea/vcs.xml

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

63
im-admin-ui/src/api/im/userGroup/index.ts

@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { UserGroupVO, UserGroupForm, UserGroupQuery } from '@/api/im/userGroup/types';
/**
*
* @param query
* @returns {*}
*/
export const listUserGroup = (query?: UserGroupQuery): AxiosPromise<UserGroupVO[]> => {
return request({
url: '/im/userGroup/list',
method: 'get',
params: query
});
};
/**
*
* @param id
*/
export const getUserGroup = (id: string | number): AxiosPromise<UserGroupVO> => {
return request({
url: '/im/userGroup/' + id,
method: 'get'
});
};
/**
*
* @param data
*/
export const addUserGroup = (data: UserGroupForm) => {
return request({
url: '/im/userGroup',
method: 'post',
data: data
});
};
/**
*
* @param data
*/
export const updateUserGroup = (data: UserGroupForm) => {
return request({
url: '/im/userGroup',
method: 'put',
data: data
});
};
/**
*
* @param id
*/
export const delUserGroup = (id: string | number | Array<string | number>) => {
return request({
url: '/im/userGroup/' + id,
method: 'delete'
});
};

66
im-admin-ui/src/api/im/userGroup/types.ts

@ -0,0 +1,66 @@
export interface UserGroupVO {
/**
* id
*/
id: string | number;
/**
*
*/
groupName: string;
/**
*
*/
sort: number;
/**
*
*/
remark: string;
}
export interface UserGroupForm extends BaseEntity {
/**
* id
*/
id?: string | number;
/**
*
*/
groupName?: string;
/**
*
*/
sort?: number;
/**
*
*/
remark?: string;
}
export interface UserGroupQuery extends PageQuery {
/**
*
*/
groupName?: string;
/**
*
*/
sort?: number;
/**
*
*/
params?: any;
}

63
im-admin-ui/src/api/im/userLable/index.ts

@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { UserLableVO, UserLableForm, UserLableQuery } from '@/api/im/userLable/types';
/**
*
* @param query
* @returns {*}
*/
export const listUserLable = (query?: UserLableQuery): AxiosPromise<UserLableVO[]> => {
return request({
url: '/im/userLable/list',
method: 'get',
params: query
});
};
/**
*
* @param id
*/
export const getUserLable = (id: string | number): AxiosPromise<UserLableVO> => {
return request({
url: '/im/userLable/' + id,
method: 'get'
});
};
/**
*
* @param data
*/
export const addUserLable = (data: UserLableForm) => {
return request({
url: '/im/userLable',
method: 'post',
data: data
});
};
/**
*
* @param data
*/
export const updateUserLable = (data: UserLableForm) => {
return request({
url: '/im/userLable',
method: 'put',
data: data
});
};
/**
*
* @param id
*/
export const delUserLable = (id: string | number | Array<string | number>) => {
return request({
url: '/im/userLable/' + id,
method: 'delete'
});
};

66
im-admin-ui/src/api/im/userLable/types.ts

@ -0,0 +1,66 @@
export interface UserLableVO {
/**
* id
*/
id: string | number;
/**
*
*/
lableName: string;
/**
*
*/
sort: number;
/**
*
*/
remark: string;
}
export interface UserLableForm extends BaseEntity {
/**
* id
*/
id?: string | number;
/**
*
*/
lableName?: string;
/**
*
*/
sort?: number;
/**
*
*/
remark?: string;
}
export interface UserLableQuery extends PageQuery {
/**
*
*/
lableName?: string;
/**
*
*/
sort?: number;
/**
*
*/
params?: any;
}

234
im-admin-ui/src/views/im/userGroup/index.vue

@ -0,0 +1,234 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="分组名称" prop="groupName">
<el-input v-model="queryParams.groupName" placeholder="请输入分组名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="queryParams.sort" placeholder="请输入排序" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['im:userGroup:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['im:userGroup:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['im:userGroup:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['im:userGroup:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="userGroupList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="id" align="center" prop="id" v-if="true" />
<el-table-column label="分组名称" align="center" prop="groupName" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['im:userGroup:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['im:userGroup:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改用户分组对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="userGroupFormRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="分组名称" prop="groupName">
<el-input v-model="form.groupName" placeholder="请输入分组名称" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="UserGroup" lang="ts">
import { listUserGroup, getUserGroup, delUserGroup, addUserGroup, updateUserGroup } from '@/api/im/userGroup';
import { UserGroupVO, UserGroupQuery, UserGroupForm } from '@/api/im/userGroup/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const userGroupList = ref<UserGroupVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const userGroupFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
const initFormData: UserGroupForm = {
id: undefined,
groupName: undefined,
sort: undefined,
remark: undefined
}
const data = reactive<PageData<UserGroupForm, UserGroupQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
groupName: undefined,
sort: undefined,
params: {
}
},
rules: {
id: [
{ required: true, message: "id不能为空", trigger: "blur" }
],
groupName: [
{ required: true, message: "分组名称不能为空", trigger: "blur" }
],
sort: [
{ required: true, message: "排序不能为空", trigger: "blur" }
],
remark: [
{ required: true, message: "备注不能为空", trigger: "blur" }
]
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询用户分组列表 */
const getList = async () => {
loading.value = true;
const res = await listUserGroup(queryParams.value);
userGroupList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
userGroupFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: UserGroupVO[]) => {
ids.value = selection.map(item => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加用户分组";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: UserGroupVO) => {
reset();
const _id = row?.id || ids.value[0]
const res = await getUserGroup(_id);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改用户分组";
}
/** 提交按钮 */
const submitForm = () => {
userGroupFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.id) {
await updateUserGroup(form.value).finally(() => buttonLoading.value = false);
} else {
await addUserGroup(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: UserGroupVO) => {
const _ids = row?.id || ids.value;
await proxy?.$modal.confirm('是否确认删除用户分组编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
await delUserGroup(_ids);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('im/userGroup/export', {
...queryParams.value
}, `userGroup_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getList();
});
</script>

234
im-admin-ui/src/views/im/userLable/index.vue

@ -0,0 +1,234 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
<div v-show="showSearch" class="mb-[10px]">
<el-card shadow="hover">
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
<el-form-item label="标签名称" prop="lableName">
<el-input v-model="queryParams.lableName" placeholder="请输入标签名称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="queryParams.sort" placeholder="请输入排序" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
</el-card>
</div>
</transition>
<el-card shadow="never">
<template #header>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['im:userLable:add']">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['im:userLable:edit']">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['im:userLable:remove']">删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['im:userLable:export']">导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
</template>
<el-table v-loading="loading" :data="userLableList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="id" align="center" prop="id" v-if="true" />
<el-table-column label="标签名称" align="center" prop="lableName" />
<el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="备注" align="center" prop="remark" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['im:userLable:edit']"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['im:userLable:remove']"></el-button>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
</el-card>
<!-- 添加或修改用户分组对话框 -->
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
<el-form ref="userLableFormRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="标签名称" prop="lableName">
<el-input v-model="form.lableName" placeholder="请输入标签名称" />
</el-form-item>
<el-form-item label="排序" prop="sort">
<el-input v-model="form.sort" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注" />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="UserLable" lang="ts">
import { listUserLable, getUserLable, delUserLable, addUserLable, updateUserLable } from '@/api/im/userLable';
import { UserLableVO, UserLableQuery, UserLableForm } from '@/api/im/userLable/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
const userLableList = ref<UserLableVO[]>([]);
const buttonLoading = ref(false);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref<Array<string | number>>([]);
const single = ref(true);
const multiple = ref(true);
const total = ref(0);
const queryFormRef = ref<ElFormInstance>();
const userLableFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
const initFormData: UserLableForm = {
id: undefined,
lableName: undefined,
sort: undefined,
remark: undefined
}
const data = reactive<PageData<UserLableForm, UserLableQuery>>({
form: {...initFormData},
queryParams: {
pageNum: 1,
pageSize: 10,
lableName: undefined,
sort: undefined,
params: {
}
},
rules: {
id: [
{ required: true, message: "id不能为空", trigger: "blur" }
],
lableName: [
{ required: true, message: "标签名称不能为空", trigger: "blur" }
],
sort: [
{ required: true, message: "排序不能为空", trigger: "blur" }
],
remark: [
{ required: true, message: "备注不能为空", trigger: "blur" }
]
}
});
const { queryParams, form, rules } = toRefs(data);
/** 查询用户分组列表 */
const getList = async () => {
loading.value = true;
const res = await listUserLable(queryParams.value);
userLableList.value = res.rows;
total.value = res.total;
loading.value = false;
}
/** 取消按钮 */
const cancel = () => {
reset();
dialog.visible = false;
}
/** 表单重置 */
const reset = () => {
form.value = {...initFormData};
userLableFormRef.value?.resetFields();
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
handleQuery();
}
/** 多选框选中数据 */
const handleSelectionChange = (selection: UserLableVO[]) => {
ids.value = selection.map(item => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
}
/** 新增按钮操作 */
const handleAdd = () => {
reset();
dialog.visible = true;
dialog.title = "添加用户分组";
}
/** 修改按钮操作 */
const handleUpdate = async (row?: UserLableVO) => {
reset();
const _id = row?.id || ids.value[0]
const res = await getUserLable(_id);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "修改用户分组";
}
/** 提交按钮 */
const submitForm = () => {
userLableFormRef.value?.validate(async (valid: boolean) => {
if (valid) {
buttonLoading.value = true;
if (form.value.id) {
await updateUserLable(form.value).finally(() => buttonLoading.value = false);
} else {
await addUserLable(form.value).finally(() => buttonLoading.value = false);
}
proxy?.$modal.msgSuccess("操作成功");
dialog.visible = false;
await getList();
}
});
}
/** 删除按钮操作 */
const handleDelete = async (row?: UserLableVO) => {
const _ids = row?.id || ids.value;
await proxy?.$modal.confirm('是否确认删除用户分组编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
await delUserLable(_ids);
proxy?.$modal.msgSuccess("删除成功");
await getList();
}
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('im/userLable/export', {
...queryParams.value
}, `userLable_${new Date().getTime()}.xlsx`)
}
onMounted(() => {
getList();
});
</script>

2
im-admin/.idea/encodings.xml

@ -47,8 +47,6 @@
<file url="file://$PROJECT_DIR$/ruoyi-common/ruoyi-common-websocket/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-common/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-common/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-im/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-im/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-modules/ruoyi-generator/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-modules/ruoyi-generator/src/main/resources" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/ruoyi-modules/ruoyi-system/src/main/java" charset="UTF-8" />

BIN
im-admin/ruoyi-admin/target/classes/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-admin/target/classes/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapper.class

Binary file not shown.

4
im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapper.java

@ -1,13 +1,13 @@
package org.dromara.system.domain.vo;
import io.github.linpeilie.AutoMapperConfig__166;
import io.github.linpeilie.AutoMapperConfig__170;
import io.github.linpeilie.BaseMapper;
import org.dromara.web.domain.vo.TenantListVo;
import org.dromara.web.domain.vo.TenantListVoToSysTenantVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__166.class,
config = AutoMapperConfig__170.class,
uses = {TenantListVoToSysTenantVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/system/domain/vo/SysTenantVoToTenantListVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T15:17:33+0800",
date = "2026-04-01T15:40:14+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapper.java

@ -1,13 +1,13 @@
package org.dromara.web.domain.vo;
import io.github.linpeilie.AutoMapperConfig__166;
import io.github.linpeilie.AutoMapperConfig__170;
import io.github.linpeilie.BaseMapper;
import org.dromara.system.domain.vo.SysTenantVo;
import org.dromara.system.domain.vo.SysTenantVoToTenantListVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__166.class,
config = AutoMapperConfig__170.class,
uses = {SysTenantVoToTenantListVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-admin/target/generated-sources/annotations/org/dromara/web/domain/vo/TenantListVoToSysTenantVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T15:17:33+0800",
date = "2026-04-01T15:40:14+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

105
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserGroupController.java

@ -0,0 +1,105 @@
package org.dromara.im.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.im.domain.vo.ImUserGroupVo;
import org.dromara.im.domain.bo.ImUserGroupBo;
import org.dromara.im.service.IImUserGroupService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 用户分组
*
* @author Blue
* @date 2026-04-01
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/im/userGroup")
public class ImUserGroupController extends BaseController {
private final IImUserGroupService imUserGroupService;
/**
* 查询用户分组列表
*/
@SaCheckPermission("im:userGroup:list")
@GetMapping("/list")
public TableDataInfo<ImUserGroupVo> list(ImUserGroupBo bo, PageQuery pageQuery) {
return imUserGroupService.queryPageList(bo, pageQuery);
}
/**
* 导出用户分组列表
*/
@SaCheckPermission("im:userGroup:export")
@Log(title = "用户分组", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ImUserGroupBo bo, HttpServletResponse response) {
List<ImUserGroupVo> list = imUserGroupService.queryList(bo);
ExcelUtil.exportExcel(list, "用户分组", ImUserGroupVo.class, response);
}
/**
* 获取用户分组详细信息
*
* @param id 主键
*/
@SaCheckPermission("im:userGroup:query")
@GetMapping("/{id}")
public R<ImUserGroupVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(imUserGroupService.queryById(id));
}
/**
* 新增用户分组
*/
@SaCheckPermission("im:userGroup:add")
@Log(title = "用户分组", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ImUserGroupBo bo) {
return toAjax(imUserGroupService.insertByBo(bo));
}
/**
* 修改用户分组
*/
@SaCheckPermission("im:userGroup:edit")
@Log(title = "用户分组", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ImUserGroupBo bo) {
return toAjax(imUserGroupService.updateByBo(bo));
}
/**
* 删除用户分组
*
* @param ids 主键串
*/
@SaCheckPermission("im:userGroup:remove")
@Log(title = "用户分组", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(imUserGroupService.deleteWithValidByIds(List.of(ids), true));
}
}

105
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserLableController.java

@ -0,0 +1,105 @@
package org.dromara.im.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.im.domain.vo.ImUserLableVo;
import org.dromara.im.domain.bo.ImUserLableBo;
import org.dromara.im.service.IImUserLableService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 用户分组
*
* @author Blue
* @date 2026-04-01
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/im/userLable")
public class ImUserLableController extends BaseController {
private final IImUserLableService imUserLableService;
/**
* 查询用户分组列表
*/
@SaCheckPermission("im:userLable:list")
@GetMapping("/list")
public TableDataInfo<ImUserLableVo> list(ImUserLableBo bo, PageQuery pageQuery) {
return imUserLableService.queryPageList(bo, pageQuery);
}
/**
* 导出用户分组列表
*/
@SaCheckPermission("im:userLable:export")
@Log(title = "用户分组", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ImUserLableBo bo, HttpServletResponse response) {
List<ImUserLableVo> list = imUserLableService.queryList(bo);
ExcelUtil.exportExcel(list, "用户分组", ImUserLableVo.class, response);
}
/**
* 获取用户分组详细信息
*
* @param id 主键
*/
@SaCheckPermission("im:userLable:query")
@GetMapping("/{id}")
public R<ImUserLableVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(imUserLableService.queryById(id));
}
/**
* 新增用户分组
*/
@SaCheckPermission("im:userLable:add")
@Log(title = "用户分组", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ImUserLableBo bo) {
return toAjax(imUserLableService.insertByBo(bo));
}
/**
* 修改用户分组
*/
@SaCheckPermission("im:userLable:edit")
@Log(title = "用户分组", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ImUserLableBo bo) {
return toAjax(imUserLableService.updateByBo(bo));
}
/**
* 删除用户分组
*
* @param ids 主键串
*/
@SaCheckPermission("im:userLable:remove")
@Log(title = "用户分组", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(imUserLableService.deleteWithValidByIds(List.of(ids), true));
}
}

43
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserGroup.java

@ -0,0 +1,43 @@
package org.dromara.im.domain;
import com.fhs.core.trans.vo.TransPojo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 用户分组对象 im_user_group
*
* @author Blue
* @date 2026-04-01
*/
@Data
@TableName("im_user_group")
public class ImUserGroup implements TransPojo {
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 分组名称
*/
private String groupName;
/**
* 排序
*/
private Long sort;
/**
* 备注
*/
private String remark;
}

43
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUserLable.java

@ -0,0 +1,43 @@
package org.dromara.im.domain;
import com.fhs.core.trans.vo.TransPojo;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 用户分组对象 im_user_lable
*
* @author Blue
* @date 2026-04-01
*/
@Data
@TableName("im_user_lable")
public class ImUserLable implements TransPojo {
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 标签名称
*/
private String lableName;
/**
* 排序
*/
private Long sort;
/**
* 备注
*/
private String remark;
}

48
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserGroupBo.java

@ -0,0 +1,48 @@
package org.dromara.im.domain.bo;
import org.dromara.im.domain.ImUserGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 用户分组业务对象 im_user_group
*
* @author Blue
* @date 2026-04-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ImUserGroup.class, reverseConvertGenerate = false)
public class ImUserGroupBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 分组名称
*/
@NotBlank(message = "分组名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String groupName;
/**
* 排序
*/
@NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sort;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

48
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserLableBo.java

@ -0,0 +1,48 @@
package org.dromara.im.domain.bo;
import org.dromara.im.domain.ImUserLable;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 用户分组业务对象 im_user_lable
*
* @author Blue
* @date 2026-04-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ImUserLable.class, reverseConvertGenerate = false)
public class ImUserLableBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 标签名称
*/
@NotBlank(message = "标签名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String lableName;
/**
* 排序
*/
@NotNull(message = "排序不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sort;
/**
* 备注
*/
@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
private String remark;
}

56
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserGroupVo.java

@ -0,0 +1,56 @@
package org.dromara.im.domain.vo;
import org.dromara.im.domain.ImUserGroup;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 用户分组视图对象 im_user_group
*
* @author Blue
* @date 2026-04-01
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ImUserGroup.class)
public class ImUserGroupVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 分组名称
*/
@ExcelProperty(value = "分组名称")
private String groupName;
/**
* 排序
*/
@ExcelProperty(value = "排序")
private Long sort;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

56
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserLableVo.java

@ -0,0 +1,56 @@
package org.dromara.im.domain.vo;
import org.dromara.im.domain.ImUserLable;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 用户分组视图对象 im_user_lable
*
* @author Blue
* @date 2026-04-01
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = ImUserLable.class)
public class ImUserLableVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 标签名称
*/
@ExcelProperty(value = "标签名称")
private String lableName;
/**
* 排序
*/
@ExcelProperty(value = "排序")
private Long sort;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

15
im-admin/ruoyi-im/src/main/java/org/dromara/im/mapper/ImUserGroupMapper.java

@ -0,0 +1,15 @@
package org.dromara.im.mapper;
import org.dromara.im.domain.ImUserGroup;
import org.dromara.im.domain.vo.ImUserGroupVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 用户分组Mapper接口
*
* @author Blue
* @date 2026-04-01
*/
public interface ImUserGroupMapper extends BaseMapperPlus<ImUserGroup, ImUserGroupVo> {
}

15
im-admin/ruoyi-im/src/main/java/org/dromara/im/mapper/ImUserLableMapper.java

@ -0,0 +1,15 @@
package org.dromara.im.mapper;
import org.dromara.im.domain.ImUserLable;
import org.dromara.im.domain.vo.ImUserLableVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 用户分组Mapper接口
*
* @author Blue
* @date 2026-04-01
*/
public interface ImUserLableMapper extends BaseMapperPlus<ImUserLable, ImUserLableVo> {
}

68
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserGroupService.java

@ -0,0 +1,68 @@
package org.dromara.im.service;
import org.dromara.im.domain.vo.ImUserGroupVo;
import org.dromara.im.domain.bo.ImUserGroupBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 用户分组Service接口
*
* @author Blue
* @date 2026-04-01
*/
public interface IImUserGroupService {
/**
* 查询用户分组
*
* @param id 主键
* @return 用户分组
*/
ImUserGroupVo queryById(Long id);
/**
* 分页查询用户分组列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用户分组分页列表
*/
TableDataInfo<ImUserGroupVo> queryPageList(ImUserGroupBo bo, PageQuery pageQuery);
/**
* 查询符合条件的用户分组列表
*
* @param bo 查询条件
* @return 用户分组列表
*/
List<ImUserGroupVo> queryList(ImUserGroupBo bo);
/**
* 新增用户分组
*
* @param bo 用户分组
* @return 是否新增成功
*/
Boolean insertByBo(ImUserGroupBo bo);
/**
* 修改用户分组
*
* @param bo 用户分组
* @return 是否修改成功
*/
Boolean updateByBo(ImUserGroupBo bo);
/**
* 校验并批量删除用户分组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

68
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserLableService.java

@ -0,0 +1,68 @@
package org.dromara.im.service;
import org.dromara.im.domain.vo.ImUserLableVo;
import org.dromara.im.domain.bo.ImUserLableBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
/**
* 用户分组Service接口
*
* @author Blue
* @date 2026-04-01
*/
public interface IImUserLableService {
/**
* 查询用户分组
*
* @param id 主键
* @return 用户分组
*/
ImUserLableVo queryById(Long id);
/**
* 分页查询用户分组列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用户分组分页列表
*/
TableDataInfo<ImUserLableVo> queryPageList(ImUserLableBo bo, PageQuery pageQuery);
/**
* 查询符合条件的用户分组列表
*
* @param bo 查询条件
* @return 用户分组列表
*/
List<ImUserLableVo> queryList(ImUserLableBo bo);
/**
* 新增用户分组
*
* @param bo 用户分组
* @return 是否新增成功
*/
Boolean insertByBo(ImUserLableBo bo);
/**
* 修改用户分组
*
* @param bo 用户分组
* @return 是否修改成功
*/
Boolean updateByBo(ImUserLableBo bo);
/**
* 校验并批量删除用户分组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

133
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserGroupServiceImpl.java

@ -0,0 +1,133 @@
package org.dromara.im.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.dynamic.datasource.annotation.DS;
import lombok.RequiredArgsConstructor;
import org.dromara.im.constant.ImConstant;
import org.springframework.stereotype.Service;
import org.dromara.im.domain.bo.ImUserGroupBo;
import org.dromara.im.domain.vo.ImUserGroupVo;
import org.dromara.im.domain.ImUserGroup;
import org.dromara.im.mapper.ImUserGroupMapper;
import org.dromara.im.service.IImUserGroupService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 用户分组 Service 业务层处理
*
* @author Blue
* @date 2026-04-01
*/
@DS(ImConstant.DS_IM_PLATFORM)
@RequiredArgsConstructor
@Service
public class ImUserGroupServiceImpl implements IImUserGroupService {
private final ImUserGroupMapper baseMapper;
/**
* 查询用户分组
*
* @param id 主键
* @return 用户分组
*/
@Override
public ImUserGroupVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询用户分组列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用户分组分页列表
*/
@Override
public TableDataInfo<ImUserGroupVo> queryPageList(ImUserGroupBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ImUserGroup> lqw = buildQueryWrapper(bo);
Page<ImUserGroupVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的用户分组列表
*
* @param bo 查询条件
* @return 用户分组列表
*/
@Override
public List<ImUserGroupVo> queryList(ImUserGroupBo bo) {
LambdaQueryWrapper<ImUserGroup> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ImUserGroup> buildQueryWrapper(ImUserGroupBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ImUserGroup> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getGroupName()), ImUserGroup::getGroupName, bo.getGroupName());
lqw.eq(bo.getSort() != null, ImUserGroup::getSort, bo.getSort());
return lqw;
}
/**
* 新增用户分组
*
* @param bo 用户分组
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ImUserGroupBo bo) {
ImUserGroup add = MapstructUtils.convert(bo, ImUserGroup.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改用户分组
*
* @param bo 用户分组
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ImUserGroupBo bo) {
ImUserGroup update = MapstructUtils.convert(bo, ImUserGroup.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ImUserGroup entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除用户分组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

133
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserLableServiceImpl.java

@ -0,0 +1,133 @@
package org.dromara.im.service.impl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.dynamic.datasource.annotation.DS;
import lombok.RequiredArgsConstructor;
import org.dromara.im.constant.ImConstant;
import org.springframework.stereotype.Service;
import org.dromara.im.domain.bo.ImUserLableBo;
import org.dromara.im.domain.vo.ImUserLableVo;
import org.dromara.im.domain.ImUserLable;
import org.dromara.im.mapper.ImUserLableMapper;
import org.dromara.im.service.IImUserLableService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 用户分组 Service 业务层处理
*
* @author Blue
* @date 2026-04-01
*/
@DS(ImConstant.DS_IM_PLATFORM)
@RequiredArgsConstructor
@Service
public class ImUserLableServiceImpl implements IImUserLableService {
private final ImUserLableMapper baseMapper;
/**
* 查询用户分组
*
* @param id 主键
* @return 用户分组
*/
@Override
public ImUserLableVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询用户分组列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 用户分组分页列表
*/
@Override
public TableDataInfo<ImUserLableVo> queryPageList(ImUserLableBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ImUserLable> lqw = buildQueryWrapper(bo);
Page<ImUserLableVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的用户分组列表
*
* @param bo 查询条件
* @return 用户分组列表
*/
@Override
public List<ImUserLableVo> queryList(ImUserLableBo bo) {
LambdaQueryWrapper<ImUserLable> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<ImUserLable> buildQueryWrapper(ImUserLableBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ImUserLable> lqw = Wrappers.lambdaQuery();
lqw.like(StringUtils.isNotBlank(bo.getLableName()), ImUserLable::getLableName, bo.getLableName());
lqw.eq(bo.getSort() != null, ImUserLable::getSort, bo.getSort());
return lqw;
}
/**
* 新增用户分组
*
* @param bo 用户分组
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(ImUserLableBo bo) {
ImUserLable add = MapstructUtils.convert(bo, ImUserLable.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改用户分组
*
* @param bo 用户分组
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ImUserLableBo bo) {
ImUserLable update = MapstructUtils.convert(bo, ImUserLable.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(ImUserLable entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除用户分组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

7
im-admin/ruoyi-im/src/main/resources/mapper/im/ImUserGroupMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.im.mapper.ImUserGroupMapper">
</mapper>

7
im-admin/ruoyi-im/src/main/resources/mapper/im/ImUserLableMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.im.mapper.ImUserLableMapper">
</mapper>

14
im-admin/ruoyi-im/target/classes/META-INF/mps/autoMapper

@ -1,12 +1,16 @@
org.dromara.im.domain.bo.ImGroupMessageBo
org.dromara.im.domain.bo.ImSensitiveWordBo
org.dromara.im.domain.vo.ImGroupMemberVo
org.dromara.im.domain.bo.ImUserGroupBo
org.dromara.im.domain.vo.ImPrivateMessageVo
org.dromara.im.domain.vo.ImSensitiveWordVo
org.dromara.im.domain.bo.ImGroupMemberBo
org.dromara.im.domain.vo.ImGroupVo
org.dromara.im.domain.bo.ImUserLableBo
org.dromara.im.domain.vo.ImUserLableVo
org.dromara.im.domain.vo.ImGroupMessageVo
org.dromara.im.domain.vo.ImUserGroupVo
org.dromara.im.domain.vo.ImUserVo
org.dromara.im.domain.bo.ImGroupBo
org.dromara.im.domain.bo.ImPrivateMessageBo
org.dromara.im.domain.bo.ImSensitiveWordBo
org.dromara.im.domain.vo.ImGroupMemberVo
org.dromara.im.domain.vo.ImSensitiveWordVo
org.dromara.im.domain.vo.ImGroupVo
org.dromara.im.domain.bo.ImGroupBo
org.dromara.im.domain.bo.ImUserBo

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupToImGroupVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImUserToImUserVoMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBoToImUserMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.class

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImUserVoToImUserMapper.class

Binary file not shown.

6
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImGroupMemberBoToImGroupMemberMapper;
import org.dromara.im.domain.vo.ImGroupMemberVo;
@ -8,8 +8,8 @@ import org.dromara.im.domain.vo.ImGroupMemberVoToImGroupMemberMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
uses = {ImGroupMemberVoToImGroupMemberMapper.class,ImGroupMemberBoToImGroupMemberMapper.class},
config = AutoMapperConfig__169.class,
uses = {ImGroupMemberBoToImGroupMemberMapper.class,ImGroupMemberVoToImGroupMemberMapper.class},
imports = {}
)
public interface ImGroupMemberToImGroupMemberVoMapper extends BaseMapper<ImGroupMember, ImGroupMemberVo> {

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapperImpl.java

@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImGroupMessageBoToImGroupMessageMapper;
import org.dromara.im.domain.vo.ImGroupMessageVo;
@ -8,7 +8,7 @@ import org.dromara.im.domain.vo.ImGroupMessageVoToImGroupMessageMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImGroupMessageBoToImGroupMessageMapper.class,ImGroupMessageVoToImGroupMessageMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImGroupBoToImGroupMapper;
import org.dromara.im.domain.vo.ImGroupVo;
@ -8,7 +8,7 @@ import org.dromara.im.domain.vo.ImGroupVoToImGroupMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImGroupVoToImGroupMapper.class,ImGroupBoToImGroupMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapperImpl.java

@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImPrivateMessageBoToImPrivateMessageMapper;
import org.dromara.im.domain.vo.ImPrivateMessageVo;
@ -8,7 +8,7 @@ import org.dromara.im.domain.vo.ImPrivateMessageVoToImPrivateMessageMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImPrivateMessageVoToImPrivateMessageMapper.class,ImPrivateMessageBoToImPrivateMessageMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImSensitiveWordBoToImSensitiveWordMapper;
import org.dromara.im.domain.vo.ImSensitiveWordVo;
@ -8,7 +8,7 @@ import org.dromara.im.domain.vo.ImSensitiveWordVoToImSensitiveWordMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImSensitiveWordBoToImSensitiveWordMapper.class,ImSensitiveWordVoToImSensitiveWordMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:08+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapper.java

@ -1,6 +1,6 @@
package org.dromara.im.domain;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.bo.ImUserBoToImUserMapper;
import org.dromara.im.domain.vo.ImUserVo;
@ -8,7 +8,7 @@ import org.dromara.im.domain.vo.ImUserVoToImUserMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImUserVoToImUserMapper.class,ImUserBoToImUserMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroup;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMember;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMessage;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImPrivateMessage;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImSensitiveWord;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapper.java

@ -1,12 +1,12 @@
package org.dromara.im.domain.bo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImUser;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMember;
import org.dromara.im.domain.ImGroupMemberToImGroupMemberVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImGroupMemberToImGroupMemberVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapperImpl.java

@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMessage;
import org.dromara.im.domain.ImGroupMessageToImGroupMessageVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImGroupMessageToImGroupMessageVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroup;
import org.dromara.im.domain.ImGroupToImGroupVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImGroupToImGroupVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapperImpl.java

@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImPrivateMessage;
import org.dromara.im.domain.ImPrivateMessageToImPrivateMessageVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImPrivateMessageToImPrivateMessageVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImSensitiveWord;
import org.dromara.im.domain.ImSensitiveWordToImSensitiveWordVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImSensitiveWordToImSensitiveWordVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:05+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

4
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapper.java

@ -1,13 +1,13 @@
package org.dromara.im.domain.vo;
import io.github.linpeilie.AutoMapperConfig__167;
import io.github.linpeilie.AutoMapperConfig__169;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImUser;
import org.dromara.im.domain.ImUserToImUserVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__167.class,
config = AutoMapperConfig__169.class,
uses = {ImUserToImUserVoMapper.class},
imports = {}
)

2
im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapperImpl.java

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2026-03-31T16:18:09+0800",
date = "2026-04-01T15:40:06+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component

Loading…
Cancel
Save