智慧保安后台管理-外网
Administrator
2022-04-27 9934d682a76c8d6bd05bc184bd18c1fe78399f69
保安员新增同步修改
7 files modified
2 files added
356 ■■■■■ changed files
src/main/java/org/springblade/common/utils/DesensitizedUtil.java 125 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/DataHandler.java 107 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/Monitor.java 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/Result.java 31 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/controller/UserController.java 24 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/mapper/UserMapper.xml 19 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/IUserService.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/utils/DesensitizedUtil.java
New file
@@ -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);
    }
}
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;
    }
}
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);
    }
    /**
src/main/java/org/springblade/modules/FTP/Result.java
New file
@@ -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;
    }
}
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, "新增失败!");
        }
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);
}
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>
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);
}
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;
    }
}