From 9934d682a76c8d6bd05bc184bd18c1fe78399f69 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Wed, 27 Apr 2022 15:12:48 +0800
Subject: [PATCH] 保安员新增同步修改
---
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml | 19 +++
src/main/java/org/springblade/modules/FTP/DataHandler.java | 107 +++++++++++++++++
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java | 14 ++
src/main/java/org/springblade/modules/FTP/Result.java | 31 +++++
src/main/java/org/springblade/common/utils/DesensitizedUtil.java | 125 ++++++++++++++++++++
src/main/java/org/springblade/modules/FTP/Monitor.java | 22 ++-
src/main/java/org/springblade/modules/system/controller/UserController.java | 24 ++-
src/main/java/org/springblade/modules/system/mapper/UserMapper.java | 7 +
src/main/java/org/springblade/modules/system/service/IUserService.java | 7 +
9 files changed, 337 insertions(+), 19 deletions(-)
diff --git a/src/main/java/org/springblade/common/utils/DesensitizedUtil.java b/src/main/java/org/springblade/common/utils/DesensitizedUtil.java
new file mode 100644
index 0000000..e2d2160
--- /dev/null
+++ b/src/main/java/org/springblade/common/utils/DesensitizedUtil.java
@@ -0,0 +1,125 @@
+package org.springblade.common.utils;
+
+import com.google.common.base.Strings;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 铭感信息处理
+ * @author zhongrj
+ * @since 2022-04-27
+ */
+public class DesensitizedUtil {
+
+
+ /**
+ * 姓名脱敏处理
+ * @param fullName
+ * @return
+ */
+ public static String desensitizedName(String fullName){
+ if (!Strings.isNullOrEmpty(fullName)) {
+ String name = StringUtils.left(fullName, 1);
+ return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
+ }
+ return fullName;
+ }
+
+ /**
+ * 手机号脱敏处理
+ * @param phoneNumber
+ * @return
+ */
+ public static String desensitizedPhoneNumber(String phoneNumber){
+ if(StringUtils.isNotEmpty(phoneNumber)){
+ phoneNumber = phoneNumber.replaceAll("(\\w{3})\\w*(\\w{4})", "$1****$2");
+ }
+ return phoneNumber;
+ }
+
+ /**
+ * 身份证号码脱敏处理
+ * @param idNumber
+ * @return
+ */
+ public static String desensitizedIdNumber(String idNumber){
+ if (!Strings.isNullOrEmpty(idNumber)) {
+ if (idNumber.length() == 15){
+ idNumber = idNumber.replaceAll("(\\w{6})\\w*(\\w{3})", "$1******$2");
+ }
+ if (idNumber.length() == 18){
+ idNumber = idNumber.replaceAll("(\\w{6})\\w*(\\w{3})", "$1*********$2");
+ }
+ }
+ return idNumber;
+ }
+
+ /**
+ * 保安证编号
+ * @param securityNumber
+ * @return
+ */
+ public static String desensitizedSecurityNumber(String securityNumber){
+ if (!Strings.isNullOrEmpty(securityNumber)) {
+ //分割
+ String s = securityNumber.substring(0, securityNumber.length() - 4);
+ String s2 = s.replaceAll("\\D", "*");
+ //替换数字
+ Pattern p = Pattern.compile("[\\d]");
+ Matcher matcher = p.matcher(s2);
+ String s3 = matcher.replaceAll("*");
+ //保留后4位
+ String s1 = securityNumber.substring(securityNumber.length() - 4);
+ securityNumber = s3 + s1;
+ }
+ return securityNumber;
+ }
+
+ /**
+ * 身份证号码脱敏处理(只保留后4位)
+ * @param idNumber
+ * @return
+ */
+ public static String desensitizedIdNumberBy4(String idNumber){
+ if (!Strings.isNullOrEmpty(idNumber)) {
+ if (idNumber.length() == 15){
+ idNumber = idNumber.replaceAll("\\w*(\\w{4})", "***********$1");
+ }
+ if (idNumber.length() == 18){
+ idNumber = idNumber.replaceAll("\\w*(\\w{4})", "**************$1");
+ }
+ }
+ return idNumber;
+ }
+
+
+ /**
+ * 地址
+ * @param address
+ * @return
+ */
+ public static String desensitizedAddress(String address){
+ if (!Strings.isNullOrEmpty(address)) {
+ return StringUtils.left(address, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(address, address.length()-11), StringUtils.length(address), "*"), "***"));
+ }
+ return address;
+ }
+
+ public static void main(String[] args) {
+ desensitizedIdNumberBy4("360728199205280059");
+ desensitizedSecurityNumber("赣洪202100124");
+
+ Map<String, Object> map = new HashMap<>(1);
+ String a = "sdafa-445sdaf-fsafdsaf";
+ map.put(a,"abc");
+ System.out.println("map = " + map);
+ Object o = map.get(a);
+ System.out.println("o = " + o);
+ }
+
+
+}
diff --git a/src/main/java/org/springblade/modules/FTP/DataHandler.java b/src/main/java/org/springblade/modules/FTP/DataHandler.java
index 5e3fe12..202fffa 100644
--- a/src/main/java/org/springblade/modules/FTP/DataHandler.java
+++ b/src/main/java/org/springblade/modules/FTP/DataHandler.java
@@ -1,13 +1,18 @@
package org.springblade.modules.FTP;
+import com.alibaba.fastjson.JSON;
+import org.springblade.common.utils.DesensitizedUtil;
import org.springblade.core.tool.api.R;
+import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
/**
* ftp 数据处理
@@ -23,6 +28,9 @@
//申明对象
private static DataHandler handler;
+ @Autowired
+ private RedisTemplate redisTemplate;
+
/**
* 初始化
*/
@@ -30,6 +38,7 @@
public void init(){
handler = this;
handler.userService = this.userService;
+ handler.redisTemplate = this.redisTemplate;
}
/**
@@ -38,12 +47,100 @@
* @param uuid 随机字符串
* @return
*/
- public static R handler(String json, String uuid){
+ public static Result handler(String json, String uuid){
//读取数据
List<String> list = Arrays.asList(json.split(";"));
- list.forEach(s -> {
- System.out.println("s = " + s);
- });
- return R.data(400,null,"未能找到对应数据");
+ for (String s : list) {
+ Map map = JSON.parseObject(s, Map.class);
+ //获取结果
+ Object o = map.get(uuid);
+ if (null== o || o.equals("")){
+ return new Result(400,null,"uuid 不匹配",null);
+ }
+ //转换
+ Result result = JSON.parseObject(o.toString(), Result.class);
+ //判断结果
+ if (result.getCode()==200){
+ //新增
+ //用户数处理
+ User user = handlerUserInfo(uuid);
+ user.setId(result.getUserId());
+ //插入数据库
+// boolean save = handler.userService.insert(user);
+ boolean save = handler.userService.save(user);
+ if (save){
+ return new Result(200,null,"新增成功",null);
+ }else {
+ return new Result(400,null,"新增失败",null);
+ }
+ }else if (result.getCode()==201) {
+ //修改
+ //用户数处理
+ User user = handlerUserInfo(uuid);
+ user.setId(result.getUserId());
+ //数据修改
+ boolean b = handler.userService.updateById(user);
+ if (b) {
+ return new Result(200, null, "修改成功", null);
+ } else {
+ return new Result(400, null, "修改失败", null);
+ }
+ }else if (result.getCode()==203){
+ //新增
+ //用户数处理
+ User user = handlerUserInfo(uuid);
+ user.setId(result.getUserId());
+ //插入数据库
+ boolean save = handler.userService.save(user);
+ //失败,返回保安员证编号校验失败消息
+ return new Result(202,null,result.getMsg(),null);
+ }else if (result.getCode()==204){
+ //修改
+ //用户数处理
+ User user = handlerUserInfo(uuid);
+ user.setId(result.getUserId());
+ //数据修改
+ boolean b = handler.userService.updateById(user);
+ //失败,返回保安员证编号校验失败消息
+ return new Result(202,null,result.getMsg(),null);
+ }else {
+ //失败,返回失败消息
+ return new Result(202,null,result.getMsg(),null);
+ }
+ }
+ return new Result(400,null,"未能找到对应数据",null);
+ }
+
+ /**
+ * 用户数据获取和处理
+ * @param uuid 随机参数
+ * @return
+ */
+ public static User handlerUserInfo(String uuid){
+ //从redis 中获取用户数据
+ Object o1 = handler.redisTemplate.opsForValue().get(uuid);
+ User user = JSON.parseObject(o1.toString(), User.class);
+ //取出后将 redis 删除
+ handler.redisTemplate.delete(uuid);
+ //返回的user,需处理敏感数据
+ User user1 = user;
+ //敏感数据处理
+ user1.setCardid(DesensitizedUtil.desensitizedIdNumberBy4(user.getCardid()));
+ user1.setPhone(DesensitizedUtil.desensitizedPhoneNumber(user.getPhone()));
+ user1.setRegistered(DesensitizedUtil.desensitizedAddress(user.getRegistered()));
+ if (user.getHold().equals("1")) {
+ user1.setSecuritynumber(DesensitizedUtil.desensitizedSecurityNumber(user.getSecuritynumber()));
+ }else {
+ user1.setSecuritynumber("");
+ }
+ user1.setAvatar("");
+ user1.setEmail("");
+ user1.setFingerprint("");
+ user1.setNation("");
+ user1.setNativeplace("");
+ user1.setEducation("");
+ user1.setPoliticaloutlook("");
+ //返回
+ return user1;
}
}
diff --git a/src/main/java/org/springblade/modules/FTP/Monitor.java b/src/main/java/org/springblade/modules/FTP/Monitor.java
index b883ab7..63561dc 100644
--- a/src/main/java/org/springblade/modules/FTP/Monitor.java
+++ b/src/main/java/org/springblade/modules/FTP/Monitor.java
@@ -28,7 +28,7 @@
* @param uuid 随机数
* @return
*/
- public static R isFTPFileExist(String uuid) {
+ public static Result isFTPFileExist(String uuid) {
//创建 ftp 对象
FTPClient ftp = new FTPClient();
boolean flag = false;
@@ -40,7 +40,7 @@
// 检验登陆操作的返回码是否正确
if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
ftp.disconnect();
- return R.data(400,null,"ftp 连接失败");
+ return new Result(400,null,"ftp 连接失败",null);
}
ftp.enterLocalActiveMode();
@@ -55,7 +55,7 @@
ftp.changeWorkingDirectory(ftpPath);
FTPFile[] files = ftp.listFiles();
if (files.length==0){
- return R.data(400,null,"未读取到文件");
+ return new Result(400,null,"未读取到文件",null);
} else {
for (FTPFile file : files){
String fileName = file.getName();
@@ -67,7 +67,7 @@
// 解析数据
String s = OutJson.TestJson(fileName);
//数据处理
- R result = DataHandler.handler(s,uuid);
+ Result result = DataHandler.handler(s,uuid);
//删除本地文件
MysqlCenlint.deletess(fileName);
FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, fileName);
@@ -75,11 +75,19 @@
ftp.completePendingCommand();
if (result.getCode()==200) {
//返回
- return R.data(result);
+ return new Result(200,null,"新增成功",null);
+ }
+ if (result.getCode()==201) {
+ //返回
+ return new Result(201,null,"修改成功",null);
+ }
+ if (result.getCode()==202) {
+ //返回
+ return new Result(202,null,result.getMsg(),null);
}
}
}
- return R.data(400,null,"未读取到对应的文件");
+ return new Result(400,null,"未读取到对应的文件",null);
}
} catch (Exception e) {
System.out.println("ftp连接失败");
@@ -93,7 +101,7 @@
}
}
}
- return R.data(400,null,"失败");
+ return new Result(400,null,"失败",null);
}
/**
diff --git a/src/main/java/org/springblade/modules/FTP/Result.java b/src/main/java/org/springblade/modules/FTP/Result.java
new file mode 100644
index 0000000..38e1990
--- /dev/null
+++ b/src/main/java/org/springblade/modules/FTP/Result.java
@@ -0,0 +1,31 @@
+package org.springblade.modules.FTP;
+
+import lombok.Data;
+import org.springblade.modules.system.entity.User;
+
+/**
+ * ftp 返回结果
+ * @author zhongrj
+ * @since 2022-04-27
+ */
+@Data
+public class Result {
+
+ private Integer code;
+
+ private Long userId;
+
+ private String msg;
+
+ private User user;
+
+ public Result() {
+ }
+
+ public Result(Integer code, Long userId, String msg, User user) {
+ this.code = code;
+ this.userId = userId;
+ this.msg = msg;
+ this.user = user;
+ }
+}
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index 8ee27f2..b0cd0f7 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -59,6 +59,7 @@
import org.springblade.core.tool.utils.*;
import org.springblade.modules.FTP.FtpUtil;
import org.springblade.modules.FTP.Monitor;
+import org.springblade.modules.FTP.Result;
import org.springblade.modules.accreditation.entity.AccreditationRecords;
import org.springblade.modules.accreditation.service.AccreditationRecordsService;
import org.springblade.modules.dispatcher.entity.Dispatcher;
@@ -1182,6 +1183,7 @@
user.setDispatch("1");
user.setExaminationType("0");
user.setAccount(user.getCardid());
+ user.setStatus(1);
User user1 = new User();
user1.setIsDeleted(0);
@@ -1388,7 +1390,7 @@
user.setRoleId(oneRole.getId().toString());
user.setDispatch("1");
user.setExaminationType("0");
- user.setAccount(user.getCardid());
+ user.setAccount(user.getRealName());
//密码加密
if (Func.isNotEmpty(user.getCardid())) {
@@ -1431,8 +1433,8 @@
myAsyncService.FTPObject(map);
int count = 0;
- boolean flag = false;
- R result = new R();
+ int flag = 1;
+ Result result = new Result();
//调用ftp获取返回数据
while (true){
Thread.sleep(1000);
@@ -1440,9 +1442,15 @@
result = Monitor.isFTPFileExist(uuid);
//如果返回true,就退处
if (result.getCode()==200){
- flag = true;
+ flag = 1;
break;
- }else {
+ }else if (result.getCode()==201){
+ flag = 2;
+ break;
+ }else if (result.getCode()==202){
+ flag = 3;
+ break;
+ }else{
//计数
count++;
//如果超过10s 没有读取到,则退出
@@ -1451,10 +1459,12 @@
}
}
}
- if (flag) {
+ if (flag==1 || flag==2) {
//返回
return R.data(200, null, "新增成功!");
- }else {
+ }else if (flag==3){
+ throw new ServiceException(result.getMsg());
+ }else{
//返回
return R.data(400, null, "新增失败!");
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.java b/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
index 56061cc..a30a605 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.java
@@ -271,4 +271,11 @@
* @return
*/
User getUserById(long id);
+
+ /**
+ * 手动新增用户信息
+ * @param user
+ * @return
+ */
+ int insertUser(@Param("user") User user);
}
diff --git a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
index 81e0138..8497333 100644
--- a/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
+++ b/src/main/java/org/springblade/modules/system/mapper/UserMapper.xml
@@ -1130,5 +1130,24 @@
select * from blade_user where id = #{id}
</select>
+ <insert id="insertUser">
+ insert into blade_user
+ (
+ id,tenant_id,account,password,name,real_name,avatar,email,phone,sex,
+ role_id,dept_id,cardid,nativePlace,nation,fingerprint,education,
+ politicaloutlook,healstats,height,address,registered,rtime,
+ securitynumber,hold,jurisdiction,examination_type,status,is_deleted,dispatch,guncode,create_time,cell
+ )
+ values
+ (
+ #{user.id},#{user.tenantId},#{user.account},#{user.password},#{user.name},#{user.realName},#{user.avatar},
+ #{user.email},#{user.phone},#{user.sex},
+ #{user.roleId},#{user.deptId},#{user.cardid},#{user.nativeplace},#{user.nation},#{user.fingerprint},#{user.education},
+ #{user.politicaloutlook},#{user.healstats},#{user.height},#{user.address},#{user.registered},#{user.rtime},
+ #{user.securitynumber},#{user.hold},#{user.jurisdiction},#{user.examinationType},#{user.status},#{user.isDeleted},
+ #{user.dispatch},#{user.guncode},#{user.createTime},#{user.cell}
+ )
+ </insert>
+
</mapper>
diff --git a/src/main/java/org/springblade/modules/system/service/IUserService.java b/src/main/java/org/springblade/modules/system/service/IUserService.java
index 8ba0eae..5f9f1ca 100644
--- a/src/main/java/org/springblade/modules/system/service/IUserService.java
+++ b/src/main/java/org/springblade/modules/system/service/IUserService.java
@@ -385,4 +385,11 @@
* @return
*/
User getUserById(String id);
+
+ /**
+ * 手动新增用户信息
+ * @param user
+ * @return
+ */
+ boolean insert(User user);
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 2bd6f17..65188ba 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -2206,4 +2206,18 @@
public User getUserById(String id) {
return baseMapper.getUserById(Long.parseLong(id));
}
+
+ /**
+ * 手动新增用户信息
+ * @param user
+ * @return
+ */
+ @Override
+ public boolean insert(User user) {
+ int i = baseMapper.insertUser(user);
+ if (i>0){
+ return true;
+ }
+ return false;
+ }
}
--
Gitblit v1.9.3