7 files modified
2 files added
| New file |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | 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 数据处理 |
| | |
| | | //申明对象 |
| | | private static DataHandler handler; |
| | | |
| | | @Autowired |
| | | private RedisTemplate redisTemplate; |
| | | |
| | | /** |
| | | * 初始化 |
| | | */ |
| | |
| | | public void init(){ |
| | | handler = this; |
| | | handler.userService = this.userService; |
| | | handler.redisTemplate = this.redisTemplate; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @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; |
| | | } |
| | | } |
| | |
| | | * @param uuid 随机数 |
| | | * @return |
| | | */ |
| | | public static R isFTPFileExist(String uuid) { |
| | | public static Result isFTPFileExist(String uuid) { |
| | | //创建 ftp 对象 |
| | | FTPClient ftp = new FTPClient(); |
| | | boolean flag = false; |
| | |
| | | // 检验登陆操作的返回码是否正确 |
| | | if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) { |
| | | ftp.disconnect(); |
| | | return R.data(400,null,"ftp 连接失败"); |
| | | return new Result(400,null,"ftp 连接失败",null); |
| | | } |
| | | |
| | | ftp.enterLocalActiveMode(); |
| | |
| | | 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(); |
| | |
| | | // 解析数据 |
| | | 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); |
| | |
| | | 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连接失败"); |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.data(400,null,"失败"); |
| | | return new Result(400,null,"失败",null); |
| | | } |
| | | |
| | | /** |
| New file |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | user.setDispatch("1"); |
| | | user.setExaminationType("0"); |
| | | user.setAccount(user.getCardid()); |
| | | user.setStatus(1); |
| | | |
| | | User user1 = new User(); |
| | | user1.setIsDeleted(0); |
| | |
| | | user.setRoleId(oneRole.getId().toString()); |
| | | user.setDispatch("1"); |
| | | user.setExaminationType("0"); |
| | | user.setAccount(user.getCardid()); |
| | | user.setAccount(user.getRealName()); |
| | | |
| | | //密码加密 |
| | | if (Func.isNotEmpty(user.getCardid())) { |
| | |
| | | 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); |
| | |
| | | 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 没有读取到,则退出 |
| | |
| | | } |
| | | } |
| | | } |
| | | 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, "新增失败!"); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | User getUserById(long id); |
| | | |
| | | /** |
| | | * 手动新增用户信息 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | int insertUser(@Param("user") User user); |
| | | } |
| | |
| | | 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> |
| | |
| | | * @return |
| | | */ |
| | | User getUserById(String id); |
| | | |
| | | /** |
| | | * 手动新增用户信息 |
| | | * @param user |
| | | * @return |
| | | */ |
| | | boolean insert(User user); |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |