feat(user-verify): 添加操作员信息关联及数据去重功能
- 在 UserVerify 实体类中添加 adminName 字段用于显示操作员名称 - 修改控制器在验证过程中自动设置当前登录用户为操作员 ID - 更新 MyBatis 查询 SQL 以关联查询操作员昵称信息 - 实现防止同一用户在验证表中重复记录的数据去重逻辑 - 添加基于用户 ID 分组并获取最新记录的查询优化 - 支持按操作员 ID 进行筛选查询功能
This commit is contained in:
@@ -123,6 +123,8 @@ public class UserVerifyController extends BaseController {
|
||||
if (userVerify.getType().equals(1)) {
|
||||
byUserId.setRealName(userVerify.getName());
|
||||
}
|
||||
// 设置管理员id
|
||||
userVerify.setAdminId(loginUser.getUserId());
|
||||
}
|
||||
userService.updateById(byUserId);
|
||||
|
||||
|
||||
@@ -61,9 +61,13 @@ public class UserVerify implements Serializable {
|
||||
@Schema(description = "其他证件")
|
||||
private String files;
|
||||
|
||||
@Schema(description = "审核人")
|
||||
@Schema(description = "操作员ID")
|
||||
private Integer adminId;
|
||||
|
||||
@Schema(description = "操作员名称")
|
||||
@TableField(exist = false)
|
||||
private String adminName;
|
||||
|
||||
@Schema(description = "机构ID")
|
||||
private Integer organizationId;
|
||||
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
|
||||
<!-- 关联查询sql -->
|
||||
<sql id="selectSql">
|
||||
SELECT a.*, b.phone, c.organization_name
|
||||
SELECT a.*, b.phone, c.organization_name, d.nickname as adminName
|
||||
FROM sys_user_verify a
|
||||
LEFT JOIN sys_user b ON a.user_id = b.user_id
|
||||
LEFT JOIN sys_organization c ON a.organization_id = c.organization_id
|
||||
LEFT JOIN sys_user d ON a.admin_id = d.user_id
|
||||
<where>
|
||||
<if test="param.id != null">
|
||||
AND a.id = #{param.id}
|
||||
@@ -77,6 +78,86 @@
|
||||
OR a.zz_code = #{param.keywords}
|
||||
)
|
||||
</if>
|
||||
<!--
|
||||
防止同一个 user_id 在 sys_user_verify 中存在多条记录时,列表查询返回 userId 重复。
|
||||
这里保留每个 user_id 的最新一条记录(按 id 最大)。
|
||||
注意:当按主键 id 精确查询时不做去重,避免把历史记录过滤掉。
|
||||
-->
|
||||
<if test="param.id == null">
|
||||
AND a.id IN (
|
||||
SELECT MAX(v.id)
|
||||
FROM sys_user_verify v
|
||||
LEFT JOIN sys_user u ON v.user_id = u.user_id
|
||||
<where>
|
||||
<if test="param.userId != null">
|
||||
AND v.user_id = #{param.userId}
|
||||
</if>
|
||||
<if test="param.type != null">
|
||||
AND v.type = #{param.type}
|
||||
</if>
|
||||
<if test="param.name != null">
|
||||
AND v.name LIKE CONCAT('%', #{param.name}, '%')
|
||||
</if>
|
||||
<if test="param.realName != null">
|
||||
AND v.real_name LIKE CONCAT('%', #{param.realName}, '%')
|
||||
</if>
|
||||
<if test="param.idCard != null">
|
||||
AND v.id_card LIKE CONCAT('%', #{param.idCard}, '%')
|
||||
</if>
|
||||
<if test="param.birthday != null">
|
||||
AND v.birthday LIKE CONCAT('%', #{param.birthday}, '%')
|
||||
</if>
|
||||
<if test="param.sfz1 != null">
|
||||
AND v.sfz1 LIKE CONCAT('%', #{param.sfz1}, '%')
|
||||
</if>
|
||||
<if test="param.sfz2 != null">
|
||||
AND v.sfz2 LIKE CONCAT('%', #{param.sfz2}, '%')
|
||||
</if>
|
||||
<if test="param.zzCode != null">
|
||||
AND v.zz_code = #{param.zzCode}
|
||||
</if>
|
||||
<if test="param.adminId != null">
|
||||
AND v.admin_id = #{param.adminId}
|
||||
</if>
|
||||
<if test="param.organizationId != null">
|
||||
AND v.organization_id = #{param.organizationId}
|
||||
</if>
|
||||
<if test="param.comments != null">
|
||||
AND v.comments LIKE CONCAT('%', #{param.comments}, '%')
|
||||
</if>
|
||||
<if test="param.status != null">
|
||||
AND v.status = #{param.status}
|
||||
</if>
|
||||
<if test="param.deleted != null">
|
||||
AND v.deleted = #{param.deleted}
|
||||
</if>
|
||||
<if test="param.deleted == null">
|
||||
AND v.deleted = 0
|
||||
</if>
|
||||
<if test="param.createTimeStart != null">
|
||||
AND v.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test="param.createTimeEnd != null">
|
||||
AND v.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test="param.organizationIds != null">
|
||||
AND v.organization_id IN
|
||||
<foreach collection="param.organizationIds" item="item" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="param.keywords != null">
|
||||
AND (v.name LIKE CONCAT('%', #{param.keywords}, '%')
|
||||
OR v.real_name LIKE CONCAT('%', #{param.keywords}, '%')
|
||||
OR u.phone = #{param.keywords}
|
||||
OR v.id_card = #{param.keywords}
|
||||
OR v.zz_code = #{param.keywords}
|
||||
)
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY v.user_id
|
||||
)
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user