From 6525935588f4b9a06e08f91dfc9d2895e5ec2c38 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期一, 20 十月 2025 11:00:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                   |    7 
 server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml                                           |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java                   |    8 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkVersionService.java              |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java             |    3 
 server/visits/admin_timer/src/main/resources/bootstrap.yml                                                 |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java  |   44 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java        |   11 
 server/visits/dmvisit_admin/src/main/resources/bootstrap.yml                                               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java           |    9 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/TelecomApiController.java               |   59 ++
 server/visits/admin_timer/src/main/resources/bootstrap-test.yml                                            |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceVO.java                  |   23 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java |  257 +++++++-----
 server/system_gateway/src/main/resources/bootstrap-dev.yml                                                 |    2 
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java             |   22 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java                  |   55 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceInfoVO.java              |   24 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java               |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java                   |    3 
 server/system_timer/src/main/resources/bootstrap-test.yml                                                  |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java     |  147 ++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java        |   10 
 server/visits/dmvisit_service/src/main/resources/application-test.yml                                      |    6 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java          |   15 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/TelecomJkCabinetLogVO.java          |   67 +++
 server/system_timer/src/main/resources/bootstrap.yml                                                       |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java                |   14 
 server/system_service/src/main/java/com/doumee/dao/system/dto/LoginCabinetDTO.java                         |   26 +
 server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml                                          |    2 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java      |   16 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java              |    3 
 server/system_timer/src/main/resources/application-test.yml                                                |    6 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java              |  203 ++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/TelecomCabinetLogDTO.java          |   30 +
 server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java                      |    4 
 server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java                          |   20 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkVersionServiceImpl.java     |   21 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java              |   20 
 server/meeting/meeting_admin/src/main/resources/bootstrap-test.yml                                         |    4 
 40 files changed, 1,000 insertions(+), 157 deletions(-)

diff --git a/server/meeting/meeting_admin/src/main/resources/bootstrap-test.yml b/server/meeting/meeting_admin/src/main/resources/bootstrap-test.yml
index 6271653..cc75624 100644
--- a/server/meeting/meeting_admin/src/main/resources/bootstrap-test.yml
+++ b/server/meeting/meeting_admin/src/main/resources/bootstrap-test.yml
@@ -15,7 +15,7 @@
       password: nacos
       config:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit_test
+        namespace: wuhu_visit_test
         username: nacos
         password: nacos
 #        file-extension: yaml
@@ -23,7 +23,7 @@
 #        data-id: com.doumee.meeting.admin
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit_test
+        namespace: wuhu_visit_test
         username: nacos
         password: nacos
       # 瀹夊叏閰嶇疆
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 4751b64..c6ddd04 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
@@ -6,6 +6,7 @@
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.system.dto.LoginCabinetDTO;
 import com.doumee.dao.system.dto.LoginH5DTO;
 import com.doumee.service.business.third.model.ApiResponse;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -285,4 +286,23 @@
         return ApiResponse.failed( "鐧诲綍宸插け鏁�");
     }
 
+    @PreventRepeat(limit = 10, lockTime = 10000)
+    @ApiOperation("鐧诲綍 - 閽ュ寵鏌�")
+    @PostMapping("/loginCabinet")
+    @LoginNoRequired
+    public ApiResponse<String> loginCabinet (@Validated @RequestBody LoginCabinetDTO dto, ServerWebExchange serverWebExchange) {
+        try {
+            ServerHttpRequest request = serverWebExchange.getRequest();
+            LoginUserInfo user = systemLoginService.loginByPasswordForCabinet(dto,request);
+            String token = jwtTokenUtil.generateToken(user);
+            return ApiResponse.success(token);
+        }catch (BusinessException e){
+            return ApiResponse.failed(e.getCode(),e.getMessage());
+        }catch (Exception e){
+            e.printStackTrace();
+            return ApiResponse.failed(ResponseStatus.SERVER_ERROR);
+        }
+    }
+
+
 }
\ No newline at end of file
diff --git a/server/system_gateway/src/main/resources/bootstrap-dev.yml b/server/system_gateway/src/main/resources/bootstrap-dev.yml
index b5dfadd..053c927 100644
--- a/server/system_gateway/src/main/resources/bootstrap-dev.yml
+++ b/server/system_gateway/src/main/resources/bootstrap-dev.yml
@@ -7,7 +7,7 @@
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
 #        namespace: dmvisit
-        namespace: wuhu_visit_dev
+        namespace: wuhu_visit_dev1
         username: nacos
         password: nacos
     gateway:
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 32e6c6a..ffa8898 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
@@ -1,6 +1,7 @@
 package com.doumee.core.utils;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -1481,8 +1482,12 @@
         public String getNoteinfo() {
             return noteinfo;
         }
+    }
 
 
-
+    public static String strToJson(String key,String val){
+        Map<String,Object> map = new HashMap<>();
+        map.put(key,val);
+        return JSONObject.toJSONString(map);
     }
 }
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginCabinetDTO.java b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginCabinetDTO.java
new file mode 100644
index 0000000..c2fb338
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/dao/system/dto/LoginCabinetDTO.java
@@ -0,0 +1,26 @@
+package com.doumee.dao.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+
+/**
+ * @author Eva.Caesar Liu
+ * @date 2023/05/04 18:21
+ */
+@Data
+@ApiModel("閽ュ寵鏌滅櫥褰曞弬鏁�")
+public class LoginCabinetDTO implements Serializable {
+
+    @NotBlank(message = "鐢ㄦ埛鍚嶄笉鑳戒负绌�")
+    @ApiModelProperty(value = "鐢ㄦ埛鍚�")
+    private String username;
+
+    @NotBlank(message = "瀵嗙爜涓嶈兘涓虹┖")
+    @ApiModelProperty(value = "瀵嗙爜")
+    private String password;
+
+}
diff --git a/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java b/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
index 58bc41f..aeeef17 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.system;
 
+import com.doumee.dao.system.dto.LoginCabinetDTO;
 import com.doumee.dao.system.dto.LoginH5DTO;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.dao.system.dto.LoginDTO;
@@ -23,6 +24,9 @@
     String loginByPassword (LoginDTO dto, HttpServletRequest request);
 
     LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
+
+    LoginUserInfo loginByPasswordForCabinet(LoginCabinetDTO dto, ServerHttpRequest request);
+
     LoginUserInfo loginH5 (LoginH5DTO dto, ServerHttpRequest request);
 
     LoginUserInfo loginByPasswordForPda(LoginDTO dto, ServerHttpRequest request);
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index 5334a12..722ef3e 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -5,6 +5,7 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.dao.system.dto.LoginCabinetDTO;
 import com.doumee.dao.system.dto.LoginH5DTO;
 import com.doumee.service.business.third.TmsService;
 import com.doumee.service.business.third.model.LoginUserInfo;
@@ -170,6 +171,27 @@
             throw e;
         }
     }
+
+    @Override
+    public LoginUserInfo loginByPasswordForCabinet(LoginCabinetDTO dto, ServerHttpRequest request) {
+        SystemLoginLog loginLog = getInitLoginlog(dto.getUsername(),request);
+        try {
+            LoginUserInfo user = dealLoginByPwdNewBiz(dto.getUsername(),dto.getPassword(),null,null,null,request);
+            systemLoginLogService.create(loginLog);
+            return  user;
+        }catch (BusinessException e){
+            loginLog.setSuccess(Boolean.FALSE);
+            systemLoginLogService.create(loginLog);
+            throw e;
+
+        }catch (Exception e){
+            loginLog.setSuccess(Boolean.FALSE);
+            systemLoginLogService.create(loginLog);
+            throw e;
+        }
+    }
+
+
     @Override
     public LoginUserInfo loginH5 (LoginH5DTO dto, ServerHttpRequest request) {
         SystemLoginLog loginLog = getInitLoginlog(dto.getUsername(),request);
diff --git a/server/system_timer/src/main/resources/application-test.yml b/server/system_timer/src/main/resources/application-test.yml
index 1659dd8..63519a1 100644
--- a/server/system_timer/src/main/resources/application-test.yml
+++ b/server/system_timer/src/main/resources/application-test.yml
@@ -1,9 +1,9 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/antaiwuliu?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-    username: doumee
-    password: rtjgfEr@&0c0m
+    url: jdbc:mysql://192.168.0.211:3306/wuhuyancao?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+    username: root
+    password: Doumee@168
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:
diff --git a/server/system_timer/src/main/resources/bootstrap-test.yml b/server/system_timer/src/main/resources/bootstrap-test.yml
index 1f3f44c..2f69748 100644
--- a/server/system_timer/src/main/resources/bootstrap-test.yml
+++ b/server/system_timer/src/main/resources/bootstrap-test.yml
@@ -23,6 +23,6 @@
       #        data-id: com.doumee.meeting.admin
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit_test
+        namespace: wuhu_visit_test
         username: nacos
         password: nacos
\ No newline at end of file
diff --git a/server/system_timer/src/main/resources/bootstrap.yml b/server/system_timer/src/main/resources/bootstrap.yml
index 107b53b..5eb6d62 100644
--- a/server/system_timer/src/main/resources/bootstrap.yml
+++ b/server/system_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: test
   application:
     name: systemTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/admin_timer/src/main/resources/bootstrap-test.yml b/server/visits/admin_timer/src/main/resources/bootstrap-test.yml
index 65f3ae7..3d1de90 100644
--- a/server/visits/admin_timer/src/main/resources/bootstrap-test.yml
+++ b/server/visits/admin_timer/src/main/resources/bootstrap-test.yml
@@ -23,7 +23,7 @@
 #        data-id: com.doumee.meeting.admin
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit_test
+        namespace: wuhu_visit_test
         username: nacos
         password: nacos
 
diff --git a/server/visits/admin_timer/src/main/resources/bootstrap.yml b/server/visits/admin_timer/src/main/resources/bootstrap.yml
index efae338..fb74d1e 100644
--- a/server/visits/admin_timer/src/main/resources/bootstrap.yml
+++ b/server/visits/admin_timer/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: test
   application:
     name: visitsTimer
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/TelecomApiController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/TelecomApiController.java
new file mode 100644
index 0000000..979fc0c
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/TelecomApiController.java
@@ -0,0 +1,59 @@
+package com.doumee.cloud.openapi;
+
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DESUtil;
+import com.doumee.dao.business.JkLineMapper;
+import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
+import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
+import com.doumee.dao.openapi.request.*;
+import com.doumee.dao.openapi.response.*;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.*;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.service.system.SystemUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Api(tags = "鎻愪緵鐢典俊瀵规帴鎺ュ彛锛堟暟鎹ぇ灞忓熀纭�鏁版嵁绛夛級")
+@RestController
+@Slf4j
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/telecom/api")
+public class TelecomApiController extends BaseController {
+
+    @Autowired
+    private JkCabinetLogService jkCabinetLogService;
+
+    @Autowired
+    private JkLineService jkLineService;
+
+
+    @LoginNoRequired
+    @PreventRepeat
+    @ApiOperation("鐢典俊-閽ュ寵鍑哄叆鏃ュ織鏌ヨ")
+    @PostMapping("/getLogListForTelecom")
+    public ApiResponse<List<TelecomJkCabinetLogVO>> getLogListForTelecom (@RequestBody TelecomCabinetLogDTO dto) {
+        return ApiResponse.success(jkCabinetLogService.getLogListForTelecom(dto));
+    }
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
new file mode 100644
index 0000000..bd343db
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/cabinet/CabinetController.java
@@ -0,0 +1,203 @@
+package com.doumee.cloud.web.cabinet;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.haikang.model.HKConstants;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.JkVersionMapper;
+import com.doumee.dao.business.dto.CloseGridDTO;
+import com.doumee.dao.business.dto.GetDriverGridDTO;
+import com.doumee.dao.business.dto.OpenGridDriverDTO;
+import com.doumee.dao.business.dto.OptGridDTO;
+import com.doumee.dao.business.model.InterfaceLog;
+import com.doumee.dao.business.model.JkCabinetGrid;
+import com.doumee.dao.business.model.JkVersion;
+import com.doumee.dao.business.vo.AdminCabinetVO;
+import com.doumee.dao.business.vo.CabinetDetailVO;
+import com.doumee.dao.business.vo.CabinetFaceVO;
+import com.doumee.dao.business.vo.CabinetInfoVO;
+import com.doumee.dao.web.response.DriverHomeVO;
+import com.doumee.service.business.*;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/15 9:10
+ */
+@Api(tags = "銆愰挜鍖欐煖銆戦挜鍖欐煖涓氬姟")
+@Trace(exclude = true)
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/cabinet")
+@Slf4j
+public class CabinetController extends BaseController {
+
+    @Autowired
+    private JkCabinetService jkCabinetService;
+
+    @Autowired
+    private JkCabinetGridService jkCabinetGridService;
+
+    @Autowired
+    private InterfaceLogService interfaceLogService;
+
+    @Autowired
+    private JkIccardService jkIccardService;
+
+    @Autowired
+    private JkVersionService jkVersionService;
+
+    @LoginNoRequired
+    @ApiOperation("鑾峰彇閽ュ寵鏌淎PK鏈�鏂扮増鏈�")
+    @GetMapping("/getLastVersion")
+    public ApiResponse<JkVersion> getLastVersion () {
+        JkVersion jkVersion = jkVersionService.getLastVersion();
+        this.saveInterfaceLog(null, JSONObject.toJSONString(jkVersion),"getLastVersion","鑾峰彇閽ュ寵鏌淎PK鏈�鏂扮増鏈�");
+        return ApiResponse.success(jkVersion);
+    }
+
+    @LoginNoRequired
+    @ApiOperation("鑾峰彇閽ュ寵鏌滃熀鏈俊鎭� - 鍙告満")
+    @GetMapping("/getCabinetInfoForDriver")
+    public ApiResponse<CabinetInfoVO> getCabinetInfoForDriver (@RequestParam String code) {
+        CabinetInfoVO cabinetInfoVO = jkCabinetService.getCabinetInfoForDriver(code);
+        this.saveInterfaceLog(Constants.strToJson("code",code), JSONObject.toJSONString(cabinetInfoVO),"getCabinetInfoForDriver","鑾峰彇閽ュ寵鏌滃熀鏈俊鎭� - 鍙告満");
+        return ApiResponse.success(cabinetInfoVO);
+    }
+
+    @LoginNoRequired
+    @ApiOperation("鏇存柊閽ュ寵鏌滃湪绾跨姸鎬�")
+    @GetMapping("/updateRunStatusById")
+    public ApiResponse updateRunStatusById (@RequestParam Integer id) {
+        jkCabinetService.updateRunStatusById(id);
+        this.saveInterfaceLog(Constants.strToJson("id",id.toString()), null,"updateRunStatusById","鏇存柊閽ュ寵鏌滃湪绾跨姸鎬�");
+        return ApiResponse.success("鏇存柊鎴愬姛");
+    }
+
+
+
+    @ApiOperation("鑾峰彇鍙鐞嗙殑閽ュ寵鏌滃垪琛� - 绠$悊鍛�")
+    @GetMapping("/getAdminCabinetInfo")
+    public ApiResponse<List<AdminCabinetVO>> getAdminCabinetInfo (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        List<AdminCabinetVO> list = jkCabinetService.getAdminCabinetInfo(getLoginUser(token));
+        this.saveInterfaceLog(null, JSONArray.toJSONString(list),"getAdminCabinetInfo","鑾峰彇鍙鐞嗙殑閽ュ寵鏌滃垪琛� - 绠$悊鍛�");
+        return ApiResponse.success(list);
+    }
+
+
+    @ApiOperation("鑾峰彇閽ュ寵鏌滆鎯� - 绠$悊鍛�")
+    @GetMapping("/getCabinetDetail")
+    public ApiResponse<CabinetDetailVO> getCabinetDetail (@RequestParam Integer cabinetId, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        CabinetDetailVO cabinetDetailVO = jkCabinetService.getCabinetDetail(cabinetId,getLoginUser(token));
+        this.saveInterfaceLog(Constants.strToJson("cabinetId",cabinetId.toString()), JSONObject.toJSONString(cabinetDetailVO),"getCabinetDetail","鑾峰彇閽ュ寵鏌滆鎯� - 绠$悊鍛�");
+        return ApiResponse.success(cabinetDetailVO);
+    }
+
+    @ApiOperation("鏍囪鏌滄牸鏁呴殰 - 绠$悊鍛�")
+    @PostMapping("/markFault")
+    public ApiResponse markFault(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        dto.setLoginUserInfo(getLoginUser(token));
+        jkCabinetGridService.markFault(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"markFault","鏍囪鏌滄牸鏁呴殰 - 绠$悊鍛�");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("鏍囪鏌滄牸姝e父 - 绠$悊鍛�")
+    @PostMapping("/cancelFault")
+    public ApiResponse cancelFault(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        dto.setLoginUserInfo(getLoginUser(token));
+        jkCabinetGridService.cancelFault(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"cancelFault","鏍囪鏌滄牸姝e父 - 绠$悊鍛�");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("鏍囪缁翠慨淇濆吇 - 绠$悊鍛�")
+    @PostMapping("/markRepair")
+    public ApiResponse markRepair(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        dto.setLoginUserInfo(getLoginUser(token));
+        jkCabinetGridService.markRepair(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"markRepair","鏍囪缁翠慨淇濆吇 - 绠$悊鍛�");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("鍏抽棴鏌滈棬")
+    @PostMapping("/closeGrid")
+    public ApiResponse closeGrid(@RequestBody CloseGridDTO dto) {
+        jkCabinetGridService.closeGrid(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"closeGrid","鍏抽棴鏌滈棬");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("鎵归噺寮�闂� - 绠$悊鍛�")
+    @PostMapping("/batchOpenGridAdmin")
+    public ApiResponse batchOpenGridAdmin(@RequestBody OptGridDTO dto, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        dto.setLoginUserInfo(getLoginUser(token));
+        jkCabinetGridService.batchOpenGridAdmin(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"batchOpenGridAdmin","鎵归噺寮�闂� - 绠$悊鍛�");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+    @ApiOperation("鑾峰彇閽ュ寵鏌滀汉鑴告暟鎹�")
+    @GetMapping("/getCabinetFaceVO")
+    public ApiResponse<CabinetFaceVO> getCabinetFaceVO(@RequestParam String code) {
+        CabinetFaceVO cabinetFaceVO = jkCabinetService.getCabinetFaceVO(code);
+        this.saveInterfaceLog(Constants.strToJson("code",code), JSONObject.toJSONString(cabinetFaceVO),"getCabinetFaceVO","鑾峰彇閽ュ寵鏌滀汉鑴告暟鎹�");
+        return ApiResponse.success(cabinetFaceVO);
+    }
+
+
+
+    @ApiOperation("鑾峰彇鍙搷浣滄煖鏍� - 鍙告満")
+    @PostMapping("/getDriverGrid")
+    public ApiResponse<List<JkCabinetGrid>> getDriverGrid(@RequestBody GetDriverGridDTO dto) {
+        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridService.getDriverGrid(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), JSONObject.toJSONString(jkCabinetGridList),"getDriverGrid","鑾峰彇鍙搷浣滄煖鏍� - 鍙告満");
+        return ApiResponse.success(jkCabinetGridList);
+    }
+
+    @ApiOperation("寮�鍚煖鏍� - 鍙告満")
+    @PostMapping("/openGridDriver")
+    public ApiResponse openGridDriver(@RequestBody OpenGridDriverDTO dto) {
+        jkCabinetGridService.openGridDriver(dto);
+        this.saveInterfaceLog(JSONObject.toJSONString(dto), null,"openGridDriver","寮�鍚煖鏍� - 鍙告満");
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("鑾峰彇IC鍗$敤鎴蜂富閿� - 鍙告満")
+    @PostMapping("/getMemberIdByCode")
+    public ApiResponse<Integer> getMemberIdByCode(@RequestParam String code) {
+        this.saveInterfaceLog(Constants.strToJson("code",code), null,"getMemberIdByCode","鑾峰彇IC鍗$敤鎴蜂富閿� - 鍙告満");
+        return ApiResponse.success(jkIccardService.getMemberIdByCode(code));
+    }
+
+    private void saveInterfaceLog(String s, String result,String url,String name) {
+        InterfaceLog hkMonitoryLogDO=new InterfaceLog();
+        hkMonitoryLogDO.setType(0);
+        hkMonitoryLogDO.setCreateDate(new Date());
+        hkMonitoryLogDO.setIsdeleted(0);
+        hkMonitoryLogDO.setRequest(s);
+        hkMonitoryLogDO.setRepose(result);
+        hkMonitoryLogDO.setName("銆愰挜鍖欐煖銆�"+name);
+        hkMonitoryLogDO.setUrl(url);
+        interfaceLogService.create(hkMonitoryLogDO);
+    }
+
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml
index 1f1080d..9730a74 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap-dev.yml
@@ -16,7 +16,7 @@
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
 #        namespace: dmvisit
-        namespace: wuhu_visit_dev
+        namespace: wuhu_visit_dev1
         username: nacos
         password: nacos
 knife4j:
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml
index 8f33e90..733291a 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap-test.yml
@@ -23,7 +23,7 @@
 #        data-id: com.doumee.meeting.admin
       discovery:
         server-addr: http://192.168.0.212:8848 #閰嶇疆Nacos鍦板潃
-        namespace: dmvisit_test
+        namespace: wuhu_visit_test
         username: nacos
         password: nacos
 
diff --git a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
index 9dc10e9..86e11a3 100644
--- a/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
+++ b/server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
 spring:
   profiles:
-    active: dev
+    active: test
   application:
     name: visitsAdmin
     # 瀹夊叏閰嶇疆
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
index 6b63c22..e31dd19 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java
@@ -21,4 +21,7 @@
 
     @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
     private Integer memberId;
+
+    @ApiModelProperty(value = "楠岃瘉浜轰富閿�")
+    private Integer autoMemberId;
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
index 2f76d84..362dbdb 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java
@@ -22,4 +22,7 @@
     @ApiModelProperty(value = "鏌滄牸涓婚敭")
     private Integer gridId;
 
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+    private Integer memberId;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/TelecomCabinetLogDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/TelecomCabinetLogDTO.java
new file mode 100644
index 0000000..c3c832e
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/TelecomCabinetLogDTO.java
@@ -0,0 +1,30 @@
+package com.doumee.dao.business.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.doumee.service.business.third.model.LoginUserModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/11 16:01
+ */
+@Data
+public class TelecomCabinetLogDTO{
+
+
+    @ApiModelProperty(value = "鏌ヨ寮�濮嬫椂闂� yyyy-MM-dd ")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date startDate;
+
+    @ApiModelProperty(value = "鏌ヨ缁撴潫鏃堕棿 yyyy-MM-dd ")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
index e9e3f6c..2c437fd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinet.java
@@ -35,7 +35,6 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -44,7 +43,6 @@
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
@@ -119,7 +117,6 @@
 
     @ApiModelProperty(value = "鏈�鍚庨�氳鏃堕棿")
     @ExcelColumn(name="鏈�鍚庨�氳鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date haertTime;
 
     @ApiModelProperty(value = "鎵�鍦ㄤ綅缃�")
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
index 91d1265..a645055 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java
@@ -80,6 +80,20 @@
     @ApiModelProperty(value = "鎿嶄綔绫诲瀷锛�0=寮�闂�;1=鍏抽棬;", example = "1")
     private Integer type;
 
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "鍏抽棬璁板綍涓婚敭锛堝�熷嚭璁板綍浣跨敤锛�", example = "1")
+    private Integer closeLogId;
+
+    @ApiModelProperty(value = "鎿嶄綔鍚庨挜鍖欑姸鎬侊細0鏈彉鍖�;1宸插綊杩�;2宸插�熷嚭;", example = "1")
+    private Integer keyStatus;
+
+
+    @ApiModelProperty(value = "褰掕繕鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date returnDate;
+
     @ApiModelProperty(value = "鎿嶄綔浜洪儴闂�", example = "1",hidden = true)
     @TableField(exist = false)
     private String companyName;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java
index a8db838..2c33dd2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkVersion.java
@@ -55,8 +55,8 @@
     @ExcelColumn(name="澶囨敞")
     private String info;
 
-    @ApiModelProperty(value = "鐗堟湰鍙�")
-    @ExcelColumn(name="鐗堟湰鍙�")
+    @ApiModelProperty(value = "鐗堟湰鍙峰悕绉�")
+    @ExcelColumn(name="鐗堟湰鍙峰悕绉�")
     private String versionInfo;
 
     @ApiModelProperty(value = "瀹夎鍖呰矾寰�")
@@ -91,6 +91,10 @@
     @ExcelColumn(name="鏂囦欢澶у皬 鍗曚綅锛圞B锛�")
     private Integer fileSize;
 
+    @ApiModelProperty(value = "鐗堟湰鍙�", example = "1")
+    @ExcelColumn(name="鐗堟湰鍙�")
+    private Integer versionNum;
+
     @ApiModelProperty(value = "鏂囦欢澶у皬 鍗曚綅锛圡B锛�", example = "1")
     @TableField(exist = false)
     private double fileSizeMb;
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceInfoVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceInfoVO.java
new file mode 100644
index 0000000..a8007e0
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceInfoVO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class CabinetFaceInfoVO {
+
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭")
+    private Integer memberId;
+
+    @ApiModelProperty(value = "鐢ㄦ埛鍚嶇О")
+    private String memberName;
+
+    @ApiModelProperty(value = "浜鸿劯鐓х墖")
+    private String faceImg;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceVO.java
new file mode 100644
index 0000000..565b64a
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetFaceVO.java
@@ -0,0 +1,23 @@
+package com.doumee.dao.business.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/5/23 14:56
+ */
+@Data
+public class CabinetFaceVO {
+
+    @ApiModelProperty(value = "鍙告満浜鸿劯鍒楄〃")
+    private List<CabinetFaceInfoVO> driverFaceList;
+
+    @ApiModelProperty(value = "楠岃瘉浜轰汉鑴稿垪琛�")
+    private List<CabinetFaceInfoVO> autoFaceList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java
new file mode 100644
index 0000000..650e3d8
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetInfoVO.java
@@ -0,0 +1,55 @@
+package com.doumee.dao.business.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.service.business.third.model.LoginUserModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 閽ュ寵鏌滃熀鏈俊鎭〃
+ * @author 姹熻箘韫�
+ * @date 2025/09/28 09:01
+ */
+@Data
+@ApiModel("閽ュ寵鏌滃熀鏈俊鎭〃杩斿洖绫�")
+public class CabinetInfoVO {
+
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    private Integer id;
+
+    @ApiModelProperty(value = "澶囨敞")
+    @ExcelColumn(name="澶囨敞")
+    private String info;
+
+    @ApiModelProperty(value = "璁惧缂栧彿")
+    @ExcelColumn(name="璁惧缂栧彿")
+    private String code;
+
+    @ApiModelProperty(value = "璁惧鍚嶇О")
+    @ExcelColumn(name="璁惧鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "璁惧ID")
+    @ExcelColumn(name="璁惧ID")
+    private String devId;
+
+    @ApiModelProperty(value = "楠岃瘉浜虹紪鐮侊紙鍏宠仈member)", example = "1")
+    private String authMemberId;
+
+    @ApiModelProperty(value = "鏄惁鍙岄噸楠岃瘉 0鍚� 1鏄�", example = "1")
+    private Integer doubleAuth;
+
+    @ApiModelProperty(value = "杞挱鍥惧湴鍧�", example = "1")
+    private List<String> bannerList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/TelecomJkCabinetLogVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/TelecomJkCabinetLogVO.java
new file mode 100644
index 0000000..c5cdcb7
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/TelecomJkCabinetLogVO.java
@@ -0,0 +1,67 @@
+package com.doumee.dao.business.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.service.business.third.model.LoginUserModel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 閽ュ寵鏌滃紑鍏抽棬璁板綍
+ * @author 姹熻箘韫�
+ * @date 2025/09/28 09:01
+ */
+@Data
+@ApiModel("閽ュ寵鏌滃紑鍏抽棬璁板綍")
+public class TelecomJkCabinetLogVO{
+
+    @ApiModelProperty(value = "涓婚敭", example = "1")
+    private Integer id;
+
+    @ApiModelProperty(value = "棰嗗彇鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createDate;
+
+    @ApiModelProperty(value = "褰掕繕鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date returnDate;
+
+    @ApiModelProperty(value = "鐘舵�侊細0=鏈綊杩橈紱1=宸插綊杩橈紱")
+    private Integer status;
+
+    @ApiModelProperty(value = "楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱", example = "1")
+    private Integer authType;
+
+    @ApiModelProperty(value = "閽ュ寵淇℃伅锛堣溅鐗屽彿-閽ュ寵缂栫爜锛�")
+    private String keyInfo;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String carCode;
+
+    @ApiModelProperty(value = "棰嗗彇瑙勫垯 0闅忚溅 1闅忔淳杞﹀崟", example = "1")
+    private Integer roleType;
+
+    @ApiModelProperty(value = "鎿嶄綔绫诲瀷锛�0=寮�闂�;1=鍏抽棬;", example = "1")
+    private Integer type;
+
+    @ApiModelProperty(value = "鎿嶄綔浜洪儴闂�", example = "1",hidden = true)
+    private String companyName;
+
+    @ApiModelProperty(value = "鎿嶄綔浜哄悕绉�", example = "1")
+    private String memberName;
+
+    @ApiModelProperty(value = "閽ュ寵鏌滃悕绉�", example = "1")
+    private String cabinetName;
+
+    @ApiModelProperty(value = "鏌滄牸缂栧彿", example = "1")
+    private String gridCode;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
index eee512d..e3abf07 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java
@@ -107,17 +107,11 @@
 
     /**
      * 鏍囪鏌滄牸鏁呴殰
-     * @param loginUserInfo
-     * @param cabinetId
-     * @param gridIdList
      */
     void markFault(OptGridDTO dto);
 
     /**
      * 鏍囪鏌滄牸姝e父
-     * @param loginUserInfo
-     * @param cabinetId
-     * @param gridIdList
      */
     void cancelFault(OptGridDTO dto);
 
@@ -127,14 +121,17 @@
     void batchOpenGridAdmin(OptGridDTO dto);
     /**
      * 鏍囪缁翠慨淇濆吇 - 绠$悊鍛�
-     * @param loginUserInfo
-     * @param cabinetId
-     * @param gridIdList
      */
     void markRepair(OptGridDTO dto);
 
+    /**
+     * 閽ュ寵鏌滃叧闂�
+     */
     void closeGrid(CloseGridDTO dto);
 
+    /**
+     * 鍙告満鑾峰彇鍙搷浣滅殑閽ュ寵鏌滄煖鏍�
+     */
     List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO getDriverGridDTO);
 
     void openGridDriver(OpenGridDriverDTO openGridDriverDTO);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
index 1256e97..4f7cd26 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetLogService.java
@@ -1,5 +1,7 @@
 package com.doumee.service.business;
 
+import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
+import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.dao.business.model.JkCabinetLog;
@@ -94,4 +96,11 @@
      * @return long
      */
     long count(JkCabinetLog jkCabinetLog);
+
+    /**
+     * 鐢典俊 閽ュ寵鍑哄叆鏃ュ織鏌ヨ
+     * @param model
+     * @return
+     */
+    List<TelecomJkCabinetLogVO> getLogListForTelecom(TelecomCabinetLogDTO model);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
index 95caaf0..b66caf3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java
@@ -1,8 +1,6 @@
 package com.doumee.service.business;
 
-import com.doumee.dao.business.vo.AdminCabinetVO;
-import com.doumee.dao.business.vo.CabinetConfigDataVO;
-import com.doumee.dao.business.vo.CabinetDetailVO;
+import com.doumee.dao.business.vo.*;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -119,5 +117,19 @@
      * @param cabinetId
      * @return
      */
-    CabinetDetailVO getCabinetDetail(Integer cabinetId);
+    CabinetDetailVO getCabinetDetail(Integer cabinetId,LoginUserInfo loginUserInfo);
+
+
+    /**
+     * 鑾峰彇閽ュ寵鏌滀笅鐨勪汉鑴镐俊鎭�
+     * @param code
+     * @return
+     */
+    CabinetFaceVO getCabinetFaceVO(String code);
+
+
+    CabinetInfoVO getCabinetInfoForDriver(String code);
+
+    void updateRunStatusById(Integer id);
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java
index b9f531a..4e8aa50 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkIccardService.java
@@ -96,4 +96,6 @@
     long count(JkIccard jkIccard);
 
     void updateStatusById(JkIccard jkIccard);
+
+    Integer getMemberIdByCode(String code);
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkVersionService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkVersionService.java
index a9dd9d9..4fe6b8f 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkVersionService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkVersionService.java
@@ -94,4 +94,6 @@
      * @return long
      */
     long count(JkVersion jkVersion);
+
+    JkVersion getLastVersion();
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
index 28633c9..b0b1113 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java
@@ -1,7 +1,9 @@
 package com.doumee.service.business.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.core.haikang.model.HKConstants;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.*;
@@ -20,6 +22,8 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.service.business.third.model.PageWrap;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.hikvision.artemis.sdk.config.ArtemisConfig;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -35,6 +39,7 @@
  * @date 2025/09/28 09:01
  */
 @Service
+@Slf4j
 public class JkCabinetGridServiceImpl implements JkCabinetGridService {
 
     @Autowired
@@ -250,23 +255,24 @@
         if(Objects.isNull(dto)
                 || Objects.isNull(dto.getCabinetId())
                 || CollectionUtils.isEmpty(dto.getGridIdList())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
-        }
-        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
-                .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
-                .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
-                .in(JkCabinetGrid::getId,dto.getGridIdList())
-        );
-        if(CollectionUtils.isEmpty(jkCabinetGridList)){
             return;
+        }else{
+            List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                    .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+                    .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+                    .in(JkCabinetGrid::getId,dto.getGridIdList())
+            );
+            if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+                LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    jkCabinetGrid.setEditor(loginUserInfo.getId());
+                    jkCabinetGrid.setEditDate(new Date());
+                    jkCabinetGrid.setWorkingStatus(Constants.ONE);
+                    jkCabinetGridMapper.updateById(jkCabinetGrid);
+                }
+            }
         }
-        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
-        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
-            jkCabinetGrid.setEditor(loginUserInfo.getId());
-            jkCabinetGrid.setEditDate(new Date());
-            jkCabinetGrid.setWorkingStatus(Constants.ONE);
-            jkCabinetGridMapper.updateById(jkCabinetGrid);
-        }
+
     }
 
     /**
@@ -293,16 +299,16 @@
                 .isNotNull(JkCabinetGrid::getKeyId)
                 .in(JkCabinetGrid::getId,dto.getGridIdList())
         );
-        if(CollectionUtils.isEmpty(jkCabinetGridList)){
-            return;
+        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+                        .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
+                        .set(JkKeys::getStatus,Constants.TWO)
+                        .eq(JkKeys::getId,jkCabinetGrid.getKeyId())
+                );
+            }
         }
-        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
-            jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
-                    .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
-                    .set(JkKeys::getStatus,Constants.TWO)
-                    .eq(JkKeys::getId,jkCabinetGrid.getKeyId())
-            );
-        }
+
     }
 
 
@@ -315,23 +321,23 @@
         if(Objects.isNull(dto)
                 || Objects.isNull(dto.getCabinetId())
                 || CollectionUtils.isEmpty(dto.getGridIdList())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            return;
         }
         List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                 .eq(JkCabinetGrid::getWorkingStatus,Constants.ONE)
                 .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                 .in(JkCabinetGrid::getId,dto.getGridIdList())
         );
-        if(CollectionUtils.isEmpty(jkCabinetGridList)){
-            return;
+        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+            LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                jkCabinetGrid.setEditor(loginUserInfo.getId());
+                jkCabinetGrid.setEditDate(new Date());
+                jkCabinetGrid.setWorkingStatus(Constants.ZERO);
+                jkCabinetGridMapper.updateById(jkCabinetGrid);
+            }
         }
-        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
-        for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
-            jkCabinetGrid.setEditor(loginUserInfo.getId());
-            jkCabinetGrid.setEditDate(new Date());
-            jkCabinetGrid.setWorkingStatus(Constants.ZERO);
-            jkCabinetGridMapper.updateById(jkCabinetGrid);
-        }
+
     }
 
 
@@ -344,42 +350,42 @@
         if(Objects.isNull(dto)
         || Objects.isNull(dto.getCabinetId())
         || CollectionUtils.isEmpty(dto.getGridIdList())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+           return;
         }
         List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                 .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
                 .in(JkCabinetGrid::getId,dto.getGridIdList())
         );
-        if(CollectionUtils.isEmpty(jkCabinetGridList)){
-            return;
-        }
-        LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
-        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){
-            List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
-            for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
-                JkCabinetLog jkCabinetLog = new JkCabinetLog();
-                jkCabinetLog.setCreateDate(new Date());
-                jkCabinetLog.setCreator(loginUserInfo.getId());
-                jkCabinetLog.setIsdeleted(Constants.ZERO);
-                jkCabinetLog.setCabinetId(dto.getCabinetId());
-                jkCabinetLog.setGridId(jkCabinetGrid.getId());
-                jkCabinetLog.setAuthType(Constants.TWO);
-                jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
-                if(Objects.nonNull(jkCabinetGrid.getKeyId())){
-                    JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
-                    if(Objects.nonNull(jkKeys)){
-                        if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
-                            jkCabinetLog.setCarId(jkKeys.getCarId());
-                            jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+        if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+            LoginUserInfo loginUserInfo = dto.getLoginUserInfo();
+            if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){
+                List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
+                for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) {
+                    JkCabinetLog jkCabinetLog = new JkCabinetLog();
+                    jkCabinetLog.setCreateDate(new Date());
+                    jkCabinetLog.setCreator(loginUserInfo.getId());
+                    jkCabinetLog.setIsdeleted(Constants.ZERO);
+                    jkCabinetLog.setCabinetId(dto.getCabinetId());
+                    jkCabinetLog.setGridId(jkCabinetGrid.getId());
+                    jkCabinetLog.setAuthType(Constants.TWO);
+                    jkCabinetLog.setMemberId(loginUserInfo.getMemberId());
+                    if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+                        JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+                        if(Objects.nonNull(jkKeys)){
+                            if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
+                                jkCabinetLog.setCarId(jkKeys.getCarId());
+                                jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+                            }
+                            jkCabinetLog.setRoleType(jkKeys.getRoleType());
                         }
-                        jkCabinetLog.setRoleType(jkKeys.getRoleType());
                     }
+                    jkCabinetLog.setType(Constants.ZERO);
+                    jkCabinetLogs.add(jkCabinetLog);
                 }
-                jkCabinetLog.setType(Constants.ZERO);
-                jkCabinetLogs.add(jkCabinetLog);
+                jkCabinetLogMapper.insert(jkCabinetLogs);
             }
-            jkCabinetLogMapper.insert(jkCabinetLogs);
         }
+
     }
 
 
@@ -403,38 +409,53 @@
                 .eq(JkCabinetGrid::getId,dto.getGridId())
                 .last(" limit 1 ")
         );
-        if(Objects.isNull(jkCabinetGrid)){
-            return;
-        }
-        JkCabinetLog jkCabinetLog = new JkCabinetLog();
-        jkCabinetLog.setCreateDate(new Date());
-        jkCabinetLog.setIsdeleted(Constants.ZERO);
-        jkCabinetLog.setCabinetId(dto.getCabinetId());
-        jkCabinetLog.setGridId(jkCabinetGrid.getId());
-        jkCabinetLog.setAuthType(dto.getAuthType());
-        jkCabinetLog.setMemberId(dto.getMemberId());
-        if(Objects.nonNull(jkCabinetGrid.getKeyId())){
-            //鍙湁閽ュ寵鏌滅粦瀹氫簡閽ュ寵淇℃伅 鎵嶄細鏇存柊閽ュ寵鐨勪俊鎭�
-            JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
-            if(Objects.nonNull(jkKeys)){
-                if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
-                    jkCabinetLog.setCarId(jkKeys.getCarId());
-                    jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
-                }
-                jkCabinetLog.setRoleType(jkKeys.getRoleType());
-                //閽ュ寵鐘舵�佷笌褰撳墠鎿嶄綔鐘舵�佷笉涓�鑷达紝鍒欒繘琛屾洿鏂伴挜鍖欑姸鎬�
-                if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())){
-                    jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
-                            .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
-                            .set(JkKeys::getStatus,dto.getKeyStatus())
-                            .eq(JkKeys::getId,jkKeys.getId())
-                    );
+        if(Objects.nonNull(jkCabinetGrid)){
+            JkCabinetLog jkCabinetLog = new JkCabinetLog();
+            jkCabinetLog.setCreateDate(new Date());
+            jkCabinetLog.setIsdeleted(Constants.ZERO);
+            jkCabinetLog.setCabinetId(dto.getCabinetId());
+            jkCabinetLog.setGridId(jkCabinetGrid.getId());
+            jkCabinetLog.setAuthType(dto.getAuthType());
+            jkCabinetLog.setMemberId(dto.getMemberId());
+            jkCabinetLog.setKeyStatus(Constants.ZERO);
+            Boolean isChange = false;
+            if(Objects.nonNull(jkCabinetGrid.getKeyId())){
+                //鍙湁閽ュ寵鏌滅粦瀹氫簡閽ュ寵淇℃伅 鎵嶄細鏇存柊閽ュ寵鐨勪俊鎭�
+                JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId());
+                if(Objects.nonNull(jkKeys)){
+                    if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){
+                        jkCabinetLog.setCarId(jkKeys.getCarId());
+                        jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() );
+                    }
+                    jkCabinetLog.setRoleType(jkKeys.getRoleType());
+                    jkCabinetLog.setKeyStatus(dto.getKeyStatus());
+                    //閽ュ寵鐘舵�佷笌褰撳墠鎿嶄綔鐘舵�佷笉涓�鑷达紝鍒欒繘琛屾洿鏂伴挜鍖欑姸鎬�
+                    if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())
+                    && (Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)||Constants.equalsInteger(dto.getKeyStatus(),Constants.TWO))){
+                        jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+                                .set(JkKeys::getEditDate,DateUtil.getCurrDateTime())
+                                .set(JkKeys::getStatus,dto.getKeyStatus())
+                                .eq(JkKeys::getId,jkKeys.getId())
+                        );
+                        isChange = true;
+                    }
                 }
             }
+            jkCabinetLog.setType(Constants.ONE);
+            jkCabinetLogMapper.insert(jkCabinetLog);
+            //鏌ヨ閽ュ寵瀵瑰簲鐨勫�熷嚭浜嗛挜鍖欑殑寮�闂ㄨ褰� 杩涜娣诲姞鍏抽棬璁板綍涓婚敭
+            if(isChange && Constants.equalsInteger(dto.getKeyStatus(),Constants.ONE)){
+                jkCabinetLogMapper.update(null,new UpdateWrapper<JkCabinetLog>().lambda()
+                        .set(JkCabinetLog::getCloseLogId,jkCabinetLog.getId())
+                        .eq(JkCabinetLog::getKeyId,jkCabinetLog.getKeyId())
+                        .eq(JkCabinetLog::getType,Constants.ZERO)
+                        .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
+                        .isNotNull(JkCabinetLog::getCloseLogId));
+            }
         }
-        jkCabinetLog.setType(Constants.ONE);
-        jkCabinetLogMapper.insert(jkCabinetLog);
     }
+
+
 
 
     /**
@@ -442,26 +463,48 @@
      */
     @Override
     public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){
+        List<JkCabinetGrid> jkCabinetGridList = new ArrayList<>();
         if(Objects.isNull(dto.getCabinetId())
             || Objects.isNull(dto.getCabinetId())
             || Objects.isNull(dto.getMemberId())
             || Objects.isNull(dto.getType())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+            return jkCabinetGridList;
+        }else{
+            JkCabinet jkCabinet = jkCabinetMapper.selectById(dto.getCabinetId());
+            if(Objects.isNull(jkCabinet)){
+                return jkCabinetGridList;
+            }
+            if(Constants.equalsInteger(jkCabinet.getDoubleAuth(),Constants.ONE)){
+                if(StringUtils.isBlank(jkCabinet.getAuthMemberId())){
+                    return jkCabinetGridList;
+                }
+                List<String> authMemberList =  Arrays.asList(jkCabinet.getAuthMemberId().split(","));
+                Boolean flag = true;
+                for (String id:authMemberList) {
+                    if(id.equals(jkCabinet.getAuthMemberId())){
+                        flag = false;
+                        break;
+                    }
+                }
+                if(flag){
+                    return jkCabinetGridList;
+                }
+            }
+            jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
+                    new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
+                            .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
+                            .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
+                            .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+                            .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                            .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                            .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
+                            .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
+                            .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE)
+                            .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE)
+                            .isNotNull(JkCabinetGrid::getKeyId)
+                            .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id  where c.ISDELETED = 0 and c.TYPE != 0 and   c.MEMBER_ID = "+dto.getMemberId()+" ) ")
+            );
         }
-        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,
-                new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class)
-                        .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode)
-                        .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode)
-                        .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
-                        .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
-                        .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
-                        .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO)
-                        .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId())
-                        .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE)
-                        .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE)
-                        .isNotNull(JkCabinetGrid::getKeyId)
-                        .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id  where c.ISDELETED = 0 and c.TYPE != 0 and   c.MEMBER_ID = "+dto.getMemberId()+" ) ")
-        );
         return jkCabinetGridList;
     }
 
@@ -478,10 +521,9 @@
                 .last(" limit 1 ")
         );
         if(Objects.isNull(jkCabinetGrid)){
-            return;
+            return ;
         }
         LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo();
-        List<JkCabinetLog> jkCabinetLogs = new ArrayList<>();
         JkCabinetLog jkCabinetLog = new JkCabinetLog();
         jkCabinetLog.setCreateDate(new Date());
         jkCabinetLog.setCreator(loginUserInfo.getId());
@@ -501,7 +543,10 @@
                 jkCabinetLog.setRoleType(jkKeys.getRoleType());
             }
         }
-        jkCabinetLogMapper.insert(jkCabinetLogs);
+        jkCabinetLogMapper.insert(jkCabinetLog);
     }
 
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
index 7e36a98..2d681e0 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetLogServiceImpl.java
@@ -1,7 +1,10 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.dto.TelecomCabinetLogDTO;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.TelecomJkCabinetLogVO;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.core.utils.Utils;
@@ -17,6 +20,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 
@@ -126,4 +130,44 @@
         QueryWrapper<JkCabinetLog> wrapper = new QueryWrapper<>(jkCabinetLog);
         return jkCabinetLogMapper.selectCount(wrapper);
     }
+
+
+
+    @Override
+    public List<TelecomJkCabinetLogVO> getLogListForTelecom(TelecomCabinetLogDTO model){
+        MPJLambdaWrapper<JkCabinetLog> wrapper = new MPJLambdaWrapper<JkCabinetLog>()
+                .selectAll(JkCabinetLog.class)
+                .selectAs(Member::getName,JkCabinetLog::getMemberName)
+                .selectAs(Company::getName,JkCabinetLog::getCompanyName)
+                .selectAs(JkCabinet::getName,JkCabinetLog::getCabinetName)
+                .selectAs(JkCabinetGrid::getCode,JkCabinetLog::getGridCode)
+                .selectAs(JkKeys::getCarCode,JkCabinetLog::getCarCode)
+                .select("j.CREATE_DATE",JkCabinetLog::getReturnDate)
+                .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetLog::getCabinetId)
+                .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getId,JkCabinetLog::getGridId)
+                .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                .leftJoin(Member.class,Member::getId,JkCabinetLog::getMemberId)
+                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
+                .leftJoin(" jk_cabinet_log j on j.id=t.CLOSE_LOG_ID ")
+                .ge(Objects.nonNull(model.getStartDate()),JkCabinetLog::getCreateDate, Utils.Date.getStart(model.getStartDate()))
+                .le(Objects.nonNull(model.getEndDate()),JkCabinetLog::getCreateDate, Utils.Date.getEnd(model.getEndDate()))
+                .eq(JkCabinetLog::getIsdeleted, Constants.ZERO)
+                .eq(JkCabinetLog::getKeyStatus,Constants.TWO)
+                .orderByDesc(JkCabinetLog::getCreateDate);
+        List<JkCabinetLog> jkCabinetLogs = jkCabinetLogMapper.selectJoinList(JkCabinetLog.class,wrapper);
+        List<TelecomJkCabinetLogVO> telecomJkCabinetLogVOList = new ArrayList<TelecomJkCabinetLogVO>();
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jkCabinetLogs)){
+            for (JkCabinetLog jkCabinetLog:jkCabinetLogs) {
+                TelecomJkCabinetLogVO telecomJkCabinetLogVO = new TelecomJkCabinetLogVO();
+                BeanUtil.copyProperties(jkCabinetLog,telecomJkCabinetLogVO);
+                telecomJkCabinetLogVO.setStatus(Objects.nonNull(jkCabinetLog.getReturnDate())?Constants.ZERO:Constants.ONE);
+                telecomJkCabinetLogVOList.add(telecomJkCabinetLogVO);
+            }
+        }
+        return telecomJkCabinetLogVOList;
+    }
+
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
index 161d43f..cd2a697 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -6,21 +6,18 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.CategoryMapper;
 import com.doumee.dao.business.JkCabinetGridMapper;
 import com.doumee.dao.business.JkKeysMapper;
-import com.doumee.dao.business.model.JkCabinetGrid;
-import com.doumee.dao.business.model.JkKeys;
-import com.doumee.dao.business.vo.AdminCabinetVO;
-import com.doumee.dao.business.vo.CabinetConfigDataVO;
-import com.doumee.dao.business.vo.CabinetDetailVO;
-import com.doumee.dao.business.vo.CabinetGridInfoVO;
+import com.doumee.dao.business.dao.MemberMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.*;
 import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.JkCabinetMapper;
-import com.doumee.dao.business.model.JkCabinet;
 import com.doumee.service.business.JkCabinetService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -51,6 +48,9 @@
     private JkCabinetMapper jkCabinetMapper;
 
     @Autowired
+    private CategoryMapper categoryMapper;
+
+    @Autowired
     private JkCabinetGridMapper jkCabinetGridMapper;
 
     @Autowired
@@ -58,6 +58,9 @@
 
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private MemberMapper memberMapper;
 
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
@@ -261,6 +264,16 @@
             jkCabinet.setJwd(jkCabinet.getLongitude() + "," + jkCabinet.getLatitude());
         }
         jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum());
+        if(StringUtils.isNotBlank(jkCabinet.getManagerId())){
+            jkCabinet.setManagerIdList(Arrays.asList(
+                    jkCabinet.getManagerId().split(",")
+            ));
+        }
+        if(StringUtils.isNotBlank(jkCabinet.getAuthMemberId())){
+            jkCabinet.setAuthMemberIdList(Arrays.asList(
+                    jkCabinet.getAuthMemberId().split(",")
+            ));
+        }
         return jkCabinet;
     }
 
@@ -277,7 +290,7 @@
         QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet);
         return jkCabinetMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<JkCabinet> findPage(PageWrap<JkCabinet> pageWrap) {
         IPage<JkCabinet> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -373,11 +386,12 @@
 
 
     @Override
-    public CabinetDetailVO getCabinetDetail(Integer cabinetId){
+    public CabinetDetailVO getCabinetDetail(Integer cabinetId,LoginUserInfo loginUserInfo){
         CabinetDetailVO cabinetDetailVO = new CabinetDetailVO();
         JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
                 .lambda()
                 .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ")
                 .eq(JkCabinet::getId,cabinetId)
                 .last(" limit 1")
         );
@@ -433,4 +447,119 @@
     }
 
 
+
+    @Override
+    public CabinetFaceVO getCabinetFaceVO(String code){
+        CabinetFaceVO cabinetFaceVO = new CabinetFaceVO();
+        List<CabinetFaceInfoVO> driverFaceList = new ArrayList<>();
+        List<CabinetFaceInfoVO> autoFaceList = new ArrayList<>();
+
+        JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>().lambda()
+                .eq(JkCabinet::getCode,code)
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .last("limit 1")
+        );
+        if(Objects.nonNull(jkCabinet)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            //鏌ヨ鍙告満淇℃伅
+            List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,new MPJLambdaWrapper<JkCabinetGrid>()
+                    .selectAll(JkCabinetGrid.class)
+                    .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId)
+                    .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId)
+                    .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                    .eq(JkKeys::getIsdeleted,Constants.ZERO)
+                    .isNotNull(JkKeys::getCarId)
+                    .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
+            );
+            if(CollectionUtils.isNotEmpty(jkCabinetGridList)){
+                List<Integer> carIdList = jkCabinetGridList.stream().map(i->i.getKeyId()).collect(Collectors.toList());
+                //鏌ヨ杞﹁締鎵�鏈変汉鍛樹俊鎭�
+                List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
+                        .selectAll(Member.class)
+                        .leftJoin(CarDriver.class,CarDriver::getMemberId,Member::getId)
+                        .eq(Member::getIsdeleted,Constants.ZERO)
+                        .eq(CarDriver::getIsdeleted,Constants.ZERO)
+                        .eq(CarDriver::getStatus,Constants.ZERO)
+                        .isNotNull(Member::getFaceImg)
+                        .in(CarDriver::getCarId,carIdList)
+                );
+                if(CollectionUtils.isNotEmpty(memberList)){
+                    Set<Member> memberSet = new HashSet<>(memberList);
+                    for (Member member:memberSet) {
+                        CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO();
+                        cabinetFaceInfoVO.setMemberId(member.getId());
+                        cabinetFaceInfoVO.setMemberName(member.getName());
+                        cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg());
+                        driverFaceList.add(cabinetFaceInfoVO);
+                    }
+                }
+            }
+            //鏌ヨ璁惧楠岃瘉浜哄憳
+            List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+                    .eq(Member::getIsdeleted,Constants.ZERO)
+                    .isNotNull(Member::getFaceImg)
+                    .apply(" FIND_IN_SET( id ,'"+jkCabinet.getManagerId()+"') ")
+            );
+            if(CollectionUtils.isNotEmpty(memberList)){
+                for (Member member:memberList) {
+                    CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO();
+                    cabinetFaceInfoVO.setMemberId(member.getId());
+                    cabinetFaceInfoVO.setMemberName(member.getName());
+                    cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg());
+                    autoFaceList.add(cabinetFaceInfoVO);
+                }
+            }
+
+        }
+        cabinetFaceVO.setAutoFaceList(autoFaceList);
+        cabinetFaceVO.setDriverFaceList(driverFaceList);
+        return cabinetFaceVO;
+    }
+
+
+    @Override
+    public CabinetInfoVO getCabinetInfoForDriver(String code){
+        JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>()
+                .lambda()
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .eq(JkCabinet::getCode,code)
+                .orderByAsc(JkCabinet::getCreateDate)
+                .last(" limit 1 ")
+        );
+        CabinetInfoVO cabinetInfoVO = new CabinetInfoVO();
+        if(Objects.nonNull(jkCabinet)){
+            BeanUtil.copyProperties(jkCabinet,cabinetInfoVO);
+        }
+        List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda()
+                .eq(Category::getIsdeleted,Constants.ZERO)
+                .eq(Category::getStatus,Constants.ZERO)
+                .eq(Category::getType,Constants.THREE)
+                .orderByAsc(Category::getSortnum)
+        );
+        if(CollectionUtils.isNotEmpty(categoryList)){
+            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
+                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.BANNER_IMG).getCode();
+            for (Category category:categoryList) {
+                category.setImgurlFull(prefixUrl + category.getImgurl());
+            }
+            cabinetInfoVO.setBannerList(
+                    categoryList.stream().map(i->i.getImgurlFull()).collect(Collectors.toList())
+            );
+        }
+        return cabinetInfoVO;
+    }
+
+
+
+    @Override
+    public void updateRunStatusById(Integer id) {
+        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>()
+                .lambda().set(JkCabinet::getRunStatus,Constants.ZERO)
+                .set(JkCabinet::getEditDate, DateUtil.getCurrDateTime())
+                .set(JkCabinet::getHaertTime, DateUtil.getCurrDateTime())
+                .eq(JkCabinet::getId,id));
+    }
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java
index fcb86bc..8058914 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkIccardServiceImpl.java
@@ -179,4 +179,20 @@
     }
 
 
+    @Override
+    public Integer getMemberIdByCode(String code){
+        JkIccard jkIccard = jkIccardMapper.selectOne(new QueryWrapper<JkIccard>().lambda()
+                .eq(JkIccard::getIsdeleted,Constants.ZERO)
+                .eq(JkIccard::getStatus,Constants.ZERO)
+                .eq(JkIccard::getCode,code)
+                .last(" limit 1 ")
+        );
+        if(Objects.isNull(jkIccard)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        return jkIccard.getMemberId();
+
+    }
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
index d2b5382..2408fa3 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java
@@ -164,10 +164,16 @@
 
     @Override
     public List<JkKeys> findList(JkKeys jkKeys) {
+
+
+
+
         jkKeys.setIsdeleted(Constants.ZERO);
-        jkKeys.setStatus(Constants.ZERO);
         QueryWrapper<JkKeys> wrapper = new QueryWrapper<>(jkKeys);
-        return jkKeysMapper.selectList(wrapper);
+        return jkKeysMapper.selectList(new QueryWrapper<JkKeys>()
+                .lambda().eq(JkKeys::getIsdeleted,Constants.ZERO)
+
+        );
     }
   
     @Override
@@ -184,6 +190,7 @@
                 .leftJoin(JkCabinetGrid.class,JkCabinetGrid::getKeyId,JkKeys::getId)
                 .leftJoin(JkCabinet.class,JkCabinet::getId,JkCabinetGrid::getCabinetId)
                 .eq(JkKeys::getIsdeleted,Constants.ZERO)
+                .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
                 .like(StringUtils.isNotBlank(model.getCode()),JkKeys::getCode,model.getCode())
                 .like(StringUtils.isNotBlank(model.getCarCode()),JkKeys::getCarCode,model.getCode());
         IPage<JkKeys> iPage = jkKeysMapper.selectJoinPage(page,JkKeys.class,wrapper);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkVersionServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkVersionServiceImpl.java
index 0f49383..b3c9029 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkVersionServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkVersionServiceImpl.java
@@ -176,4 +176,25 @@
         QueryWrapper<JkVersion> wrapper = new QueryWrapper<>(jkVersion);
         return jkVersionMapper.selectCount(wrapper);
     }
+
+
+
+    @Override
+    public JkVersion getLastVersion(){
+        JkVersion jkVersion = jkVersionMapper.selectOne(new QueryWrapper<JkVersion>().lambda()
+                .eq(JkVersion::getIsdeleted,Constants.ZERO)
+                .eq(JkVersion::getType,Constants.ZERO)
+                .orderByDesc(JkVersion::getVersionNum)
+                .last("limit 1")
+        );
+        if(Objects.nonNull(jkVersion)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_LOCAL_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.APP_FILE).getCode();
+            jkVersion.setFullFileUrl(path + jkVersion.getFileUrl());
+        }
+        return jkVersion;
+    }
+
+
+
 }
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 01b1d19..a9ae43a 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
@@ -1917,15 +1917,15 @@
                 .eq(SystemUser::getDeleted,Constants.ZERO)
                 .last(" limit 1 "));
         //闈炶瀹㈢敤鎴� 杩涜鍒ゆ柇鏄惁瀛樺湪鐢ㄦ埛
-        if(!Objects.isNull(user)){
+        if(Objects.isNull(user)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿鏆傛湭缁戝畾绯荤粺锛岃鑱旂郴绠$悊鍛�");
+        }else{
             Member member = memberMapper.selectById(user.getMemberId());
             if(member == null || member.getIsdeleted() == Constants.ONE){
-                return;
-//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸插垹闄�,璇疯仈绯荤鐞嗗憳");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璐﹀彿缁戝畾寮傚父锛岃鑱旂郴绠$悊鍛�");
             }
             if(member.getStatus() != Constants.ZERO){
-                return;
-//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛宸茬鐢�,璇疯仈绯荤鐞嗗憳");
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎮ㄧ殑璐﹀彿宸茬鐢紝璇疯仈绯荤鐞嗗憳");
             }
             if(StringUtils.isNotBlank(member.getIdcardNo())){
                 member.setIdcardDecode(DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()));
diff --git a/server/visits/dmvisit_service/src/main/resources/application-test.yml b/server/visits/dmvisit_service/src/main/resources/application-test.yml
index 2371a18..867c7c2 100644
--- a/server/visits/dmvisit_service/src/main/resources/application-test.yml
+++ b/server/visits/dmvisit_service/src/main/resources/application-test.yml
@@ -1,9 +1,9 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-    url: jdbc:mysql://sh-cdb-aiskr3vy.sql.tencentcdb.com:62443/antaiwuliu?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-    username: doumee
-    password: rtjgfEr@&0c0m
+    url: jdbc:mysql://192.168.0.211:3306/wuhuyancao?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
+    username: root
+    password: Doumee@168
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
   redis:

--
Gitblit v1.9.3