Browse Source

监督端查询执法人员&非执法人员

dev-V1.0.1
ganhao 6 months ago
parent
commit
65f5d0baf6
  1. 110
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java
  2. 110
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java
  3. 7
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java
  4. 6
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/ISysUserService.java
  5. 12
      zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
  6. 57
      zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml

110
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppSystemController.java

@ -0,0 +1,110 @@
package com.zdxt.enforcementcode.controller.app.enforcement;
import cn.hutool.core.convert.Convert;
import com.zdxt.enforcementcode.common.config.SrnwgConfig;
import com.zdxt.enforcementcode.common.util.IdCardCryptoUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.system.domain.bo.QuerySysUserBo;
import org.dromara.system.domain.vo.SysUserVo;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
* 执法端共用方法类
* @Author: kylin
* @Date: 2024/5/1 3:00 下午
* @Version: 1.0
* @Desc: TODO
*/
@Slf4j
@Controller
@RequestMapping("/app-enf/app")
public class AppSystemController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private SrnwgConfig srnwgConfig;
/**
* 监督端查询执法人员&非执法人员
* 排除admin和手机号码为空的数据)
*
* @param user 查询条件
* @param pageQuery 分页参数
* @return 分页结果
*/
@PostMapping("/selectUserListByHave")
@ResponseBody
public TableDataInfo selectUserListByHave(QuerySysUserBo user, PageQuery pageQuery) {
// 初始化 params,避免空指针异常
if (user.getParams() == null) {
user.setParams(new java.util.HashMap<>());
}
// 设置排除的用户ID列表
if (null != user.getNotUserId()) {
user.getParams().put("notUserIds", Convert.toStrArray(user.getNotUserId()));
}
// 设置是否显示执法证号标识
if (null != user.getIsShowCardId()) {
user.getParams().put("showCardId", user.getIsShowCardId());
}
// 清空部门ID过滤
user.setDeptId(null);
// 调用 Service 层获取分页数据
TableDataInfo<SysUserVo> result = userService.selectUserListByHave(user, pageQuery);
List<SysUserVo> list = result.getRows();
// 解密手机号
if (list != null && !list.isEmpty()) {
decryptPhoneNumbers(list);
}
return result;
}
/**
* 批量解密用户手机号
*
* @param userList 用户列表
*/
private void decryptPhoneNumbers(List<SysUserVo> userList) {
String secretKey = srnwgConfig.getSecretKey();
userList.forEach(user -> {
if (StringUtils.isEmpty(user.getPhonenumber())) {
return;
}
// 纯数字表示未加密,直接使用
if (user.getPhonenumber().matches("^\\d+$")) {
return;
}
// 尝试解密手机号
try {
String decryptPhone = IdCardCryptoUtil.symmetricDecryptIdCard(secretKey, user.getPhonenumber());
user.setPhonenumber(decryptPhone);
} catch (Exception e) {
// 解密失败,保持原值
log.warn("手机号解密失败: {}", user.getPhonenumber(), e);
}
});
}
}

110
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/domain/bo/QuerySysUserBo.java

@ -0,0 +1,110 @@
package org.dromara.system.domain.bo;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
* 用户查询对象 sys_user
*
* @author ruoyi
*/
@Data
public class QuerySysUserBo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private String userId;
/**
* 部门ID
*/
private String deptId;
/**
* 部门父ID
*/
private String parentId;
/**
* 角色ID
*/
private Long roleId;
/**
* 登录名称
*/
private String loginName;
/**
* 用户名称(支持模糊查询用户名称或执法证号)
*/
private String userName;
/**
* 执法证号
*/
private String lawCertificateNum;
/**
* 用户邮箱
*/
private String email;
/**
* 手机号码
*/
private String phonenumber;
/**
* 用户性别(0男 1女 2未知)
*/
private String sex;
/**
* 帐号状态(0正常 1停用)
*/
private String status;
/**
* 删除标志(0代表存在 2代表删除)
*/
private String delFlag;
/**
* 租户代码
*/
private String tenantCode;
/**
* 排除的用户ID(单个)
*/
private String notUserId;
/**
* 是否显示执法证号(0-是,需要筛选执法人员)
*/
private Integer isShowCardId;
/**
* 用户类型
*/
private String type;
/**
* 扩展参数
* params.beginTime - 开始时间
* params.endTime - 结束时间
* params.notUserIds - 排除的用户ID数组
* params.showCardId - 是否显示执法证号
* params.dataScope - 数据权限SQL片段
*/
private Map<String, Object> params;
}

7
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/mapper/SysUserMapper.java

@ -9,7 +9,9 @@ import org.apache.ibatis.annotations.Param;
import org.dromara.common.mybatis.annotation.DataColumn;
import org.dromara.common.mybatis.annotation.DataPermission;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.QuerySysUserBo;
import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
@ -134,8 +136,9 @@ public interface SysUserMapper extends BaseMapperPlus<SysUser, SysUserVo> {
* 多条件查询用户列表(关联部门和租户信息)
*
* @param user 查询条件
* @return 用户列表
* @param page 分页参数
* @return 用户分页列表
*/
List<SysUserVo> selectUserListByHave(SysUser user);
Page<SysUserVo> selectUserListByHave(@Param("user") QuerySysUserBo user, Page<SysUserVo> page);
}

6
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/ISysUserService.java

@ -3,6 +3,7 @@ package org.dromara.system.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.bo.QuerySysUserBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysUserExportVo;
import org.dromara.system.domain.vo.SysUserVo;
@ -242,9 +243,10 @@ public interface ISysUserService {
* 多条件查询用户列表(关联部门和租户信息)
*
* @param user 查询条件
* @return 用户列表
* @param pageQuery 分页参数
* @return 用户分页列表
*/
List<SysUserVo> selectUserListByHave(SysUser user);
TableDataInfo<SysUserVo> selectUserListByHave(QuerySysUserBo user, PageQuery pageQuery);
/**

12
zdxt-modules/zdxt-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java

@ -25,6 +25,7 @@ import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.system.domain.SysUser;
import org.dromara.system.domain.SysUserPost;
import org.dromara.system.domain.SysUserRole;
import org.dromara.system.domain.bo.QuerySysUserBo;
import org.dromara.system.domain.bo.SysUserBo;
import org.dromara.system.domain.vo.SysPostVo;
import org.dromara.system.domain.vo.SysRoleVo;
@ -786,14 +787,17 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
}
/**
* 多条件查询用户列表(关联部门和租户信息)
* 查询执法人员&非执法人员(排除admin&手机号码为空的数据)
*
* @param user 查询条件
* @return 用户列表
* @param pageQuery 分页参数
* @return 用户分页列表
*/
@Override
public List<SysUserVo> selectUserListByHave(SysUser user) {
return baseMapper.selectUserListByHave(user);
public TableDataInfo<SysUserVo> selectUserListByHave(QuerySysUserBo user, PageQuery pageQuery) {
Page<SysUserVo> page = pageQuery.build();
Page<SysUserVo> result = baseMapper.selectUserListByHave(user, page);
return TableDataInfo.build(result);
}
/**

57
zdxt-modules/zdxt-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -39,7 +39,7 @@
${ew.getCustomSqlSegment}
</select>
<select id="selectUserListByHave" parameterType="org.dromara.system.domain.SysUser" resultMap="SysUserResult">
<select id="selectUserListByHave" parameterType="org.dromara.system.domain.bo.QuerySysUserBo" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.type, d.dept_name,d.zzDisplayPath, u.law_certificate_num,
d.leader,u.tenant_code,t.tenant_code, t.tenant_name, t.contact_man, t.contact_number, t.address
@ -47,45 +47,45 @@
left join sys_dept d on u.dept_id = d.dept_id
left join sys_tenant t on t.tenant_code = u.tenant_code
where u.del_flag = '0'
<if test="userId != null and userId != ''">
AND u.user_id = #{userId}
<if test="user.userId != null and user.userId != ''">
AND u.user_id = #{user.userId}
</if>
<if test="loginName != null and loginName != ''">
AND u.login_name like concat('%', #{loginName}, '%')
<if test="user.loginName != null and user.loginName != ''">
AND u.login_name like concat('%', #{user.loginName}, '%')
</if>
<if test="userName != null and userName != ''">
<if test="user.userName != null and user.userName != ''">
AND (
u.user_name like concat('%', #{userName}, '%')
u.user_name like concat('%', #{user.userName}, '%')
or
u.law_certificate_num like concat('%', #{userName}, '%')
u.law_certificate_num like concat('%', #{user.userName}, '%')
)
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
<if test="user.status != null and user.status != ''">
AND u.status = #{user.status}
</if>
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
<if test="user.phonenumber != null and user.phonenumber != ''">
AND u.phonenumber like concat('%', #{user.phonenumber}, '%')
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
<if test="user.params.beginTime != null and user.params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(u.create_time,'%y%m%d') &gt;= date_format(#{user.params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
<if test="user.params.endTime != null and user.params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(u.create_time,'%y%m%d') &lt;= date_format(#{user.params.endTime},'%y%m%d')
</if>
<if test="deptId != null and deptId != ''">
and u.dept_id = #{deptId}
<if test="user.deptId != null and user.deptId != ''">
and u.dept_id = #{user.deptId}
</if>
<!-- 租户数据过滤 -->
<if test="tenantCode != @com.zdxt.auth.common.constant.Constants@DEFAULT_TENANT_CODE and tenantCode != null and tenantCode != ''">
AND u.tenant_code = #{tenantCode}
</if>
<if test="notUserId != null and notUserId != ''">
<!-- &lt;!&ndash; 租户数据过滤 &ndash;&gt;-->
<!-- <if test="user.tenantCode != @com.zdxt.auth.common.constant.Constants@DEFAULT_TENANT_CODE and user.tenantCode != null and user.tenantCode != ''">-->
<!-- AND u.tenant_code = #{user.tenantCode}-->
<!-- </if>-->
<if test="user.notUserId != null and user.notUserId != ''">
and u.user_id not in
<foreach item="uid" collection="params.notUserIds" open="(" separator="," close=")">
<foreach item="uid" collection="user.params.notUserIds" open="(" separator="," close=")">
#{uid}
</foreach>
</if>
<if test="params.showCardId != null and params.showCardId == 0">
<if test="user.params.showCardId != null and user.params.showCardId == 0">
AND (
(u.law_certificate_num is not null AND u.law_certificate_num !="")
or (d.`zone` = 5 or d.`zone` = 15)
@ -93,9 +93,12 @@
)
</if>
and u.dept_id != 405
<if test="params.dataScope != null and params.dataScope != ''">
<if test="user.params.dataScope != null and user.params.dataScope != ''">
<!-- 数据范围过滤 -->
${params.dataScope}
${user.params.dataScope}
</if>
and (phonenumber is not null and phonenumber !='')
and u.login_name != 'admin'
ORDER BY u.create_time DESC
</select>
</mapper>

Loading…
Cancel
Save