Browse Source

标签与群组修改

master
La123123 1 day ago
parent
commit
94936fda93
  1. 20
      im-admin-ui/src/api/im/user/index.ts
  2. 37
      im-admin-ui/src/api/im/user/types.ts
  3. 211
      im-admin-ui/src/views/im/user/index.vue
  4. 12
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserLabelController.java
  5. 7
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java
  6. 10
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserBo.java
  7. 9
      im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserVo.java
  8. 8
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserLabelService.java
  9. 24
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserLabelServiceImpl.java
  10. 20
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java
  11. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.class
  12. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.class
  13. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImGroupToImGroupVoMapper.class
  14. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.class
  15. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.class
  16. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImUser.class
  17. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImUserToImUserVoMapper.class
  18. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/ImUserToImUserVoMapperImpl.class
  19. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.class
  20. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.class
  21. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.class
  22. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.class
  23. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.class
  24. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBo.class
  25. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBoToImUserMapper.class
  26. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBoToImUserMapperImpl.class
  27. 2
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBo__Javadoc.json
  28. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.class
  29. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.class
  30. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.class
  31. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.class
  32. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.class
  33. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImUserVo.class
  34. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImUserVoToImUserMapper.class
  35. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/domain/vo/ImUserVoToImUserMapperImpl.class
  36. BIN
      im-admin/ruoyi-im/target/classes/org/dromara/im/service/impl/ImUserServiceImpl.class
  37. 6
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapper.java
  38. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMemberToImGroupMemberVoMapperImpl.java
  39. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapper.java
  40. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupMessageToImGroupMessageVoMapperImpl.java
  41. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapper.java
  42. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImGroupToImGroupVoMapperImpl.java
  43. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapper.java
  44. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImPrivateMessageToImPrivateMessageVoMapperImpl.java
  45. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapper.java
  46. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImSensitiveWordToImSensitiveWordVoMapperImpl.java
  47. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapper.java
  48. 6
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/ImUserToImUserVoMapperImpl.java
  49. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapper.java
  50. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupBoToImGroupMapperImpl.java
  51. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapper.java
  52. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMemberBoToImGroupMemberMapperImpl.java
  53. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapper.java
  54. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImGroupMessageBoToImGroupMessageMapperImpl.java
  55. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapper.java
  56. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImPrivateMessageBoToImPrivateMessageMapperImpl.java
  57. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapper.java
  58. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImSensitiveWordBoToImSensitiveWordMapperImpl.java
  59. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapper.java
  60. 6
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/bo/ImUserBoToImUserMapperImpl.java
  61. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapper.java
  62. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMemberVoToImGroupMemberMapperImpl.java
  63. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapper.java
  64. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupMessageVoToImGroupMessageMapperImpl.java
  65. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapper.java
  66. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImGroupVoToImGroupMapperImpl.java
  67. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapper.java
  68. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImPrivateMessageVoToImPrivateMessageMapperImpl.java
  69. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapper.java
  70. 2
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImSensitiveWordVoToImSensitiveWordMapperImpl.java
  71. 4
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapper.java
  72. 6
      im-admin/ruoyi-im/target/generated-sources/annotations/org/dromara/im/domain/vo/ImUserVoToImUserMapperImpl.java

20
im-admin-ui/src/api/im/user/index.ts

@ -89,3 +89,23 @@ export const getActiveUserStats = (): AxiosPromise<any> => {
method: 'get'
});
};
/**
*
*/
export const getLabelList = (): AxiosPromise<any> => {
return request({
url: '/im/userLabel/labelOptions',
method: 'post'
});
};
/**
*
*/
export const getGroupList = (): AxiosPromise<any> => {
return request({
url: '/im/userGroup/selectList',
method: 'post'
});
};

37
im-admin-ui/src/api/im/user/types.ts

@ -68,7 +68,15 @@ export interface UserVO {
*/
reason: string;
/**
* ids
*/
labelIds?: string;
/**
* ids
*/
groupIds?: string;
}
export interface UserForm extends BaseEntity {
@ -137,10 +145,18 @@ export interface UserForm extends BaseEntity {
*/
reason?: string;
/**
* ids
*/
labelIds?: string;
/**
* ids
*/
groupIds?: string;
}
export interface UserQuery extends PageQuery {
/**
*
*/
@ -155,13 +171,22 @@ export interface UserQuery extends PageQuery {
*/
createdTime?: string;
/**
*
*/
*
*/
params?: any;
/**
* ids
*/
labelIds?: string;
/**
* ids
*/
groupIds?: string;
}
export interface UserBanDTO {
/**
* id
*/
@ -173,13 +198,9 @@ export interface UserBanDTO {
reason?: string;
}
export interface UserUnbanDTO {
/**
* id
*/
id?: string | number;
}

211
im-admin-ui/src/views/im/user/index.vue

@ -1,7 +1,6 @@
<template>
<div class="p-2">
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
:leave-active-class="proxy?.animate.searchAnimate.leave">
<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">
@ -11,11 +10,20 @@
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable @keyup.enter="handleQuery" />
</el-form-item>
<el-form-item label="标签" prop="labelIds">
<el-select v-model="queryParams.labelIds" multiple collapse-tags collapse-tags-tooltip placeholder="请选择标签" style="width: 200px">
<el-option v-for="item in labelOptions" :key="item.id" :label="item.labelName" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="群组" prop="groupIds">
<el-select v-model="queryParams.groupIds" multiple collapse-tags collapse-tags-tooltip placeholder="请选择群组" style="width: 200px">
<el-option v-for="item in groupOptions" :key="item.id" :label="item.groupName" :value="item.id" />
</el-select>
</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-button type="warning" plain icon="Download" @click="handleExport"
v-hasPermi="['im:user:export']">导出</el-button>
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['im:user:export']">导出</el-button>
</el-form-item>
</el-form>
</el-card>
@ -36,6 +44,31 @@
<dict-tag :options="sys_user_sex" :value="scope.row.sex" />
</template>
</el-table-column>
<el-table-column label="标签" align="center" prop="labelIds" width="200">
<template #default="scope">
<el-tag
v-for="labelId in (scope.row.labelIds || '').split(',').filter(id => id)"
:key="labelId"
size="small"
style="margin-right: 5px; margin-bottom: 5px;"
>
{{ getLabelNameById(labelId) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="群组" align="center" prop="groupIds" width="200">
<template #default="scope">
<el-tag
v-for="groupId in (scope.row.groupIds || '').split(',').filter(id => id)"
:key="groupId"
type="info"
size="small"
style="margin-right: 5px; margin-bottom: 5px;"
>
{{ getGroupNameById(groupId) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="是否被封禁" align="center" prop="isBanned">
<template #default="scope">
<dict-tag :options="im_bool" :value="scope.row.isBanned" />
@ -53,25 +86,20 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" v-hasPermi="['im:user:query']"
@click="handleDetail(scope.row)">详情</el-button>
<el-button v-if="scope.row.isBanned" link type="danger" v-hasPermi="['im:user:ban']"
@click="unbanHandle(scope.row)">解封</el-button>
<el-button v-else link type="danger" v-hasPermi="['im:user:ban']"
@click="banHandle(scope.row)">封禁</el-button>
<el-button link type="primary" v-hasPermi="['im:user:query']" @click="handleDetail(scope.row)">详情</el-button>
<el-button v-if="scope.row.isBanned" link type="danger" v-hasPermi="['im:user:ban']" @click="unbanHandle(scope.row)">解封</el-button>
<el-button v-else link type="danger" v-hasPermi="['im:user:ban']" @click="banHandle(scope.row)">封禁</el-button>
</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" />
<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="800px" append-to-body>
<el-form ref="userFormRef" :model="form" :rules="rules" label-width="100px" disabled>
<el-form-item label="用户头像" prop="headImage">
<image-preview v-if="form.headImageThumb" :src="form.headImageThumb" :full-src="form.headImage"
:width="100" :height="100" />
<image-preview v-if="form.headImageThumb" :src="form.headImageThumb" :full-src="form.headImage" :width="100" :height="100" />
</el-form-item>
<el-form-item label="用户名" prop="userName">
<el-input v-model="form.userName" />
@ -80,24 +108,43 @@
<dict-tag :options="sys_user_sex" :value="form.sex" />
</el-form-item>
<el-form-item label="用户昵称" prop="nickName">
<el-input v-model="form.nickName" />
<el-input v-model="form.nickName" />
</el-form-item>
<el-form-item label="个性签名" prop="signature">
<el-input v-model="form.signature" />
</el-form-item>
<el-form-item label="最后登录时间" prop="lastLoginTime">
<el-date-picker clearable v-model="form.lastLoginTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
</el-date-picker>
<el-date-picker clearable v-model="form.lastLoginTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"> </el-date-picker>
</el-form-item>
<el-form-item label="注册时间" prop="createdTime">
<el-date-picker clearable v-model="form.createdTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
</el-date-picker>
<el-date-picker clearable v-model="form.createdTime" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"> </el-date-picker>
</el-form-item>
<el-form-item label="标签" prop="labelIds">
<el-tag
v-for="labelId in (form.labelIds || '').split(',').filter(id => id)"
:key="labelId"
size="small"
style="margin-right: 5px; margin-bottom: 5px;"
>
{{ getLabelNameById(labelId) }}
</el-tag>
</el-form-item>
<el-form-item label="群组" prop="groupIds">
<el-tag
v-for="groupId in (form.groupIds || '').split(',').filter(id => id)"
:key="groupId"
type="info"
size="small"
style="margin-right: 5px; margin-bottom: 5px;"
>
{{ getGroupNameById(groupId) }}
</el-tag>
</el-form-item>
<el-form-item label="是否被封禁" prop="isBanned">
<dict-tag :options="im_bool" :value="form.isBanned" />
</el-form-item>
<el-form-item v-if="form.isBanned" label="被封禁原因" prop="reason">
<el-input v-model="form.reason"/>
<el-input v-model="form.reason" />
</el-form-item>
</el-form>
<template #footer>
@ -110,7 +157,7 @@
</template>
<script setup name="User" lang="ts">
import { listUser, getUser, ban, unban } from '@/api/im/user';
import { listUser, getUser, ban, unban, getLabelList, getGroupList } from '@/api/im/user';
import { UserVO, UserQuery, UserForm } from '@/api/im/user/types';
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
@ -123,6 +170,10 @@ const single = ref(true);
const multiple = ref(true);
const total = ref(0);
//
const labelOptions = ref<any[]>([]);
const groupOptions = ref<any[]>([]);
const queryFormRef = ref<ElFormInstance>();
const userFormRef = ref<ElFormInstance>();
const dialog = reactive<DialogOption>({
@ -143,8 +194,10 @@ const initFormData: UserForm = {
createdTime: undefined,
type: undefined,
isBanned: undefined,
reason: undefined
}
reason: undefined,
labelIds: '',
groupIds: ''
};
const data = reactive<PageData<UserForm, UserQuery>>({
form: { ...initFormData },
queryParams: {
@ -152,8 +205,9 @@ const data = reactive<PageData<UserForm, UserQuery>>({
pageSize: 10,
userName: undefined,
nickName: undefined,
params: {
}
labelIds: [],
groupIds: [],
params: {}
},
rules: {}
});
@ -165,55 +219,69 @@ const { sys_user_sex } = toRefs<any>(proxy?.useDict('sys_user_sex'));
/** 查询用户列表 */
const getList = async () => {
loading.value = true;
const res = await listUser(queryParams.value);
// ID
const params = { ...queryParams.value };
if (params.labelIds && Array.isArray(params.labelIds)) {
params.labelIds = params.labelIds.join(',');
}
if (params.groupIds && Array.isArray(params.groupIds)) {
params.groupIds = params.groupIds.join(',');
}
const res = await listUser(params);
userList.value = res.rows;
total.value = res.total;
loading.value = false;
console.log("getList")
}
console.log('getList');
};
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.value.pageNum = 1;
getList();
console.log("handleQuery")
}
console.log('handleQuery');
};
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
//
queryParams.value.labelIds = [];
queryParams.value.groupIds = [];
handleQuery();
console.log("handleQuery")
}
console.log('handleQuery');
};
/** 多选框选中数据 */
const handleSelectionChange = (selection: UserVO[]) => {
ids.value = selection.map(item => item.id);
ids.value = selection.map((item) => item.id);
single.value = selection.length != 1;
multiple.value = !selection.length;
console.log("handleSelectionChange")
}
console.log('handleSelectionChange');
};
/** 表单重置 */
const reset = () => {
form.value = { ...initFormData };
userFormRef.value?.resetFields();
console.log("reset")
}
console.log('reset');
};
/** 修改按钮操作 */
const handleDetail = async (row?: UserVO) => {
reset();
const _id = row?.id || ids.value[0]
const _id = row?.id || ids.value[0];
const res = await getUser(_id);
Object.assign(form.value, res.data);
dialog.visible = true;
dialog.title = "用户信息";
}
dialog.title = '用户信息';
};
/** 提交按钮 */
const submitForm = () => {
dialog.visible = false;
}
};
const banHandle = (user: any) => {
ElMessageBox.prompt('封禁原因:', '确定对该用户进行封禁?', {
@ -222,37 +290,66 @@ const banHandle = (user: any) => {
confirmButtonText: '确定',
cancelButtonText: '取消'
}).then(({ value }) => {
const data = { id: user.id, reason: value }
const data = { id: user.id, reason: value };
ban(data).then(() => {
user.isBanned = true
user.isBanned = true;
ElMessage.success(`用户'${user.userName}'已被封禁`);
})
})
}
});
});
};
const unbanHandle = (user: any) => {
ElMessageBox.confirm('确定解除该用户的封禁状态??', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消'
}).then(() => {
const data = { id: user.id }
const data = { id: user.id };
unban(data).then(() => {
user.isBanned = false
user.isBanned = false;
ElMessage.success(`用户'${user.userName}'解锁成功`);
})
})
}
});
});
};
/** 导出按钮操作 */
const handleExport = () => {
proxy?.download('im/user/export', {
...queryParams.value
}, `user_${new Date().getTime()}.xlsx`)
}
// ID
const params = { ...queryParams.value };
if (params.labelIds && Array.isArray(params.labelIds)) {
params.labelIds = params.labelIds.join(',');
}
if (params.groupIds && Array.isArray(params.groupIds)) {
params.groupIds = params.groupIds.join(',');
}
proxy?.download('im/user/export', params, `user_${new Date().getTime()}.xlsx`);
};
//
const getLabelNameById = (id: string | number) => {
const label = labelOptions.value.find((item) => item.id == id);
return label ? label.labelName : '';
};
//
const getGroupNameById = (id: string | number) => {
const group = groupOptions.value.find((item) => item.id == id);
return group ? group.groupName : '';
};
//
const getLabelAndGroupList = async () => {
try {
const [labelsRes, groupsRes] = await Promise.all([getLabelList(), getGroupList()]);
labelOptions.value = labelsRes.data || [];
groupOptions.value = groupsRes.data || [];
} catch (error) {
console.error('获取标签和群组列表失败:', error);
}
};
onMounted(() => {
onMounted(async () => {
await getLabelAndGroupList();
getList();
});
</script>

12
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserLabelController.java

@ -1,6 +1,7 @@
package org.dromara.im.controller;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
@ -102,4 +103,15 @@ public class ImUserLabelController extends BaseController {
@PathVariable Long[] ids) {
return toAjax(imUserLabelService.deleteWithValidByIds(List.of(ids), true));
}
/**
* 获取用户分组下拉框数据
*
* @return 下拉框数据列表 (id labelName)
*/
@SaCheckPermission("im:userLabel:query")
@PostMapping("/labelOptions")
public R<List<Map<String, Object>>> labelOptions() {
return R.ok(imUserLabelService.queryLabelOptions());
}
}

7
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/ImUser.java

@ -1,11 +1,14 @@
package org.dromara.im.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fhs.core.trans.vo.TransPojo;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* 用户对象 im_user
@ -93,6 +96,10 @@ public class ImUser implements TransPojo {
*/
private Integer isCustomer;
private String labelIds;
private String groupIds;
}

10
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/bo/ImUserBo.java

@ -86,4 +86,14 @@ public class ImUserBo {
*/
private Integer isCustomer;
/**
* 标签 ID 列表 (逗号分隔)
*/
private String labelIds;
/**
* 群组 ID 列表 (逗号分隔)
*/
private String groupIds;
}

9
im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImUserVo.java

@ -2,6 +2,8 @@ package org.dromara.im.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
@ -9,7 +11,7 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.im.domain.ImUser;
import java.util.Date;
import java.util.List;
/**
@ -101,5 +103,10 @@ public class ImUserVo {
@ExcelProperty(value = "被封禁原因")
private String reason;
private String labelIds;
private String groupIds;
}

8
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserLabelService.java

@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 用户分组Service接口
@ -65,4 +66,11 @@ public interface IImUserLabelService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取用户分组下拉框数据
*
* @return 下拉框数据列表 (id labelName)
*/
List<Map<String, Object>> queryLabelOptions();
}

24
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserLabelServiceImpl.java

@ -126,8 +126,30 @@ public class ImUserLabelServiceImpl implements IImUserLabelService {
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
//TODO 做一些业务上的校验判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取用户分组下拉框数据
*
* @return 下拉框数据列表 (id labelName)
*/
@Override
public List<Map<String, Object>> queryLabelOptions() {
LambdaQueryWrapper<ImUserLabel> lqw = Wrappers.lambdaQuery();
lqw.select(ImUserLabel::getId, ImUserLabel::getLabelName);
lqw.orderByAsc(ImUserLabel::getSort);
List<ImUserLabel> labels = baseMapper.selectList(lqw);
return labels.stream()
.map(label -> {
Map<String, Object> option = new java.util.HashMap<>();
option.put("id", label.getId());
option.put("labelName", label.getLabelName());
return option;
})
.collect(java.util.stream.Collectors.toList());
}
}

20
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java

@ -107,6 +107,26 @@ public class ImUserServiceImpl implements IImUserService {
wrapper.eq(ImUser::getIsCustomer, bo.getIsCustomer());
wrapper.like(StringUtils.isNotBlank(bo.getUserName()), ImUser::getUserName, bo.getUserName());
wrapper.like(StringUtils.isNotBlank(bo.getNickName()), ImUser::getNickName, bo.getNickName());
// 处理标签 ID 查询,支持多个标签 ID 的 AND 匹配
if (StringUtils.isNotBlank(bo.getLabelIds())) {
String[] labelArray = bo.getLabelIds().split(",");
for (String label : labelArray) {
if (StringUtils.isNotBlank(label)) {
wrapper.apply("FIND_IN_SET({0}, label_ids)", label.trim());
}
}
}
// 处理群组 ID 查询,支持多个群组 ID 的 AND 匹配
if (StringUtils.isNotBlank(bo.getGroupIds())) {
String[] groupArray = bo.getGroupIds().split(",");
for (String group : groupArray) {
if (StringUtils.isNotBlank(group)) {
wrapper.apply("FIND_IN_SET({0}, group_ids)", group.trim());
}
}
}
wrapper.orderByDesc(ImUser::getId);
return wrapper;
}

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/ImUser.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/ImUserToImUserVoMapperImpl.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/ImUserBo.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/bo/ImUserBoToImUserMapperImpl.class

Binary file not shown.

2
im-admin/ruoyi-im/target/classes/org/dromara/im/domain/bo/ImUserBo__Javadoc.json

@ -1 +1 @@
{"doc":" 用户业务对象 im_user\n\n @author Blue\n @date 2024-12-22\n","fields":[{"name":"id","doc":" id\n"},{"name":"userName","doc":" 用户名\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"headImage","doc":" 用户头像\n"},{"name":"headImageThumb","doc":" 用户头像缩略图\n"},{"name":"password","doc":" 密码(明文)\n"},{"name":"sex","doc":" 性别 0:男 1::女\n"},{"name":"signature","doc":" 个性签名\n"},{"name":"lastLoginTime","doc":" 最后登录时间\n"},{"name":"createdTime","doc":" 创建时间\n"},{"name":"isBanned","doc":" 是否被封禁\n"},{"name":"reason","doc":" 被封禁原因\n"},{"name":"isCustomer","doc":" 用户类型 1:普通用户 2:客服\n"}],"enumConstants":[],"methods":[],"constructors":[]}
{"doc":" 用户业务对象 im_user\n\n @author Blue\n @date 2024-12-22\n","fields":[{"name":"id","doc":" id\n"},{"name":"userName","doc":" 用户名\n"},{"name":"nickName","doc":" 用户昵称\n"},{"name":"headImage","doc":" 用户头像\n"},{"name":"headImageThumb","doc":" 用户头像缩略图\n"},{"name":"password","doc":" 密码(明文)\n"},{"name":"sex","doc":" 性别 0:男 1::女\n"},{"name":"signature","doc":" 个性签名\n"},{"name":"lastLoginTime","doc":" 最后登录时间\n"},{"name":"createdTime","doc":" 创建时间\n"},{"name":"isBanned","doc":" 是否被封禁\n"},{"name":"reason","doc":" 被封禁原因\n"},{"name":"isCustomer","doc":" 用户类型 1:普通用户 2:客服\n"},{"name":"labelIds","doc":" 标签 ID 列表 (逗号分隔)\n"},{"name":"groupIds","doc":" 群组 ID 列表 (逗号分隔)\n"}],"enumConstants":[],"methods":[],"constructors":[]}

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/ImUserVo.class

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

BIN
im-admin/ruoyi-im/target/classes/org/dromara/im/service/impl/ImUserServiceImpl.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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
uses = {ImGroupMemberBoToImGroupMemberMapper.class,ImGroupMemberVoToImGroupMemberMapper.class},
config = AutoMapperConfig__175.class,
uses = {ImGroupMemberVoToImGroupMemberMapper.class,ImGroupMemberBoToImGroupMemberMapper.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
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__169.class,
config = AutoMapperConfig__175.class,
uses = {ImUserVoToImUserMapper.class,ImUserBoToImUserMapper.class},
imports = {}
)

6
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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component
@ -33,6 +33,8 @@ public class ImUserToImUserVoMapperImpl implements ImUserToImUserVoMapper {
imUserVo.setType( arg0.getType() );
imUserVo.setIsBanned( arg0.getIsBanned() );
imUserVo.setReason( arg0.getReason() );
imUserVo.setLabelIds( arg0.getLabelIds() );
imUserVo.setGroupIds( arg0.getGroupIds() );
return imUserVo;
}
@ -56,6 +58,8 @@ public class ImUserToImUserVoMapperImpl implements ImUserToImUserVoMapper {
arg1.setType( arg0.getType() );
arg1.setIsBanned( arg0.getIsBanned() );
arg1.setReason( arg0.getReason() );
arg1.setLabelIds( arg0.getLabelIds() );
arg1.setGroupIds( arg0.getGroupIds() );
return arg1;
}

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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroup;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:57+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMember;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:57+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMessage;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImPrivateMessage;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImSensitiveWord;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImUser;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.class,
uses = {},
imports = {}
)

6
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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component
@ -34,6 +34,8 @@ public class ImUserBoToImUserMapperImpl implements ImUserBoToImUserMapper {
imUser.setIsBanned( arg0.getIsBanned() );
imUser.setReason( arg0.getReason() );
imUser.setIsCustomer( arg0.getIsCustomer() );
imUser.setLabelIds( arg0.getLabelIds() );
imUser.setGroupIds( arg0.getGroupIds() );
return imUser;
}
@ -58,6 +60,8 @@ public class ImUserBoToImUserMapperImpl implements ImUserBoToImUserMapper {
arg1.setIsBanned( arg0.getIsBanned() );
arg1.setReason( arg0.getReason() );
arg1.setIsCustomer( arg0.getIsCustomer() );
arg1.setLabelIds( arg0.getLabelIds() );
arg1.setGroupIds( arg0.getGroupIds() );
return arg1;
}

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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMember;
import org.dromara.im.domain.ImGroupMemberToImGroupMemberVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroupMessage;
import org.dromara.im.domain.ImGroupMessageToImGroupMessageVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImGroup;
import org.dromara.im.domain.ImGroupToImGroupVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:57+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImPrivateMessage;
import org.dromara.im.domain.ImPrivateMessageToImPrivateMessageVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImSensitiveWord;
import org.dromara.im.domain.ImSensitiveWordToImSensitiveWordVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.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-04-01T15:40:05+0800",
date = "2026-04-01T17:01:58+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__169;
import io.github.linpeilie.AutoMapperConfig__175;
import io.github.linpeilie.BaseMapper;
import org.dromara.im.domain.ImUser;
import org.dromara.im.domain.ImUserToImUserVoMapper;
import org.mapstruct.Mapper;
@Mapper(
config = AutoMapperConfig__169.class,
config = AutoMapperConfig__175.class,
uses = {ImUserToImUserVoMapper.class},
imports = {}
)

6
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-04-01T15:40:06+0800",
date = "2026-04-01T17:01:58+0800",
comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.13 (Amazon.com Inc.)"
)
@Component
@ -33,6 +33,8 @@ public class ImUserVoToImUserMapperImpl implements ImUserVoToImUserMapper {
imUser.setType( arg0.getType() );
imUser.setIsBanned( arg0.getIsBanned() );
imUser.setReason( arg0.getReason() );
imUser.setLabelIds( arg0.getLabelIds() );
imUser.setGroupIds( arg0.getGroupIds() );
return imUser;
}
@ -56,6 +58,8 @@ public class ImUserVoToImUserMapperImpl implements ImUserVoToImUserMapper {
arg1.setType( arg0.getType() );
arg1.setIsBanned( arg0.getIsBanned() );
arg1.setReason( arg0.getReason() );
arg1.setLabelIds( arg0.getLabelIds() );
arg1.setGroupIds( arg0.getGroupIds() );
return arg1;
}

Loading…
Cancel
Save