Browse Source

微信端

qzyReal 2 years ago
parent
commit
7f6980e774
75 changed files with 2276 additions and 330 deletions
  1. 134 0
      business-system/filing-system/src/main/java/com/pj/api/WxController.java
  2. 96 0
      business-system/filing-system/src/main/java/com/pj/biz/ReMiniUserCarFilingController.java
  3. 89 0
      business-system/filing-system/src/main/java/com/pj/biz/ReMiniUserPersonFilingController.java
  4. 6 0
      business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java
  5. 95 0
      business-system/filing-system/src/main/java/com/pj/biz/TbMiniUserController.java
  6. 7 0
      business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java
  7. 49 0
      business-system/venues-system/src/main/java/com/pj/api/GateTerminalApi.java
  8. 18 0
      business-system/venues-system/src/main/java/com/pj/api/MiniController.java
  9. 12 0
      business-system/venues-system/src/main/java/com/pj/biz/TbVenuesController.java
  10. 4 1
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdmin.java
  11. 3 1
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java
  12. 2 1
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.java
  13. 3 1
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.xml
  14. 2 0
      sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminService.java
  15. 6 1
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java
  16. 57 0
      sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java
  17. 2 2
      sp-core/src/main/java/com/pj/current/SaPlusStartup.java
  18. 22 0
      sp-core/src/main/java/com/pj/current/config/WxConfig.java
  19. 3 5
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/BlacklistHandler.java
  20. 3 4
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/CheckLogHandler.java
  21. 18 3
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java
  22. 17 10
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/UploadUserHandler.java
  23. 3 15
      sp-core/src/main/java/com/pj/current/netty/command/handler/impl/WhitelistHandler.java
  24. 18 4
      sp-core/src/main/java/com/pj/current/satoken/StpUserUtil.java
  25. 60 0
      sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFiling.java
  26. 28 0
      sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingMapper.java
  27. 50 0
      sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingMapper.xml
  28. 49 0
      sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingService.java
  29. 60 0
      sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFiling.java
  30. 28 0
      sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingMapper.java
  31. 50 0
      sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingMapper.xml
  32. 49 0
      sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingService.java
  33. 5 0
      sp-core/src/main/java/com/pj/project/tb_car_black/TbCarBlackService.java
  34. 20 6
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFiling.java
  35. 3 0
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.java
  36. 17 6
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml
  37. 111 5
      sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java
  38. 1 1
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java
  39. 1 3
      sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordService.java
  40. 1 4
      sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLog.java
  41. 1 5
      sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLogMapper.xml
  42. 14 1
      sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java
  43. 1 4
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java
  44. 10 5
      sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml
  45. 1 4
      sp-core/src/main/java/com/pj/project/tb_gate_command_log/TbGateCommandLog.java
  46. 0 4
      sp-core/src/main/java/com/pj/project/tb_gate_command_log/TbGateCommandLogMapper.xml
  47. 1 6
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminal.java
  48. 0 5
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalMapper.xml
  49. 160 3
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java
  50. 12 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/bo/ReqBO.java
  51. 54 0
      sp-core/src/main/java/com/pj/project/tb_gate_terminal/task/GateTerminalBase64ToImage.java
  52. 114 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUser.java
  53. 28 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.java
  54. 74 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.xml
  55. 64 0
      sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java
  56. 3 5
      sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java
  57. 10 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFiling.java
  58. 1 0
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.java
  59. 78 62
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml
  60. 54 17
      sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingService.java
  61. 1 1
      sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordService.java
  62. 1 9
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminal.java
  63. 1 5
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.xml
  64. 10 25
      sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java
  65. 68 71
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenues.java
  66. 1 0
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.java
  67. 5 16
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml
  68. 41 5
      sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesService.java
  69. 99 0
      sp-core/src/main/java/com/pj/project/wx/WxService.java
  70. 28 0
      sp-core/src/main/java/com/pj/project/wx/bo/BaseTemplate.java
  71. 25 0
      sp-core/src/main/java/com/pj/project/wx/bo/Msg.java
  72. 50 0
      sp-core/src/main/java/com/pj/project/wx/bo/MsgDataBO.java
  73. 46 0
      sp-core/src/main/java/com/pj/project/wx/task/TokenTask.java
  74. 4 1
      sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java
  75. 14 3
      sp-start/src/main/resources/application-dev.yml

+ 134 - 0
business-system/filing-system/src/main/java/com/pj/api/WxController.java

@@ -0,0 +1,134 @@
+package com.pj.api;
+
+
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.StrUtil;
+import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFiling;
+import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFilingService;
+import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFiling;
+import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFilingService;
+import com.pj.project.tb_car_filing.TbCarFiling;
+import com.pj.project.tb_car_filing.TbCarFilingService;
+import com.pj.project.tb_mini_user.TbMiniUser;
+import com.pj.project.tb_mini_user.TbMiniUserService;
+import com.pj.project.tb_person_filing.TbPersonFiling;
+import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project.wx.WxService;
+import com.pj.utils.sg.AjaxJson;
+import com.pj.utils.so.SoMap;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.loadtime.Aj;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RequestMapping("wx")
+@RestController
+@Slf4j
+public class WxController {
+    @Resource
+    private WxService wxService;
+    @Resource
+    private TbMiniUserService tbMiniUserService;
+    @Resource
+    private TbPersonFilingService tbPersonFilingService;
+    @Resource
+    private ReMiniUserPersonFilingService reMiniUserPersonFilingService;
+    @Resource
+    private TbCarFilingService tbCarFilingService;
+    @Resource
+    private ReMiniUserCarFilingService reMiniUserCarFilingService;
+
+
+    @GetMapping(value = "getRedirectUrl")
+    public AjaxJson getRedirectUrl(String path, @RequestParam(required = false) String state) {
+        return AjaxJson.getSuccessData(wxService.getRedirectUrl(path, state));
+    }
+
+    @GetMapping(value = "getOpenidByCode")
+    public AjaxJson getOpenidByCode(String code, @RequestParam(required = false) String openid) {
+        return AjaxJson.getSuccessData(wxService.getOpenidByCode(code, openid));
+    }
+
+    @GetMapping(value = "getInfoByOpenid")
+    public AjaxJson getInfoByOpenid(String openid) {
+        TbMiniUser tbMiniUser = tbMiniUserService.findByOpenid(openid);
+        if (tbMiniUser != null) {
+            StpUtil.login(tbMiniUser.getSpAdminId());
+            String tokenValue = StpUtil.getTokenValue();
+            tbMiniUser.setToken(tokenValue);
+            StpUserUtil.setDeptId(tbMiniUser.getDeptId() + "");
+            StpUserUtil.setAdmin(tbMiniUser.getName(), tbMiniUser.getPhone());
+            StpUserUtil.setMiniUserId(tbMiniUser.getId());
+        }
+        return AjaxJson.getSuccessData(tbMiniUser);
+    }
+
+    @GetMapping(value = "getWxConfig")
+    public AjaxJson getWxConfig(String url) {
+        return AjaxJson.getSuccessData(wxService.getWxConfig(url));
+    }
+
+    @GetMapping(value = "person-filing")
+    public AjaxJson getPersonFiling() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("loginId", StpUserUtil.getLoginIdAsLong());
+        String deptId = StpUserUtil.getDeptId();
+        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
+            so.put("deptIdList", StrUtil.splitTrim(deptId, ","));
+        }
+        List<TbPersonFiling> list = tbPersonFilingService.getForWx(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+    @PostMapping("addPersonFiling")
+    public AjaxJson addPersonFiling(TbPersonFiling tbPersonFiling) {
+        tbPersonFilingService.add(tbPersonFiling);
+        ReMiniUserPersonFiling reMiniUserPersonFiling = new ReMiniUserPersonFiling();
+        reMiniUserPersonFiling.setFilingPersonId(tbPersonFiling.getId())
+                .setMiniUserId(StpUserUtil.getMiniUserId());
+        reMiniUserPersonFilingService.save(reMiniUserPersonFiling);
+        return AjaxJson.getSuccess();
+    }
+    @PostMapping("editPersonFiling")
+    public AjaxJson editPersonFiling(TbPersonFiling tbPersonFiling) {
+        tbPersonFilingService.update(tbPersonFiling);
+        return AjaxJson.getSuccess();
+    }
+
+   @PostMapping("deletePersonFiling")
+    public AjaxJson deletePersonFiling(Integer id) {
+        tbPersonFilingService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    @PostMapping("addCarFiling")
+    public AjaxJson addCarFiling(TbCarFiling tbCarFiling) {
+        tbCarFilingService.add(tbCarFiling);
+        ReMiniUserCarFiling reMiniUserCarFiling = new ReMiniUserCarFiling();
+        reMiniUserCarFiling.setFilingCarId(tbCarFiling.getId())
+                .setMiniUserId(StpUserUtil.getMiniUserId());
+        reMiniUserCarFilingService.save(reMiniUserCarFiling);
+        return AjaxJson.getSuccess();
+    }
+    @GetMapping("car-filing")
+    public AjaxJson getCarFiling() {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("loginId", StpUserUtil.getLoginIdAsLong());
+        String deptId = StpUserUtil.getDeptId();
+        if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
+            so.put("deptIdList", StrUtil.splitTrim(deptId, ","));
+        }
+        List<TbCarFiling> list = tbCarFilingService.getForWx(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+    @PostMapping("deleteCarFiling")
+    public AjaxJson deleteCarFiling(Long id){
+        tbCarFilingService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+}

+ 96 - 0
business-system/filing-system/src/main/java/com/pj/biz/ReMiniUserCarFilingController.java

@@ -0,0 +1,96 @@
+package com.pj.biz;
+
+import java.util.List;
+
+import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFiling;
+import com.pj.project.re_mini_user_car_filing.ReMiniUserCarFilingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.utils.so.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: re_mini_user_car_filing -- 微信端用户与车辆备案中间表
+ *
+ * @author qzyReal
+ */
+@RestController
+@RequestMapping("/ReMiniUserCarFiling/")
+public class ReMiniUserCarFilingController {
+
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    ReMiniUserCarFilingService reMiniUserCarFilingService;
+
+    /**
+     * 增
+     */
+    @RequestMapping("add")
+    @SaCheckPermission(ReMiniUserCarFiling.PERMISSION_CODE)
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxJson add(ReMiniUserCarFiling r) {
+        reMiniUserCarFilingService.add(r);
+        return AjaxJson.getSuccessData(r);
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    @SaCheckPermission(ReMiniUserCarFiling.PERMISSION_CODE)
+    public AjaxJson delete(Long id) {
+        reMiniUserCarFilingService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
+    @SaCheckPermission(ReMiniUserCarFiling.PERMISSION_CODE)
+    public AjaxJson deleteByIds() {
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        int line = SP.publicMapper.deleteByIds(ReMiniUserCarFiling.TABLE_NAME, ids);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改
+     */
+    @RequestMapping("update")
+    @SaCheckPermission(ReMiniUserCarFiling.PERMISSION_CODE)
+    public AjaxJson update(ReMiniUserCarFiling r) {
+        reMiniUserCarFilingService.update(r);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(Long id) {
+        ReMiniUserCarFiling r = reMiniUserCarFilingService.getById(id);
+        return AjaxJson.getSuccessData(r);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<ReMiniUserCarFiling> list = reMiniUserCarFilingService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+}

+ 89 - 0
business-system/filing-system/src/main/java/com/pj/biz/ReMiniUserPersonFilingController.java

@@ -0,0 +1,89 @@
+package com.pj.biz;
+
+import java.util.List;
+
+import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFiling;
+import com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFilingService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.utils.so.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+* Controller: re_mini_user_person_filing -- 微信端用户与人员备案中间表
+* @author qzyReal
+*/
+@RestController
+@RequestMapping("/ReMiniUserPersonFiling/")
+public class ReMiniUserPersonFilingController {
+
+/** 底层 Service 对象 */
+@Autowired
+ReMiniUserPersonFilingService reMiniUserPersonFilingService;
+
+/** 增 */
+@RequestMapping("add")
+	@SaCheckPermission(ReMiniUserPersonFiling.PERMISSION_CODE)
+@Transactional(rollbackFor = Exception.class)
+public AjaxJson add(ReMiniUserPersonFiling r){
+reMiniUserPersonFilingService.add(r);
+return AjaxJson.getSuccessData(r);
+}
+
+/** 删 */
+@RequestMapping("delete")
+	@SaCheckPermission(ReMiniUserPersonFiling.PERMISSION_CODE)
+public AjaxJson delete(Long id){
+reMiniUserPersonFilingService.delete(id);
+return AjaxJson.getSuccess();
+}
+
+/** 删 - 根据id列表 */
+@RequestMapping("deleteByIds")
+	@SaCheckPermission(ReMiniUserPersonFiling.PERMISSION_CODE)
+public AjaxJson deleteByIds(){
+List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+	int line = SP.publicMapper.deleteByIds(ReMiniUserPersonFiling.TABLE_NAME, ids);
+	return AjaxJson.getByLine(line);
+	}
+
+	/** 改 */
+	@RequestMapping("update")
+		@SaCheckPermission(ReMiniUserPersonFiling.PERMISSION_CODE)
+	public AjaxJson update(ReMiniUserPersonFiling r){
+		reMiniUserPersonFilingService.update(r);
+	return AjaxJson.getSuccess();
+	}
+
+	/** 查 - 根据id */
+	@RequestMapping("getById")
+	public AjaxJson getById(Long id){
+	ReMiniUserPersonFiling r = reMiniUserPersonFilingService.getById(id);
+	return AjaxJson.getSuccessData(r);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	@RequestMapping("getList")
+	public AjaxJson getList() {
+	SoMap so = SoMap.getRequestSoMap();
+		List<ReMiniUserPersonFiling> list = reMiniUserPersonFilingService.getList(so.startPage());
+	return AjaxJson.getPageData(so.getDataCount(), list);
+	}
+
+
+
+
+
+
+
+
+
+
+			}

+ 6 - 0
business-system/filing-system/src/main/java/com/pj/biz/TbCarFilingController.java

@@ -96,5 +96,11 @@ public class TbCarFilingController {
         return AjaxJson.getPageData(so.getDataCount(), list);
     }
 
+    @RequestMapping("judge")
+    @SaCheckPermission(TbCarFiling.PERMISSION_CODE_JUDGE)
+    public AjaxJson judge(TbCarFiling t){
+        tbCarFilingService.judge(t);
+        return AjaxJson.getSuccess();
+    }
 
 }

+ 95 - 0
business-system/filing-system/src/main/java/com/pj/biz/TbMiniUserController.java

@@ -0,0 +1,95 @@
+package com.pj.biz;
+
+import java.util.List;
+
+import com.pj.project.tb_mini_user.TbMiniUser;
+import com.pj.project.tb_mini_user.TbMiniUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import com.pj.utils.sg.*;
+import com.pj.utils.so.*;
+import com.pj.project4sp.SP;
+
+import com.pj.current.satoken.StpUserUtil;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+
+/**
+ * Controller: tb_mini_user -- h5端用户
+ *
+ * @author qzyReal
+ */
+@RestController
+@RequestMapping("/TbMiniUser/")
+public class TbMiniUserController {
+
+    /**
+     * 底层 Service 对象
+     */
+    @Autowired
+    TbMiniUserService tbMiniUserService;
+
+    /**
+     * 增
+     */
+    @RequestMapping("add")
+    @SaCheckPermission(TbMiniUser.PERMISSION_CODE)
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxJson add(TbMiniUser t) {
+        tbMiniUserService.add(t);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 删
+     */
+    @RequestMapping("delete")
+    @SaCheckPermission(TbMiniUser.PERMISSION_CODE)
+    public AjaxJson delete(Long id) {
+        tbMiniUserService.delete(id);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 删 - 根据id列表
+     */
+    @RequestMapping("deleteByIds")
+    @SaCheckPermission(TbMiniUser.PERMISSION_CODE)
+    public AjaxJson deleteByIds() {
+        List<Long> ids = SoMap.getRequestSoMap().getListByComma("ids", long.class);
+        int line = SP.publicMapper.deleteByIds(TbMiniUser.TABLE_NAME, ids);
+        return AjaxJson.getByLine(line);
+    }
+
+    /**
+     * 改
+     */
+    @RequestMapping("update")
+    public AjaxJson update(TbMiniUser t) {
+        tbMiniUserService.update(t);
+        return AjaxJson.getSuccess();
+    }
+
+    /**
+     * 查 - 根据id
+     */
+    @RequestMapping("getById")
+    public AjaxJson getById(Long id) {
+        TbMiniUser t = tbMiniUserService.getById(id);
+        return AjaxJson.getSuccessData(t);
+    }
+
+    /**
+     * 查集合 - 根据条件(参数为空时代表忽略指定条件)
+     */
+    @RequestMapping("getList")
+    public AjaxJson getList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbMiniUser> list = tbMiniUserService.getList(so.startPage());
+        return AjaxJson.getPageData(so.getDataCount(), list);
+    }
+
+
+}

+ 7 - 0
business-system/filing-system/src/main/java/com/pj/biz/TbPersonFilingController.java

@@ -98,4 +98,11 @@ public class TbPersonFilingController {
     }
 
 
+    @RequestMapping("judge")
+    @SaCheckPermission(TbPersonFiling.PERMISSION_CODE_JUDGE)
+    public AjaxJson judge(TbPersonFiling filing){
+        tbPersonFilingService.judge(filing);
+        return AjaxJson.getSuccess();
+    }
+
 }

+ 49 - 0
business-system/venues-system/src/main/java/com/pj/api/GateTerminalApi.java

@@ -0,0 +1,49 @@
+package com.pj.api;
+
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONUtil;
+import com.pj.project.tb_gate_terminal.TbGateTerminalService;
+import com.pj.project.tb_gate_terminal.bo.ReqBO;
+import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.utils.sg.AjaxJson;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedReader;
+
+@RequestMapping("gate/terminal")
+@RestController
+@Slf4j
+public class GateTerminalApi {
+    @Resource
+    private TbGateTerminalService tbGateTerminalService;
+
+    @RequestMapping("req")
+    public AjaxJson test(HttpServletRequest request, HttpServletResponse response) {
+        char[] lineChars = new char[1024 * 1024];
+        char[] totalChars = new char[1024 * 1024];
+        int readLen = 0;
+        int totalLen = 0;
+        try {
+            BufferedReader reader = request.getReader();
+            while ((readLen = reader.read(lineChars)) > 0) {
+                for (int i = 0; i < readLen; i++) {
+                    totalChars[totalLen + i] = lineChars[i];
+                }
+                totalLen += readLen;
+            }
+        } catch (Exception e) { /*report an error*/ }
+        String lineStr = new String(totalChars);
+        log.info("道闸请求:{}", lineStr);
+        ReqBO bo = JSONUtil.toBean(JSONUtil.parseObj(lineStr).getStr("AlarmInfoPlate"), ReqBO.class);
+        tbGateTerminalService.record(bo);
+        return AjaxJson.getSuccess();
+    }
+
+}

+ 18 - 0
business-system/venues-system/src/main/java/com/pj/api/MiniController.java

@@ -0,0 +1,18 @@
+package com.pj.api;
+
+import com.pj.project.tb_venues.TbVenuesService;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@RequestMapping("mini")
+@RestController
+public class MiniController {
+    @Resource
+    private TbVenuesService tbVenuesService;
+
+
+
+}

+ 12 - 0
business-system/venues-system/src/main/java/com/pj/biz/TbVenuesController.java

@@ -5,6 +5,7 @@ import java.util.List;
 import cn.hutool.core.util.StrUtil;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
+import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -100,5 +101,16 @@ public class TbVenuesController {
         return AjaxJson.getPageData((long) listMap.size(), listTree);
     }
 
+    @GetMapping(value = "getInnerList")
+    public AjaxJson getInnerList() {
+        SoMap so = SoMap.getRequestSoMap();
+        List<TbVenues> list = tbVenuesService.getInnerList(so);
+        return AjaxJson.getSuccessData(list);
+    }
+
+    @PostMapping(value = "release")
+    public AjaxJson pass(Long id) {
+       return tbVenuesService.release(id);
+    }
 
 }

+ 4 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdmin.java

@@ -56,7 +56,10 @@ public class SpAdmin implements Serializable  {
 	public String loginIp;	
 	
 	/** 登陆次数 */
-	public Integer loginCount;	
+	public Integer loginCount;
+	private Integer bind;
+	private Date bindTime;
+	private String openid;
 	
 	
 	// -------- 额外字段 

+ 3 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminController.java

@@ -5,6 +5,7 @@ import java.util.List;
 import cn.hutool.core.util.StrUtil;
 import com.pj.current.satoken.StpUserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -190,5 +191,6 @@ public class SpAdminController {
 		String token = StpUtil.createLoginSession(adminId);
 		return AjaxJson.getSuccessData(token);
 	}
-	
+
+
 }

+ 2 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.java

@@ -72,6 +72,7 @@ public interface SpAdminMapper {
 	 * @return
 	 */
 	public int updateLoginLog(@Param("id")long id, @Param("loginIp")String loginIp);
-	
 
+
+    void bindUser(SpAdmin spAdmin);
 }

+ 3 - 1
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminMapper.xml

@@ -106,7 +106,9 @@
 		login_count = login_count + 1
 		where id = #{id}
 	</update>
-	
+    <update id="bindUser">
+		update sp_admin set openid=#{openid},bind=1,bind_time=now() where id=#{id}
+	</update>
 
 
 </mapper>

+ 2 - 0
sp-admin/src/main/java/com/pj/project4sp/admin/SpAdminService.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.pj.current.global.BusinessException;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.utils.sg.AjaxJson;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -74,4 +75,5 @@ public class SpAdminService {
         return id;
     }
 
+
 }

+ 6 - 1
sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminController.java

@@ -3,6 +3,7 @@ package com.pj.project4sp.admin4acc;
 import javax.servlet.http.HttpServletRequest;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -69,5 +70,9 @@ public class SpAccAdminController {
 		map.set("appCfg", SpCfgUtil.getAppCfg());	
 		return AjaxJson.getSuccessData(map); 
 	}
-	
+
+	@PostMapping("bind")
+	public AjaxJson bind(String openid,String key,String password,Integer type,String name){
+		return spAccAdminService.bindUser(openid,key,password,type,name);
+	}
 }

+ 57 - 0
sp-admin/src/main/java/com/pj/project4sp/admin4acc/SpAccAdminService.java

@@ -6,7 +6,11 @@ import java.util.Date;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import cn.hutool.core.util.RandomUtil;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.project.tb_mini_user.TbMiniUser;
+import com.pj.project.tb_mini_user.TbMiniUserService;
+import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +47,8 @@ public class SpAccAdminService {
 
     @Autowired
     SpAdminLoginMapper sysLoginLogMapper;
+    @Resource
+    private TbMiniUserService tbMiniUserService;
 
     /**
      * 登录
@@ -138,4 +144,55 @@ public class SpAccAdminService {
         sysLoginLogMapper.add(al);
     }
 
+    public AjaxJson bindUser(String openid, String key, String password, Integer type,String name) {
+        TbMiniUser db = tbMiniUserService.findByOpenid(openid);
+        if (db != null) {
+            return AjaxJson.getError("您已绑定其他账户");
+        }
+        if (TbMiniUser.TypeEnum.INTERIOR_TYPE.getType().equals(type)) {
+            SpAdmin spAdmin = spAdminMapper.getByName(key);
+            if (spAdmin == null) {
+                return AjaxJson.getError("账号错误");
+            }
+            String md5Password = SystemObject.getPasswordMd5(spAdmin.getId(), password);
+            if (!spAdmin.getPassword2().equals(md5Password)) {
+                return AjaxJson.getError("密码错误");
+            }
+            // 4、是否禁用
+            if (spAdmin.getStatus() == 2) {
+                return AjaxJson.getError("此账号已被禁用");
+            }
+            if (spAdmin.getBind() == 1) {
+                return AjaxJson.getError("此账号已被占用");
+            }
+            spAdmin.setOpenid(openid);
+            spAdminMapper.bindUser(spAdmin);
+            TbMiniUser tbMiniUser = buildMiniUser(spAdmin, openid);
+            tbMiniUserService.save(tbMiniUser);
+            return AjaxJson.getSuccessData(tbMiniUser);
+        } else {
+            TbMiniUser tbMiniUser = createMiniUser(key,openid,name);
+            return AjaxJson.getSuccessData(tbMiniUser);
+        }
+    }
+
+    private TbMiniUser createMiniUser(String key, String openid,String name) {
+        TbMiniUser tbMiniUser = new TbMiniUser();
+        tbMiniUser.setCreateTime(new Date()).setSpAdminId(RandomUtil.randomLong(100000,999999))
+                .setOpenid(openid).setDeptId("-1")
+                .setPhone(key).setType(TbMiniUser.TypeEnum.TEMPORARY_TYPE.getType())
+                .setName(name);
+        tbMiniUserService.save(tbMiniUser);
+        return tbMiniUser;
+    }
+    private TbMiniUser buildMiniUser(SpAdmin spAdmin, String openid) {
+        TbMiniUser tbMiniUser = new TbMiniUser();
+        tbMiniUser.setCreateTime(new Date())
+                .setDeptId(spAdmin.getDeptId())
+                .setOpenid(openid).setSpAdminId(spAdmin.getId())
+                .setPhone(spAdmin.getPhone())
+                .setType(2)
+                .setName(spAdmin.getNickname());
+        return tbMiniUser;
+    }
 }

+ 2 - 2
sp-core/src/main/java/com/pj/current/SaPlusStartup.java

@@ -45,12 +45,12 @@ public class SaPlusStartup implements CommandLineRunner {
         InetSocketAddress commandAddress = new InetSocketAddress(myConfig.getIp(),myConfig.getCommandPort());
         CommandNettyServer commandNettyServer=  new CommandNettyServer(commandAddress);
         commandNettyServer.setDaemon(true);
-      //  commandNettyServer.start();
+        commandNettyServer.start();
 
         InetSocketAddress hearAddress = new InetSocketAddress(myConfig.getIp(),myConfig.getHeartPort());
         HeartNettyServer heartNettyServer=  new HeartNettyServer(hearAddress);
         heartNettyServer.setDaemon(true);
-      //  heartNettyServer.start();
+        heartNettyServer.start();
     }
 
 	/**

+ 22 - 0
sp-core/src/main/java/com/pj/current/config/WxConfig.java

@@ -0,0 +1,22 @@
+package com.pj.current.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "wx")
+@Data
+public class WxConfig {
+
+    private String appId;
+    private String appSecret;
+    private String domain;
+    private String authLoginUrl;
+    private String openidUrl;
+    private String accessTokenKey;
+    private String jsApiTicketKey;
+    private String  accessTokenUrl;
+    private String jsApiTokenUrl;
+    private String sendMsgUrl;
+}

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

@@ -42,15 +42,13 @@ public class BlacklistHandler implements IHandler {
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        if (tbTerminal == null || tbTerminal.getDeptId() == null) {
-            log.error("设备未绑定=========:{}", sn);
+        if (tbTerminal == null) {
+            log.error("设备不存在=========:{}", sn);
             return;
         }
         ctx.write(OKMsg.ok());
         ctx.flush();
         BlackPersonDTO uploadUserDTO = JSONUtil.toBean(params.getStr("users"), BlackPersonDTO.class);
-        Long deptId = tbTerminal.getDeptId();
-        TbPersonBlack tbPersonBlack = tbPersonBlackService.findByIdCardAndDeptId(uploadUserDTO.getIdentity_number(),deptId);
-
+        //todo 分发到其他设备
     }
 }

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

@@ -56,21 +56,20 @@ public class CheckLogHandler implements IHandler {
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String str = params.getStr("log");
         ChecklogDTO dto = JSONUtil.toBean(str, ChecklogDTO.class);
-
+        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByPin(dto.getPin());
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        Long deptId = tbTerminal.getDeptId();
+        Long deptId = tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
         Date date = dto.getDate();
         LocalDateTime dayTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
         Integer direction = dto.getDirection();
-        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByPin(dto.getPin());
         String idCard = tbPersonFiling.getIdCard();
         TbPersonVisitRecord record = tbPersonVisitRecordService.findTheNearRecord(idCard, deptId, direction, dayTime.minusSeconds(8));
         if (record == null) {
             record = new TbPersonVisitRecord();
         }
-        record.setDeptId(tbTerminal.getDeptId()).setType(TbPersonVisitRecord.TypeEnum.UPLOAD.getType())
+        record.setDeptId(deptId).setType(TbPersonVisitRecord.TypeEnum.UPLOAD.getType())
                 .setVenues(tbTerminal.getVenuesName()).setChannel(tbTerminal.getChannelName())
                 .setTerminalName(tbTerminal.getName()).setVisitDate(dto.getDate()).setCreateTime(new Date())
                 .setSn(sn).setUpdateTime(new Date()).setAllowPass(dto.isAllow_through())

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

@@ -2,6 +2,7 @@ package com.pj.current.netty.command.handler.impl;
 
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.pj.current.netty.command.constants.CommandType;
@@ -20,6 +21,7 @@ import com.pj.project.tb_person_visit_record.TbPersonVisitRecordService;
 import com.pj.project.tb_person_visit_record.task.ConvertBase64ToImage;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.utils.cache.RedisUtil;
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -60,10 +62,23 @@ public class HealthlogHandler implements IHandler {
         HealthlogDTO dto = JSONUtil.toBean(str, HealthlogDTO.class);
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        Long deptId = tbTerminal.getDeptId();
         String idCard = dto.getIdentity_number();
+        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
+        Long deptId=tbPersonFiling.getDeptId();
         TbDept tbDept = tbDeptService.getById(deptId);
-        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCardAndDeptId(idCard, deptId);
+        //车辆道闸判断结果 0 不通行 1 可放行
+        String carJudgeResult = RedisUtil.get("result:" + tbTerminal.getVenuesId());
+        //可放行
+        if (dto.isAllow_through()){
+            if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())
+                    ||(StrUtil.equals(carJudgeResult, "1"))){
+                try {
+                    tbTerminalService.open(tbTerminal.getId());
+                } catch (Exception e) {
+                    log.error("开闸失败:{}", e.getMessage());
+                }
+            }
+        }
         Date date = dto.getDate();
         LocalDateTime dayTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
         Integer direction = dto.getDirection();
@@ -71,7 +86,7 @@ public class HealthlogHandler implements IHandler {
         if (record == null) {
             record = new TbPersonVisitRecord();
         }
-        record.setDeptId(tbTerminal.getDeptId()).setType(TbPersonVisitRecord.TypeEnum.UPLOAD.getType())
+        record.setDeptId(deptId).setType(TbPersonVisitRecord.TypeEnum.UPLOAD.getType())
                 .setVenues(tbTerminal.getVenuesName()).setChannel(tbTerminal.getChannelName())
                 .setTerminalName(tbTerminal.getName()).setVisitDate(dto.getDate()).setCreateTime(new Date())
                 .setSn(sn).setUpdateTime(new Date()).setAllowPass(dto.isAllow_through()).setHealthStatus(dto.getHealth_status())

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

@@ -10,6 +10,8 @@ import com.pj.current.netty.command.handler.dto.WhitelistDTO;
 import com.pj.current.netty.dto.OKMsg;
 import com.pj.current.netty.dto.RequestPackageDTO;
 import com.pj.current.task.TaskService;
+import com.pj.project.tb_dept.TbDept;
+import com.pj.project.tb_dept.TbDeptService;
 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;
@@ -36,6 +38,9 @@ public class UploadUserHandler implements IHandler {
     @Resource
     private TaskService taskService;
 
+    @Resource
+    private TbDeptService tbDeptService;
+
 
 
     @Override
@@ -48,30 +53,32 @@ public class UploadUserHandler implements IHandler {
         JSONObject params = JSONUtil.parseObj(packageDTO.getPayload().getParams());
         String sn = params.getStr("sn");
         TbTerminal tbTerminal = tbTerminalService.findBySN(sn);
-        if (tbTerminal == null || tbTerminal.getDeptId() == null) {
-            log.error("设备未绑定=========:{}", sn);
+        if (tbTerminal == null ) {
+            log.error("========设备不存在=========:{}", sn);
             return;
         }
         ctx.write(OKMsg.ok());
         ctx.flush();
-        Long deptId = tbTerminal.getDeptId();
         WhitelistDTO uploadUserDTO = JSONUtil.toBean(params.getStr("users"), WhitelistDTO.class);
-        TbPersonFiling personFiling = tbPersonFilingService.findByIdCardAndDeptId(uploadUserDTO.getIdentity_number(),deptId);
+        TbPersonFiling personFiling = tbPersonFilingService.findByIdCard(uploadUserDTO.getIdentity_number());
         if (personFiling == null) {
+            TbPersonFiling   tbPersonFiling = new TbPersonFiling();
+           List<TbDept>deptList= tbDeptService.list();
+           deptList.stream().filter(tbDept -> tbDept.getPassType()==TbDept.PassTypeEnum.BLOW.getType()).findAny()
+                   .ifPresent(tbDept -> tbPersonFiling.setDeptId(tbDept.getId()));
             Date now = new Date();
-            personFiling = new TbPersonFiling();
-            personFiling.setCreateTime(now)
+            tbPersonFiling.setCreateTime(now)
                     .setUpdateTime(now)
                     .setPin(uploadUserDTO.getPin())
                     .setCreateBy("设备上传")
                     .setIdCard(uploadUserDTO.getIdentity_number())
-                    .setDeptId(deptId)
+                    .setJudgeState(1).setJudgeTime(now).setJudgeBy("终端备案上传")
                     .setName(uploadUserDTO.getName());
-            tbPersonFilingService.save(personFiling);
+            tbPersonFilingService.save(tbPersonFiling);
             //转换图片
-            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),2000,personFiling.getId(),uploadUserDTO.getPhoto()));
+            taskService.addTask(new Base64ToImage(RandomUtil.randomNumbers(10),2000,tbPersonFiling.getId(),uploadUserDTO.getPhoto()));
         }
-        List<TbTerminal> list = tbTerminalService.findByDeptId(deptId);
+        List<TbTerminal> list = tbTerminalService.list();
         //分发人员信息,不分发上传设备
         list.stream().filter(t -> !StrUtil.equals(t.getSn(), sn))
                 .forEach(t -> {

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

@@ -1,27 +1,15 @@
 package com.pj.current.netty.command.handler.impl;
 
-import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
+
 import com.pj.current.netty.command.constants.CommandType;
 import com.pj.current.netty.command.handler.IHandler;
-import com.pj.current.netty.command.handler.dto.WhitelistDTO;
-import com.pj.current.netty.dto.OKMsg;
+
 import com.pj.current.netty.dto.RequestPackageDTO;
-import com.pj.current.task.TaskService;
-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_terminal.TbTerminal;
-import com.pj.project.tb_terminal.TbTerminalService;
+
 import io.netty.channel.ChannelHandlerContext;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
 
 /**
  * 白名单上传

+ 18 - 4
sp-core/src/main/java/com/pj/current/satoken/StpUserUtil.java

@@ -9,6 +9,7 @@ import cn.dev33.satoken.stp.SaLoginModel;
 import cn.dev33.satoken.stp.SaTokenInfo;
 import cn.dev33.satoken.stp.StpLogic;
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.pj.utils.cache.RedisUtil;
@@ -21,15 +22,28 @@ import com.pj.utils.cache.RedisUtil;
 public class StpUserUtil {
     public static final long ADMIN_DEPT_ID = 9999999L;
 
+    public static void setMiniUserId(Long userId){
+        String key = "mini:" + StpUtil.getLoginIdAsString();
+        String id=userId+"";
+        if (StrUtil.isNotEmpty(id)) {
+            RedisUtil.set(key, id);
+        }
+    }
+    public static Long getMiniUserId(){
+        String key = "mini:" + StpUtil.getLoginIdAsString();
+       return Long.valueOf(RedisUtil.get(key));
+    }
+
     public static void setDeptId(String deptId) {
         String key = "dept:" + StpUtil.getLoginIdAsString();
-        RedisUtil.set(key, deptId);
+        if (StrUtil.isNotEmpty(deptId)) {
+            RedisUtil.set(key, deptId);
+        }
     }
 
     public static String getDeptId() {
         String key = "dept:" + StpUtil.getLoginIdAsString();
-        String deptId = RedisUtil.get(key);
-        return deptId;
+        return RedisUtil.get(key);
     }
 
     public static void setAdmin(String name, String phone) {
@@ -44,7 +58,7 @@ public class StpUserUtil {
             String key = "login_user:" + StpUtil.getLoginIdAsString();
             String cacheObJ = RedisUtil.get(key);
             return JSONUtil.parseObj(cacheObJ).getStr("name");
-        }catch (Exception e){
+        } catch (Exception e) {
             return "";
         }
     }

+ 60 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFiling.java

@@ -0,0 +1,60 @@
+package com.pj.project.re_mini_user_car_filing;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: re_mini_user_car_filing -- 微信端用户与车辆备案中间表
+ * @author qzyReal 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(ReMiniUserCarFiling.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class ReMiniUserCarFiling extends Model<ReMiniUserCarFiling> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "re_mini_user_car_filing";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "re-mini-user-car-filing";	
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 *  
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;	
+
+	/**
+	 *  
+	 */
+	private Long miniUserId;	
+
+	/**
+	 *  
+	 */
+	private Long filingCarId;	
+
+
+
+
+
+	
+
+
+}

+ 28 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingMapper.java

@@ -0,0 +1,28 @@
+package com.pj.project.re_mini_user_car_filing;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+	import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+* Mapper: re_mini_user_car_filing -- 微信端用户与车辆备案中间表
+* @author qzyReal
+*/
+
+@Mapper
+@Repository
+public interface ReMiniUserCarFilingMapper extends BaseMapper <ReMiniUserCarFiling> {
+
+/**
+* 查集合 - 根据条件(参数为空时代表忽略指定条件)
+* @param so 参数集合
+* @return 数据列表
+*/
+List<ReMiniUserCarFiling> getList(SoMap so);
+
+
+}

+ 50 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.pj.project.re_mini_user_car_filing.ReMiniUserCarFilingMapper">
+
+
+	<!-- ================================== 查询相关 ================================== -->
+			<!-- select id, mini_user_id, filing_car_id from re_mini_user_car_filing  -->
+
+		<!-- 通用映射:手动模式 -->
+		<resultMap id="model" type="com.pj.project.re_mini_user_car_filing.ReMiniUserCarFiling">
+				<result property="id" column="id" />
+				<result property="miniUserId" column="mini_user_id" />
+				<result property="filingCarId" column="filing_car_id" />
+		</resultMap>
+
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select *
+		from re_mini_user_car_filing
+	</sql>
+
+
+
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+						<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("miniUserId") '> and mini_user_id = #{miniUserId} </if>
+			<if test=' this.has("filingCarId") '> and filing_car_id = #{filingCarId} </if>
+		</where>
+		order by
+		<choose>
+						<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> mini_user_id desc </when>
+			<when test='sortType == 3'> filing_car_id desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+
+
+
+
+
+
+
+
+
+
+</mapper>

+ 49 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_car_filing/ReMiniUserCarFilingService.java

@@ -0,0 +1,49 @@
+package com.pj.project.re_mini_user_car_filing;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.pj.utils.so.*;
+
+/**
+ * Service: re_mini_user_car_filing -- 微信端用户与车辆备案中间表
+ * @author qzyReal 
+ */
+@Service
+public class ReMiniUserCarFilingService extends ServiceImpl<ReMiniUserCarFilingMapper, ReMiniUserCarFiling> implements IService<ReMiniUserCarFiling>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	ReMiniUserCarFilingMapper reMiniUserCarFilingMapper;
+
+
+	/** 增 */
+	public void add(ReMiniUserCarFiling r){
+	this.save( r);
+	}
+
+	/** 删 */
+	public void delete(Long id){
+	this.removeById(id);
+	}
+
+	/** 改 */
+	public void update(ReMiniUserCarFiling r){
+	this.updateById(r);
+	}
+
+	/** 查 */
+	public ReMiniUserCarFiling getById(Long id){
+	return super.getById(id);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	public List<ReMiniUserCarFiling> getList(SoMap so) {
+		return reMiniUserCarFilingMapper.getList(so);	
+	}
+	
+
+}

+ 60 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFiling.java

@@ -0,0 +1,60 @@
+package com.pj.project.re_mini_user_person_filing;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: re_mini_user_person_filing -- 微信端用户与人员备案中间表
+ * @author qzyReal 
+ */
+@Data
+@Accessors(chain = true)
+@TableName(ReMiniUserPersonFiling.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class ReMiniUserPersonFiling extends Model<ReMiniUserPersonFiling> implements Serializable {
+
+	// ---------- 模块常量 ----------
+	/**
+	 * 序列化版本id 
+	 */
+	private static final long serialVersionUID = 1L;	
+	/**
+	 * 此模块对应的表名 
+	 */
+	public static final String TABLE_NAME = "re_mini_user_person_filing";	
+	/**
+	 * 此模块对应的权限码 
+	 */
+	public static final String PERMISSION_CODE = "re-mini-user-person-filing";	
+
+
+	// ---------- 表中字段 ----------
+	/**
+	 *  
+	 */
+	@TableId(type = IdType.AUTO)
+	private Long id;
+
+	/**
+	 *  
+	 */
+	private Long miniUserId;
+
+	/**
+	 *  
+	 */
+	private Integer filingPersonId;
+
+
+
+
+
+	
+
+
+}

+ 28 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingMapper.java

@@ -0,0 +1,28 @@
+package com.pj.project.re_mini_user_person_filing;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+	import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+* Mapper: re_mini_user_person_filing -- 微信端用户与人员备案中间表
+* @author qzyReal
+*/
+
+@Mapper
+@Repository
+public interface ReMiniUserPersonFilingMapper extends BaseMapper <ReMiniUserPersonFiling> {
+
+/**
+* 查集合 - 根据条件(参数为空时代表忽略指定条件)
+* @param so 参数集合
+* @return 数据列表
+*/
+List<ReMiniUserPersonFiling> getList(SoMap so);
+
+
+}

+ 50 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingMapper.xml

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFilingMapper">
+
+
+	<!-- ================================== 查询相关 ================================== -->
+			<!-- select id, mini_user_id, filing_person_id from re_mini_user_person_filing  -->
+
+		<!-- 通用映射:手动模式 -->
+		<resultMap id="model" type="com.pj.project.re_mini_user_person_filing.ReMiniUserPersonFiling">
+				<result property="id" column="id" />
+				<result property="miniUserId" column="mini_user_id" />
+				<result property="filingPersonId" column="filing_person_id" />
+		</resultMap>
+
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select *
+		from re_mini_user_person_filing
+	</sql>
+
+
+
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+						<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("miniUserId") '> and mini_user_id = #{miniUserId} </if>
+			<if test=' this.has("filingPersonId") '> and filing_person_id = #{filingPersonId} </if>
+		</where>
+		order by
+		<choose>
+						<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> mini_user_id desc </when>
+			<when test='sortType == 3'> filing_person_id desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+
+
+
+
+
+
+
+
+
+
+</mapper>

+ 49 - 0
sp-core/src/main/java/com/pj/project/re_mini_user_person_filing/ReMiniUserPersonFilingService.java

@@ -0,0 +1,49 @@
+package com.pj.project.re_mini_user_person_filing;
+
+import java.util.List;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.pj.utils.so.*;
+
+/**
+ * Service: re_mini_user_person_filing -- 微信端用户与人员备案中间表
+ * @author qzyReal 
+ */
+@Service
+public class ReMiniUserPersonFilingService extends ServiceImpl<ReMiniUserPersonFilingMapper, ReMiniUserPersonFiling> implements IService<ReMiniUserPersonFiling>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	ReMiniUserPersonFilingMapper reMiniUserPersonFilingMapper;
+
+
+	/** 增 */
+	public void add(ReMiniUserPersonFiling r){
+	this.save( r);
+	}
+
+	/** 删 */
+	public void delete(Long id){
+	this.removeById(id);
+	}
+
+	/** 改 */
+	public void update(ReMiniUserPersonFiling r){
+	this.updateById(r);
+	}
+
+	/** 查 */
+	public ReMiniUserPersonFiling getById(Long id){
+	return super.getById(id);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	public List<ReMiniUserPersonFiling> getList(SoMap so) {
+		return reMiniUserPersonFilingMapper.getList(so);	
+	}
+	
+
+}

+ 5 - 0
sp-core/src/main/java/com/pj/project/tb_car_black/TbCarBlackService.java

@@ -79,4 +79,9 @@ public class TbCarBlackService extends ServiceImpl<TbCarBlackMapper, TbCarBlack>
     }
 
 
+    public TbCarBlack findByCarNo(String carNo, String time) {
+        QueryWrapper<TbCarBlack> ew = new QueryWrapper<>();
+        ew.eq("car_no", carNo.toUpperCase());
+        return getOne(ew);
+    }
 }

+ 20 - 6
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFiling.java

@@ -38,6 +38,7 @@ public class TbCarFiling extends Model<TbCarFiling> implements Serializable {
 	public static final String PERMISSION_CODE_ADD = "tb-car-filing-add";
 	public static final String PERMISSION_CODE_DEL = "tb-car-filing-del";
 	public static final String PERMISSION_CODE_EDIT = "tb-car-filing-edit";
+	public static final String PERMISSION_CODE_JUDGE = "tb-car-filing-judge";
 
 
 	// ---------- 表中字段 ----------
@@ -54,19 +55,27 @@ public class TbCarFiling extends Model<TbCarFiling> implements Serializable {
 	private String deptName;
 
 	/**
-	 * 车牌号 
+	 * 车牌号
 	 */
-	private String carNo;	
+	private String carNo;
 
 	/**
-	 * 类型(1=临时,2=内部) 
+	 * 类型(1=临时,2=内部)
 	 */
 	private int type=1;
 
 	/**
-	 * 联系人 
+	 * 联系人
 	 */
-	private String driverName;	
+	private String driverName;
+	/**
+	 * 司机工号
+	 */
+	private String driverPin;
+	/**
+	 * 司机人脸
+	 */
+	private String driverPhoto;
 
 	/**
 	 * 联系电话 
@@ -116,7 +125,12 @@ public class TbCarFiling extends Model<TbCarFiling> implements Serializable {
 	/**
 	 * 更新人 
 	 */
-	private String updateBy;	
+	private String updateBy;
+
+	private int judgeState;
+	private Date judgeTime;
+	private String judgeBy;
+
 
 
 	@TableField(exist = false)

+ 3 - 0
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.java

@@ -2,6 +2,7 @@ package com.pj.project.tb_car_filing;
 
 import java.util.List;
 
+import com.pj.project.tb_person_filing.TbPersonFiling;
 import org.apache.ibatis.annotations.Mapper;
 
 import com.pj.utils.so.*;
@@ -27,4 +28,6 @@ public interface TbCarFilingMapper extends BaseMapper<TbCarFiling> {
     List<TbCarFiling> getList(SoMap so);
 
     TbCarFiling getById(Long id);
+
+    List<TbCarFiling> getForWx(SoMap soMap);
 }

+ 17 - 6
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingMapper.xml

@@ -41,6 +41,7 @@
 			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
 			<if test=' this.has("carNo") '> and car_no  like concat('%',#{carNo} ,'%')</if>
 			<if test=' this.has("type") '> and type = #{type} </if>
+			<if test=' this.has("judgeState") '> and judge_state = #{judgeState} </if>
 			<if test=' this.has("driverName") '> and driver_name like concat('%', #{driverName} ,'%')</if>
 			<if test=' this.has("driverContact") '> and driver_contact  like concat('%', #{driverContact} ,'%')</if>
 			<if test=' this.has("driverIdCard") '> and driver_id_card = #{driverIdCard} </if>
@@ -77,12 +78,22 @@
 	<select id="getById" resultType="com.pj.project.tb_car_filing.TbCarFiling">
 		<include refid="select_sql"/> where  id=#{id}
 	</select>
-
-
-
-
-
-
+    <select id="getForWx" resultType="com.pj.project.tb_car_filing.TbCarFiling">
+		select * from (( SELECT a.* FROM tb_car_filing a, re_mini_user_car_filing b
+		WHERE a.id = b.filing_car_id
+		AND b.mini_user_id = #{loginId}
+		)
+		UNION ALL
+		( SELECT * FROM tb_car_filing where 1=1
+		<if test="deptIdList !=null and deptIdList.size>0">
+			and a.dept_id in
+			<foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
+				#{deptId}
+			</foreach>
+		</if>
+		)) c
+		order by c.create_time
+	</select>
 
 
 </mapper>

+ 111 - 5
sp-core/src/main/java/com/pj/project/tb_car_filing/TbCarFilingService.java

@@ -5,13 +5,20 @@ import java.util.List;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.global.BusinessException;
+import com.pj.current.satoken.StpUserUtil;
 import com.pj.project.tb_car_black.TbCarBlack;
 import com.pj.project.tb_car_black.TbCarBlackService;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_person_filing.TbPersonFiling;
+import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project4sp.spcfg.SpCfgUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -35,26 +42,83 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
 
     @Resource
     private TbDeptService tbDeptService;
-
-
+    @Resource
+    private TbPersonFilingService tbPersonFilingService;
+    @Resource
+    private TbCarBlackService tbCarBlackService;
 
 
     /**
      * 增
      */
     public void add(TbCarFiling t) {
-        t.setCreateBy(StpUtil.getLoginIdAsString()).setCreateTime(new Date());
+        String carNo=t.getCarNo().toUpperCase();
+        String idCarNo = t.getDriverIdCard();
+        //原来是否录入过
+        TbCarFiling checkFiling = this.findByDriverIdCar(idCarNo);
+        if (checkFiling != null) {
+            throw new BusinessException("司机已备案其他车辆");
+        }
+        TbCarFiling carNoCheckFiling=this.findByCarNo(carNo);
+        if (carNoCheckFiling!=null){
+            throw new BusinessException("车辆已备案");
+        }
+        String needJudge = SpCfgUtil.getFillingJudge();
+        if (StrUtil.equals(needJudge, "2")) {
+            t.setJudgeState(1).setJudgeTime(new Date()).setJudgeBy("系统自动审核");
+        }
+        t.setCreateBy(StpUtil.getLoginIdAsString()).setCarNo(carNo)
+                .setCreateTime(new Date());
         handler(t);
+        this.handlerDriver(t);
         this.save(t);
     }
 
+    /**
+     * @param tbCarFiling
+     */
+    private void handlerDriver(TbCarFiling tbCarFiling) {
+        String idCarNo = tbCarFiling.getDriverIdCard();
+        //人员是否备案
+        TbPersonFiling t = tbPersonFilingService.findByIdCard(idCarNo);
+        Date now = new Date();
+        if (t == null) {
+            String pin = RandomUtil.randomNumbers(9);
+            tbCarFiling.setDriverPin(pin);
+            t = new TbPersonFiling();
+            t.setDeptId(tbCarFiling.getDeptId()).setPhoto(tbCarFiling.getDriverPhoto()).setPin(pin)
+                    .setIdCard(tbCarFiling.getDriverIdCard()).setName(tbCarFiling.getDriverName())
+                    .setPhone(tbCarFiling.getDriverPhoto()).setPin(tbCarFiling.getDriverPin());
+            String needJudge = SpCfgUtil.getFillingJudge();
+            if (StrUtil.equals(needJudge, "2")) {
+                t.setJudgeState(1).setJudgeTime(now).setJudgeBy("系统自动审核");
+            }
+            //下发司机白名单
+            tbPersonFilingService.issued(t);
+        } else {
+            tbCarFiling.setDriverPin(t.getPin());
+        }
+    }
+
+    /**
+     * 一个司机只能备案一次
+     *
+     * @param idCarNo
+     * @return
+     */
+    public TbCarFiling findByDriverIdCar(String idCarNo) {
+        QueryWrapper<TbCarFiling> ew = new QueryWrapper<>();
+        ew.eq("driver_id_card", idCarNo);
+        return getOne(ew);
+    }
+
     private void handler(TbCarFiling t) {
         if (!IdcardUtil.isValidCard(t.getDriverIdCard())) {
-            throw new BusinessException("身份证不正确");
+           // throw new BusinessException("身份证不正确");
         }
         TbDept tbDept = tbDeptService.getById(t.getDeptId());
         if (tbDept == null) {
-            throw new BusinessException("请选择部门");
+            throw new BusinessException("请选择组织");
         }
         String carNo = t.getCarNo().toUpperCase();
         Date now = new Date();
@@ -67,6 +131,14 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
      * 删
      */
     public void delete(Long id) {
+        TbCarFiling db = this.getById(id);
+        String idCarNo = db.getDriverIdCard();
+        TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCarNo);
+        //如果不存在白名单,则
+        if (tbPersonFiling == null) {
+            //删除设备的白名单
+            tbPersonFilingService.deleteTerminalWhilte(db.getDriverPin());
+        }
         this.removeById(id);
     }
 
@@ -75,6 +147,24 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
      */
     public void update(TbCarFiling t) {
         handler(t);
+        String carNo=t.getCarNo();
+        TbCarFiling carNoCheck=this.findByCarNo(carNo);
+        if (carNoCheck!=null&&t.getId().longValue()!=carNoCheck.getId().longValue()){
+            throw new BusinessException("车辆已备案");
+        }
+        TbCarFiling db = this.getById(t.getId());
+        String idCarNo = t.getDriverIdCard();
+        //改了身份证
+        if (!StrUtil.equals(idCarNo, db.getDriverIdCard())) {
+            //原来是否录入过
+            TbCarFiling checkFiling = this.findByDriverIdCar(idCarNo);
+            if (checkFiling != null) {
+                throw new BusinessException("司机已备案其他车辆");
+            }
+            //司机身份证不一样 删除旧的,下发新的
+            tbPersonFilingService.deleteTerminalWhilte(db.getDriverPin());
+            this.handlerDriver(t);
+        }
         this.updateById(t);
     }
 
@@ -93,4 +183,20 @@ public class TbCarFilingService extends ServiceImpl<TbCarFilingMapper, TbCarFili
     }
 
 
+    public TbCarFiling findByCarNo(String carNo) {
+        QueryWrapper<TbCarFiling> ew = new QueryWrapper<>();
+        ew.eq("car_no", carNo);
+        List<TbCarFiling> list = list(ew);
+        return list.isEmpty() ? null : list.get(0);
+    }
+
+    public void judge(TbCarFiling t) {
+        t.setJudgeTime(new Date()).setJudgeBy(StpUserUtil.getAdminName());
+        this.updateById(t);
+    }
+
+    public List<TbCarFiling> getForWx(SoMap soMap) {
+
+        return tbCarFilingMapper.getForWx(soMap);
+    }
 }

+ 1 - 1
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecord.java

@@ -62,7 +62,7 @@ public class TbCarVisitRecord extends Model<TbCarVisitRecord> implements Seriali
 	/**
 	 * 通过时间 
 	 */
-	private String visitTime;	
+	private Date visitTime;
 
 	/**
 	 * 方向(1=入,2=出) 

+ 1 - 3
sp-core/src/main/java/com/pj/project/tb_car_visit_record/TbCarVisitRecordService.java

@@ -49,7 +49,7 @@ public class TbCarVisitRecordService extends ServiceImpl<TbCarVisitRecordMapper,
         Date now = new Date();
         TbVenues tbVenues = tbVenuesService.getById(t.getChannelId());
         t.setRecordType(1).setCreateTime(now).setCarNo(t.getCarNo().toUpperCase())
-                .setUpdateTime(now).setDeptId(tbVenues.getDeptId()).setDeptName(tbVenues.getDeptName())
+                .setUpdateTime(now)
                 .setChannel(tbVenues.getName());
         this.save(t);
     }
@@ -70,8 +70,6 @@ public class TbCarVisitRecordService extends ServiceImpl<TbCarVisitRecordMapper,
         TbVenues tbVenues = tbVenuesService.getById(t.getChannelId());
         t.setCarNo(t.getCarNo().toUpperCase())
                 .setUpdateTime(now)
-                .setDeptId(tbVenues.getDeptId())
-                .setDeptName(tbVenues.getDeptName())
                 .setChannel(tbVenues.getName());
         this.updateById(t);
     }

+ 1 - 4
sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLog.java

@@ -43,10 +43,7 @@ public class TbCommandLog extends Model<TbCommandLog> implements Serializable {
 	@TableId(type = IdType.AUTO)
 	private Long id;	
 
-	/**
-	 * 部门ID 
-	 */
-	private Long deptId;	
+
 
 	/**
 	 * 命令 

+ 1 - 5
sp-core/src/main/java/com/pj/project/tb_command_log/TbCommandLogMapper.xml

@@ -4,12 +4,10 @@
 
 
 	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, dept_id, command, sn, terminal_name, channel_name, create_time, response_time, msg_id, response_content, response_code from tb_command_log  -->
 
 		<!-- 通用映射:手动模式 -->
 		<resultMap id="model" type="com.pj.project.tb_command_log.TbCommandLog">
 				<result property="id" column="id" />
-				<result property="deptId" column="dept_id" />
 				<result property="command" column="command" />
 				<result property="sn" column="sn" />
 				<result property="terminalName" column="terminal_name" />
@@ -34,7 +32,6 @@
 		<include refid="select_sql"></include>
 		<where>
 						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("command") '> and command = #{command} </if>
 			<if test=' this.has("sn") '> and sn = #{sn} </if>
 			<if test=' this.has("terminalName") '> and terminal_name = #{terminalName} </if>
@@ -47,8 +44,7 @@
 		</where>
 		order by
 		<choose>
-						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> dept_id desc </when>
+			<when test='sortType == 1'> id desc </when>
 			<when test='sortType == 3'> command desc </when>
 			<when test='sortType == 4'> sn desc </when>
 			<when test='sortType == 5'> terminal_name desc </when>

+ 14 - 1
sp-core/src/main/java/com/pj/project/tb_dept/TbDept.java

@@ -5,9 +5,11 @@ import java.util.Date;
 
 import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
 import lombok.EqualsAndHashCode;
 
 import lombok.Data;
+import lombok.Getter;
 import lombok.experimental.Accessors;
 
 /**
@@ -93,10 +95,21 @@ public class TbDept extends Model<TbDept> implements Serializable {
 	/**
 	 * 备注 
 	 */
-	private String remark;	
+	private String remark;
+	private Integer passType=1;
 
 
 
+	@Getter
+	@AllArgsConstructor
+	public static enum PassTypeEnum{
+		BLOW(1,"人车均备案"),
+		ONE(2,"符合其一"),
+		;
+		private Integer type;
+		private String desc;
+
+	}
 
 
 	

+ 1 - 4
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptController.java

@@ -89,11 +89,8 @@ public class TbDeptController {
         SoMap so = SoMap.getRequestSoMap();
         String deptId = StpUserUtil.getDeptId();
         if (!StrUtil.equals(String.valueOf(StpUserUtil.ADMIN_DEPT_ID), deptId)) {
-            so.put("deptId", deptId);
+            so.put("deptIdList", StrUtil.splitTrim(deptId,","));
         }
-//        if (StpUserUtil.ADMIN_DEPT_ID != deptId) {
-//            so.put("id", deptId);
-//        }
         List<TbDept> list = tbDeptService.getList(so.startPage());
         return AjaxJson.getPageData(so.getDataCount(), list);
     }

+ 10 - 5
sp-core/src/main/java/com/pj/project/tb_dept/TbDeptMapper.xml

@@ -30,10 +30,10 @@
 
 
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
-	<select id="getList" resultMap="model">
+	<select id="getList" resultType="com.pj.project.tb_dept.TbDept">
 		<include refid="select_sql"></include>
-		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
+		where id !=-1
+			<if test=' this.has("id") '> and id = #{id} </if>
 			<if test=' this.has("name") '> and name like concat('%', #{name}, '%') </if>
 			<if test=' this.has("peopleNum") '> and people_num = #{peopleNum} </if>
 			<if test=' this.has("desc") '> and desc = #{desc} </if>
@@ -44,10 +44,15 @@
 			<if test=' this.has("updateTime") '> and update_time = #{updateTime} </if>
 			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
 			<if test=' this.has("remark") '> and remark = #{remark} </if>
-		</where>
+			<if test="deptIdList !=null and deptIdList.size>0">
+			 	adn id in
+				 <foreach collection="deptIdList" item="deptId" open="(" close=")">
+					 #{deptId}
+				 </foreach>
+			</if>
 		order by
 		<choose>
-						<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 1'> id desc </when>
 			<when test='sortType == 2'> name desc </when>
 			<when test='sortType == 3'> people_num desc </when>
 			<when test='sortType == 4'> desc desc </when>

+ 1 - 4
sp-core/src/main/java/com/pj/project/tb_gate_command_log/TbGateCommandLog.java

@@ -43,10 +43,7 @@ public class TbGateCommandLog extends Model<TbGateCommandLog> implements Seriali
 	@TableId(type = IdType.AUTO)
 	private Long id;	
 
-	/**
-	 * 部门ID 
-	 */
-	private Long deptId;	
+
 
 	/**
 	 * 命令 

+ 0 - 4
sp-core/src/main/java/com/pj/project/tb_gate_command_log/TbGateCommandLogMapper.xml

@@ -4,12 +4,10 @@
 
 
 	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, dept_id, command, sn, terminal_name, venues_name, create_time, response_content, create_by from tb_gate_command_log  -->
 
 		<!-- 通用映射:手动模式 -->
 		<resultMap id="model" type="com.pj.project.tb_gate_command_log.TbGateCommandLog">
 				<result property="id" column="id" />
-				<result property="deptId" column="dept_id" />
 				<result property="command" column="command" />
 				<result property="sn" column="sn" />
 				<result property="terminalName" column="terminal_name" />
@@ -32,7 +30,6 @@
 		<include refid="select_sql"></include>
 		<where>
 						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("command") '> and command = #{command} </if>
 			<if test=' this.has("sn") '> and sn = #{sn} </if>
 			<if test=' this.has("terminalName") '> and terminal_name = #{terminalName} </if>
@@ -44,7 +41,6 @@
 		order by
 		<choose>
 						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> dept_id desc </when>
 			<when test='sortType == 3'> command desc </when>
 			<when test='sortType == 4'> sn desc </when>
 			<when test='sortType == 5'> terminal_name desc </when>

+ 1 - 6
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminal.java

@@ -51,10 +51,7 @@ public class TbGateTerminal extends Model<TbGateTerminal> implements Serializabl
 	 */
 	private String name;	
 
-	/**
-	 * 部门id 
-	 */
-	private Long deptId;
+
 	/**
 	 * 场地id
 	 */
@@ -95,8 +92,6 @@ public class TbGateTerminal extends Model<TbGateTerminal> implements Serializabl
 	private Date updateTime;
 
 	@TableField(exist = false)
-	private String deptName;
-	@TableField(exist = false)
 	private String venuesName;
 
 

+ 0 - 5
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalMapper.xml

@@ -4,13 +4,11 @@
 
 
 	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, name, dept_id, sn, ip, state, create_time, update_time from tb_gate_terminal  -->
 
 		<!-- 通用映射:手动模式 -->
 		<resultMap id="model" type="com.pj.project.tb_gate_terminal.TbGateTerminal">
 				<result property="id" column="id" />
 				<result property="name" column="name" />
-				<result property="deptId" column="dept_id" />
 				<result property="sn" column="sn" />
 				<result property="ip" column="ip" />
 				<result property="state" column="state" />
@@ -21,7 +19,6 @@
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
 		select *,
-		(select name from tb_dept where id=tb_gate_terminal.dept_id) as deptName,
 		(select name from tb_venues where id=tb_gate_terminal.venues_id) as venuesName
 		from tb_gate_terminal
 	</sql>
@@ -34,7 +31,6 @@
 		<where>
 						<if test=' this.has("id") '> and id = #{id} </if>
 			<if test=' this.has("name") '> and name like concat('%',#{name},'%') </if>
-			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("sn") '> and sn = #{sn} </if>
 			<if test=' this.has("ip") '> and ip like concat('%', #{ip},'%') </if>
 			<if test=' this.has("state") '> and state = #{state} </if>
@@ -45,7 +41,6 @@
 		<choose>
 						<when test='sortType == 1'> id desc </when>
 			<when test='sortType == 2'> name desc </when>
-			<when test='sortType == 3'> dept_id desc </when>
 			<when test='sortType == 4'> sn desc </when>
 			<when test='sortType == 5'> ip desc </when>
 			<when test='sortType == 6'> state desc </when>

+ 160 - 3
sp-core/src/main/java/com/pj/project/tb_gate_terminal/TbGateTerminalService.java

@@ -3,10 +3,15 @@ package com.pj.project.tb_gate_terminal;
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -15,13 +20,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.config.MyConfig;
 import com.pj.current.global.BusinessException;
 import com.pj.current.satoken.StpUserUtil;
+import com.pj.current.task.TaskService;
+import com.pj.project.tb_car_black.TbCarBlack;
+import com.pj.project.tb_car_black.TbCarBlackService;
+import com.pj.project.tb_car_filing.TbCarFiling;
+import com.pj.project.tb_car_filing.TbCarFilingService;
+import com.pj.project.tb_car_visit_record.TbCarVisitRecord;
+import com.pj.project.tb_car_visit_record.TbCarVisitRecordService;
+import com.pj.project.tb_dept.TbDept;
+import com.pj.project.tb_dept.TbDeptService;
 import com.pj.project.tb_gate_command_log.TbGateCommandLog;
 import com.pj.project.tb_gate_command_log.TbGateCommandLogService;
+import com.pj.project.tb_gate_terminal.bo.ReqBO;
+import com.pj.project.tb_gate_terminal.task.GateTerminalBase64ToImage;
 import com.pj.project.tb_venues.TbVenues;
 import com.pj.project.tb_venues.TbVenuesService;
+import com.pj.utils.cache.RedisUtil;
 import com.pj.utils.zkt.GateCommandUtils;
 import com.pj.utils.zkt.ZKTecoUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import com.pj.utils.so.*;
@@ -36,6 +55,7 @@ import javax.annotation.Resource;
  */
 @Service
 @Transactional
+@Slf4j
 public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbGateTerminal> implements IService<TbGateTerminal> {
 
 
@@ -53,6 +73,20 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
     @Resource
     private TbGateCommandLogService tbGateCommandLogService;
 
+    @Resource
+    private TbCarVisitRecordService tbCarVisitRecordService;
+    @Resource
+    private TaskService taskService;
+
+    @Resource
+    private TbCarFilingService tbCarFilingService;
+
+    @Resource
+    private TbDeptService tbDeptService;
+    @Resource
+    @Lazy
+    private TbCarBlackService tbCarBlackService;
+
 
     /**
      * 增
@@ -70,8 +104,6 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
         Date now = new Date();
         String loginId = StpUtil.getLoginIdAsString();
         t.setSn(sn).setCreateTime(now).setUpdateTime(now).setCreateBy(loginId).setUpdateBy(loginId);
-        TbVenues tbVenues = tbVenuesService.getById(t.getVenuesId());
-        t.setDeptId(tbVenues.getDeptId());
         this.save(t);
     }
 
@@ -161,9 +193,134 @@ public class TbGateTerminalService extends ServiceImpl<TbGateTerminalMapper, TbG
             throw new BusinessException("开闸失败");
         }
         TbGateCommandLog log = new TbGateCommandLog();
-        log.setTerminalName(tbGateTerminal.getName()).setVenuesName(tbVenues.getName()).setDeptId(tbGateTerminal.getDeptId())
+        log.setTerminalName(tbGateTerminal.getName()).setVenuesName(tbVenues.getName())
                 .setCommand(GateCommandUtils.openCommand()).setResponseContent(result).setSn(tbGateTerminal.getSn())
                 .setCreateBy(StpUserUtil.getAdminName()).setCreateTime(new Date());
         tbGateCommandLogService.save(log);
     }
+
+    private static TimedCache<Long, String> RECORD_CACHE = CacheUtil.newTimedCache(40000);
+
+    public void record(ReqBO bo) {
+        String ip = bo.getIpaddr();
+        TbGateTerminal tbGateTerminal = this.findByIp(ip);
+        ReqBO.ResultBean.PlateResultBean plateResultBean = bo.getResult().getPlateResult();
+        String carNo = plateResultBean.getLicense();
+        if (tbGateTerminal == null) {
+            log.error("===========非法设备============");
+            return;
+        }
+        Long terminalId = tbGateTerminal.getId();
+        String cacheCarNo = RECORD_CACHE.get(terminalId);
+        if (StrUtil.isNotEmpty(cacheCarNo)) {
+            log.error("===========40秒内重复识别:{}============", carNo);
+            return;
+        }
+        if (tbGateTerminal.getDirection().equals(2)) {
+            handlerOut(tbGateTerminal, bo);
+            return;
+        } else {
+            handlerIn(tbGateTerminal, bo);
+        }
+
+        RECORD_CACHE.put(tbGateTerminal.getId(), carNo);
+    }
+
+    /**
+     * 入场===>缓存是否开闸
+     *
+     * @param tbGateTerminal
+     * @param bo
+     */
+    private void handlerIn(TbGateTerminal tbGateTerminal, ReqBO bo) {
+        ReqBO.ResultBean.PlateResultBean plateResultBean = bo.getResult().getPlateResult();
+        String base64Image = plateResultBean.getImageFragmentFile();
+        String carNo = plateResultBean.getLicense();
+        String now = DateUtil.now();
+        cacheResult(carNo, now, tbGateTerminal.getVenuesId(),tbGateTerminal.getId());
+        saveRecord(carNo, base64Image, tbGateTerminal, 1);
+    }
+
+    /**
+     * 离场车辆 直接放行
+     *
+     * @param tbGateTerminal
+     */
+    private void handlerOut(TbGateTerminal tbGateTerminal, ReqBO bo) {
+        ReqBO.ResultBean.PlateResultBean plateResultBean = bo.getResult().getPlateResult();
+        String base64Image = plateResultBean.getImageFragmentFile();
+        String carNo = plateResultBean.getLicense();
+        log.info("车辆离场:{}", carNo);
+        saveRecord(carNo, base64Image, tbGateTerminal, 2);
+        try {
+            this.open(tbGateTerminal.getId());
+        } catch (Exception e) {
+            log.error("抬杆失败:{}", e.getMessage());
+        }
+    }
+
+    /**
+     * 保存记录
+     *
+     * @param carNo
+     * @param base64Image
+     * @param tbGateTerminal
+     * @param direction
+     */
+    private void saveRecord(String carNo, String base64Image, TbGateTerminal tbGateTerminal, Integer direction) {
+        Long channelId = tbGateTerminal.getVenuesId();
+        Date now = new Date();
+        TbVenues tbVenues = tbVenuesService.getById(channelId);
+        TbCarVisitRecord tbCarVisitRecord = new TbCarVisitRecord();
+        tbCarVisitRecord.setCarNo(carNo)
+                .setChannelId(tbGateTerminal.getVenuesId())
+                .setChannel(tbVenues.getName()).setDirection(direction)
+                .setVisitTime(now).setUpdateTime(now).setCreateTime(now).setRecordType(2);
+        TbCarFiling carFiling = tbCarFilingService.findByCarNo(carNo);
+        if (carFiling != null) {
+            TbDept tbDept=tbDeptService.getById(carFiling.getDeptId());
+            tbCarVisitRecord.setDriverName(carFiling.getDriverName()).setDeptId(carFiling.getDeptId()).setDeptName(tbDept.getName())
+                    .setDriverIdCard(carFiling.getDriverIdCard()).setType(carFiling.getType())
+                    .setDriverContact(carFiling.getDriverContact());
+        }
+        tbCarVisitRecordService.save(tbCarVisitRecord);
+        taskService.addTask(new GateTerminalBase64ToImage(RandomUtil.randomNumbers(5), 1423, tbCarVisitRecord.getId(), base64Image));
+    }
+
+
+    private void cacheResult(String carNo, String now, Long venuesId,Long terminalId) {
+        TbCarBlack tbCarBlack = tbCarBlackService.findByCarNo(carNo, now);
+        //是否在黑名单上
+        if (tbCarBlack != null) {
+            log.error("黑名单车辆:{}",carNo);
+            RedisUtil.set("result:" + venuesId, "0");
+            return;
+        }
+        TbCarFiling tbCarFiling = tbCarFilingService.findByCarNo(carNo);
+        //是否备案
+        if (tbCarFiling == null) {
+            log.error("车辆未备案:{}",carNo);
+            //没备案
+            RedisUtil.set("result:" + venuesId, "0");
+            return;
+        }
+        //备案车,如果属于的组织只需要满足一个条件的直接放行
+        Long deptId = tbCarFiling.getDeptId();
+        TbDept tbDept = tbDeptService.getById(deptId);
+        if (TbDept.PassTypeEnum.ONE.getType().equals(tbDept.getPassType())){
+            log.error("组织满足条件二,直接放行:{}",carNo);
+            try {
+                open(terminalId);
+            } catch (Exception e) {
+                log.error("开闸失败:{}",e.getMessage());
+            }
+        }
+        RedisUtil.set("result:" + venuesId, "1");
+    }
+
+    public List<TbGateTerminal> findByVenuesId(Long venuesId) {
+        QueryWrapper<TbGateTerminal>ew=new QueryWrapper<>();
+        ew.eq("venues_id",venuesId);
+        return list(ew);
+    }
 }

File diff suppressed because it is too large
+ 12 - 0
sp-core/src/main/java/com/pj/project/tb_gate_terminal/bo/ReqBO.java


+ 54 - 0
sp-core/src/main/java/com/pj/project/tb_gate_terminal/task/GateTerminalBase64ToImage.java

@@ -0,0 +1,54 @@
+package com.pj.project.tb_gate_terminal.task;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import com.pj.current.config.SystemObject;
+import com.pj.current.task.Task;
+import com.pj.project.tb_car_visit_record.TbCarVisitRecord;
+import com.pj.project.tb_car_visit_record.TbCarVisitRecordService;
+import com.pj.project.tb_person_filing.TbPersonFiling;
+import com.pj.project.tb_person_filing.TbPersonFilingService;
+import com.pj.project4sp.uploadfile.UploadConfig;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.File;
+
+@Slf4j
+public class GateTerminalBase64ToImage extends Task {
+    private Long recordId;
+    private String base64;
+    public GateTerminalBase64ToImage(String id, long delayInMilliseconds,Long recordId,String base64) {
+        super(id, delayInMilliseconds);
+        this.recordId=recordId;
+        this.base64=base64;
+    }
+
+    @Override
+    public void run() {
+        if (StrUtil.isEmpty(base64)||recordId==null) {
+            log.info("无图片信息,{}", recordId);
+            return;
+        }
+        UploadConfig uploadConfig = SpringUtil.getBean(UploadConfig.class);
+        TbCarVisitRecordService tbCarVisitRecordService = SpringUtil.getBean(TbCarVisitRecordService.class);
+        TbCarVisitRecord tbCarVisitRecord = tbCarVisitRecordService.getById(recordId);
+        String flieTypeFolder = "/image/";
+        String currDateFolder = DateUtil.today();
+        String fileName = RandomUtil.randomString(16) + ".jpg";
+        String imgFilePath = new File(uploadConfig.rootFolder).getAbsolutePath() +
+                uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/";
+        if (!FileUtil.exist(imgFilePath)) {
+            FileUtil.mkdir(imgFilePath);
+        }
+        // 对外暴露的http路径
+        String httpUrl = SystemObject.config.getDomain() + uploadConfig.httpPrefix + flieTypeFolder + currDateFolder + "/" + fileName;
+        // ImageUtils.generateImage(base64, imgFilePath + fileName);
+        Base64.decodeToFile(base64,new File(imgFilePath + fileName));
+        tbCarVisitRecord.setImage(httpUrl);
+        tbCarVisitRecordService.updateById(tbCarVisitRecord);
+    }
+}

+ 114 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUser.java

@@ -0,0 +1,114 @@
+package com.pj.project.tb_mini_user;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+
+import lombok.Data;
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+/**
+ * Model: tb_mini_user -- h5端用户
+ *
+ * @author qzyReal
+ */
+@Data
+@Accessors(chain = true)
+@TableName(TbMiniUser.TABLE_NAME)
+@EqualsAndHashCode(callSuper = false)
+public class TbMiniUser extends Model<TbMiniUser> implements Serializable {
+
+    // ---------- 模块常量 ----------
+    /**
+     * 序列化版本id
+     */
+    private static final long serialVersionUID = 1L;
+    /**
+     * 此模块对应的表名
+     */
+    public static final String TABLE_NAME = "tb_mini_user";
+    /**
+     * 此模块对应的权限码
+     */
+    public static final String PERMISSION_CODE = "tb-mini-user";
+
+
+    // ---------- 表中字段 ----------
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+
+    private Long spAdminId;
+    /**
+     * openid
+     */
+    private String openid;
+
+    /**
+     * 类型(1=临时,2=内部)
+     */
+    private Integer type;
+
+    /**
+     * 联系号码
+     */
+    private String phone;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 身份证
+     */
+    private String idCard;
+
+    /**
+     * 边民号
+     */
+    private String icCard;
+
+    /**
+     * 身份证图片
+     */
+    private String idCardImg;
+
+    /**
+     * 便民证图片
+     */
+    private String icCardImg;
+
+    /**
+     * 所属组织
+     */
+    private String deptId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    @TableField(exist = false)
+    private String token;
+
+
+    @Getter
+    @AllArgsConstructor
+    public static enum TypeEnum {
+        TEMPORARY_TYPE(1, "临时"),
+        INTERIOR_TYPE(2, "内部");
+        private Integer type;
+        private String desc;
+    }
+
+
+}

+ 28 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.java

@@ -0,0 +1,28 @@
+package com.pj.project.tb_mini_user;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import com.pj.utils.so.*;
+	import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springframework.stereotype.Repository;
+
+/**
+* Mapper: tb_mini_user -- h5端用户
+* @author qzyReal
+*/
+
+@Mapper
+@Repository
+public interface TbMiniUserMapper extends BaseMapper <TbMiniUser> {
+
+/**
+* 查集合 - 根据条件(参数为空时代表忽略指定条件)
+* @param so 参数集合
+* @return 数据列表
+*/
+List<TbMiniUser> getList(SoMap so);
+
+
+}

+ 74 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserMapper.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.pj.project.tb_mini_user.TbMiniUserMapper">
+
+
+	<!-- ================================== 查询相关 ================================== -->
+			<!-- select id, openid, type, phone, name, id_card, ic_card, id_card_img, ic_card_img, dept_id, create_time from tb_mini_user  -->
+
+		<!-- 通用映射:手动模式 -->
+		<resultMap id="model" type="com.pj.project.tb_mini_user.TbMiniUser">
+				<result property="id" column="id" />
+				<result property="openid" column="openid" />
+				<result property="type" column="type" />
+				<result property="phone" column="phone" />
+				<result property="name" column="name" />
+				<result property="idCard" column="id_card" />
+				<result property="icCard" column="ic_card" />
+				<result property="idCardImg" column="id_card_img" />
+				<result property="icCardImg" column="ic_card_img" />
+				<result property="deptId" column="dept_id" />
+				<result property="createTime" column="create_time" />
+		</resultMap>
+
+	<!-- 公共查询sql片段 -->
+	<sql id="select_sql">
+		select *
+		from tb_mini_user
+	</sql>
+
+
+
+	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+	<select id="getList" resultMap="model">
+		<include refid="select_sql"></include>
+		<where>
+						<if test=' this.has("id") '> and id = #{id} </if>
+			<if test=' this.has("openid") '> and openid = #{openid} </if>
+			<if test=' this.has("type") '> and type = #{type} </if>
+			<if test=' this.has("phone") '> and phone = #{phone} </if>
+			<if test=' this.has("name") '> and name = #{name} </if>
+			<if test=' this.has("idCard") '> and id_card = #{idCard} </if>
+			<if test=' this.has("icCard") '> and ic_card = #{icCard} </if>
+			<if test=' this.has("idCardImg") '> and id_card_img = #{idCardImg} </if>
+			<if test=' this.has("icCardImg") '> and ic_card_img = #{icCardImg} </if>
+			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
+			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
+		</where>
+		order by
+		<choose>
+						<when test='sortType == 1'> id desc </when>
+			<when test='sortType == 2'> openid desc </when>
+			<when test='sortType == 3'> type desc </when>
+			<when test='sortType == 4'> phone desc </when>
+			<when test='sortType == 5'> name desc </when>
+			<when test='sortType == 6'> id_card desc </when>
+			<when test='sortType == 7'> ic_card desc </when>
+			<when test='sortType == 8'> id_card_img desc </when>
+			<when test='sortType == 9'> ic_card_img desc </when>
+			<when test='sortType == 10'> dept_id desc </when>
+			<when test='sortType == 11'> create_time desc </when>
+			<otherwise> id desc </otherwise>
+		</choose>
+	</select>
+
+
+
+
+
+
+
+
+
+
+</mapper>

+ 64 - 0
sp-core/src/main/java/com/pj/project/tb_mini_user/TbMiniUserService.java

@@ -0,0 +1,64 @@
+package com.pj.project.tb_mini_user;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.pj.utils.sg.AjaxJson;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import com.pj.utils.so.*;
+
+import javax.annotation.Resource;
+
+/**
+ * Service: tb_mini_user -- h5端用户
+ * @author qzyReal 
+ */
+@Service
+public class TbMiniUserService extends ServiceImpl<TbMiniUserMapper, TbMiniUser> implements IService<TbMiniUser>{
+
+	/** 底层 Mapper 对象 */
+	@Autowired
+	TbMiniUserMapper tbMiniUserMapper;
+
+
+
+
+	/** 增 */
+	public void add(TbMiniUser t){
+	this.save( t);
+	}
+
+	/** 删 */
+	public void delete(Long id){
+	this.removeById(id);
+	}
+
+	/** 改 */
+	public void update(TbMiniUser t){
+	this.updateById(t);
+	}
+
+	/** 查 */
+	public TbMiniUser getById(Long id){
+	return super.getById(id);
+	}
+
+	/** 查集合 - 根据条件(参数为空时代表忽略指定条件) */
+	public List<TbMiniUser> getList(SoMap so) {
+		return tbMiniUserMapper.getList(so);	
+	}
+
+
+	public TbMiniUser findByOpenid(String openid) {
+		QueryWrapper<TbMiniUser>ew=new QueryWrapper<>();
+		ew.eq("openid",openid);
+		return getOne(ew);
+	}
+
+
+
+}

+ 3 - 5
sp-core/src/main/java/com/pj/project/tb_person_black/TbPersonBlackService.java

@@ -105,7 +105,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
      * @param t
      */
     public void deleteTerminalBlack(TbPersonBlack t) {
-        List<TbTerminal> tbTerminalList = tbTerminalService.findByDeptId(t.getDeptId());
+        List<TbTerminal> tbTerminalList = tbTerminalService.list();
         JSONObject params = new JSONObject();
         params.putIfAbsent("identity_numbers", Collections.singleton(t.getIdCard()));
         tbTerminalList.forEach(tbTerminal -> {
@@ -136,8 +136,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
      * @param t
      */
     public void issued(TbTerminal t) {
-        Long deptId = t.getDeptId();
-        List<TbPersonBlack> list = this.findByDeptId(deptId);
+        List<TbPersonBlack> list = this.list();
         list.forEach(tbPersonBlack -> {
             JSONObject users = builderData(tbPersonBlack);
             tbTerminalService.setCommand(CommandType.ISSUED_BLACKLIST_COMMAND.getFuncId(), users, t);
@@ -150,8 +149,7 @@ public class TbPersonBlackService extends ServiceImpl<TbPersonBlackMapper, TbPer
      * @param tbPersonBlack
      */
     public void issued(TbPersonBlack tbPersonBlack) {
-        Long deptId = tbPersonBlack.getDeptId();
-        List<TbTerminal> terminals = tbTerminalService.findByDeptId(deptId);
+        List<TbTerminal> terminals = tbTerminalService.list();
         JSONObject users = builderData(tbPersonBlack);
         terminals.forEach(tbTerminal -> {
             tbTerminalService.setCommand(CommandType.ISSUED_BLACKLIST_COMMAND.getFuncId(), users, tbTerminal);

+ 10 - 0
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFiling.java

@@ -39,6 +39,7 @@ public class TbPersonFiling extends Model<TbPersonFiling> implements Serializabl
     public static final String PERMISSION_CODE_ADD = "tb-person-filing-add";
     public static final String PERMISSION_CODE_EDIT = "tb-person-filing-edit";
     public static final String PERMISSION_CODE_DEL = "tb-person-filing-del";
+    public static final String PERMISSION_CODE_JUDGE = "tb-person-filing-judge";
 
 
     // ---------- 表中字段 ----------
@@ -121,6 +122,15 @@ public class TbPersonFiling extends Model<TbPersonFiling> implements Serializabl
      */
     private String updateBy;
 
+    private int judgeState;
+    private Date judgeTime;
+    private String judgeBy;
+    private String openid;
+    /**
+     * 边民证
+     */
+    private String icCard;
+
     @TableField(exist = false)
     private String deptName;
 

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

@@ -28,4 +28,5 @@ public interface TbPersonFilingMapper extends BaseMapper<TbPersonFiling> {
 
     TbPersonFiling getById(Integer id);
 
+    List<TbPersonFiling> getForWx(SoMap soMap);
 }

+ 78 - 62
sp-core/src/main/java/com/pj/project/tb_person_filing/TbPersonFilingMapper.xml

@@ -3,75 +3,91 @@
 <mapper namespace="com.pj.project.tb_person_filing.TbPersonFilingMapper">
 
 
-	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, dept_id, name, type, id_card, visit_reason, pre_come_time, pre_leave_time, visit, remark, create_time, create_by, update_time, update_by from tb_person_filing  -->
+    <!-- ================================== 查询相关 ================================== -->
+    <!-- select id, dept_id, name, type, id_card, visit_reason, pre_come_time, pre_leave_time, visit, remark, create_time, create_by, update_time, update_by from tb_person_filing  -->
 
-		<!-- 通用映射:手动模式 -->
-		<resultMap id="model" type="com.pj.project.tb_person_filing.TbPersonFiling">
-				<result property="id" column="id" />
-				<result property="deptId" column="dept_id" />
-				<result property="name" column="name" />
-				<result property="type" column="type" />
-				<result property="idCard" column="id_card" />
-				<result property="visitReason" column="visit_reason" />
-				<result property="preComeTime" column="pre_come_time" />
-				<result property="preLeaveTime" column="pre_leave_time" />
-				<result property="visit" column="visit" />
-				<result property="remark" column="remark" />
-				<result property="createTime" column="create_time" />
-				<result property="createBy" column="create_by" />
-				<result property="updateTime" column="update_time" />
-				<result property="updateBy" column="update_by" />
-		</resultMap>
+    <!-- 通用映射:手动模式 -->
+    <resultMap id="model" type="com.pj.project.tb_person_filing.TbPersonFiling">
+        <result property="id" column="id"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="name" column="name"/>
+        <result property="type" column="type"/>
+        <result property="idCard" column="id_card"/>
+        <result property="visitReason" column="visit_reason"/>
+        <result property="preComeTime" column="pre_come_time"/>
+        <result property="preLeaveTime" column="pre_leave_time"/>
+        <result property="visit" column="visit"/>
+        <result property="remark" column="remark"/>
+        <result property="createTime" column="create_time"/>
+        <result property="createBy" column="create_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
 
-	<!-- 公共查询sql片段 -->
-	<sql id="select_sql">
+    <!-- 公共查询sql片段 -->
+    <sql id="select_sql">
 		select *,(select name  from tb_dept where tb_person_filing.dept_id=id) as deptName
 		from tb_person_filing
 	</sql>
 
 
-
-	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
-	<select id="getList" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
-		<include refid="select_sql"></include>
-		<where>
-						<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
-			<if test=' this.has("name") '> and name = #{name} </if>
-			<if test=' this.has("type") '> and type = #{type} </if>
-			<if test=' this.has("idCard") '> and id_card = #{idCard} </if>
-			<if test=' this.has("visitReason") '> and visit_reason = #{visitReason} </if>
-			<if test=' this.has("preComeTime") '> and pre_come_time = #{preComeTime} </if>
-			<if test=' this.has("preLeaveTime") '> and pre_leave_time = #{preLeaveTime} </if>
-			<if test=' this.has("visit") '> and visit = #{visit} </if>
-			<if test=' this.has("remark") '> and remark = #{remark} </if>
-			<if test=' this.has("createTime") '> and create_time = #{createTime} </if>
-			<if test=' this.has("createBy") '> and create_by = #{createBy} </if>
-			<if test=' this.has("updateTime") '> and update_time = #{updateTime} </if>
-			<if test=' this.has("updateBy") '> and update_by = #{updateBy} </if>
-		</where>
-		order by
-		<choose>
-						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> dept_id desc </when>
-			<when test='sortType == 3'> name desc </when>
-			<when test='sortType == 4'> type desc </when>
-			<when test='sortType == 5'> id_card desc </when>
-			<when test='sortType == 6'> visit_reason desc </when>
-			<when test='sortType == 7'> pre_come_time desc </when>
-			<when test='sortType == 8'> pre_leave_time desc </when>
-			<when test='sortType == 9'> visit desc </when>
-			<when test='sortType == 10'> remark desc </when>
-			<when test='sortType == 11'> create_time desc </when>
-			<when test='sortType == 12'> create_by desc </when>
-			<when test='sortType == 13'> update_time desc </when>
-			<when test='sortType == 14'> update_by desc </when>
-			<otherwise> id desc </otherwise>
-		</choose>
-	</select>
-	<select id="getById" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
-		<include refid="select_sql"></include> where  id=#{id}
+    <!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
+    <select id="getList" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
+        <include refid="select_sql"></include>
+        <where>
+            <if test=' this.has("id") '>and id = #{id}</if>
+            <if test=' this.has("deptId") '>and dept_id in (${deptId})</if>
+            <if test=' this.has("name") '>and name = #{name}</if>
+            <if test=' this.has("type") '>and type = #{type}</if>
+            <if test=' this.has("idCard") '>and id_card = #{idCard}</if>
+            <if test=' this.has("visitReason") '>and visit_reason = #{visitReason}</if>
+            <if test=' this.has("preComeTime") '>and pre_come_time = #{preComeTime}</if>
+            <if test=' this.has("preLeaveTime") '>and pre_leave_time = #{preLeaveTime}</if>
+            <if test=' this.has("visit") '>and visit = #{visit}</if>
+            <if test=' this.has("remark") '>and remark = #{remark}</if>
+            <if test=' this.has("createTime") '>and create_time = #{createTime}</if>
+            <if test=' this.has("createBy") '>and create_by = #{createBy}</if>
+            <if test=' this.has("updateTime") '>and update_time = #{updateTime}</if>
+            <if test=' this.has("updateBy") '>and update_by = #{updateBy}</if>
+        </where>
+        order by
+        <choose>
+            <when test='sortType == 1'>id desc</when>
+            <when test='sortType == 2'>dept_id desc</when>
+            <when test='sortType == 3'>name desc</when>
+            <when test='sortType == 4'>type desc</when>
+            <when test='sortType == 5'>id_card desc</when>
+            <when test='sortType == 6'>visit_reason desc</when>
+            <when test='sortType == 7'>pre_come_time desc</when>
+            <when test='sortType == 8'>pre_leave_time desc</when>
+            <when test='sortType == 9'>visit desc</when>
+            <when test='sortType == 10'>remark desc</when>
+            <when test='sortType == 11'>create_time desc</when>
+            <when test='sortType == 12'>create_by desc</when>
+            <when test='sortType == 13'>update_time desc</when>
+            <when test='sortType == 14'>update_by desc</when>
+            <otherwise>id desc</otherwise>
+        </choose>
+    </select>
+    <select id="getById" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
+        <include refid="select_sql"></include>
+        where id=#{id}
+    </select>
+    <select id="getForWx" resultType="com.pj.project.tb_person_filing.TbPersonFiling">
+       select  distinct  * from (( SELECT a.* FROM tb_person_filing a, re_mini_user_person_filing b
+        WHERE a.id = b.filing_person_id
+        AND b.mini_user_id = #{loginId}
+        )
+        UNION ALL
+        ( SELECT * FROM tb_person_filing where 1=1
+        <if test="deptIdList !=null and deptIdList.size>0">
+            and a.dept_id in
+            <foreach collection="deptIdList" item="deptId" open="(" close=")" separator=",">
+                #{deptId}
+            </foreach>
+        </if>
+        )) c
+        order by c.create_time desc
 	</select>
 
 

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

@@ -4,6 +4,7 @@ import java.io.File;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.codec.Base64;
@@ -14,6 +15,7 @@ import cn.hutool.core.util.IdcardUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -21,12 +23,15 @@ import com.pj.current.config.SystemObject;
 import com.pj.current.global.BusinessException;
 import com.pj.current.netty.command.constants.CommandType;
 import com.pj.current.netty.command.handler.dto.WhitelistDTO;
+import com.pj.current.satoken.StpUserUtil;
 import com.pj.current.task.TaskService;
 import com.pj.project.tb_person_black.TbPersonBlack;
 import com.pj.project.tb_terminal.TbTerminal;
 import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.project4sp.spcfg.SpCfgUtil;
 import com.pj.project4sp.uploadfile.UploadConfig;
 import com.sun.imageio.plugins.common.ImageUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.util.ImageUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -43,6 +48,7 @@ import javax.annotation.Resource;
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@Slf4j
 public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbPersonFiling> implements IService<TbPersonFiling> {
 
     /**
@@ -64,14 +70,18 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
     public void add(TbPersonFiling t) {
         String idCard = t.getIdCard();
         if (!IdcardUtil.isValidCard(idCard)) {
-            throw new BusinessException("身份证不正确");
+            //throw new BusinessException("身份证不正确");
         }
-        TbPersonFiling db = findByIdCardAndDeptId(idCard, t.getDeptId());
+        TbPersonFiling db = findByIdCard(idCard);
         if (db != null) {
             throw new BusinessException("人员已存在");
         }
         String pin = RandomUtil.randomNumbers(9);
         t.setPin(pin);
+        String needJudge = SpCfgUtil.getFillingJudge();
+        if (StrUtil.equals(needJudge, "2")) {
+            t.setJudgeState(1).setJudgeTime(new Date()).setJudgeBy("系统自动审核");
+        }
         this.handlerTime(t);
         t.setCreateBy(StpUtil.getLoginIdAsString()).setCreateTime(new Date());
         this.save(t);
@@ -87,7 +97,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
      */
     public void delete(Integer id) {
         TbPersonFiling db = this.getById(id);
-        deleteTerminalWhilte(db);
+        deleteTerminalWhilte(db.getPin());
         this.removeById(id);
     }
 
@@ -99,7 +109,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         if (!IdcardUtil.isValidCard(idCard)) {
             throw new BusinessException("身份证不正确");
         }
-        TbPersonFiling idCardDb = findByIdCardAndDeptId(idCard, t.getDeptId());
+        TbPersonFiling idCardDb = findByIdCard(idCard);
         if (idCardDb != null && !idCardDb.getId().equals(t.getId())) {
             throw new BusinessException("人员已存在");
         }
@@ -111,7 +121,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
                 || !t.getDeptId().equals(db.getDeptId())
         ) {
             //删除旧的
-            deleteTerminalWhilte(db);
+            deleteTerminalWhilte(db.getPin());
             //下发新的
             issued(t);
         }
@@ -122,9 +132,7 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
      * 查
      */
     public TbPersonFiling getById(Integer id) {
-        TbPersonFiling db = tbPersonFilingMapper.getById(id);
-
-        return db;
+        return tbPersonFilingMapper.getById(id);
     }
 
     /**
@@ -140,10 +148,9 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
      * @param idCard
      * @return
      */
-    public TbPersonFiling findByIdCardAndDeptId(String idCard, Long deptId) {
+    public TbPersonFiling findByIdCard(String idCard) {
         QueryWrapper<TbPersonFiling> ew = new QueryWrapper<>();
         ew.eq("id_card", idCard);
-        ew.eq("dept_id", deptId);
         return getOne(ew);
     }
 
@@ -153,7 +160,11 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
      * @param filing
      */
     public void issued(TbPersonFiling filing) {
-        List<TbTerminal> tbTerminalList = tbTerminalService.findByDeptId(filing.getDeptId());
+        if (filing.getJudgeState() != 1) {
+            log.error("人员白名单未审核通过,不下发:{}", JSONUtil.toJsonStr(filing));
+            return;
+        }
+        List<TbTerminal> tbTerminalList = tbTerminalService.list();
         JSONObject params = builderParams(filing);
         tbTerminalList.forEach(tbTerminal -> {
             tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, tbTerminal);
@@ -168,8 +179,9 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
      * @param t
      */
     public void issued(TbTerminal t) {
-        Long deptId = t.getDeptId();
-        List<TbPersonFiling> list = this.findByDeptId(deptId);
+        List<TbPersonFiling> list = this.list();
+        //过滤审核通过的
+        list = list.stream().filter(tbPersonFiling -> tbPersonFiling.getJudgeState() == 1).collect(Collectors.toList());
         list.forEach(tbPersonFiling -> {
             JSONObject params = builderParams(tbPersonFiling);
             tbTerminalService.setCommand(CommandType.ISSUED_USER_COMMAND.getFuncId(), params, t);
@@ -179,12 +191,11 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
     /**
      * 删除设备某个人的白名单
      *
-     * @param t
      */
-    public void deleteTerminalWhilte(TbPersonFiling t) {
-        List<TbTerminal> tbTerminalList = tbTerminalService.findByDeptId(t.getDeptId());
+    public void deleteTerminalWhilte(String pin) {
+        List<TbTerminal> tbTerminalList = tbTerminalService.list();
         JSONObject params = new JSONObject();
-        params.putIfAbsent("pin", Collections.singleton(t.getPin()));
+        params.putIfAbsent("pin", Collections.singleton(pin));
         tbTerminalList.forEach(tbTerminal -> {
             tbTerminalService.setCommand(CommandType.DELETE_USER_COMMAND.getFuncId(), params, tbTerminal);
             tbTerminalService.startHeartCommand(tbTerminal.getSn());
@@ -231,4 +242,30 @@ public class TbPersonFilingService extends ServiceImpl<TbPersonFilingMapper, TbP
         ew.eq("pin", pin);
         return getOne(ew);
     }
+
+    /**
+     * 审核
+     * @param filing
+     */
+    public void judge(TbPersonFiling filing) {
+        TbPersonFiling db=this.getById(filing.getId());
+        db.setJudgeBy(StpUserUtil.getAdminName()).setJudgeTime(new Date()).setJudgeState(filing.getJudgeState());
+        this.updateById(db);
+        issued(db);
+    }
+
+    /**
+     * 根据openid查找
+     * @param openid
+     * @return
+     */
+    public TbPersonFiling findByOpenid(String openid){
+        QueryWrapper<TbPersonFiling>ew=new QueryWrapper<>();
+        ew.eq("openid",openid);
+        return getOne(ew);
+    }
+
+    public List<TbPersonFiling> getForWx(SoMap so) {
+        return tbPersonFilingMapper.getForWx(so);
+    }
 }

+ 1 - 1
sp-core/src/main/java/com/pj/project/tb_person_visit_record/TbPersonVisitRecordService.java

@@ -73,7 +73,7 @@ public class TbPersonVisitRecordService extends ServiceImpl<TbPersonVisitRecordM
                 .setCreateTime(now).setUpdateTime(now).setDirection(direction);
         BeanUtil.copyProperties(t, record);
         TbVenues tbVenues = tbVenuesService.getById(channelId);
-        record.setChannel(channelId).setVenues(tbVenues.getName()).setDeptId(tbVenues.getDeptId()).setDeptName(tbVenues.getDeptName());
+        record.setChannel(channelId).setVenues(tbVenues.getName());
         if (direction.equals(TbPersonVisitRecord.DirectionEnum.IN.getDirection())) {
             record.setVisitDate(t.getInTime())
                     .setTemperature(t.getInTemperature());

+ 1 - 9
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminal.java

@@ -51,10 +51,7 @@ public class TbTerminal extends Model<TbTerminal> implements Serializable {
 	@TableId(type = IdType.AUTO)
 	private Long id;	
 
-	/**
-	 * 部门ID 
-	 */
-	private Long deptId;	
+
 
 	/**
 	 * 名称 
@@ -132,11 +129,6 @@ public class TbTerminal extends Model<TbTerminal> implements Serializable {
 	private Long personNum;
 
 
-	@TableField(exist = false)
-	private String deptName;
-
-
-
 	@Getter
 	@AllArgsConstructor
 	public static enum StateType{

+ 1 - 5
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalMapper.xml

@@ -4,12 +4,10 @@
 
 
 	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, dept_id, name, ip_address, state, sn, venues_id, venues_name, channel_id, channel_name, last_on_line, remark, create_time, create_by, update_time, update_by from tb_terminal  -->
 
 		<!-- 通用映射:手动模式 -->
 		<resultMap id="model" type="com.pj.project.tb_terminal.TbTerminal">
 				<result property="id" column="id" />
-				<result property="deptId" column="dept_id" />
 				<result property="name" column="name" />
 				<result property="ipAddress" column="ip_address" />
 				<result property="state" column="state" />
@@ -28,7 +26,7 @@
 
 	<!-- 公共查询sql片段 -->
 	<sql id="select_sql">
-		select *,(select name from tb_dept where tb_dept.id=tb_terminal.dept_id) as deptName
+		select *
 		from tb_terminal
 	</sql>
     <update id="unbind">
@@ -41,7 +39,6 @@
 		<include refid="select_sql"></include>
 		<where>
 			<if test=' this.has("id") '> and id = #{id} </if>
-			<if test=' this.has("deptId") '> and dept_id = #{deptId} </if>
 			<if test=' this.has("name") '> and name like concat('%',#{name},'%') </if>
 			<if test=' this.has("ipAddress") '> and ip_address = #{ipAddress} </if>
 			<if test=' this.has("state") '> and state = #{state} </if>
@@ -60,7 +57,6 @@
 		order by
 		<choose>
 						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> dept_id desc </when>
 			<when test='sortType == 3'> name desc </when>
 			<when test='sortType == 4'> ip_address desc </when>
 			<when test='sortType == 5'> state desc </when>

+ 10 - 25
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -89,19 +89,9 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
     public void update(TbTerminal t) {
         Long channelId = t.getChannelId();
         TbVenues tbVenues = tbVenuesService.getById(channelId);
-        t.setChannelName(tbVenues.getName()).setDeptId(tbVenues.getDeptId())
+        t.setChannelName(tbVenues.getName())
                 .setUpdateBy(StpUtil.getLoginIdAsString()).setUpdateTime(new Date());
         TbTerminal db = this.getById(t.getId());
-        if (!t.getDeptId().equals(db.getDeptId())) {
-            //更换组织,先清除所有数据再下发
-            this.setCommand(CommandType.ISSUED_CLEAR_COMMAND.getFuncId(), null, t);
-            //下发新的白名单
-            tbPersonFilingService.issued(t);
-            //下发新的黑名单
-            tbPersonBlackService.issued(t);
-            //开始设置心跳command=1
-            startHeartCommand(t.getSn());
-        }
         this.updateById(t);
     }
 
@@ -131,8 +121,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         if (tbTerminal == null) {
             tbTerminal = new TbTerminal();
             tbTerminal.setIpAddress(clientIp).setState(TbTerminal.StateType.ONLINE.getState())
-                    .setSn(sn).setCreateTime(new Date())
-                    .setDeptId(StpUserUtil.ADMIN_DEPT_ID);
+                    .setSn(sn).setCreateTime(new Date());
             this.save(tbTerminal);
             return;
         }
@@ -192,7 +181,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         commandList.add(commandDTO);
         TbCommandLog tbCommandLog = new TbCommandLog();
         tbCommandLog.setChannelName(tbTerminal.getChannelName()).setCommand(JSONUtil.toJsonStr(commandDTO))
-                .setDeptId(tbTerminal.getDeptId()).setMsgId(msgId).setSn(sn)
+                .setMsgId(msgId).setSn(sn)
                 .setTerminalName(tbTerminal.getName()).setCreateTime(new Date()).setCreateBy(StpUserUtil.getAdminName());
         //日志记录
         tbCommandLogService.save(tbCommandLog);
@@ -265,17 +254,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         this.update(ew);
     }
 
-    /**
-     * 根据部门id查找设备
-     *
-     * @param deptId
-     * @return
-     */
-    public List<TbTerminal> findByDeptId(Long deptId) {
-        QueryWrapper<TbTerminal> ew = new QueryWrapper<>();
-        ew.eq("dept_id", deptId);
-        return list(ew);
-    }
+
 
     /**
      * 清空所有数据
@@ -315,4 +294,10 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         startHeartCommand(tbTerminal.getSn());
 
     }
+
+    public List<TbTerminal> findByChannelId(Long channelId) {
+        QueryWrapper<TbTerminal> ew = new QueryWrapper<>();
+        ew.eq("channel_id", channelId);
+        return list(ew);
+    }
 }

+ 68 - 71
sp-core/src/main/java/com/pj/project/tb_venues/TbVenues.java

@@ -12,7 +12,8 @@ import lombok.experimental.Accessors;
 
 /**
  * Model: tb_venues -- 场所管理
- * @author qzyReal 
+ *
+ * @author qzyReal
  */
 @Data
 @Accessors(chain = true)
@@ -20,76 +21,72 @@ import lombok.experimental.Accessors;
 @EqualsAndHashCode(callSuper = false)
 public class TbVenues extends Model<TbVenues> implements Serializable {
 
-	// ---------- 模块常量 ----------
-	/**
-	 * 序列化版本id 
-	 */
-	private static final long serialVersionUID = 1L;	
-	/**
-	 * 此模块对应的表名 
-	 */
-	public static final String TABLE_NAME = "tb_venues";	
-	/**
-	 * 此模块对应的权限码 
-	 */
-	public static final String PERMISSION_CODE = "tb-venues";	
-	public static final String PERMISSION_CODE_ADD = "tb-venues-add";
-	public static final String PERMISSION_CODE_EDIT = "tb-venues-edit";
-	public static final String PERMISSION_CODE_DEL = "tb-venues-del";
-
-
-	// ---------- 表中字段 ----------
-	/**
-	 *  
-	 */
-	@TableId(type = IdType.AUTO)
-	private Long id;	
-
-	/**
-	 * 部门ID 
-	 */
-	private Long deptId;	
-
-	/**
-	 * 部门 
-	 */
-	private String deptName;	
-
-	/**
-	 * 父ID 
-	 */
-	private Long pId;	
-
-	/**
-	 * 名称 
-	 */
-	private String name;	
-
-	/**
-	 * 创建时间 
-	 */
-	private Date createTime;
-
-	/**
-	 * 创建人 
-	 */
-	private String createBy;	
-
-	/**
-	 * 更新时间 
-	 */
-	private Date updateTime;
-
-	/**
-	 * 更新人 
-	 */
-	private String updateBy;	
-
-
-
-
-
-	
+    // ---------- 模块常量 ----------
+    /**
+     * 序列化版本id
+     */
+    private static final long serialVersionUID = 1L;
+    /**
+     * 此模块对应的表名
+     */
+    public static final String TABLE_NAME = "tb_venues";
+    /**
+     * 此模块对应的权限码
+     */
+    public static final String PERMISSION_CODE = "tb-venues";
+    public static final String PERMISSION_CODE_ADD = "tb-venues-add";
+    public static final String PERMISSION_CODE_EDIT = "tb-venues-edit";
+    public static final String PERMISSION_CODE_DEL = "tb-venues-del";
+
+
+    // ---------- 表中字段 ----------
+    /**
+     *
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+
+
+
+
+    /**
+     * 父ID
+     */
+    private Long pId;
+
+    /**
+     * 名称
+     */
+    private String name;
+    /**
+     * 1人行 2 车行
+     */
+    private Integer type;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 更新人
+     */
+    private String updateBy;
+
+
+    @TableField(exist = false)
+    private String parentName;
 
 
 }

+ 1 - 0
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.java

@@ -25,4 +25,5 @@ public interface TbVenuesMapper extends BaseMapper <TbVenues> {
 List<TbVenues> getList(SoMap so);
 
 
+    List<TbVenues> getInnerList(SoMap so);
 }

+ 5 - 16
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesMapper.xml

@@ -4,13 +4,10 @@
 
 
 	<!-- ================================== 查询相关 ================================== -->
-			<!-- select id, dept_id, dept_name, p_id, name, create_time, create_by, update_time, update_by from tb_venues  -->
 
 		<!-- 通用映射:手动模式 -->
 		<resultMap id="model" type="com.pj.project.tb_venues.TbVenues">
 				<result property="id" column="id" />
-				<result property="deptId" column="dept_id" />
-				<result property="deptName" column="dept_name" />
 				<result property="pId" column="p_id" />
 				<result property="name" column="name" />
 				<result property="createTime" column="create_time" />
@@ -28,18 +25,15 @@
 
 
 	<!-- 查集合 - 根据条件(参数为空时代表忽略指定条件) [G] -->
-	<select id="getList" resultMap="model">
+	<select id="getList" resultType="com.pj.project.tb_venues.TbVenues">
 		<include refid="select_sql"></include>
 		<where>
-			<if test=' this.has("deptName") '> and dept_name = #{deptName} </if>
-			<if test=' this.has("deptId") '> and dept_id in (${deptId}) </if>
 			<if test=' this.has("name") '> and name like concat('%', #{name},'%') and p_id=-1 </if>
 		</where>
 		order by
 		<choose>
 						<when test='sortType == 1'> id desc </when>
-			<when test='sortType == 2'> dept_id desc </when>
-			<when test='sortType == 3'> dept_name desc </when>
+
 			<when test='sortType == 4'> p_id desc </when>
 			<when test='sortType == 5'> name desc </when>
 			<when test='sortType == 6'> create_time desc </when>
@@ -49,14 +43,9 @@
 			<otherwise> id asc </otherwise>
 		</choose>
 	</select>
-
-
-
-
-
-
-
-
+    <select id="getInnerList" resultType="com.pj.project.tb_venues.TbVenues">
+		SELECT b.name,b.id,a.name as parentName from tb_venues a INNER JOIN tb_venues b on a.id=b.p_id
+	</select>
 
 
 </mapper>

+ 41 - 5
sp-core/src/main/java/com/pj/project/tb_venues/TbVenuesService.java

@@ -10,6 +10,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.pj.current.global.BusinessException;
 import com.pj.project.tb_dept.TbDept;
 import com.pj.project.tb_dept.TbDeptService;
+import com.pj.project.tb_gate_terminal.TbGateTerminal;
+import com.pj.project.tb_gate_terminal.TbGateTerminalService;
+import com.pj.project.tb_terminal.TbTerminal;
+import com.pj.project.tb_terminal.TbTerminalService;
+import com.pj.utils.sg.AjaxJson;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -24,6 +30,7 @@ import javax.annotation.Resource;
  */
 @Service
 @Transactional(rollbackFor = Exception.class)
+@Slf4j
 public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> implements IService<TbVenues> {
 
     /**
@@ -34,6 +41,12 @@ public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> imple
     @Resource
     private TbDeptService tbDeptService;
 
+    @Resource
+    private TbTerminalService tbTerminalService;
+
+    @Resource
+    private TbGateTerminalService tbGateTerminalService;
+
     /**
      * 增
      */
@@ -44,8 +57,7 @@ public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> imple
     }
 
     private void handler(TbVenues t) {
-        TbDept tbDept = tbDeptService.getById(t.getDeptId());
-        t.setDeptName(tbDept.getName()).setUpdateBy(StpUtil.getLoginIdAsString()).setUpdateTime(new Date());
+        t.setUpdateBy(StpUtil.getLoginIdAsString()).setUpdateTime(new Date());
     }
 
     /**
@@ -53,15 +65,15 @@ public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> imple
      */
     public void delete(Long id) {
         List<TbVenues> list = this.findByPid(id);
-        if (!list.isEmpty()){
+        if (!list.isEmpty()) {
             throw new BusinessException("该场所存在通道,不能删除");
         }
         this.removeById(id);
     }
 
     private List<TbVenues> findByPid(Long id) {
-        QueryWrapper<TbVenues>ew=new QueryWrapper<>();
-        ew.eq("p_id",id);
+        QueryWrapper<TbVenues> ew = new QueryWrapper<>();
+        ew.eq("p_id", id);
         return list(ew);
     }
 
@@ -88,4 +100,28 @@ public class TbVenuesService extends ServiceImpl<TbVenuesMapper, TbVenues> imple
     }
 
 
+    public List<TbVenues> getInnerList(SoMap so) {
+        return tbVenuesMapper.getInnerList(so);
+    }
+
+    public AjaxJson release(Long id) {
+        //人脸设备
+        List<TbTerminal> tbTerminalList = tbTerminalService.findByChannelId(id);
+        tbTerminalList.forEach(tbTerminal -> tbTerminalService.open(tbTerminal.getId()));
+        List<TbGateTerminal> tbGateTerminals = tbGateTerminalService.findByVenuesId(id);
+        boolean flag=!tbTerminalList.isEmpty()&&!tbGateTerminals.isEmpty();
+        if (!flag){
+            return AjaxJson.getError("该通道无设备");
+        }
+        tbGateTerminals.stream().filter(tbGateTerminal -> tbGateTerminal.getDirection()==1)
+                .forEach(tbGateTerminal -> {
+                    try {
+                        tbGateTerminalService.open(tbGateTerminal.getId());
+                    } catch (Exception e) {
+                       log.error("开道闸失败:{}",e.getMessage());
+                        throw new BusinessException("道闸通讯异常");
+                    }
+                });
+        return AjaxJson.getSuccess();
+    }
 }

+ 99 - 0
sp-core/src/main/java/com/pj/project/wx/WxService.java

@@ -0,0 +1,99 @@
+package com.pj.project.wx;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.net.URLDecoder;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+
+import com.pj.current.config.MyConfig;
+
+import com.pj.current.config.WxConfig;
+import com.pj.project.wx.bo.BaseTemplate;
+import com.pj.project.wx.bo.MsgDataBO;
+
+import com.pj.utils.cache.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.nio.charset.Charset;
+import java.util.*;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+@Slf4j
+public class WxService {
+
+    @Resource
+    WxConfig wxConfig;
+    public String getRedirectUrl(String path, String state) {
+        String redirectUrl = wxConfig.getDomain() + path;
+        String encoderUrl = URLDecoder.decode(redirectUrl, Charset.forName("utf-8"));
+        String url = wxConfig.getAuthLoginUrl().replace("REDIRECT_URI", encoderUrl);
+        if (StrUtil.isNotEmpty(state)) {
+            url = url.replace("STATE", state);
+        }
+        log.info("get redirect url:{}", url);
+        return url;
+    }
+
+    public String getOpenidByCode(String code, String openid) {
+        String openidUrl = wxConfig.getOpenidUrl().replace("CODE", code);
+        String resp = HttpUtil.get(openidUrl);
+        JSONObject result = JSONUtil.parseObj(resp);
+        log.info("get openid result:{}", resp);
+        String newOpenid = result.getStr("openid");
+        if (StrUtil.isNotEmpty(newOpenid)) {
+            return newOpenid;
+        }
+        return openid;
+    }
+
+    public SortedMap getWxConfig(String url) {
+        Long nowTime = System.currentTimeMillis() / 1000;
+        String jsTicket = RedisUtil.get(wxConfig.getJsApiTicketKey());
+        SortedMap<String, Object> params = new TreeMap<>();
+        params.put("noncestr", RandomUtil.randomString(32));
+        params.put("jsapi_ticket", jsTicket);
+        params.put("timestamp", nowTime);
+        params.put("url", url);
+        String sign = SecureUtil.sha1(params.toString().substring(1, params.toString().lastIndexOf("}")).replaceAll(", ", "&"));
+        params.put("sign", sign);
+        params.put("appId", wxConfig.getAppId());
+        return params;
+    }
+
+    @Async
+    public void sendTemplateMsg(String templateId, String openid, MsgDataBO data) {
+        String accessToken = RedisUtil.get(wxConfig.getAccessTokenKey());
+        BaseTemplate baseTemplate = new BaseTemplate(openid, templateId, data);
+        String json = JSON.toJSONString(baseTemplate);
+        String url = wxConfig.getSendMsgUrl().replace("ACCESS_TOKEN", accessToken);
+        String resp = HttpUtil.post(url, json);
+        log.info("send wx msg{},{},{};return :{}", templateId, openid, JSONUtil.toJsonStr(data), resp);
+    }
+
+    @Async
+    public void sendTemplateMsg(String templateId, String openid, Object data, String detailUrl) {
+        if (StrUtil.isEmpty(openid)){
+            return;
+        }
+        String accessToken = RedisUtil.get(wxConfig.getAccessTokenKey());
+        BaseTemplate baseTemplate = new BaseTemplate(openid, templateId, detailUrl, data);
+        String json = JSON.toJSONString(baseTemplate);
+        String url = wxConfig.getSendMsgUrl().replace("ACCESS_TOKEN", accessToken);
+        String resp = HttpUtil.post(url, json);
+        JSONObject result = JSONUtil.parseObj(resp);
+        int code = result.getInt("errcode");
+        log.info("send wx msg{},{},{};return :{}", templateId, openid, JSONUtil.toJsonStr(data), resp);
+
+    }
+
+}

+ 28 - 0
sp-core/src/main/java/com/pj/project/wx/bo/BaseTemplate.java

@@ -0,0 +1,28 @@
+package com.pj.project.wx.bo;
+
+import lombok.Data;
+
+@Data
+public class BaseTemplate {
+
+    private String touser;
+    private String template_id;
+    private String url;
+    private Object data;
+
+    public BaseTemplate() {
+    }
+
+    public BaseTemplate(String touser, String template_id, Object data) {
+        this.touser = touser;
+        this.template_id = template_id;
+        this.data = data;
+    }
+
+    public BaseTemplate(String touser, String template_id, String url, Object data) {
+        this.touser = touser;
+        this.template_id = template_id;
+        this.url = url;
+        this.data = data;
+    }
+}

+ 25 - 0
sp-core/src/main/java/com/pj/project/wx/bo/Msg.java

@@ -0,0 +1,25 @@
+package com.pj.project.wx.bo;
+
+import lombok.Data;
+
+@Data
+public class Msg {
+    /**
+     * 值
+     */
+    private String value;
+    /**
+     * 颜色
+     */
+    private String color;
+
+    public Msg(String value, String color) {
+        this.value = value;
+        this.color = color;
+    }
+
+    public Msg(String value) {
+        this.value = value;
+        this.color = "#173177";
+    }
+}

+ 50 - 0
sp-core/src/main/java/com/pj/project/wx/bo/MsgDataBO.java

@@ -0,0 +1,50 @@
+package com.pj.project.wx.bo;
+
+import lombok.Data;
+
+@Data
+public class MsgDataBO {
+    private Msg first;
+    private Msg keyword1;
+    private Msg keyword2;
+    private Msg keyword3;
+    private Msg keyword4;
+    private Msg keyword5;
+    private Msg remark;
+
+    public MsgDataBO(String first, String keyword1, String keyword2, String remark) {
+        this.first = new Msg(first);
+        this.keyword1 = new Msg(keyword1);
+        this.keyword2 = new Msg(keyword2);
+        this.remark = new Msg(remark);
+    }
+
+    public MsgDataBO(String first, String keyword1, String keyword2, String keyword3, String remark) {
+        this.first = new Msg(first);
+        this.keyword1 = new Msg(keyword1);
+        this.keyword2 = new Msg(keyword2);
+        this.keyword3 = new Msg(keyword3);
+        this.remark = new Msg(remark);
+    }
+
+    public MsgDataBO(String first, String keyword1, String keyword2, String keyword3, String keyword4, String remark) {
+        this.first = new Msg(first);
+        this.keyword1 = new Msg(keyword1);
+        this.keyword2 = new Msg(keyword2);
+        this.keyword3 = new Msg(keyword3);
+        this.keyword4 = new Msg(keyword4);
+        this.remark = new Msg(remark);
+    }
+
+    public MsgDataBO(String first, String keyword1, String keyword2, String keyword3, String keyword4, String keyword5, String remark) {
+        this.first = new Msg(first);
+        this.keyword1 = new Msg(keyword1);
+        this.keyword2 = new Msg(keyword2);
+        this.keyword3 = new Msg(keyword3);
+        this.keyword4 = new Msg(keyword4);
+        this.keyword5 = new Msg(keyword5);
+        this.remark = new Msg(remark);
+
+    }
+
+}

+ 46 - 0
sp-core/src/main/java/com/pj/project/wx/task/TokenTask.java

@@ -0,0 +1,46 @@
+package com.pj.project.wx.task;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.pj.current.config.WxConfig;
+import com.pj.utils.cache.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Component
+@Slf4j
+public class TokenTask {
+    @Resource
+    WxConfig wxConfig;
+
+    @Scheduled(fixedRate = 6000000)
+    @Async
+    public void task() {
+        String tokenKey = wxConfig.getAccessTokenKey();
+        String ticketKey = wxConfig.getJsApiTicketKey();
+        String tokenUrl = wxConfig.getAccessTokenUrl();
+        String resp = HttpUtil.get(tokenUrl);
+        JSONObject result = JSONUtil.parseObj(resp);
+        String accessToken = result.getStr("access_token");
+        if (StrUtil.isEmpty(accessToken)) {
+            log.error("get access token fail:{}", resp);
+            return;
+        }
+        RedisUtil.set(tokenKey, accessToken);
+        String jsUrl = wxConfig.getJsApiTokenUrl().replaceAll("ACCESS_TOKEN", accessToken);
+        String jsResp = HttpUtil.get(jsUrl);
+        JSONObject jsResult = JSONUtil.parseObj(jsResp);
+        String ticket = jsResult.getStr("ticket");
+        if (StrUtil.isEmpty(ticket)) {
+            log.error("=======ticket=====fail======");
+            return;
+        }
+        RedisUtil.set(ticketKey, accessToken);
+    }
+}

+ 4 - 1
sp-core/src/main/java/com/pj/project4sp/spcfg/SpCfgUtil.java

@@ -66,7 +66,10 @@ public class SpCfgUtil {
 	public static String getAppCfg(String key, String defaultValue) {
 		return SpCfgUtil.getCfgBy("app_cfg", key, defaultValue);
 	}
-	
+	// 获取配置信息:备案审核 1审核 2不审核
+	public static String getFillingJudge() {
+		return SpCfgUtil.getServerCfg("fillingJudge", "1");
+	}
 	
 	// ====================== 获取指定配置 ========================== 
 

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

@@ -45,10 +45,21 @@ spring:
     # 项目自定义配置
     myconfig:
         # 本项目部署到的服务器域名(文件上传等等模块  要用到)
-        domain: http://127.0.0.1:8099
-        ip: 192.168.3.27
+        domain: http://192.168.1.3:8099
+        ip: 192.168.1.3
         heart-port: 9999
         command-port: 8888
         command-prefix: "command:"
         heart-prefix: "heart:"
-        gate-port: 8131
+        gate-port: 8131
+wx:
+    app-id: wxd40a34141872bf0c
+    app-secret: 2e6a69fab1fbab60369ebd21b0882f3e
+    access-token-key: wechat:base_token_key
+    js-api-ticket-key: wechat:jsapi_ticket_key
+    access-token-url: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${wx.app-id}&secret=${wx.app-secret}
+    auth-login-url: https://open.weixin.qq.com/connect/oauth2/authorize?appid=${wx.app-id}&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect
+    js-api-token-url: https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
+    openid-url: https://api.weixin.qq.com/sns/oauth2/access_token?appid=${wx.app-id}&secret=${wx.app-secret}&code=CODE&grant_type=authorization_code
+    send-msg-url: https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
+    domain: https://192.168.1.3:8080/h5

Some files were not shown because too many files changed in this diff