Selaa lähdekoodia

微信端登录+绑定

qzyReal 2 vuotta sitten
vanhempi
commit
97cb898221

+ 2 - 1
business-system/filing-system/src/main/java/com/pj/api/WxController.java

@@ -162,10 +162,11 @@ public class WxController {
     public AjaxJson loginByOpenid() {
         SoMap soMap = SoMap.getRequestSoMap();
         String openid = soMap.getString("openid");
+        Integer type = soMap.getInt("type");
         if (StrUtil.isEmpty(openid)) {
             return AjaxJson.getError("参数异常");
         }
-        return tbMiniUserService.loginByOpenid(openid);
+        return tbMiniUserService.loginByOpenid(openid,type);
     }
 
     @RequestMapping("solve")

+ 1 - 1
sp-core/src/main/java/com/pj/current/netty/command/config/CommandNettyServerHandler.java

@@ -122,7 +122,7 @@ public class CommandNettyServerHandler extends ChannelInboundHandlerAdapter {
         RequestPackageDTO packageDTO = JSONUtil.toBean(str, RequestPackageDTO.class);
         Object params = packageDTO.getPayload().getParams();
         String sn = JSONUtil.parseObj(params).getStr("sn");
-        RedisUtil.set("sn:"+channelId, sn);
+        RedisUtil.setBySecond("sn:"+channelId, sn,180);
         String funcId = packageDTO.getFuncId();
         CommandFactory commandFactory = SpringUtil.getBean(CommandFactory.class);
         commandFactory.handler(funcId).handler(ctx, packageDTO);

+ 2 - 0
sp-core/src/main/java/com/pj/current/netty/command/handler/dto/WhitelistDTO.java

@@ -10,6 +10,7 @@ import java.io.Serializable;
 public class WhitelistDTO implements Serializable {
 
     /**
+     * address : 身份证住址
      * identity_number : 350623xxxxxxxxxxx
      * name : xxxxxxx
      * nation : xxxxxxx
@@ -21,6 +22,7 @@ public class WhitelistDTO implements Serializable {
      * check_num : -1
      */
 
+    private String address;
     private String pin;
     private String identity_number;
     private String name;

+ 6 - 3
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java

@@ -25,6 +25,7 @@ import com.pj.project.tb_manager.TbManagerService;
 import com.pj.project.tb_person_filing.TbPersonFiling;
 import com.pj.project.tb_person_filing.TbPersonFilingService;
 import com.pj.project.tb_person_filing.task.Base64ToImage;
+import com.pj.project.tb_person_filing.task.DelayIsuued;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecord;
 import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.tb_person_visit_record.task.ConvertBase64ToImage;
@@ -90,8 +91,8 @@ public class HealthlogHandler implements IHandler {
         String str = params.getStr("log");
         HealthlogDTO dto = JSONUtil.toBean(str, HealthlogDTO.class);
         String idCard = dto.getIdentity_number();
+        String sn = params.getStr("sn");
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
-
         if (tbPersonFiling == null) {
             if (!SpCfgUtil.termianlFilling()) {
                 log.error("系统不允许设备端进行备案============>删除设备端自动备份的信息,:{}", idCard);
@@ -112,11 +113,13 @@ public class HealthlogHandler implements IHandler {
                     .setJudgeBy("设备上传").setJudgeTime(needJudge ? null : now);
             tbPersonFilingService.save(tbPersonFiling);
             taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10), 50, tbPersonFiling.getId(), dto.getPicture()));
-            return;
+            //分发人员信息到其他终端
+            if (!needJudge){
+                taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(11), 4000, tbPersonFiling.getId(), sn));
+            }
         }
         Long deptId = tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
         Long venuesId = tbTerminal.getChannelId();
         TbVenues tbVenues = tbVenuesService.getById(venuesId);

+ 3 - 3
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadCommandHandler.java

@@ -27,8 +27,7 @@ import java.util.List;
 public class UploadCommandHandler implements IHandler {
     @Resource
     private MyConfig myConfig;
-    @Resource
-    private TaskService taskService;
+
 
     @Override
     public CommandType commandType() {
@@ -41,11 +40,12 @@ public class UploadCommandHandler implements IHandler {
         String sn = JSONUtil.parseObj(packageDTO.getPayload().getParams()).getStr("sn");
         String key = myConfig.getCommandPrefix() + sn;
         String command = RedisUtil.rPorp(key);
+        log.info("下发命令:{},{}", ctx.channel().id().asShortText(), command);
         RequestPackageDTO requestPackageDTO = JSONUtil.toBean(command, RequestPackageDTO.class);
         String msgId = requestPackageDTO.getMsgId();
         String channelId = ctx.channel().id().asShortText();
         RedisUtil.lPush(channelId, msgId);
-        log.info("下发命令:{},{}", ctx.channel().id().asShortText(), command);
+
         ctx.write(command);
         ctx.flush();
 

+ 7 - 40
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java

@@ -53,50 +53,17 @@ public class UploadUserHandler implements IHandler {
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
         log.info("设备上传人员信息:{}", JSONUtil.toJsonStr(packageDTO));
-        JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
-        String sn = params.getStr("sn");
-        TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        if (tbTerminal == null) {
-            log.error("========设备不存在=========:{}", sn);
-            return;
-        }
-        tbTerminal.setLastOnLine(DateUtil.now());
-        tbTerminalService.updateById(tbTerminal);
         ctx.write(OKMsg.ok());
         ctx.flush();
-        boolean terminalFilling = SpCfgUtil.termianlFilling();
-        if (!terminalFilling) {
-            log.error("系统不允许设备端进行备案================");
-            return;
-        }
+        JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
+        String sn = params.getStr("sn");
         WhitelistDTO uploadUserDTO = JSONUtil.toBean(params.getStr("users"), WhitelistDTO.class);
-        String idCarNo=uploadUserDTO.getIdentity_number();
+        String idCarNo = uploadUserDTO.getIdentity_number();
         TbPersonFiling personFiling = tbPersonFilingService.findByIdCard(idCarNo);
-        //是否允许设备端备案
-        if (personFiling == null) {
-            TbPersonFiling tbPersonFiling = new TbPersonFiling();
-            TbDept dept = tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
-            Date now = new Date();
-            boolean needJudge = TbDept.NeedJudgeEnum.MAN_JUDGE.getType().equals(dept.getNeedJudge());
-            tbPersonFiling.setCreateTime(now)
-                    .setUpdateTime(now)
-                    .setPin(uploadUserDTO.getPin())
-                    .setCreateBy("设备上传").setDeptId(dept.getId()).setDeptName(dept.getName())
-                    .setPin(idCarNo)
-                    .setIdCard(idCarNo)
-                    .setJudgeState(needJudge?0:1).setJudgeTime(needJudge?null:now).setJudgeBy(needJudge?"":"终端备案上传")
-                    .setName(uploadUserDTO.getName());
-            tbPersonFilingService.save(tbPersonFiling);
-            //转换图片
-            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10), 50, tbPersonFiling.getId(), uploadUserDTO.getPhoto()));
-            //分发人员信息到其他终端
-            taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(11), 4000, tbPersonFiling.getId(), sn));
-        } else {
-            if (!StrUtil.equals(personFiling.getPin(), uploadUserDTO.getPin())) {//更新pin
-                personFiling.setPin(uploadUserDTO.getPin());
-                tbPersonFilingService.updateById(personFiling);
-                taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(10), 4000, personFiling.getId(), sn));
-            }
+        if (personFiling!=null&&!StrUtil.equals(personFiling.getPin(), uploadUserDTO.getPin())) {//更新pin
+            personFiling.setPin(uploadUserDTO.getPin());
+            tbPersonFilingService.updateById(personFiling);
+            taskService.addTask(new DelayIsuued(RandomUtil.randomNumbers(10), 4000, personFiling.getId(), sn));
         }
     }
 }

+ 29 - 14
sp-core/src/main/java/com/pj/project/sp_admin/SpAdminService.java

@@ -95,9 +95,28 @@ public class SpAdminService {
         spAdmin.setDeptName(tbDept.getName()).setSuperAdmin(superAdmin);
     }
 
-
+    /**
+     * 绑定用户
+     *
+     * @param openid
+     * @param key
+     * @param password
+     * @param type
+     * @param name
+     * @return
+     */
     public AjaxJson bindUser(String openid, String key, String password, Integer type, String name) {
         TbMiniUser tbMiniUser = tbMiniUserService.findByUsername(key);
+        if (tbMiniUser != null) {//直接登录
+            if (tbMiniUser.getType().equals(type)) {
+                tbMiniUser.setOpenid(openid).setLastLoginTime(new Date());
+                tbMiniUserService.updateById(tbMiniUser);
+                return AjaxJson.getSuccessData(tbMiniUserService.buildToken(tbMiniUser));
+            } else {
+                return AjaxJson.getError("请更换入口");
+            }
+        }
+        //绑定操作
         if (TbMiniUser.TypeEnum.INTERIOR_TYPE.getType().equals(type)) {
             SpAdmin spAdmin = spAdminMapper.getByName(key);
             if (spAdmin == null) {
@@ -111,14 +130,9 @@ public class SpAdminService {
             if (spAdmin.getStatus() == 2) {
                 return AjaxJson.getError("此账号已被禁用");
             }
-            if (tbMiniUser==null){
-                tbMiniUser = buildMiniUser(spAdmin, openid);
-                tbMiniUser.setPassword(md5Password).setPhone(key).setUsername(key);
-                tbMiniUserService.save(tbMiniUser);
-            }else {
-                tbMiniUser.setOpenid(openid);
-                tbMiniUserService.updateById(tbMiniUser);
-            }
+            tbMiniUser = buildMiniUser(spAdmin, openid);
+            tbMiniUser.setPassword(md5Password).setPhone(key).setUsername(key);
+            tbMiniUserService.save(tbMiniUser);
             if (PhoneUtil.isPhone(key)) {
                 List<TbManager> managers = tbManagerService.findByPhone(key);
                 managers.forEach(tbManager -> tbManager.setOpenid(openid));
@@ -126,13 +140,14 @@ public class SpAdminService {
             }
             return AjaxJson.getSuccessData(tbMiniUserService.buildToken(tbMiniUser));
         } else {
-            if (tbMiniUser==null){
-                 tbMiniUser = createMiniUser(key, openid, name);
+            if (tbMiniUser == null) {
+                tbMiniUser = createMiniUser(key, openid, name);
                 String md5Password = SystemObject.getPasswordMd5(tbMiniUser.getSpAdminId(), password);
-                tbMiniUser.setPassword(md5Password).setUsername(key);
-            }else {
+                tbMiniUser.setPassword(md5Password);
+            } else {
                 tbMiniUser.setOpenid(openid);
             }
+            tbMiniUser.setLastLoginTime(new Date());
             tbMiniUserService.updateById(tbMiniUser);
             return AjaxJson.getSuccessData(tbMiniUserService.buildToken(tbMiniUser));
         }
@@ -145,7 +160,7 @@ public class SpAdminService {
         tbMiniUser.setCreateTime(new Date()).setSpAdminId(RandomUtil.randomLong(100000, 999999))
                 .setOpenid(openid).setDeptId(dept.getId() + "").setSuperAdmin(0)
                 .setPhone(key).setType(TbMiniUser.TypeEnum.TEMPORARY_TYPE.getType())
-                .setName(name);
+                .setName(name).setUsername(key);
         tbMiniUserService.save(tbMiniUser);
         return tbMiniUser;
     }

+ 12 - 5
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java

@@ -69,10 +69,17 @@ public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser>
         return tbMiniUserMapper.getList(so);
     }
 
-
-    public TbMiniUser findByOpenid(String openid) {
+    /**
+     * 根据open和type查找
+     * @param openid
+     * @param type
+     * @return
+     */
+    public TbMiniUser findByOpenid(String openid,Integer type) {
         QueryWrapper<TbMiniUser> ew = new QueryWrapper<>();
-        ew.lambda().eq(TbMiniUser::getOpenid, openid).orderByDesc(TbMiniUser::getLastLoginTime);
+        ew.lambda().eq(TbMiniUser::getOpenid, openid)
+                .eq(TbMiniUser::getType,type)
+                .orderByDesc(TbMiniUser::getLastLoginTime);
         List<TbMiniUser> list = list(ew);
         return list.isEmpty() ? null : list.get(0);
     }
@@ -84,8 +91,8 @@ public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser>
         this.remove(ew);
     }
 
-    public AjaxJson loginByOpenid(String openid) {
-        TbMiniUser tbMiniUser = this.findByOpenid(openid);
+    public AjaxJson loginByOpenid(String openid,Integer type) {
+        TbMiniUser tbMiniUser = this.findByOpenid(openid,type);
         if (tbMiniUser == null) {
             return AjaxJson.getError("用户不存在");
         }

+ 1 - 0
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml

@@ -37,6 +37,7 @@
         <where>
             <if test=' this.has("id") '>and id = #{id}</if>
             <if test=' this.has("deptId") '>and dept_id = #{deptId}</if>
+            <if test=' this.has("judgeState") '>and judge_state = #{judgeState}</if>
 
             <if test=' this.has("name") '>and name like concat('%',#{name},'%')</if>
             <if test=' this.has("type") '>and type = #{type}</if>

+ 1 - 1
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java

@@ -187,7 +187,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
             return;
         }
         List<TbTerminal> tbTerminalList = tbTerminalService.list();
-
+        log.info("排除设备下发人脸信息:{},{}",sn,JSONUtil.toJsonStr(filing));
         JSONObject params = builderParams(filing);
         tbTerminalList.stream().filter(t -> !StrUtil.equals(t.getSn(), sn)).forEach(tbTerminal -> {
             tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, tbTerminal);

+ 11 - 7
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -182,23 +182,23 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         String sn = tbTerminal.getSn();
         String msgId = RandomUtil.randomNumbers(8);
         String key = myConfig.getCommandPrefix() + sn;
-     //   String commandStr = RedisUtil.get(key);
-       // List<RequestPackageDTO> commandList = JSONUtil.toList(commandStr, RequestPackageDTO.class);
+        //   String commandStr = RedisUtil.get(key);
+        // List<RequestPackageDTO> commandList = JSONUtil.toList(commandStr, RequestPackageDTO.class);
         RequestPackageDTO commandDTO = new RequestPackageDTO();
         RequestPackageDTO.PayloadBean payloadBean = new RequestPackageDTO.PayloadBean();
 
         payloadBean.setParams(params);
         commandDTO.setFuncId(funcId).setPayload(payloadBean)
                 .setMsgId(msgId);
-       // commandList.add(commandDTO);
+        // commandList.add(commandDTO);
         TbCommandLog tbCommandLog = new TbCommandLog();
         tbCommandLog.setChannelName(tbTerminal.getChannelName()).setCommand(JSONUtil.toJsonStr(commandDTO))
                 .setMsgId(msgId).setSn(sn)
                 .setTerminalName(tbTerminal.getName()).setCreateTime(new Date()).setCreateBy(StpUserUtil.getAdminName());
         //日志记录
         tbCommandLogService.save(tbCommandLog);
-        RedisUtil.lPush(key,JSONUtil.toJsonStr(commandDTO));
-      //  RedisUtil.set(key, JSONUtil.toJsonStr(commandList));
+        RedisUtil.lPush(key, JSONUtil.toJsonStr(commandDTO));
+        //  RedisUtil.set(key, JSONUtil.toJsonStr(commandList));
     }
 
     /**
@@ -343,6 +343,9 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
         if (tbPersonFiling == null) {
             if (SpCfgUtil.termianlFilling()) {
+                TbDept dept = tbDeptService.findTheDept(TbDept.AdminTypeEnum.TEMP_TYPE.getType());
+                boolean needJudge = TbDept.NeedJudgeEnum.MAN_JUDGE.getType().equals(dept.getNeedJudge());
+                checkDataDTO.setIs_pass(needJudge ? 0 :1);
                 log.info("返回信息:{},{}", "首次备案", JSONUtil.toJsonStr(checkDataDTO));
                 return AjaxJson.getSuccess(checkBO.getName() + "首次备案", checkDataDTO);
             } else {
@@ -365,13 +368,13 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         //健康码是否绿码
         if (!StrUtil.equals(TbPersonVisitRecord.HealthEnum.GREEN.getStatus(), checkBO.getHealth_status())) {
             log.info("返回信息健康码异常:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
-            return AjaxJson.getSuccess(msg, checkDataDTO);
+            return AjaxJson.getSuccess(msg + checkBO.getHealth_status(), checkDataDTO);
         }
         //黑名单用户
         TbPersonBlack black = tbPersonBlackService.findByIdCardAndTime(idCard, now);
         if (black != null) {
             log.info("返回信息黑名单:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
-            return AjaxJson.getSuccess(msg, checkDataDTO);
+            return AjaxJson.getSuccess(msg + "黑名单用户", checkDataDTO);
         }
         //通道是否开放
         TbTerminal tbTerminal = this.findBySN(checkBO.getSn());
@@ -388,6 +391,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         log.info("返回信息=放行:{},{}", msg, JSONUtil.toJsonStr(checkDataDTO));
         return AjaxJson.getSuccess(msg, checkDataDTO);
     }
+
     public void down(Long id) {
         TbTerminal tbTerminal = this.getById(id);
         if (TbTerminal.StateType.OFFLINE.getState().equals(tbTerminal.getState())) {

+ 1 - 0
sp-core/src/main/java/com/pj/utils/cache/RedisUtil.java

@@ -130,6 +130,7 @@ public class RedisUtil {
 
     public static void lPush(String key, String value) {
         redisTemplate.opsForList().leftPush(key, value);
+        redisTemplate.expire(key, 80, TimeUnit.SECONDS);
     }
 
     public static String rPorp(String key) {

+ 3 - 3
sp-start/src/main/resources/application-dev.yml

@@ -13,12 +13,12 @@ spring:
         # 是否打开sql监控台  (生产环境请务必关闭此选项) 
         druid: 
             stat-view-servlet:
-                enabled: true
+                enabled: false
             web-stat-filter: 
-                enabled: true
+                enabled: false
             filter:
                 config:
-                    enabled: true
+                    enabled: false
 
     # redis配置 
     redis: