|
|
@@ -5,6 +5,7 @@ import com.zd.common.core.annotation.DataScope;
|
|
|
import com.zd.common.core.exception.NoRollException;
|
|
|
import com.zd.common.core.exception.ServiceException;
|
|
|
import com.zd.common.core.security.TokenService;
|
|
|
+import com.zd.common.core.utils.DESUtils;
|
|
|
import com.zd.common.core.utils.SecurityUtils;
|
|
|
import com.zd.common.core.utils.StringUtils;
|
|
|
import com.zd.laboratory.api.feign.RemoteMessageContentService;
|
|
|
@@ -284,20 +285,23 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public int insertUser(SysUser user) {
|
|
|
- //将10进制卡号转换至16进制
|
|
|
- if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
- if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
- Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
- String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
- user.setCardNum(carNum16);
|
|
|
- }else{
|
|
|
- throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
- }
|
|
|
-
|
|
|
- }else{
|
|
|
- user.setCardNum(null);
|
|
|
- }
|
|
|
-
|
|
|
+// //将10进制卡号转换至16进制
|
|
|
+// if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
+// if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
+// Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
+// String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
+// user.setCardNum(carNum16);
|
|
|
+// }else{
|
|
|
+// throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
+// }
|
|
|
+//
|
|
|
+// }else{
|
|
|
+// user.setCardNum(null);
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ //处理卡号加密
|
|
|
+ passCardNum(user,1);
|
|
|
// 新增用户信息
|
|
|
int rows = userMapper.insertUser(user);
|
|
|
//处理Object 转换实体类
|
|
|
@@ -350,13 +354,15 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
try {
|
|
|
//将10进制卡号转换至16进制
|
|
|
if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
- if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
- Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
- String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
- user.setCardNum(carNum16);
|
|
|
- }else{
|
|
|
- throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
- }
|
|
|
+ //处理卡号加密
|
|
|
+ passCardNum(user,0);
|
|
|
+// if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
+// Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
+// String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
+// user.setCardNum(carNum16);
|
|
|
+// }else{
|
|
|
+// throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
+// }
|
|
|
}else{
|
|
|
user.setCardNum(null);
|
|
|
}
|
|
|
@@ -375,18 +381,20 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
@Override
|
|
|
@Transactional(noRollbackFor = {NoRollException.class})
|
|
|
public int update(SysUser user) {
|
|
|
- //将10进制卡号转换至16进制
|
|
|
- if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
- if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
- Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
- String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
- user.setCardNum(carNum16);
|
|
|
- }else{
|
|
|
- throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
- }
|
|
|
- }else{
|
|
|
- user.setCardNum(null);
|
|
|
- }
|
|
|
+// //将10进制卡号转换至16进制
|
|
|
+// if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
+// if(StringUtils.isNumeric(user.getCardNum())){
|
|
|
+// Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
+// String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
+// user.setCardNum(carNum16);
|
|
|
+// }else{
|
|
|
+// throw new ServiceException("卡号只能是数字,不能包含字母!");
|
|
|
+// }
|
|
|
+// }else{
|
|
|
+// user.setCardNum(null);
|
|
|
+// }
|
|
|
+ //处理卡号加密
|
|
|
+ passCardNum(user,0);
|
|
|
//处理Object 转换实体类
|
|
|
List <Object> permitMenus = user.getPermitMenus();
|
|
|
List<SysPermitMenu> newPermitMenus = new ArrayList<>();
|
|
|
@@ -398,14 +406,15 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
// 插入最新用户绑定的权限数据
|
|
|
sysPermitMenuService.insertSysPermitMenuList(null,user.getUserId(),newPermitMenus);
|
|
|
}
|
|
|
- if (userMapper.checkCardUnique(user)>0) {
|
|
|
+ if (userMapper.checkCardSimpleUnique(user)>0) {
|
|
|
throw new ServiceException("卡号重复,请重新录入!");
|
|
|
}
|
|
|
|
|
|
+ SysUser oldUser = userMapper.selectUserById(user.getUserId());
|
|
|
+
|
|
|
int count = userMapper.updateUser(user);
|
|
|
|
|
|
- SysUser oldUser = userMapper.selectUserById(user.getUserId());
|
|
|
- if(StringUtils.isNotEmpty(user.getCardNum()) && oldUser != null && !oldUser.getCardNum().equals(user.getCardNum())){
|
|
|
+ if(StringUtils.isNotEmpty(user.getCardNumSimple()) && oldUser != null && !oldUser.getCardNumSimple().equals(user.getCardNumSimple())){
|
|
|
user.setPermitMenus(null);
|
|
|
remoteMessageContentService.updateUserCard(user);
|
|
|
}
|
|
|
@@ -751,19 +760,20 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
user.getFailRemark().append("身份不能为空、");
|
|
|
}
|
|
|
|
|
|
- if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
|
|
|
- if(checkBox){
|
|
|
- user.getFailRemark().append("失败:");
|
|
|
- failSysUserList.add(user);
|
|
|
- checkBox = false;
|
|
|
- }
|
|
|
- user.getFailRemark().append("卡号只能为数字、");
|
|
|
- }
|
|
|
+// if(StringUtils.isNotEmpty(user.getCardNum()) && !StringUtils.isNumeric(user.getCardNum())){
|
|
|
+// if(checkBox){
|
|
|
+// user.getFailRemark().append("失败:");
|
|
|
+// failSysUserList.add(user);
|
|
|
+// checkBox = false;
|
|
|
+// }
|
|
|
+// user.getFailRemark().append("卡号只能为数字、");
|
|
|
+// }
|
|
|
|
|
|
if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
- Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
- String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
- SysUser sysUser = userMapper.selectUserByCardNum(carNum16);
|
|
|
+// Long carNum10 = Long.parseLong(user.getCardNum());
|
|
|
+// String carNum16 = carNum10.toHexString(carNum10).toUpperCase();
|
|
|
+ String desCardNum = DESUtils.encrypt(user.getCardNum());
|
|
|
+ SysUser sysUser = userMapper.selectUserByCardNum(desCardNum);
|
|
|
if(StringUtils.isNotNull(sysUser)){
|
|
|
if(checkBox){
|
|
|
user.getFailRemark().append("失败:");
|
|
|
@@ -1192,4 +1202,46 @@ public class SysTeacherServiceImpl implements ISysTeacherService {
|
|
|
}
|
|
|
return 1;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理卡号加密
|
|
|
+ *
|
|
|
+ * @param user 用户信息,type 1需要生成八位加密编号,0不需要
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ public void passCardNum(SysUser user,int type){
|
|
|
+ if(StringUtils.isNotEmpty(user.getCardNum())){
|
|
|
+ //通过des生成对称加密卡号
|
|
|
+ String desCardNum = DESUtils.encrypt(user.getCardNum());
|
|
|
+ user.setCardNumSimple(desCardNum);
|
|
|
+ //随机生成八位加密卡号
|
|
|
+ if(type==1){
|
|
|
+ checkCardNum(user);
|
|
|
+
|
|
|
+ }else{
|
|
|
+ SysUser newUser = selectUserById(user.getUserId());
|
|
|
+ if(StringUtils.isNotEmpty(newUser.getCardNum())){
|
|
|
+ user.setCardNum(newUser.getCardNum());
|
|
|
+ }else{
|
|
|
+ checkCardNum(user);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ user.setCardNum(null);
|
|
|
+ user.setCardNumSimple(null);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkCardNum(SysUser user){
|
|
|
+ user.setCardNum(DESUtils.getRandomNum());
|
|
|
+ //用死循环来校验卡号重复后,重新生成
|
|
|
+ while(true){
|
|
|
+ if (userMapper.checkCardUnique(user)>0) {
|
|
|
+ user.setCardNum(DESUtils.getRandomNum());
|
|
|
+ }else{
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|