Browse Source

为用户添加身份证限制,杜绝重复身份证号码出现

ry
loser 1 year ago
parent
commit
94cb1f779b
  1. 5
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java
  2. 18
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
  3. 29
      ruoyi-admin/src/main/resources/templates/system/user/add.html
  4. 29
      ruoyi-admin/src/main/resources/templates/system/user/edit.html
  5. 4
      ruoyi-admin/src/main/resources/templates/system/user/user.html
  6. 13
      ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
  7. 17
      ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
  8. 15
      ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
  9. 24
      ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
  10. 30
      ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java

@ -132,6 +132,7 @@ public class SysProfileController extends BaseController
currentUser.setUserName(user.getUserName());
currentUser.setEmail(user.getEmail());
currentUser.setPhonenumber(user.getPhonenumber());
currentUser.setIdNumber(user.getIdNumber());
currentUser.setSex(user.getSex());
if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(currentUser))
{
@ -141,6 +142,10 @@ public class SysProfileController extends BaseController
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,邮箱账号已存在");
}
else if (StringUtils.isNotEmpty(user.getIdNumber()) && !userService.checkIdNumberUnique(currentUser))
{
return error("修改用户'" + currentUser.getLoginName() + "'失败,身份证已存在");
}
if (userService.updateUserInfo(currentUser) > 0)
{
setSysUser(userService.selectUserById(currentUser.getUserId()));

18
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@ -137,6 +137,10 @@ public class SysUserController extends BaseController
{
return error("新增用户'" + user.getLoginName() + "'失败,手机号码已存在");
}
else if (StringUtils.isNotEmpty(user.getIdNumber()) && !userService.checkIdNumberUnique(user))
{
return error("新增用户'" + user.getLoginName() + "'失败,身份证已存在");
}
else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user))
{
return error("新增用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
@ -185,6 +189,10 @@ public class SysUserController extends BaseController
{
return error("修改用户'" + user.getLoginName() + "'失败,邮箱账号已存在");
}
else if (StringUtils.isNotEmpty(user.getIdNumber()) && !userService.checkIdNumberUnique(user))
{
return error("修改用户'" + user.getLoginName() + "'失败,身份证已存在");
}
user.setUpdateBy(getLoginName());
AuthorizationUtils.clearAllCachedAuthorizationInfo();
return toAjax(userService.updateUser(user));
@ -282,6 +290,16 @@ public class SysUserController extends BaseController
}
/**
* 校验身份证
*/
@PostMapping("/checkIdNumberUnique")
@ResponseBody
public boolean checkIdNumberUnique(SysUser user)
{
return userService.checkIdNumberUnique(user);
}
/**
* 校验email邮箱
*/
@PostMapping("/checkEmailUnique")

29
ruoyi-admin/src/main/resources/templates/system/user/add.html

@ -44,6 +44,17 @@
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">身份证号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input id="idNumber" name="idNumber" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="18">
<span class="input-group-addon"><i class="fa fa-id-card"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
@ -196,6 +207,19 @@
}
}
},
idNumber:{
isIdentity18:true,
remote: {
url: prefix + "/checkIdNumberUnique",
type: "post",
dataType: "json",
data: {
"idNumber": function () {
return $.common.trim($("#idNumber").val());
}
}
}
},
},
messages: {
"loginName": {
@ -206,7 +230,10 @@
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
"idNumber":{
remote: "身份证号码已经存在"
}
},
focusCleanup: true
});

29
ruoyi-admin/src/main/resources/templates/system/user/edit.html

@ -45,6 +45,17 @@
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">身份证号码:</label>
<div class="col-sm-8">
<div class="input-group">
<input name="idNumber" placeholder="请输入身份证号码" class="form-control" type="text" maxlength="18" th:field="*{idNumber}">
<span class="input-group-addon"><i class="fa fa-id-card"></i></span>
</div>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<label class="col-sm-4 control-label">邮箱:</label>
<div class="col-sm-8">
<div class="input-group">
@ -169,6 +180,19 @@
}
}
},
idNumber:{
isIdentity18:true,
remote: {
url: prefix + "/checkIdNumberUnique",
type: "post",
dataType: "json",
data: {
"idNumber": function () {
return $.common.trim($("#idNumber").val());
}
}
}
},
},
messages: {
"email": {
@ -176,7 +200,10 @@
},
"phonenumber":{
remote: "手机号码已经存在"
}
},
"idNumber":{
remote: "身份证号码已经存在"
}
},
focusCleanup: true
});

4
ruoyi-admin/src/main/resources/templates/system/user/user.html

@ -141,6 +141,10 @@
field: 'userName',
title: '用户名称'
},
{
field: 'idNumber',
title: '身份证'
},
{
field: 'dept.deptName',
title: '部门'

13
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@ -47,6 +47,10 @@ public class SysUser extends BaseEntity
@Excel(name = "用户名称")
private String userName;
/** 身份证 */
@Excel(name = "身份证")
private String idNumber;
/** 用户类型 */
private String userType;
@ -222,6 +226,15 @@ public class SysUser extends BaseEntity
this.phonenumber = phonenumber;
}
@Size(min=0,max=18,message = "身份证号码不能超过18个字符")
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
public String getSex()
{
return sex;

17
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@ -67,6 +67,14 @@ public interface SysUserMapper
public SysUser selectUserById(Long userId);
/**
* 通过用户ID查询用户
*
* @param idNumber 用户ID
* @return 用户对象信息
*/
public SysUser selectUserByIdNumber(String idNumber);
/**
* 通过用户ID删除用户
*
* @param userId 用户ID
@ -114,6 +122,15 @@ public interface SysUserMapper
*/
public SysUser checkPhoneUnique(String phonenumber);
/**
* 校验身份证是否唯一
*
* @param idNumber 身份证
* @return 结果
*/
public SysUser checkIdNumberUnique(String idNumber);
/**
* 校验email是否唯一
*

15
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@ -44,6 +44,13 @@ public interface ISysUserService
public SysUser selectUserByLoginName(String userName);
/**
* 通过身份证查询用户
*
* @param idNumber 身份证
* @return 用户对象信息
*/
public SysUser selectUserByIdNumber(String idNumber);
/**
* 通过手机号码查询用户
*
* @param phoneNumber 手机号码
@ -157,6 +164,14 @@ public interface ISysUserService
public boolean checkPhoneUnique(SysUser user);
/**
* 校验身份证号码是否唯一
*
* @param user 用户信息
* @return 结果
*/
public boolean checkIdNumberUnique(SysUser user);
/**
* 校验email是否唯一
*
* @param user 用户信息

24
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@ -31,6 +31,7 @@ import com.ruoyi.system.mapper.SysUserPostMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.ISysUserService;
/**
* 用户 业务层处理
@ -114,6 +115,11 @@ public class SysUserServiceImpl implements ISysUserService
return userMapper.selectUserByLoginName(userName);
}
@Override
public SysUser selectUserByIdNumber(String idNumber) {
return userMapper.selectUserByIdNumber(idNumber);
}
/**
* 通过手机号码查询用户
*
@ -382,6 +388,24 @@ public class SysUserServiceImpl implements ISysUserService
return UserConstants.UNIQUE;
}
/**
* 校验身份证号码是否唯一
*
* @param user 用户信息
* @return
*/
@Override
public boolean checkIdNumberUnique(SysUser user) {
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
SysUser info = userMapper.checkIdNumberUnique(user.getIdNumber());
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
{
return UserConstants.NOT_UNIQUE;
}
return UserConstants.UNIQUE;
}
/**
* 校验email是否唯一
*

30
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@ -8,6 +8,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<id property="userId" column="user_id" />
<result property="deptId" column="dept_id" />
<result property="loginName" column="login_name" />
<result property="idNumber" column="id_number" />
<result property="userName" column="user_name" />
<result property="userType" column="user_type" />
<result property="email" column="email" />
@ -50,7 +51,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectUserVo">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark,
select u.user_id, u.dept_id, u.login_name, u.user_name,u.id_number, u.user_type, u.email, u.avatar, u.phonenumber, u.sex, u.password, u.salt, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@ -60,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</sql>
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
select u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, 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, d.dept_name, d.leader from sys_user u
select u.user_id, u.dept_id, u.login_name, u.user_name,u.id_number, u.user_type, 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, d.dept_name, d.leader from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
where u.del_flag = '0'
<if test="userId != null and userId != 0">
@ -69,6 +70,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="loginName != null and loginName != ''">
AND u.login_name like concat('%', #{loginName}, '%')
</if>
<if test="idNumber != null and idNumber != ''">
AND u.id_number, like concat('%', #{idNumber}, '%')
</if>
<if test="status != null and status != ''">
AND u.status = #{status}
</if>
@ -89,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectAllocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.status, u.create_time
select distinct u.user_id, u.dept_id,u.id_number, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.status, u.create_time
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
@ -101,12 +105,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test="idNumber != null and idNumber != ''">
AND u.id_number like concat('%', #{id_number}, '%')
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
<select id="selectUnallocatedList" parameterType="SysUser" resultMap="SysUserResult">
select distinct u.user_id, u.dept_id, u.login_name, u.user_name, u.user_type, u.email, u.avatar, u.phonenumber, u.status, u.create_time
select distinct u.user_id, u.dept_id, u.login_name, u.user_name,u.id_number, u.user_type, u.email, u.avatar, u.phonenumber, u.status, u.create_time
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user_role ur on u.user_id = ur.user_id
@ -119,6 +126,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="phonenumber != null and phonenumber != ''">
AND u.phonenumber like concat('%', #{phonenumber}, '%')
</if>
<if test="idNumber != null and idNumber != ''">
AND u.id_number like concat('%', #{id_number}, '%')
</if>
<!-- 数据范围过滤 -->
${params.dataScope}
</select>
@ -146,6 +156,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select user_id, phonenumber from sys_user where phonenumber=#{phonenumber} and del_flag = '0' limit 1
</select>
<select id="checkIdNumberUnique" parameterType="String" resultMap="SysUserResult">
select user_id, id_number from sys_user where id_number=#{idNumber} and del_flag = '0' limit 1
</select>
<select id="checkEmailUnique" parameterType="String" resultMap="SysUserResult">
select user_id, email from sys_user where email=#{email} and del_flag = '0' limit 1
</select>
@ -155,6 +169,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where u.user_id = #{userId}
</select>
<select id="selectUserByIdNumber" parameterType="Long" resultMap="SysUserResult">
<include refid="selectUserVo"/>
where u.id_number = #{idNumber} and u.del_flag = '0'
</select>
<delete id="deleteUserById" parameterType="Long">
update sys_user set del_flag = '2' where user_id = #{userId}
</delete>
@ -172,6 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != 0">dept_id = #{deptId},</if>
<if test="loginName != null and loginName != ''">login_name = #{loginName},</if>
<if test="userName != null and userName != ''">user_name = #{userName},</if>
<if test="idNumber != null and idNumber != ''">id_number = #{idNumber},</if>
<if test="userType != null and userType != ''">user_type = #{userType},</if>
<if test="email != null and email != ''">email = #{email},</if>
<if test="phonenumber != null and phonenumber != ''">phonenumber = #{phonenumber},</if>
@ -196,6 +216,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != 0">dept_id,</if>
<if test="loginName != null and loginName != ''">login_name,</if>
<if test="userName != null and userName != ''">user_name,</if>
<if test="idNumber != null and idNumber != ''">id_number,</if>
<if test="userType != null and userType != ''">user_type,</if>
<if test="email != null and email != ''">email,</if>
<if test="avatar != null and avatar != ''">avatar,</if>
@ -213,6 +234,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="deptId != null and deptId != ''">#{deptId},</if>
<if test="loginName != null and loginName != ''">#{loginName},</if>
<if test="userName != null and userName != ''">#{userName},</if>
<if test="idNumber != null and idNumber != ''">#{id_number},</if>
<if test="userType != null and userType != ''">#{userType},</if>
<if test="email != null and email != ''">#{email},</if>
<if test="avatar != null and avatar != ''">#{avatar},</if>

Loading…
Cancel
Save