From a2746876e81443d52bc4cb6f35bf8554741a6b4c Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期五, 18 十月 2024 14:28:33 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit

---
 admin/src/views/system/permission.vue                                                                          |    4 
 server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java                                    |   78 +++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java                   |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java                       |    4 
 server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java                                   |    1 
 server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java                                         |    9 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java                  |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java                    |   12 
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java                       |    2 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java                 |  109 +++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java                        |   59 +++
 admin/src/views/business/carEvent.vue                                                                          |    8 
 server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                          |   28 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java                |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java             |  101 ++++++
 server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java                                  |    5 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java         |    4 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java          |    4 
 server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java                            |    6 
 server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java                                |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java                  |   74 ++++
 server/system_service/src/main/java/com/doumee/api/BaseController.java                                         |    8 
 server/system_gateway/src/main/resources/bootstrap.yml                                                         |    2 
 server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java                     |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java                     |  145 +++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java    |  160 ++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java |    3 
 admin/src/views/business/relativeMember.vue                                                                    |   12 
 admin/src/views/business/deviceEvent.vue                                                                       |    2 
 29 files changed, 827 insertions(+), 35 deletions(-)

diff --git a/admin/src/views/business/carEvent.vue b/admin/src/views/business/carEvent.vue
index 8087856..6c912f5 100644
--- a/admin/src/views/business/carEvent.vue
+++ b/admin/src/views/business/carEvent.vue
@@ -20,10 +20,10 @@
       </el-form-item>
       <el-form-item label="浜嬩欢绫诲瀷" prop="eventType">
         <el-select v-model="searchForm.eventType" placeholder="璇烽�夋嫨">
-          <el-option label="鍦ㄥ洯鍘嬬嚎浜嬩欢" value="771760130"></el-option>
-          <el-option label="鍦ㄥ洯鏀捐浜嬩欢" value="771760131"></el-option>
-          <el-option label="绂诲洯鍘嬬嚎浜嬩欢" value="771760133"></el-option>
-          <el-option label="绂诲洯鏀捐浜嬩欢" value="771760134"></el-option>
+          <el-option label="鍏ュ満鍘嬬嚎浜嬩欢" value="771760130"></el-option>
+          <el-option label="鍏ュ満鏀捐浜嬩欢" value="771760131"></el-option>
+          <el-option label="鍑哄満鍘嬬嚎浜嬩欢" value="771760133"></el-option>
+          <el-option label="鍑哄満鏀捐浜嬩欢" value="771760134"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="璧峰鏃堕棿" prop="eventType">
diff --git a/admin/src/views/business/deviceEvent.vue b/admin/src/views/business/deviceEvent.vue
index f6b4a8f..911e069 100644
--- a/admin/src/views/business/deviceEvent.vue
+++ b/admin/src/views/business/deviceEvent.vue
@@ -77,7 +77,7 @@
         </el-table-column>
         <el-table-column label="鎶撴媿鐓х墖" min-width="100px">
           <template slot-scope="{row}">
-            <el-image style="width: 80px; height: 80px" :src="row.extEventPictureURL"
+            <el-image v-if="row.extEventPictureURL" style="width: 80px; height: 80px" :src="row.extEventPictureURL"
               :preview-src-list="[row.extEventPictureURL]">
             </el-image>
           </template>
diff --git a/admin/src/views/business/relativeMember.vue b/admin/src/views/business/relativeMember.vue
index 31248aa..df14305 100644
--- a/admin/src/views/business/relativeMember.vue
+++ b/admin/src/views/business/relativeMember.vue
@@ -37,9 +37,9 @@
           <el-option label="鍚屾澶辫触" value="2"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="">
+<!--      <el-form-item label="">
         <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1">鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
-      </el-form-item>
+      </el-form-item>-->
       <section>
         <el-button type="primary" @click="search">鎼滅储</el-button>
         <el-button @click="reset">閲嶇疆</el-button>
@@ -71,8 +71,14 @@
             icon="el-icon-plus" v-permissions="['business:traintime:create']">鍩硅鏈熷鍏�</el-button></li>
         <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
             v-permissions="['business:member:delete']">鎵归噺鍒犻櫎</el-button></li>
-        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">涓嬪彂鎺堟潈</el-button></li>
+        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">涓嬪彂鎺堟潈</el-button>
+        <li style="float: right">
+          <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1"
+                       @change="search">鏄惁鍖呭惈涓嬬骇缁勭粐</el-checkbox>
+        </li>
+<!--
         <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">瀵煎嚭</el-button></li>
+-->
       </ul>
       <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55"></el-table-column>
diff --git a/admin/src/views/system/permission.vue b/admin/src/views/system/permission.vue
index 76f35b3..18935a1 100644
--- a/admin/src/views/system/permission.vue
+++ b/admin/src/views/system/permission.vue
@@ -29,8 +29,8 @@
       >
         <el-table-column type="selection" fixed="left" width="55"></el-table-column>
         <el-table-column prop="code" label="鏉冮檺缂栫爜" fixed="left" min-width="200px"></el-table-column>
-        <el-table-column prop="name" label="鏉冮檺鍚嶇О" fixed="left" min-width="120px"></el-table-column>
-        <el-table-column prop="remark" label="鏉冮檺澶囨敞" min-width="120px"></el-table-column>
+        <el-table-column prop="name" label="鏉冮檺鍚嶇О" fixed="left" min-width="200px"></el-table-column>
+        <el-table-column prop="remark" label="鏉冮檺澶囨敞" min-width="200px"></el-table-column>
         <el-table-column prop="createUser" label="鍒涘缓浜�" min-width="100px">
           <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
         </el-table-column>
diff --git a/server/system_gateway/src/main/resources/bootstrap.yml b/server/system_gateway/src/main/resources/bootstrap.yml
index 8ecd0a5..099da4a 100644
--- a/server/system_gateway/src/main/resources/bootstrap.yml
+++ b/server/system_gateway/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: pro
   application:
     name: system_gateway
   # 瀹夊叏閰嶇疆
diff --git a/server/system_service/src/main/java/com/doumee/api/BaseController.java b/server/system_service/src/main/java/com/doumee/api/BaseController.java
index 7aae08b..3001582 100644
--- a/server/system_service/src/main/java/com/doumee/api/BaseController.java
+++ b/server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -1,6 +1,7 @@
 package com.doumee.api;
 
 import com.alibaba.fastjson.JSONObject;
+import com.doumee.config.jwt.JwtProperties;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
@@ -13,9 +14,11 @@
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Controller鍩虹被
@@ -27,6 +30,8 @@
 
     @Autowired
     private RedisTemplate<String,Object> stringRedisTemplate;
+    @Resource
+    private JwtProperties jwtProperties;
     /**
      * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛
      * @author Eva.Caesar Liu
@@ -47,6 +52,9 @@
         }
         return  user;
     }
+    public void updateLoginUser (String token,LoginUserInfo userInfo) {
+        stringRedisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(userInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+    }
 
 
     /**
diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java
index fa6223a..eee029f 100644
--- a/server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java
+++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java
@@ -4,6 +4,7 @@
 import com.doumee.biz.system.SystemUserBiz;
 import com.doumee.core.annotation.trace.Trace;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
 import com.doumee.dao.system.dto.UpdatePwdDto;
 import com.doumee.service.system.SystemLoginService;
@@ -35,8 +36,11 @@
     @ApiOperation("淇敼褰撳墠鐢ㄦ埛瀵嗙爜")
     @PostMapping("/updatePwd")
     public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) {
-        dto.setUserId(this.getLoginUser(token).getId());
+        LoginUserInfo userInfo = this.getLoginUser(token);
+        dto.setUserId(userInfo.getId());
         systemUserBiz.updatePwd(dto);
+        userInfo.setNeedChangePwd(Constants.ONE);
+        updateLoginUser(token,userInfo);//鏇存柊鐧诲綍token涓粦瀹氱殑鐢ㄦ埛淇℃伅涓哄凡鏇存柊瀵嗙爜
         return ApiResponse.success(null);
     }
 
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
index 71edf44..071fe85 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -9,6 +9,7 @@
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.PwdCheckUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.system.SystemDepartmentUserMapper;
 import com.doumee.dao.system.dto.*;
@@ -81,6 +82,13 @@
 
     @Override
     public void updatePwd(UpdatePwdDto dto) {
+        //鐧诲綍瀵嗙爜澶嶆潅搴︽牎楠岋細6-20涓瓧绗︼紝鑷冲皯鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃2绉�
+        if(StringUtils.isBlank(dto.getNewPwd())
+                ||dto.getNewPwd().length()>20
+                ||dto.getNewPwd().length()<6
+                ||PwdCheckUtil.checkPassword(dto.getNewPwd())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝瀵嗙爜澶嶆潅搴︿笉婊¤冻瑕佹眰锛�6-20涓瓧绗︼紝鑷冲皯鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃2绉�");
+        }
         SystemUser user = systemUserService.findById(dto.getUserId());
         if (user.getDeleted()) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鐢ㄦ埛涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎");
@@ -93,6 +101,7 @@
         SystemUser newUser = new SystemUser();
         newUser.setId(dto.getUserId());
         newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt()));
+        newUser.setNeedChangePwd(Constants.ONE);
         systemUserService.updateById(newUser);
     }
 
@@ -108,6 +117,7 @@
         updateUserDto.setId(dto.getId());
         updateUserDto.setUpdateUser(dto.getOperaUserId());
         updateUserDto.setPassword(Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt()));
+        updateUserDto.setNeedChangePwd(Constants.ZERO);
         systemUserService.updateById(updateUserDto);
     }
 
@@ -138,6 +148,7 @@
         systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
         systemUser.setSalt(salt);
         systemUser.setSource(Constants.ZERO);
+        systemUser.setNeedChangePwd(Constants.ZERO);
 
         // 鍒涘缓鐢ㄦ埛璁板綍
         systemUser.setType(Constants.ZERO);
@@ -263,20 +274,27 @@
                     .filter(s->StringUtils.isNotBlank(s))
                     .distinct()
                     .collect(Collectors.toList());
+            String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
             if (!CollectionUtils.isEmpty(collect)){
                 QueryWrapper<SystemDepartment> wrapper = new QueryWrapper<>();
                 wrapper.lambda().in(SystemDepartment::getName,collect);
                 List<SystemDepartment> systemDepartments = systemDepartmentService.findList(wrapper);
                 Map<Integer, String> collect1 = systemDepartments.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName()));
-
+                // 鐢熸垚瀵嗙爜鐩�
                 dataList.forEach(s->{
+
                     CreateSystemUserDTO systemUser = new CreateSystemUserDTO();
                     systemUser.setDepartmentId(getKey(collect1,s.getDepartmentName()));
                     systemUser.setUsername(s.getUsername());
                     systemUser.setRealname(s.getUsername());
                     systemUser.setEmpNo(s.getEmpNo());
                     systemUser.setMobile(s.getMobile());
-                    systemUser.setPassword(s.getMobile());
+                    String salt = RandomStringUtils.randomAlphabetic(6);
+//                    systemUser.setPassword(s.getMobile());
+                    // 鐢熸垚瀵嗙爜  String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
+                    systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt));
+                    systemUser.setNeedChangePwd(Constants.ZERO);
+                    systemUser.setSalt(salt);
                     systemUser.setCreateUser(loginUserInfo.getId());
                     systemUser.setUpdateUser(loginUserInfo.getId());
                     systemUser.setType(Constants.ZERO);
@@ -297,7 +315,11 @@
                     systemUser.setRealname(s.getUsername());
                     systemUser.setEmpNo(s.getEmpNo());
                     systemUser.setMobile(s.getMobile());
-                    systemUser.setPassword(s.getMobile());
+                    // 鐢熸垚瀵嗙爜             String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
+                    String salt = RandomStringUtils.randomAlphabetic(6);
+                    systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt));
+                    systemUser.setNeedChangePwd(Constants.ZERO);
+//                    systemUser.setPassword(s.getMobile());
                     systemUser.setCreateUser(loginUserInfo.getId());
                     systemUser.setUpdateUser(loginUserInfo.getId());
                     systemUser.setType(Constants.ZERO);
diff --git a/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java b/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
index 907be16..8cc71b7 100644
--- a/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
+++ b/server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -36,6 +36,7 @@
 
     private Integer memberId;
     private Integer type;
+    private Integer needChangePwd;
     private String mobile;
     private String sessionId;
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java
index 1871e2d..89cfa4f 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java
@@ -18,6 +18,7 @@
 import java.net.URLEncoder;
 import java.security.Key;
 import java.util.Base64;
+import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
 public class DESUtil {
@@ -191,12 +192,14 @@
          long currentTimeMillis = System.currentTimeMillis() + 1000*60*60*hour;
          String encrypt = DESUtil.encrypt("12345678",currentTimeMillis + "_" + userName );
         try{
-            encrypt = URLEncoder.encode(encrypt,"UTF-8");
+//            encrypt =  Base64.getEncoder().encodeToString(encrypt.getBytes());
+//            encrypt = URLEncoder.encode(encrypt,"UTF-8");
         }catch (Exception e){
             throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"鐢熸垚鍔犲瘑鐮佸け璐�!");
         }
-        redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS);
-         return encrypt;
+        String token = UUID.randomUUID().toString();
+        redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+token, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS);
+        return token;
     }
 
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java
new file mode 100644
index 0000000..8ecd514
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java
@@ -0,0 +1,78 @@
+package com.doumee.core.utils;
+
+import java.util.regex.Pattern;
+
+/**
+ * Java姝e垯鏍¢獙瀵嗙爜鑷冲皯鍖呭惈锛氬瓧姣嶆暟瀛楃壒娈婄鍙蜂腑鐨�2绉�
+ */
+public class PwdCheckUtil {
+
+    /**
+     * 鍋囧畾璁剧疆瀵嗙爜鏃讹紝瀵嗙爜瑙勫垯涓猴細  瀛楁瘝銆佹暟瀛椼�佺壒娈婄鍙凤紝鑷冲皯鍖归厤2绉�
+     * 鍒欏瘑鐮佸彲鑳藉嚭鐜扮殑鎯呭喌鏈夛細
+     * 1銆佹暟瀛�+鐗规畩绗﹀彿
+     * 2銆佸瓧姣�+鐗规畩绗﹀彿
+     * 3銆佸瓧姣�+鏁板瓧
+     * 4銆佸瓧姣�+鏁板瓧+鐗规畩绗﹀彿
+     * (缁勫悎涓庨『搴忔棤鍏�)
+     * 瑙e喅鎬濊矾锛�
+     * 1銆侀亶鍘嗗瓧绗︿覆鐨勫瓧绗︽暟缁勶紝鏌ョ湅鏄惁鍖呭惈鐩爣鐗规畩瀛楃锛岃嫢鍖呭惈锛屽垯鏍囪瀛楃涓�
+     * 鍖呭惈鐗规畩瀛楃锛屽苟鏇挎崲褰撳墠鐗规畩瀛楃涓�''銆�
+     * 2銆佸垽鏂墿涓嬬殑瀛楃缁勬垚鐨勫瓧绗︿覆锛屾槸鍚﹀尮閰嶄互涓嬫儏鍐�
+     * - 绾瓧姣�
+     * - 绾暟瀛�
+     * - 瀛楁瘝+鏁板瓧
+     * 3銆佸瓧绗︿覆鍖归厤瑙勫垯
+     * 绾瓧姣�+鍖呭惈鐗规畩瀛楃  ---- 鍖归厤閫氳繃
+     * 绾暟瀛�+鍖呭惈鐗规畩瀛楃 ---- 鍖归厤閫氳繃
+     * 瀛楁瘝+鏁板瓧+鍖呭惈涓暟瀛楃 ---- 鍖归厤閫氳繃
+     */
+    //鐗规畩瀛楃
+    public static final String SPEC_CHARACTERS = " !\"#$%&'()*+,-./:;<=>?@\\]\\[^_`{|}~";
+    // 绾瓧姣�
+    public static final String character = "[a-zA-Z]{1,}$";
+    // 绾暟瀛�
+    public static final String numberic = "[0-9]{1,}$";
+    // 瀛楁瘝鍜屾暟瀛�
+    public static final String number_and_character = "((^[a-zA-Z]{1,}[0-9]{1,}[a-zA-Z0-9]*)+)" +
+            "|((^[0-9]{1,}[a-zA-Z]{1,}[a-zA-Z0-9]*)+)$";
+    // 瀛楁瘝鎴栨暟瀛�
+    public static final String number_or_character = "[a-zA-Z0-9]+$";
+    // 瀛楁瘝鏁板瓧涓嬪垝绾�
+    public static final String ncw = "\\w+$";
+
+    public static boolean checkPassword(String targetString) {
+        String opStr = targetString;
+        boolean isLegal = false;
+        boolean hasSpecChar = false;
+        char[] charArray = opStr.toCharArray();
+        for (char c : charArray) {
+            if (SPEC_CHARACTERS.contains(String.valueOf(c))) {
+                hasSpecChar = true;
+                // 鏇挎崲姝ゅ瓧绗︿覆
+                opStr = opStr.replace(c, ' ');
+            }
+        }
+        String excSpecCharStr = opStr.replace(" ", "");
+        boolean isPureNum = Pattern.compile(numberic).matcher(excSpecCharStr).matches();
+        boolean isPureChar = Pattern.compile(character).matcher(excSpecCharStr).matches();
+        boolean isNumAndChar = Pattern.compile(number_and_character).matcher(excSpecCharStr).matches();
+        isLegal = ((isPureNum && hasSpecChar)
+                || (isPureChar && hasSpecChar) || isNumAndChar && hasSpecChar) || isNumAndChar;
+        System.out.println("瀛楃涓诧細" + targetString + ",鏄惁绗﹀悎瑙勫垯锛�" + isLegal);
+        System.out.println("---------------");
+        return isLegal;
+    }
+
+    public static void main(String[] args) {
+        checkPassword("fasdagd");
+        checkPassword("41234123");
+        checkPassword("#$%^&&*(");
+        checkPassword("fasd$$");
+        checkPassword("41234%%%");
+        checkPassword("fasd41^(324");
+        checkPassword("fa413%^&*");
+        checkPassword("&%fa413%^&*");
+    }
+
+}
\ No newline at end of file
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
index 7e7ae5b..abd294b 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
@@ -17,9 +17,12 @@
 @Data
 public class NoticesDTO {
 
-    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭",hidden = true)
+    @ApiModelProperty(value = "member涓婚敭",hidden = true)
     private Integer memberId;
 
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭",hidden = true)
+    private Integer userId;
+
     @ApiModelProperty(value = "鏌ヨ绫诲瀷: 0=寰呭鐞嗭紱1=宸插鐞嗭紱2=鎴戝彂甯冪殑锛�3=鎶勯�佹垜")
     private Integer queryType;
 
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
index 196e1e6..d4874b3 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -84,6 +84,8 @@
 
     @ApiModelProperty(value = "鍒涘缓浜�", example = "1", hidden = true)
     private Integer createUser;
+    @ApiModelProperty(value = "鏄惁闇�瑕佸己鍒舵洿鏂板瘑鐮� 0鏄� 1鍚�")
+    private Integer needChangePwd;
 
     @ApiModelProperty(value = "鏇存柊浜�", example = "1", hidden = true)
     private Integer updateUser;
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
index 15af0a6..72df53c 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
@@ -178,6 +178,7 @@
         queryWrapper.ge(noticesDTO.getStartDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getStartDate() ));
         queryWrapper.le(noticesDTO.getEndDate() != null,  Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getEndDate() ));
         queryWrapper.eq(Objects.nonNull(noticesDTO.getType()),Notices::getType,noticesDTO.getType());
+        queryWrapper.eq(Objects.nonNull(noticesDTO.getMemberId()),Notices::getUserId,noticesDTO.getMemberId());
         queryWrapper.eq(StringUtils.isNotBlank(noticesDTO.getTitle()),Notices::getTitle,noticesDTO.getTitle());
         queryWrapper.orderByDesc(Notices::getCreateDate);
         PageData<Notices> pageData = PageData.from(noticesMapper.selectJoinPage(page,Notices.class, queryWrapper));
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java
index a968b68..05e12cf 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java
@@ -72,7 +72,7 @@
             e.printStackTrace();
             success = Constants.ONE;
         }finally {
-            wmsService.saveInterfaceLog("/wms/push/outboundNotice", "鎺ㄩ�佸嚭搴撳崟閫氱煡浠诲姟",JSONObject.toJSONString(param),success
+            wmsService.saveInterfaceLog("/wms/push/outboundNotice", "銆怶MS銆戞帹閫佸嚭搴撳崟閫氱煡浠诲姟",JSONObject.toJSONString(param),success
                     , JSONObject.toJSONString(result),Constants.ONE);
         }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
index f6d5cf1..dc5ade1 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
@@ -97,7 +97,9 @@
     @ApiOperation(value = "浠诲姟涓績澶撮儴 - PC", notes = "PC")
     @PostMapping("/taskCenterHeadPC")
     public ApiResponse<InternalHomeVO> taskCenterHeadPC(@RequestBody NoticesDTO  noticesDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
-        noticesDTO.setMemberId(getLoginUser(token).getMemberId());
+        LoginUserInfo loginUserInfo = getLoginUser(token);
+        noticesDTO.setMemberId(loginUserInfo.getMemberId());
+        noticesDTO.setUserId(loginUserInfo.getId());
         return ApiResponse.success("鏌ヨ鎴愬姛",approveService.getHomeDataPC(noticesDTO));
     }
 
@@ -107,6 +109,7 @@
     public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<NoticesDTO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
         LoginUserInfo loginUserInfo = getLoginUser(token);
         pageWrap.getModel().setMemberId(loginUserInfo.getMemberId());
+        pageWrap.getModel().setUserId(loginUserInfo.getId());
         return ApiResponse.success(noticesService.taskCanterPage(pageWrap));
     }
 
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java
new file mode 100644
index 0000000..696f6f6
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java
@@ -0,0 +1,109 @@
+package com.doumee.cloud.admin;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.CloudRequiredPermission;
+import com.doumee.core.annotation.excel.ExcelExporter;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.model.PageData;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.model.WxNoticeConfig;
+import com.doumee.service.business.WxNoticeConfigService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/10/17 15:44
+ */
+@Api(tags = "寰俊鍏紬鍙烽�氱煡閰嶇疆")
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/wxNoticeConfig")
+public class WxNoticeConfigController extends BaseController {
+
+    @Autowired
+    private WxNoticeConfigService wxNoticeConfigService;
+
+    @PreventRepeat
+    @ApiOperation("鏂板缓")
+    @PostMapping("/create")
+    @CloudRequiredPermission("business:wxnoticeconfig:create")
+    public ApiResponse create(@RequestBody WxNoticeConfig wxNoticeConfig) {
+        return ApiResponse.success(wxNoticeConfigService.create(wxNoticeConfig));
+    }
+
+    @ApiOperation("鏍规嵁ID鍒犻櫎")
+    @GetMapping("/delete/{id}")
+    @CloudRequiredPermission("business:wxnoticeconfig:delete")
+    public ApiResponse deleteById(@PathVariable Integer id) {
+        wxNoticeConfigService.deleteById(id);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鎵归噺鍒犻櫎")
+    @GetMapping("/delete/batch")
+    @CloudRequiredPermission("business:wxnoticeconfig:delete")
+    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        wxNoticeConfigService.deleteByIdInBatch(idList);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鏍规嵁ID淇敼")
+    @PostMapping("/updateById")
+    @CloudRequiredPermission("business:wxnoticeconfig:update")
+    public ApiResponse updateById(@RequestBody WxNoticeConfig wxNoticeConfig) {
+        wxNoticeConfigService.updateById(wxNoticeConfig);
+        return ApiResponse.success(null);
+    }
+
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    @PostMapping("/page")
+    @CloudRequiredPermission("business:wxnoticeconfig:query")
+    public ApiResponse<PageData<WxNoticeConfig>> findPage (@RequestBody PageWrap<WxNoticeConfig> pageWrap) {
+        return ApiResponse.success(wxNoticeConfigService.findPage(pageWrap));
+    }
+
+    @ApiOperation("瀵煎嚭Excel")
+    @PostMapping("/exportExcel")
+    @CloudRequiredPermission("business:wxnoticeconfig:exportExcel")
+    public void exportExcel (@RequestBody PageWrap<WxNoticeConfig> pageWrap, HttpServletResponse response) {
+        ExcelExporter.build(WxNoticeConfig.class).export(wxNoticeConfigService.findPage(pageWrap).getRecords(), "寰俊鍏紬鍙烽�氱煡閰嶇疆", response);
+    }
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
+    @CloudRequiredPermission("business:wxnoticeconfig:query")
+    public ApiResponse findById(@PathVariable Integer id) {
+        return ApiResponse.success(wxNoticeConfigService.findById(id));
+    }
+
+
+
+    @ApiOperation("鎵归噺绂佸惎鐢�")
+    @GetMapping("/updateStatus/batch")
+    @CloudRequiredPermission("business:wxnoticeconfig:update")
+    public ApiResponse updateStatusBatch(@RequestParam String ids,@RequestParam Integer status) {
+        String [] idArray = ids.split(",");
+        List<Integer> idList = new ArrayList<>();
+        for (String id : idArray) {
+            idList.add(Integer.valueOf(id));
+        }
+        wxNoticeConfigService.updateStatusByIdInBatch(idList,status);
+        return ApiResponse.success(null);
+    }
+
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
index 83fb8c8..7782d65 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
@@ -68,12 +68,10 @@
     @ApiOperation("token瑙f瀽")
     @GetMapping("/water/decodeToken")
     public Map<String,Object> decodeToken(@RequestParam String token) {
-        String token1 =token;
-        log.info("銆愬畨闃插钩鍙板崟鐐圭櫥褰晅oken瑙f瀽銆�================="+token1);
+        log.info("銆愬畨闃插钩鍙板崟鐐圭櫥褰晅oken瑙f瀽銆�================="+token);
         int success = Constants.ZERO;
         Map<String,Object>  result = new HashMap<>() ;
         try {
-             token = URLEncoder.encode(token1);
             HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest();
             hkBaseTokenRequest.setToken(token);
             result = this.decodeTokenForHk(hkBaseTokenRequest);
@@ -85,7 +83,7 @@
             e.printStackTrace();
             success = Constants.ONE;
         }finally {
-            interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "銆愬畨闃插钩鍙般�戝崟鐐圭櫥褰晅oken瑙f瀽",token1,
+            interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "銆愬畨闃插钩鍙般�戝崟鐐圭櫥褰晅oken瑙f瀽",token,
                     success, JSONObject.toJSONString(result),Constants.ZERO);
         }
         return result;
@@ -106,11 +104,7 @@
             result.put("msg","token鏃犳晥!");
             return result;
         }
-        String userName = null;
-        try {
-             userName = DESUtil.verifyHkToken(URLDecoder.decode(hkBaseTokenRequest.getToken(),"UTF-8"));
-        }catch (Exception e){
-        }
+        String userName = DESUtil.verifyHkToken( redisToken);;
         if(StringUtils.isBlank(userName)){
             result.put("code","-1");
             result.put("msg","token鍙傛暟涓虹┖");
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
new file mode 100644
index 0000000..800b992
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
@@ -0,0 +1,145 @@
+package com.doumee.core.wx.wxPlat;
+
+import com.doumee.core.utils.Constants;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/10/17 13:54
+ */
+public class WxPlatConstants {
+
+
+    public static final String visit ="1" ;
+    public static final String visitReport ="2" ;
+    public static final String hiddenDanger ="3" ;
+    public static final String carUse ="4" ;
+    public static final String meeting ="5" ;
+    public static final String platformBook ="6" ;
+    public static final String platformJob ="7" ;
+
+
+    /**
+     * 璁垮鐢宠
+     */
+    public interface visitContent{
+        //  鎻愪氦鎴愬姛缁欑敵璇蜂汉锛氱敵璇锋彁浜ゆ垚鍔熷緟瀹℃牳
+        String visitUpload = "visitUpload";
+        // 瀹℃壒閫氳繃缁欑敵璇蜂汉锛氱敵璇峰凡瀹℃牳閫氳繃
+        String visitAuditSuccess = "visitAuditSuccess";
+        //  瀹℃壒椹冲洖缁欑敵璇蜂汉锛氱敵璇峰凡琚┏鍥�
+        String visitAuditFail = "visitWaitAudit";
+        // 缁欏鎵逛汉锛氱敵璇峰緟鎮ㄥ鎵�
+        String visitWaitAudit = "visitWaitAudit";
+    }
+
+
+    /**
+     * 璁垮鎶ュ
+     */
+    public interface visitReportContent{
+        //  鎻愪氦鎴愬姛缁欑敵璇蜂汉锛氱敵璇锋彁浜ゆ垚鍔熷緟瀹℃牳
+        String visitReportUpload = "visitReportUpload";
+        // 瀹℃壒閫氳繃缁欑敵璇蜂汉锛氱敵璇峰凡瀹℃牳閫氳繃
+        String visitReportAuditSuccess = "visitReportAuditSuccess";
+        //  瀹℃壒椹冲洖缁欑敵璇蜂汉锛氱敵璇峰凡琚┏鍥�
+        String visitReportAuditFail = "visitReportAuditFail";
+        // 缁欏鎵逛汉锛氱敵璇峰緟鎮ㄥ鎵�
+        String visitReportWaitAudit = "visitReportAuditSuccess";
+    }
+
+
+    /**
+     * 闅愭偅闅忔墜鎷�
+     */
+    public interface hiddenDangerContent{
+        //闅愭偅涓婃姤閫氱煡
+        String hiddenDangerUpload = "hiddenDangerUpload";
+        //闅愭偅鏁存敼閫氱煡
+        String hiddenDangerDeal = "hiddenDangerDeal";
+    }
+
+
+    /**
+     * 鐢ㄨ溅鐢宠
+     */
+    public interface carUseBookContent{
+        //鐭俊閫氱煡妯℃澘锛堢粰澶勭悊浜猴級
+        String carUseBookUpload = "carUseBookUpload";
+        //鐢ㄨ溅鐢宠-瀹℃壒閫氳繃閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBookAuditSuccess = "carUseBookAuditSuccess";
+        //鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBookAuditFail = "carUseBookAuditFail";
+        //鐢ㄨ溅鐢宠-瀹℃壒椹冲洖閫氱煡锛堢粰鐢宠浜猴級锛氥��
+        String carUseBookWaitAudit = "carUseBookWaitAudit";
+    }
+
+
+
+
+    /**
+     * 浼氳閫氱煡
+     */
+    public interface meetingContent{
+        //绾夸笅浼氳棰勭害鎴愬姛閫氱煡
+        String reservationSuccess = "reservationSuccess";
+        //浼氳鍙栨秷閫氱煡銆�
+        String meetingCancel = "meetingCancel";
+        //浼氳鍗冲皢寮�濮嬫彁閱掞紙璁㈤槄娑堟伅锛�
+        String meetingBeginA = "meetingBeginA";
+        //浼氳鍗冲皢缁撴潫鎻愰啋锛堣闃呮秷鎭級
+        String meetingEndA = "meetingEndA";
+    }
+
+
+
+    /**
+     * 鐗╂祦杞﹂绾�
+     */
+    public interface platformBookContent{
+        //  鎻愪氦鎴愬姛缁欑敵璇蜂汉锛氱敵璇锋彁浜ゆ垚鍔熷緟瀹℃牳
+        String platformBookUpload = "platformBookUpload";
+        // 瀹℃壒閫氳繃缁欑敵璇蜂汉锛氱敵璇峰凡瀹℃牳閫氳繃
+        String platformBookAuditSuccess = "platformBookAuditSuccess";
+        //  瀹℃壒椹冲洖缁欑敵璇蜂汉锛氱敵璇峰凡琚┏鍥�
+        String platformBookAuditFail = "platformBookWaitAudit";
+        // 缁欏鎵逛汉锛氱敵璇峰緟鎮ㄥ鎵�
+        String platformBookWaitAudit = "platformBookWaitAudit";
+    }
+
+
+
+    /**
+     * 鐗╂祦浣滀笟
+     */
+    public interface platformJobContent{
+        //鐗╂祦杞﹂绾�-鍙彿鍏ュ洯绛夊緟锛堢粰鍙告満锛�
+        String platformJobCallIn = "platformJobCallIn";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍙彿锛堢粰鍙告満锛�
+        String platformJobSingIn = "platformJobSingIn";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍙彿杩囧彿锛堢粰鍙告満锛�
+        String platformJobOverNum = "platformJobOverNum";
+        //鐗╂祦杞﹂绾�-浣滀笟寮�濮嬶紙缁欏徃鏈猴級
+        String platformJobWorking = "platformJobWorking";
+        //鐗╂祦杞﹂绾�-浣滀笟瀹屾垚锛堢粰鍙告満锛�
+        String platformJobFinish = "platformJobFinish";
+        //鐗╂祦杞﹂绾�-绂诲洯鎺堟潈锛堢粰鍙告満锛�
+        String platformJobLevelPower = "platformJobLevelPower";
+        //鐗╂祦杞﹂绾�-鏈堝彴杞Щ锛堢粰鍙告満锛�
+        String platformJobMove = "platformJobMove";
+        //鐗╂祦杞﹂绾�-浣滀笟寮傚父鎸傝捣锛堢粰鍙告満锛�
+        String platformJobError = "platformJobError";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍋滈潬瓒呮椂锛堢粰鍙告満锛�
+        String platformJobTimeOut = "platformJobTimeOut";
+        //鐗╂祦杞﹂绾�-鏈堝彴鍋滈潬閿欒锛堢粰鍙告満锛�
+        String platformJobStopErr = "platformJobStopErr";
+        // 杩愯緭浠诲姟涓嬭揪 锛堢粰鍙告満锛�
+        String platformJobNewJob = "platformJobNewJob";
+    }
+
+
+
+
+
+}
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 57febaf..90a9baf 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
@@ -1,6 +1,11 @@
 package com.doumee.core.wx.wxPlat;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.WxNoticeConfigMapper;
 import com.doumee.dao.business.model.Visits;
+import com.doumee.dao.business.model.WxNoticeConfig;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.mp.api.WxMpService;
@@ -8,6 +13,9 @@
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Objects;
 
 /**
  * 寰俊鍏紬鍙烽�氱煡
@@ -28,8 +36,9 @@
         this.wxMpService = wxMpService;
     }
 
+
     /**
-     * 璁垮璁板綍瀹℃壒涓氬姟閫氱煡
+     * 璁垮涓氬姟閫氱煡鎺ュ彛
      */
     public Boolean  sendVisitAuditTemplateNotice(Visits visits,String prefix,String tempId){
         if(StringUtils.isBlank(visits.getOpenid())){
@@ -40,6 +49,8 @@
                 .templateId(tempId)
                 .url(prefix + visits.getId())
                 .build();
+
+
         String thing1 = "寰呭鎵�";
         if(visits.getStatus()==2){
             thing1 = "瀹℃牳閫氳繃";
@@ -66,4 +77,50 @@
     }
 
 
+
+    /**
+     * 璁垮涓氬姟閫氱煡
+     */
+    public void  sendVisitTemplateNotice(WxNoticeConfigMapper wxNoticeConfigMapper,Visits visits,String objCode, String prefix, String tempId, List<String> openIds){
+        if(CollectionUtils.isNotEmpty(openIds)){
+           WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit)
+                    .eq(WxNoticeConfig::getObjCode,objCode)
+                           .eq(WxNoticeConfig::getStatus, Constants.ZERO)
+                    .last(" limit 1")
+            );
+           if(Objects.isNull(wxNoticeConfig)){
+               return;
+           }
+            WxMpTemplateMessage templateMessage =  WxMpTemplateMessage.builder()
+                    .toUser(visits.getOpenid())
+                    .templateId(tempId)
+                    .url(prefix + visits.getId())
+                    .build();
+
+            templateMessage.addData(new WxMpTemplateData("thing1", visits.getName()))
+                    .addData(new WxMpTemplateData("car_number7", StringUtils.isBlank(visits.getCarNos())?visits.getCarNos():"-"))
+                    .addData(new WxMpTemplateData("character_string6", Constants.equalsInteger(visits.getMemberNum(),Constants.ZERO)?Constants.ONE+"":visits.getMemberNum().toString()))
+                    .addData(new WxMpTemplateData("const9", wxNoticeConfig.getTitile()))
+                    .addData(new WxMpTemplateData("thing4", visits.getReason()))
+                    ;
+            String msgId = null;
+            try {
+                for (String openId:openIds) {
+                    templateMessage.setToUser(openId);
+                }
+                // 鍙戦�佹ā鏉挎秷鎭�
+                msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
+            } catch (WxErrorException e) {
+                e.printStackTrace();
+            }
+            log.warn("路==++--路鎺ㄩ�佸井淇℃ā鏉夸俊鎭細{}路--++==路", msgId != null ? "鎴愬姛" : "澶辫触");
+
+
+        }
+
+    }
+
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java
new file mode 100644
index 0000000..662380c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java
@@ -0,0 +1,12 @@
+package com.doumee.dao.business;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.WxNoticeConfig;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/10/17 15:44
+ */
+public interface WxNoticeConfigMapper extends BaseMapper<WxNoticeConfig> {
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
index dbf31cb..bd78a7a 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
@@ -59,6 +59,10 @@
     @ExcelColumn(name="鐭俊缂栫爜")
     private String code;
 
+    @ApiModelProperty(value = "鏍囬")
+    @ExcelColumn(name="鏍囬")
+    private String name;
+
     @ApiModelProperty(value = "鐭俊鍐呭")
     @ExcelColumn(name="鐭俊鍐呭")
     private String content;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java
new file mode 100644
index 0000000..e345901
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java
@@ -0,0 +1,74 @@
+package com.doumee.dao.business.model;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.Date;
+
+/**
+ * 寰俊鍏紬鍙烽�氱煡閰嶇疆
+ * @author 姹熻箘韫�
+ * @date 2024/10/17 15:44
+ */
+@Data
+@ApiModel("寰俊鍏紬鍙烽�氱煡閰嶇疆")
+@TableName("`wx_notice_config`")
+public class WxNoticeConfig {
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    @ExcelColumn(name="涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�")
+    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
+    private String creator;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @ExcelColumn(name="鍒涘缓鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date createDate;
+
+    @ApiModelProperty(value = "鏇存柊浜虹紪鐮�")
+    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
+    private String edirot;
+
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    @ExcelColumn(name="鏇存柊鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date editDate;
+
+    @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
+    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
+    private Integer isdeleted;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "寮�鍚姸鎬侊細0寮�鍚紱1鍏抽棴", example = "1")
+    @ExcelColumn(name="寮�鍚姸鎬侊細0寮�鍚紱1鍏抽棴")
+    private Integer status;
+
+    @ApiModelProperty(value = "妯℃澘ID")
+    @ExcelColumn(name="妯℃澘ID")
+    private String tempId;
+
+    @ApiModelProperty(value = "鏍囬(鏋氫妇鍊�)")
+    @ExcelColumn(name="鏍囬(鏋氫妇鍊�)")
+    private String titile;
+
+    @ApiModelProperty(value = "涓氬姟缂栫爜")
+    @ExcelColumn(name="涓氬姟缂栫爜")
+    private String objCode;
+
+    @ApiModelProperty(value = "涓氬姟绫诲瀷 1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�", example = "1")
+    @ExcelColumn(name="涓氬姟绫诲瀷 1=璁垮涓氬姟锛�2=璁垮鎶ュ锛�3=闅愭偅闅忔墜鎷嶏紱4=鐢ㄨ溅鐢宠锛�5=浼氳瀹や俊鎭紱6=鐗╂祦杞﹂绾︼紱7=鐗╂祦杞︿綔涓�")
+    private Integer objType;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
index 195779b..880978b 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -115,7 +115,7 @@
     DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo);
 
     /**
-     * 璺濈绛惧埌
+     * 璺濈绛惧埌路
      * @param signInDTO
      */
     void signIn(SignInDTO signInDTO);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java
new file mode 100644
index 0000000..26b7918
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java
@@ -0,0 +1,101 @@
+package com.doumee.service.business;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.dao.business.model.WxNoticeConfig;
+import java.util.List;
+
+/**
+ * 寰俊鍏紬鍙烽�氱煡閰嶇疆Service瀹氫箟
+ * @author 姹熻箘韫�
+ * @date 2024/10/17 15:44
+ */
+public interface WxNoticeConfigService {
+
+    /**
+     * 鍒涘缓
+     * 
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     * @return Integer
+     */
+    Integer create(WxNoticeConfig wxNoticeConfig);
+
+    /**
+     * 涓婚敭鍒犻櫎
+     *
+     * @param id 涓婚敭
+     */
+    void deleteById(Integer id);
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     */
+    void delete(WxNoticeConfig wxNoticeConfig);
+
+    /**
+     * 鎵归噺涓婚敭鍒犻櫎
+     *
+     * @param ids 涓婚敭闆�
+     */
+    void deleteByIdInBatch(List<Integer> ids);
+
+    /**
+     * 涓婚敭鏇存柊
+     *
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     */
+    void updateById(WxNoticeConfig wxNoticeConfig);
+
+    /**
+     * 鎵归噺涓婚敭鏇存柊
+     *
+     * @param wxNoticeConfigs 瀹炰綋闆�
+     */
+    void updateByIdInBatch(List<WxNoticeConfig> wxNoticeConfigs);
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id 涓婚敭
+     * @return WxNoticeConfig
+     */
+    WxNoticeConfig findById(Integer id);
+
+    /**
+     * 鏉′欢鏌ヨ鍗曟潯璁板綍
+     *
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     * @return WxNoticeConfig
+     */
+    WxNoticeConfig findOne(WxNoticeConfig wxNoticeConfig);
+
+    /**
+     * 鏉′欢鏌ヨ
+     *
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     * @return List<WxNoticeConfig>
+     */
+    List<WxNoticeConfig> findList(WxNoticeConfig wxNoticeConfig);
+  
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param pageWrap 鍒嗛〉瀵硅薄
+     * @return PageData<WxNoticeConfig>
+     */
+    PageData<WxNoticeConfig> findPage(PageWrap<WxNoticeConfig> pageWrap);
+
+    /**
+     * 鏉′欢缁熻
+     *
+     * @param wxNoticeConfig 瀹炰綋瀵硅薄
+     * @return long
+     */
+    long count(WxNoticeConfig wxNoticeConfig);
+
+
+    void updateStatusByIdInBatch(List<Integer> ids,Integer status);
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java
index 4b518a6..6b5c2b8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java
@@ -109,7 +109,9 @@
         QueryWrapper<Position> queryWrapper = new QueryWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         pageWrap.getModel().setIsdeleted(Constants.ZERO);
-        queryWrapper.lambda()
+        queryWrapper
+                .select("*,(select count(1) from member where member.position_id = position.id and member.type=2 and isdeleted=0) as memberNum" )
+                .lambda()
                 .eq(pageWrap.getModel().getId() != null, Position::getId, pageWrap.getModel().getId())
                 .eq(pageWrap.getModel().getCreator() != null, Position::getCreator, pageWrap.getModel().getCreator())
                 .ge(pageWrap.getModel().getCreateDate() != null, Position::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java
new file mode 100644
index 0000000..9ff4e73
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java
@@ -0,0 +1,160 @@
+package com.doumee.service.business.impl;
+
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.WxNoticeConfigMapper;
+import com.doumee.dao.business.model.SmsConfig;
+import com.doumee.dao.business.model.WxNoticeConfig;
+import com.doumee.service.business.WxNoticeConfigService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 寰俊鍏紬鍙烽�氱煡閰嶇疆Service瀹炵幇
+ * @author 姹熻箘韫�
+ * @date 2024/10/17 15:44
+ */
+@Service
+public class WxNoticeConfigServiceImpl implements WxNoticeConfigService {
+
+    @Autowired
+    private WxNoticeConfigMapper wxNoticeConfigMapper;
+
+    @Override
+    public Integer create(WxNoticeConfig wxNoticeConfig) {
+        wxNoticeConfigMapper.insert(wxNoticeConfig);
+        return wxNoticeConfig.getId();
+    }
+
+    @Override
+    public void deleteById(Integer id) {
+        wxNoticeConfigMapper.deleteById(id);
+    }
+
+    @Override
+    public void delete(WxNoticeConfig wxNoticeConfig) {
+        UpdateWrapper<WxNoticeConfig> deleteWrapper = new UpdateWrapper<>(wxNoticeConfig);
+        wxNoticeConfigMapper.delete(deleteWrapper);
+    }
+
+    @Override
+    public void deleteByIdInBatch(List<Integer> ids) {
+        if (CollectionUtils.isEmpty(ids)) {
+            return;
+        }
+        wxNoticeConfigMapper.deleteBatchIds(ids);
+    }
+
+    @Override
+    public void updateById(WxNoticeConfig wxNoticeConfig) {
+        wxNoticeConfigMapper.updateById(wxNoticeConfig);
+    }
+
+    @Override
+    public void updateByIdInBatch(List<WxNoticeConfig> wxNoticeConfigs) {
+        if (CollectionUtils.isEmpty(wxNoticeConfigs)) {
+            return;
+        }
+        for (WxNoticeConfig wxNoticeConfig: wxNoticeConfigs) {
+            this.updateById(wxNoticeConfig);
+        }
+    }
+
+    @Override
+    public WxNoticeConfig findById(Integer id) {
+        return wxNoticeConfigMapper.selectById(id);
+    }
+
+    @Override
+    public WxNoticeConfig findOne(WxNoticeConfig wxNoticeConfig) {
+        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
+        return wxNoticeConfigMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public List<WxNoticeConfig> findList(WxNoticeConfig wxNoticeConfig) {
+        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
+        return wxNoticeConfigMapper.selectList(wrapper);
+    }
+  
+    @Override
+    public PageData<WxNoticeConfig> findPage(PageWrap<WxNoticeConfig> pageWrap) {
+        IPage<WxNoticeConfig> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
+        QueryWrapper<WxNoticeConfig> queryWrapper = new QueryWrapper<>();
+        Utils.MP.blankToNull(pageWrap.getModel());
+        if (pageWrap.getModel().getId() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getCreator() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getCreator, pageWrap.getModel().getCreator());
+        }
+        if (pageWrap.getModel().getCreateDate() != null) {
+            queryWrapper.lambda().ge(WxNoticeConfig::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+            queryWrapper.lambda().le(WxNoticeConfig::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+        }
+        if (pageWrap.getModel().getEdirot() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getEdirot, pageWrap.getModel().getEdirot());
+        }
+        if (pageWrap.getModel().getEditDate() != null) {
+            queryWrapper.lambda().ge(WxNoticeConfig::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+            queryWrapper.lambda().le(WxNoticeConfig::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+        }
+        if (pageWrap.getModel().getIsdeleted() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getIsdeleted, pageWrap.getModel().getIsdeleted());
+        }
+        if (pageWrap.getModel().getRemark() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getRemark, pageWrap.getModel().getRemark());
+        }
+        if (pageWrap.getModel().getStatus() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getStatus, pageWrap.getModel().getStatus());
+        }
+        if (pageWrap.getModel().getTempId() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getTempId, pageWrap.getModel().getTempId());
+        }
+        if (pageWrap.getModel().getTitile() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getTitile, pageWrap.getModel().getTitile());
+        }
+        if (pageWrap.getModel().getObjCode() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getObjCode, pageWrap.getModel().getObjCode());
+        }
+        if (pageWrap.getModel().getObjType() != null) {
+            queryWrapper.lambda().eq(WxNoticeConfig::getObjType, pageWrap.getModel().getObjType());
+        }
+        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                queryWrapper.orderByDesc(sortData.getProperty());
+            } else {
+                queryWrapper.orderByAsc(sortData.getProperty());
+            }
+        }
+        return PageData.from(wxNoticeConfigMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public long count(WxNoticeConfig wxNoticeConfig) {
+        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
+        return wxNoticeConfigMapper.selectCount(wrapper);
+    }
+
+
+    @Override
+    public void updateStatusByIdInBatch(List<Integer> ids,Integer status) {
+        if (CollectionUtils.isEmpty(ids) || Objects.isNull(status)) {
+            return;
+        }
+        wxNoticeConfigMapper.update(new UpdateWrapper<WxNoticeConfig>()
+                .set("status",status)
+                .in("id",ids)
+        );
+    }
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
index 7143ee1..cc37400 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -22,6 +22,7 @@
 import com.doumee.dao.business.join.VisitsJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
+import com.doumee.service.business.PlatformJobService;
 import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -841,7 +842,7 @@
                                     Constants.PlatformJobStatus.EXCEPTION.getKey(),
                                     Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                             )
-                    )<Constants.ZERO){
+                    )==Constants.ZERO){
                         PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                                 .eq(PlatformJob::getCarCodeFront,event.getPlateNos())
                                 .eq(PlatformJob::getIsdeleted,Constants.ZERO)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
index 7d5e472..27e8c56 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -342,7 +342,9 @@
                 job.setArriveDate(new Date());
                 job.setSingType(Constants.TWO);
                 job.setSignDate(new Date());
-                List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
+                List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().
+                        lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  ")
+                );
                 if(CollectionUtils.isEmpty(signList)){
                     job.setSignNum(Constants.ONE);
                 } else{

--
Gitblit v1.9.3