From eb275c6d06d3c27fd30bbf4975d27c93d7f56eb2 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 10 十二月 2024 18:29:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                 |    4 
 server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                              |   21 +++
 server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java                              |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java      |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java                  |   67 +++++++++-
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java    |   47 +++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java                    |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java     |   32 +++--
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java |   25 +---
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java                    |   22 ++
 server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java                        |   12 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java      |   63 +++++++---
 server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java                  |    7 
 16 files changed, 232 insertions(+), 82 deletions(-)

diff --git a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
index 274dc49..26224a8 100644
--- a/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
+++ b/server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -23,6 +23,7 @@
 import org.springframework.web.server.ServerWebExchange;
 
 import javax.annotation.Resource;
+import java.util.Objects;
 
 /**
  * JWT鑾峰彇浠ょ墝鍜屽埛鏂颁护鐗屾帴鍙�
@@ -153,12 +154,13 @@
      */
     @PostMapping("/logout")
     @ApiOperation("閫�鍑虹櫥闄�")
-    public ApiResponse<String> logout(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken){
+    public ApiResponse<String> logout(@RequestHeader(Constants.HEADER_USER_TOKEN) String oldToken,Integer isH5){
         try {
-             jwtTokenUtil.logout(oldToken);
-
-
-
+            if(Objects.nonNull(isH5)){
+                jwtTokenUtil.logoutForH5(oldToken);
+            }else{
+                jwtTokenUtil.logout(oldToken);
+            }
         }catch (BusinessException e){
             return ApiResponse.failed(e.getCode(),e.getMessage());
         }catch (Exception e){
diff --git a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index 8e539a4..fff1fdd 100644
--- a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -1,10 +1,13 @@
 package com.doumee.config.jwt;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.HttpsUtil;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.SystemUser;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
 import lombok.extern.slf4j.Slf4j;
@@ -36,7 +39,8 @@
     private JwtProperties jwtProperties;
     @Autowired
     private SystemDictDataBiz systemDictDataBiz ;
-
+    @Autowired
+    private SystemUserMapper systemUserMapper;
     /**
      * 鐢熸垚token浠ょ墝
      *
@@ -136,14 +140,25 @@
 //                this.hkLoginOut(url+"?token="+loginUserInfo.getHkMenuToken());
                 HttpsUtil.get(url+"?token="+loginUserInfo.getHkMenuToken(),true);
             }
-            redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);//鍒犻櫎鑰佺殑token
-
+            //鍒犻櫎鑰佺殑token
+            redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
+    public void logoutForH5(String token) {
+        try {
+            //鐧诲嚭娴峰悍绯荤粺鏁版嵁
+            LoginUserInfo loginUserInfo = this.getUserInfoByToken(token);
+            //鍒犻櫎鑰佺殑token
+            redisTemplate.delete(Constants.REDIS_TOKEN_KEY+token);
+            systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda().set(SystemUser::getOpenid,null).eq(SystemUser::getId,loginUserInfo.getId()));
 
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
     public void hkLoginOut(String url){
         try {
             // 鍒涘缓HttpClient瀵硅薄
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 2315384..371bfbd 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -57,6 +57,8 @@
     public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
     public static final String SIGN_IN_PLACE_DISTANCE ="SIGN_IN_PLACE_DISTANCE" ;
     public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ;
+    public static final String SIGN_IN_ATTENTION ="SIGN_IN_ATTENTION" ;
+    public static final String SIGN_IN_QRCODE_PREFIX ="SIGN_IN_QRCODE_PREFIX" ;
 
 
     //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
@@ -80,6 +82,8 @@
     public static final String PLATFORM_EVENT_IMG = "PLATFORM_EVENT_IMG";
     public static final String VISIT_NOTICE = "VISIT_NOTICE";
     public static final String TIME_OUT_CONFIG = "TIME_OUT_CONFIG";
+    public static final String VISIT_REPORT_TIME_OUT_MOBILE = "VISIT_REPORT_TIME_OUT_MOBILE";
+    public static final String VISIT_TIME_OUT_MOBILE = "VISIT_TIME_OUT_MOBILE";
 
     //鍋ュ悍璇侀厤缃�
     public static final String LW_HEALTH_CARD = "LW_HEALTH_CARD";
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
index 12ea554..efd49bb 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/SmsConstants.java
@@ -41,7 +41,7 @@
         String visitAuditFail = "visitAuditFail";
         //璁垮鐢宠-瓒呮椂鏈绂�-閫氱煡锛堢粰鐢宠浜猴級锛�
         String visitTimeOutSignOut = "visitTimeOutSignOut";
-        //璁垮鐢宠-鏈绂绘暟閲�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級 //TODO 鏃犳敹鐭俊浜哄憳
+        //璁垮鐢宠-鏈绂绘暟閲�-閫氱煡锛堢粰鎸囧畾鎺ユ敹浜猴級
         String visitTimeOutSignOutNum = "visitTimeOutSignOutNum";
 
     }
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
index 438cdd3..c15776e 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
@@ -135,20 +135,32 @@
                              //楠岃瘉浜鸿劯璇勫垎
                             //浜鸿劯璇勫垎
                             FacePictureCheckRequest param = new FacePictureCheckRequest();
-                            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() +
-                                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+                            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode();
                             param.setFacePicUrl(prefixUrl + fileName);
                             BaseResponse<FacePictureCheckResponse> responseBaseResponse = HKService.facePictureCheck(param);
                             if(responseBaseResponse == null || !StringUtils.equals(responseBaseResponse.getCode(), HKConstants.RESPONSE_SUCCEE)){
-                                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
                             FacePictureCheckResponse facePictureCheckResponse = responseBaseResponse.getData();
                             if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
-                                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
                             if(!facePictureCheckResponse.getCheckResult()){
-                                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
+                                context.put("code", 0);
+                                context.put("message", facePictureCheckResponse.getStatusMessage());
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
+
                         }
                         context.put("success", true);
                         context.put("code", 200);
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java
index 930da3f..c41616f 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java
@@ -122,7 +122,7 @@
     @ApiOperation("璁垮璁板綍 - 鍒嗛〉鍒楄〃")
     @PostMapping("/visitPage")
     public ApiResponse<PageData<Visits>> visitPage (@RequestBody PageWrap<Visits> pageWrap) {
-        if(Objects.isNull(pageWrap.getModel().getMemberId())){
+        if(Objects.isNull(pageWrap.getModel()) || StringUtils.isBlank(pageWrap.getModel().getOpenid())){
             pageWrap.getModel().setMemberId(0);
         }
         return ApiResponse.success(visitsService.findPage(pageWrap));
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
index 6852569..c72da7d 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
@@ -57,14 +57,14 @@
         @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
     })
     @PostMapping(value = "/upload", headers = "content-type=multipart/form-data")
-    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+    public void uploadMobile(String folder, HttpServletRequest request, HttpServletResponse response,Integer isFace) throws Exception {
         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
         upload(multipartRequest, response, folder + "/",
             systemDictDataBiz.queryByCode(Constants.OSS,Constants.BUCKETNAME).getCode(),
             systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
             systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
             systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
-            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+            systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode(),isFace);
     }
 
 
@@ -73,7 +73,7 @@
             @ApiImplicitParam(name = "folder", value = "鏂囦欢澶�", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
     })
     @PostMapping(value = "/uploadPicture", headers = "content-type=multipart/form-data")
-    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response) throws Exception {
+    public void uploadPicture(String folder, HttpServletRequest request, HttpServletResponse response,Integer isFace) throws Exception {
         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
         Iterator<String> fileNames = multipartRequest.getFileNames();
         Map<String, Object> context = new HashMap<>();
@@ -91,7 +91,7 @@
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_ID).getCode(),
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.ACCESS_KEY).getCode(),
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode(),
-                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode());
+                systemDictDataBiz.queryByCode(Constants.OSS,Constants.ENDPOINT).getCode(),isFace);
     }
 
 
@@ -136,19 +136,33 @@
                             //楠岃瘉浜鸿劯璇勫垎
                             //浜鸿劯璇勫垎
                             FacePictureCheckRequest param = new FacePictureCheckRequest();
-                            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() +
-                                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+                            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode();
                             param.setFacePicUrl(prefixUrl + fileName);
                             BaseResponse<FacePictureCheckResponse> responseBaseResponse = HKService.facePictureCheck(param);
                             if(responseBaseResponse == null || !StringUtils.equals(responseBaseResponse.getCode(), HKConstants.RESPONSE_SUCCEE)){
-                                throw  new BusinessException(com.doumee.core.constants.ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+//                                throw  new BusinessException(com.doumee.core.constants.ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
                             FacePictureCheckResponse facePictureCheckResponse = responseBaseResponse.getData();
                             if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
-                                throw  new BusinessException(com.doumee.core.constants.ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+//                                throw  new BusinessException(com.doumee.core.constants.ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
                             if(!facePictureCheckResponse.getCheckResult()){
-                                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
+//                                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
+                                context.put("code", 0);
+                                context.put("message", facePictureCheckResponse.getStatusMessage());
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
                             }
                         }
 
@@ -213,7 +227,7 @@
 
 
     public void upload(HttpServletRequest request, HttpServletResponse response, String folder, String bucketName,
-        String access_id, String access_key, String resourcePath, String endpoint) throws Exception {
+        String access_id, String access_key, String resourcePath, String endpoint,Integer isFace) throws Exception {
         response.setCharacterEncoding("UTF-8");
         response.setContentType("text/html;charset=UTF-8");
         Map<String, Object> context = new HashMap<>();
@@ -253,7 +267,38 @@
                     ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
                     if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
                         // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
-                        // sendSuccessMessage(response, resourcePath+key);
+                        if(Constants.equalsInteger(isFace,Constants.ZERO)){
+                            //楠岃瘉浜鸿劯璇勫垎
+                            //浜鸿劯璇勫垎
+                            FacePictureCheckRequest param = new FacePictureCheckRequest();
+                            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode();
+                            param.setFacePicUrl(prefixUrl + key);
+                            BaseResponse<FacePictureCheckResponse> responseBaseResponse = HKService.facePictureCheck(param);
+                            if(responseBaseResponse == null || !StringUtils.equals(responseBaseResponse.getCode(), HKConstants.RESPONSE_SUCCEE)){
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
+                            }
+                            FacePictureCheckResponse facePictureCheckResponse = responseBaseResponse.getData();
+                            if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
+                                context.put("code", 0);
+                                context.put("message", "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
+                            }
+                            if(!facePictureCheckResponse.getCheckResult()){
+                                context.put("code", 0);
+                                context.put("message", facePictureCheckResponse.getStatusMessage());
+                                context.put("errno",0);
+                                writerJson(response, context);
+                                return;
+                            }
+                        }
+
+
                         context.put("success", true);
                         context.put("code", 200);
                         context.put("errno",0);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
index 23e60ae..c445890 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
@@ -29,7 +29,7 @@
         // 瀹℃壒閫氳繃缁欑敵璇蜂汉锛氱敵璇峰凡瀹℃牳閫氳繃
         String visitAuditSuccess = "visitAuditSuccess";
         //  瀹℃壒椹冲洖缁欑敵璇蜂汉锛氱敵璇峰凡琚┏鍥�
-        String visitAuditFail = "visitWaitAudit";
+        String visitAuditFail = "visitAuditFail";
         // 缁欏鎵逛汉锛氱敵璇峰緟鎮ㄥ鎵�
         String visitWaitAudit = "visitWaitAudit";
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
index 7fd38e9..4f6a7b5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
@@ -84,7 +84,8 @@
     public void  sendVisitTemplateNotice(WxNoticeConfigMapper wxNoticeConfigMapper, Visits visits, String objCode, String token, List<String> openIds){
         try{
             if(CollectionUtils.isNotEmpty(openIds)){
-                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit)
+                WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda()
+                        .in(WxNoticeConfig::getObjType,WxPlatConstants.visit,WxPlatConstants.visitReport)
                         .eq(WxNoticeConfig::getObjCode,objCode)
                         .eq(WxNoticeConfig::getStatus, Constants.ZERO)
                         .last(" limit 1")
@@ -102,14 +103,14 @@
                 Map<String, Object> thing1 = new HashMap<String,Object>();
                 thing1.put("value", visits.getName());
                 Map<String, Object> car_number7 = new HashMap<String,Object>();
-                car_number7.put("value",StringUtils.isNotBlank(visits.getCarNos())?visits.getCarNos():"-");
+                car_number7.put("value",StringUtils.isNotBlank(visits.getCarNos())?visits.getCarNos():"鏃�");
+                dataMap.put("car_number7",car_number7);
                 Map<String, Object> character_string6 = new HashMap<String,Object>();
                 character_string6.put("value","1");
                 Map<String, Object> thing4 = new HashMap<String,Object>();
                 thing4.put("value",visits.getReason());
                 dataMap.put("const9",const9);
                 dataMap.put("thing1",thing1);
-                dataMap.put("car_number7",car_number7);
                 dataMap.put("character_string6",character_string6);
                 dataMap.put("thing4",thing4);
                 paramMap.put("data", dataMap);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
index 1d3b91e..0234167 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -288,6 +288,10 @@
     @TableField(exist = false)
     private String optRemark;
 
+    @ApiModelProperty(value = "system openid" , hidden = true)
+    @TableField(exist = false)
+    private String systemOpenid;
+
     @ApiModelProperty(value = "鍩硅寮�濮嬫椂闂�")
     @TableField(exist = false)
     private Date trainStartTime;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java
index ab4d25c..d2962a5 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/LargeScreenDataVO.java
@@ -25,5 +25,7 @@
     @ApiModelProperty(value = "浜岀淮鐮佸��")
     private String qrCode;
 
+    @ApiModelProperty(value = "娉ㄦ剰浜嬮」")
+    private String attention;
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 3502b26..eea3e40 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -493,7 +493,13 @@
         for (int i = 0; i < approveParamList.size(); i++) {
             ApproveParam approveParam = approveParamList.get(i);
             List<Integer> ids = this.getApproveUserIds(approveParam,createMember);
-            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().in(Member::getId,ids));
+            List<Member> memberList = memberMapper.selectJoinList(Member.class,
+                    new MPJLambdaWrapper<Member>()
+                            .selectAll(Member.class)
+                            .selectAs(SystemUser::getOpenid,Member::getSystemOpenid)
+                            .leftJoin(SystemUser.class,SystemUser::getMemberId,Member::getId)
+                            .in(Member::getId,ids)
+            );
             List<String> memberNameList =memberList.stream().map(m->m.getName()).collect(Collectors.toList());
             String memberNames = String.join(",",memberNameList);
             Integer noticeType = Constants.approveTypeToNoticeType(approveTempl.getType());
@@ -600,11 +606,11 @@
                                 null,Arrays.asList(member.getPhone().split(","))
                         );
                         //鍏紬鍙烽�氱煡
-                        if(StringUtils.isNotBlank(member.getOpenid())){
+                        if(StringUtils.isNotBlank(member.getSystemOpenid())){
                             wxPlatNotice.sendVisitTemplateNotice(
                                     wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitContent.visitWaitAudit,
                                     token,
-                                    Arrays.asList(member.getOpenid().split(","))
+                                    Arrays.asList(member.getSystemOpenid().split(","))
                             );
                         }
                     }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.visitReporting)){
@@ -615,11 +621,11 @@
                                 null,Arrays.asList(member.getPhone().split(","))
                         );
                         //鍏紬鍙烽�氱煡
-                        if(StringUtils.isNotBlank(member.getOpenid())){
+                        if(StringUtils.isNotBlank(member.getSystemOpenid())){
                             wxPlatNotice.sendVisitTemplateNotice(
                                     wxNoticeConfigMapper,visitsMapper.selectById(businessId), WxPlatConstants.visitReportContent.visitReportWaitAudit,
                                     token,
-                                    Arrays.asList(member.getOpenid().split(","))
+                                    Arrays.asList(member.getSystemOpenid().split(","))
                             );
                         }
                     }else if(Constants.equalsInteger(noticeType,Constants.noticesObjectType.useCar)){
@@ -630,13 +636,13 @@
                                 null,Arrays.asList(member.getPhone().split(","))
                         );
                         //鍏紬鍙烽�氱煡
-                        if(StringUtils.isNotBlank(member.getOpenid())){
+                        if(StringUtils.isNotBlank(member.getSystemOpenid())){
                             wxPlatNotice.sendCarUseBookTemplateNotice(
                                     wxNoticeConfigMapper,
                                     carUseBookMapper.selectById(businessId),
                                     WxPlatConstants.carUseBookContent.carUseBookWaitAudit,
                                     token,
-                                    Arrays.asList(member.getOpenid().split(",")),
+                                    Arrays.asList(member.getSystemOpenid().split(",")),
                                     Constants.ONE);
                         }
                     }
@@ -1623,8 +1629,8 @@
                                 SmsConstants.visitReportingContent.visitReportingAuditFail,
                         approveDTO.getCheckInfo(),null
                 );
-                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitReportContent.visitReportAuditSuccess:WxPlatConstants.visitReportContent.visitReportAuditFail;
-
+                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)?
+                        WxPlatConstants.visitReportContent.visitReportAuditSuccess:WxPlatConstants.visitReportContent.visitReportAuditFail;
 
             }else{ //璁垮鐢宠
                 //鍙戦�佺煭淇¢�氱煡
@@ -1634,17 +1640,17 @@
                                 SmsConstants.visitContent.visitAuditFail,
                         approveDTO.getCheckInfo(),null
                 );
-                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitContent.visitAuditSuccess:WxPlatConstants.visitContent.visitAuditFail;
+                objCode =  Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)? WxPlatConstants.visitContent.visitAuditSuccess:
+                        WxPlatConstants.visitContent.visitAuditFail;
             }
             visitsMapper.updateById(visits);
             //鍙戦�佸井淇″叕浼楀彿
             if(StringUtils.isNotBlank(objCode)){
-                Member member = memberMapper.selectById(visits.getCreateMemberId());
-                if(Objects.nonNull(member) && StringUtils.isNotBlank(member.getOpenid())){
+                if(Objects.nonNull(visits) && StringUtils.isNotBlank(visits.getOpenid())){
                     wxPlatNotice.sendVisitTemplateNotice(
                             wxNoticeConfigMapper,visits, objCode,
                             systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
-                            Arrays.asList(member.getOpenid().split(","))
+                            Arrays.asList(visits.getOpenid().split(","))
                     );
                 }
             }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index e2dcb08..ca35e35 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -1718,10 +1718,10 @@
             openId = tokenJson.getString("openid");
         }
         WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
-        wxAuthorizeVO.setOpenid(openId);
         if(StringUtils.isBlank(openId)){
             return wxAuthorizeVO;
         }
+        wxAuthorizeVO.setOpenid(openId);
         if(source==1){
             //鏍规嵁openId 鏌ヨ鐢ㄦ埛淇℃伅
             Member member = memberJoinMapper.selectJoinOne(Member.class,new MPJLambdaWrapper<Member>()
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index c184c0e..d1811f2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -119,8 +119,6 @@
     private EmayService emayService;
 
     @Autowired
-    private RedisTemplate<String, Object> redisTemplate;
-    @Autowired
     private PlatformBroadcastLogMapper platformBroadcastLogMapper;
     @Autowired
     private PlatformWarnEventServiceImpl platformWarnEventService;
@@ -655,11 +653,11 @@
     }
 
     public void sceneSignIn(SignInDTO signInDTO){
-
         if( StringUtils.isNotBlank(signInDTO.getQrCodeKey())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
-        if(!signInDTO.getQrCodeKey().equals(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){
+        if(!signInDTO.getQrCodeKey().equals(
+                systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE_PREFIX).getCode() +  systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){
             throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"浜岀淮鐮佸凡杩囨湡,璇峰埛鏂伴噸璇�");
         }
     }
@@ -1435,19 +1433,10 @@
         return platformJob;
     }
 
-    public PlatformJob getLastWaitJob(String uuid, LoginUserInfo loginUser){
-        String u = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.BIGSCREEN_UUID);
-        if(!StringUtils.equals(u,uuid)){
-            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝浜岀淮鐮佸凡澶辨晥锛�");
-        }
-        PlatformJob platformJob =  platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
-                .eq(PlatformJob::getDrivierPhone,loginUser.getMobile())
-                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
-                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WART_SIGN_IN.getKey())
-                .orderByDesc(PlatformJob::getCreateDate)
-                .last(" limit 1 ") );
-            return platformJob;
-    }
+
+    /**
+     * 瀹屾垚浣滀笟
+     */
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public PlatformJob finishWork(JobOperateDTO jobOperateDTO){
@@ -2121,8 +2110,6 @@
             List<PlatformJob> calledList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList());
             largeScreenDataVO.setWaitWorkList(calledList);
         }
-        String u =  UUID.randomUUID().toString();
-        redisTemplate.opsForValue().set(Constants.RedisKeys.BIGSCREEN_UUID,u,3, TimeUnit.MINUTES);
         largeScreenDataVO.setQrCode(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode());
         return largeScreenDataVO;
 
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
index bc2311a..ab15d31 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -387,6 +387,53 @@
         }
     }
 
+    public static void sendVisitReportTimeOutSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper ,
+                                                 SmsConfigMapper smsConfigMapper,
+                                           String objCode, String msg,List<String> mobiles){
+        try{
+            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
+                    objCode).last(" limit 1 "));
+            //寮�鍚煭淇¢�氱煡
+            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){
+                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent();
+                //瓒呮椂鐗规畩澶勭悊
+                if(smsConfig.getCode().equals(SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum)){
+                    //浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡姤澶囪溅杈嗘湭绂诲満锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��
+                    content = content.replace("{鏈绂绘暟閲弣",msg);
+                    sendBusinessSms(emayService,smsEmailMapper,
+                            mobiles,SmsConstants.visitReport,content,0);
+                    return;
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
+
+    public static void sendVisitTimeOutSms(SystemDictDataBiz systemDictDataBiz, EmayService emayService , com.doumee.dao.business.dao.SmsEmailMapper smsEmailMapper ,
+                                                 SmsConfigMapper smsConfigMapper,
+                                                 String objCode, String msg,List<String> mobiles){
+        try{
+            SmsConfig smsConfig = smsConfigMapper.selectOne(new QueryWrapper<SmsConfig>().lambda().eq(SmsConfig::getCode,
+                    objCode).last(" limit 1 "));
+            //寮�鍚煭淇¢�氱煡
+            if(Objects.nonNull(smsConfig) || Constants.equalsInteger(smsConfig.getStatus(),Constants.ZERO)){
+                String content = systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode() + smsConfig.getContent();
+                //瓒呮椂鐗规畩澶勭悊
+                if(smsConfig.getCode().equals(SmsConstants.visitContent.visitTimeOutSignOutNum)){
+                    //浠婃棩杩樻湁{鏈绂绘暟閲弣涓瀹㈡姤澶囪溅杈嗘湭绂诲満锛岃鍓嶅線PC绔煡鐪嬭缁嗕俊鎭��
+                    content = content.replace("{鏈绂绘暟閲弣",msg);
+                    sendBusinessSms(emayService,smsEmailMapper,
+                            mobiles,SmsConstants.visit,content,0);
+                    return;
+                }
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 闅愭偅闅忔墜鎷�
      * @param systemDictDataBiz
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index 15ceb11..23c989b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -253,25 +253,25 @@
         //鍒濆鍖栬瀹俊鎭�
         initVisitInfo(visits,date);
 
-        if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){
-            //浜鸿劯璇勫垎
-            FacePictureCheckRequest param = new FacePictureCheckRequest();
-            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() +
-                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
-            param.setFacePicUrl(prefixUrl + visits.getFaceImg());
-            BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param);
-            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
-            }
-            FacePictureCheckResponse facePictureCheckResponse = response.getData();
-            if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
-            }
-            if(!facePictureCheckResponse.getCheckResult()){
-                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
-            }
-        }
-
+//        if(StringUtils.isNotBlank(visits.getFaceImg())&&(Constants.equalsInteger(visits.getType(),Constants.ZERO)|| Constants.equalsInteger(visits.getType(),Constants.TWO))){
+//            //浜鸿劯璇勫垎
+//            FacePictureCheckRequest param = new FacePictureCheckRequest();
+//            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode() +
+//                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+//            param.setFacePicUrl(prefixUrl + visits.getFaceImg());
+//            BaseResponse<FacePictureCheckResponse> response = HKService.facePictureCheck(param);
+//            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
+//                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+//            }
+//            FacePictureCheckResponse facePictureCheckResponse = response.getData();
+//            if(Objects.isNull(facePictureCheckResponse) || Objects.isNull(facePictureCheckResponse.getCheckResult())){
+//                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵逛笉璧凤紝浜鸿劯璇勫垎鑾峰彇鏁版嵁澶辫触~");
+//            }
+//            if(!facePictureCheckResponse.getCheckResult()){
+//                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), facePictureCheckResponse.getStatusMessage());
+//            }
+//        }
+        visits.setSendTimeOutNotice(Constants.ZERO);
         visitsMapper.insert(visits);
 
         //鍙戣捣ERP瀹℃壒鐢宠
@@ -1740,6 +1740,8 @@
                 .eq(Visits::getSendTimeOutNotice,Constants.ZERO)
                 .apply("   now() >=  DATE_ADD(ENDTIME,INTERVAL -"+times+" MINUTE)   ")
         );
+        Integer visitTimeCount = 0;
+        Integer visitReportTimeCount = 0;
         for (Visits visits:visitsList) {
             if(Constants.equalsInteger(visits.getType(),Constants.TWO)){
                 SmsEmailServiceImpl.sendVisitReportSms(systemDictDataBiz,
@@ -1747,17 +1749,40 @@
                         SmsConstants.visitReportingContent.visitReportingTimeOutSignOut,
                         null,Arrays.asList(visits.getPhone().split(","))
                 );
+                visitReportTimeCount = visitReportTimeCount + 1;
             }else{
                 SmsEmailServiceImpl.sendVisitSms(systemDictDataBiz,
                         emayService,smsEmailMapper,smsConfigMapper,visitsMapper,visits.getId(),
                         SmsConstants.visitContent.visitTimeOutSignOut,
                         null,Arrays.asList(visits.getPhone().split(","))
                 );
+                visitTimeCount = visitTimeCount  + 1 ; 
             }
             visits.setSendTimeOutNotice(Constants.ONE);
             visitsMapper.updateById(visits);
         }
+        
+        if(visitTimeCount > 0 ){
+            String mobile = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VISIT_TIME_OUT_MOBILE).getCode();
+            if(StringUtils.isNotBlank(mobile)){
+                SmsEmailServiceImpl.sendVisitTimeOutSms(systemDictDataBiz,
+                        emayService,smsEmailMapper,smsConfigMapper,
+                        SmsConstants.visitContent.visitTimeOutSignOutNum,
+                        visitReportTimeCount.toString(),Arrays.asList(mobile.split(","))
+                );
+            }
+        }
 
+        if(visitReportTimeCount > 0 ){
+            String mobile = systemDictDataBiz.queryByCode(Constants.VISIT_CONFIG,Constants.VISIT_REPORT_TIME_OUT_MOBILE).getCode();
+            if(StringUtils.isNotBlank(mobile)){
+                SmsEmailServiceImpl.sendVisitReportTimeOutSms(systemDictDataBiz,
+                        emayService,smsEmailMapper,smsConfigMapper,
+                        SmsConstants.visitReportingContent.visitReportingTimeOutSignOutNum,
+                        visitReportTimeCount.toString(),Arrays.asList(mobile.split(","))
+                );
+            }
+        }
 
 
 

--
Gitblit v1.9.3