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