Explorar o código

Merge branch 'master' into feature_longhu

# Conflicts:
#	src/main/resources/logback.xml
longhu hai 14 horas
pai
achega
1a4a1ed834
Modificáronse 36 ficheiros con 289 adicións e 100 borrados
  1. 9 0
      .idea/setting.xml
  2. 21 7
      src/main/java/com/hr/controller/AggregateController.java
  3. 17 4
      src/main/java/com/hr/controller/DemoController.java
  4. 5 4
      src/main/java/com/hr/controller/EsignController.java
  5. 9 8
      src/main/java/com/hr/controller/IpAccountController.java
  6. 7 6
      src/main/java/com/hr/controller/IpInterfaceCallbackController.java
  7. 26 20
      src/main/java/com/hr/controller/IpInterfaceController.java
  8. 3 2
      src/main/java/com/hr/controller/TestCallBackController.java
  9. 5 1
      src/main/java/com/hr/externelSystem/AiwenIpService.java
  10. 5 0
      src/main/java/com/hr/externelSystem/BizHandlerFactory.java
  11. 6 4
      src/main/java/com/hr/externelSystem/ESignGenPdfService.java
  12. 10 2
      src/main/java/com/hr/externelSystem/GeestService.java
  13. 5 3
      src/main/java/com/hr/externelSystem/HrGenPdfService.java
  14. 1 0
      src/main/java/com/hr/externelSystem/ShujubaoMobileNameService.java
  15. 1 0
      src/main/java/com/hr/externelSystem/ShujubaoMobileOwnerService.java
  16. 1 0
      src/main/java/com/hr/externelSystem/ShujubaoMobileStateService.java
  17. 1 0
      src/main/java/com/hr/externelSystem/ShujubaoThreeElementVerificationService.java
  18. 4 1
      src/main/java/com/hr/externelSystem/TencentFaceService.java
  19. 3 0
      src/main/java/com/hr/externelSystem/TencentOrcSignService.java
  20. 7 1
      src/main/java/com/hr/repository/domain/IpOrderPO.java
  21. 2 0
      src/main/java/com/hr/repository/jpa/Demo1Jpa.java
  22. 3 0
      src/main/java/com/hr/repository/jpa/IpInterfaceRepository.java
  23. 4 0
      src/main/java/com/hr/repository/jpa/IpTokenInterfaceRepository.java
  24. 19 0
      src/main/java/com/hr/repository/service/DemoService.java
  25. 28 6
      src/main/java/com/hr/repository/service/impl/EsignServiceImpl.java
  26. 2 3
      src/main/java/com/hr/repository/service/impl/IpOrderServiceImpl.java
  27. 5 5
      src/main/java/com/hr/service/IpInterfaceService.java
  28. 11 2
      src/main/java/com/hr/service/impl/IpAccountServiceImpl.java
  29. 20 7
      src/main/java/com/hr/service/impl/IpInterfaceServiceImpl.java
  30. 29 9
      src/main/java/com/hr/service/impl/IpTokenInterfaceServiceImpl.java
  31. 3 1
      src/main/java/com/hr/vo/IpInterfaceCallVO.java
  32. 1 1
      src/main/resources/logback.xml
  33. 1 1
      src/main/resources/mapper/IpAccountMapper.xml
  34. 7 1
      src/main/resources/mapper/IpInterfaceMapper.xml
  35. 1 0
      src/main/resources/mapper/IpLogMapper.xml
  36. 7 1
      src/main/resources/mapper/IpTokenInterfaceMapper.xml

+ 9 - 0
.idea/setting.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="arthas.idea.plugin">
+    <option name="redisAddress" value="" />
+    <option name="redisAuth" value="" />
+    <option name="redisCacheKey" value="" />
+    <option name="lastSelectAppJson" value="null" />
+  </component>
+</project>

+ 21 - 7
src/main/java/com/hr/controller/AggregateController.java

@@ -1,9 +1,11 @@
 package com.hr.controller;
 
+import com.alibaba.fastjson2.JSON;
 import com.hr.dto.AggregateQueryDTO;
 import com.hr.externelSystem.BizHandlerFactory;
 import com.hr.param.AggregateRequest;
 import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpTokenInterfacePO;
 import com.hr.repository.domain.IpTokenPO;
 import com.hr.service.IpTokenInterfaceService;
 import com.hr.service.IpAccountService;
@@ -11,6 +13,7 @@ import com.hr.service.IpInterfaceService;
 import com.hr.vo.IpAccountVO;
 import com.hr.vo.IpInterfaceVO;
 import com.yy.basedevelop.common.data.BaseReturnDto;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,12 +21,14 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
 
 /**
  * 三方调用聚合接口
  */
 @RestController
 @RequestMapping("/aggregate")
+@Slf4j
 public class AggregateController {
 
     @Autowired
@@ -39,31 +44,40 @@ public class AggregateController {
     private IpInterfaceService ipInterfaceService;
 
     @PostMapping("/openApi")
-    public BaseReturnDto<Object> aggregate(@RequestBody AggregateRequest req) {
+    public Mono<BaseReturnDto<Object>> aggregate(@RequestBody AggregateRequest req) {
+        log.info("openApi调用{}", req);
         String accountNo = req.getAccountNo();
         String interfaceCode = req.getInterfaceCode();
         IpAccountVO ipAccount = ipAccountService.queryByAccountNo(accountNo);
+        log.info("ipAccount:{},{}", accountNo, ipAccount);
         if(ipAccount == null){
-            return BaseReturnDto.error("账户不存在");
+            return Mono.just(BaseReturnDto.error("账户不存在"));
         }
         if(!ipAccount.getStatus().equals("normal")){
-            return BaseReturnDto.error("账户已禁用");
+            return Mono.just(BaseReturnDto.error("账户已禁用"));
         }
         IpInterfaceVO ipInterfaceVO = ipInterfaceService.queryByInterfaceCode(interfaceCode);
+        log.info("ipInterfaceVO:{},{}", interfaceCode, ipInterfaceVO);
         if(ipInterfaceVO == null){
-            return BaseReturnDto.error("接口不存在");
+            return Mono.just(BaseReturnDto.error("接口不存在"));
         }
         if(!ipInterfaceVO.getStatus().equals("normal")){
-            return BaseReturnDto.error("接口已禁用");
+            return Mono.just(BaseReturnDto.error("接口已禁用"));
         }
         AggregateQueryDTO dto = ipTokenInterfaceService.queryConfigByInterfaceCodeAndAccountNo(ipAccount.getId(), ipInterfaceVO.getId());
+        IpTokenInterfacePO ipTokenInterfacePO = dto.getIpTokenInterfacePO();
+        if(ipTokenInterfacePO == null){
+            return Mono.just(BaseReturnDto.error("接口配置已禁用"));
+        }
         IpTokenPO ipTokenPO = dto.getIpTokenPO();
         if(!ipTokenPO.getToken().equals(req.getToken())){
-            return BaseReturnDto.error("token错误");
+            return Mono.just(BaseReturnDto.error("token错误"));
         }
         IpInterfacePO ipInterfacePO = new IpInterfacePO();
         BeanUtils.copyProperties(ipInterfaceVO, ipInterfacePO);
         dto.setIpInterfacePO(ipInterfacePO);
-        return bizHandlerFactory.dispatch(req,dto);
+        BaseReturnDto<Object> response = bizHandlerFactory.dispatch(req, dto);
+        log.info("openApi返回:{}", JSON.toJSONString(response));
+        return Mono.just(response);
     }
 }

+ 17 - 4
src/main/java/com/hr/controller/DemoController.java

@@ -18,16 +18,19 @@ import com.yy.basedevelop.common.data.BaseReturnDto;
 
 
 import com.yy.basedevelop.common.http.config.RedisService;
-import com.yy.basedevelop.common.http.config.ThreadLocalContext;
+
+import com.yy.basedevelop.common.http.config.TokenUtil;
 import com.yy.basedevelop.common.util.DictUtil;
 import com.yy.basedevelop.common.util.ExcelUtil;
 import com.yy.basedevelop.common.util.HttpClientUtils;
 import com.yy.basedevelop.common.util.OSSUtil;
+import com.yy.basedevelop.dto.LoginUser;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import org.springframework.http.codec.multipart.FilePart;
+import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ServerWebExchange;
@@ -60,7 +63,16 @@ public class DemoController {
     @Autowired
     private OSSUtil oSSUtil;
 
+    @GetMapping("aa")
+    public Mono<MyDto> aa(ServerHttpRequest request) {
 
+        sv.savee();
+        LoginUser u= TokenUtil.getUser();
+        if(u==null){
+            throw new RuntimeException("没有找到用户");
+        }
+        return  Mono.just(MyDto.success(u));
+    }
 
     @PostMapping("listdict")
     public TestDemoDto listdict(@RequestBody TestDemoDto dto) {
@@ -104,7 +116,7 @@ public class DemoController {
     }
 
     @PostMapping("listname8")
-    public TestDemoDto list5668(@RequestBody TestDemoDto dto) {
+    public Mono<TestDemoDto> list5668(@RequestBody TestDemoDto dto) {
         log.info("接收的DTO8=:{}", dto);
 
         Boolean baaa=redisService.hasKey("aaa");
@@ -113,7 +125,7 @@ public class DemoController {
         TestDemoDto dto1 = new TestDemoDto();
         dto1.setName("直接返回Dto");
         dto1.setAge(26);
-        return dto1;
+        return Mono.just(dto1);
     }
 
     @GetMapping("listname6")
@@ -141,7 +153,8 @@ public class DemoController {
 
     @GetMapping("listname5")
     public Mono<Void> export(ServerHttpResponse response) {
-
+        LoginUser u= TokenUtil.getUser();
+        log.info("user:{}",u);
         ExcelUtil<DemoExcelDto> util = new ExcelUtil<DemoExcelDto>(DemoExcelDto.class);
         List<DemoExcelDto> list = new ArrayList<>();
         DemoExcelDto d1 = new DemoExcelDto();

+ 5 - 4
src/main/java/com/hr/controller/EsignController.java

@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
 
 /**
  * @author yaoy
@@ -27,8 +28,8 @@ public class EsignController {
      * @return
      */
     @PostMapping("platform")
-    public BaseReturnDto<EsignReturnDto> platformSignByPdfStream(@RequestBody EsignParmDto parm){
-        return esignService.platformSignByPdfStream(parm);
+    public Mono<BaseReturnDto<EsignReturnDto>> platformSignByPdfStream(@RequestBody EsignParmDto parm){
+        return Mono.just(esignService.platformSignByPdfStream(parm));
     }
 
 
@@ -38,8 +39,8 @@ public class EsignController {
      * @return
      */
     @PostMapping("hrSign")
-    public BaseReturnDto<EsignReturnDto> hrSignByPdfStream(@RequestBody EsignParmDto parm){
-        return esignService.hrSignByPdfStream(parm);
+    public Mono<BaseReturnDto<EsignReturnDto>> hrSignByPdfStream(@RequestBody EsignParmDto parm){
+        return Mono.just(esignService.hrSignByPdfStream(parm));
     }
 
 }

+ 9 - 8
src/main/java/com/hr/controller/IpAccountController.java

@@ -14,6 +14,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
 
 /**
  * 账户管理
@@ -35,9 +36,9 @@ public class IpAccountController{
      */
     @Operation(summary = "分页查询")
     @GetMapping("/list")
-    public BasePageResult<IpAccountVO> paginQuery(IpAccountParam ipAccountParam){
+    public Mono<BasePageResult<IpAccountVO>> paginQuery(IpAccountParam ipAccountParam){
         BasePageResult<IpAccountVO> ipAccountPOS = ipAccountService.paginQuery(ipAccountParam, ipAccountParam.getPageNum(), ipAccountParam.getPageSize());
-        return ipAccountPOS;
+        return Mono.just(ipAccountPOS);
     }
     
     /** 
@@ -48,10 +49,10 @@ public class IpAccountController{
      */
     @Operation(summary = "新增/更新数据")
     @PostMapping("/saveOrUpdate")
-    public BaseReturnDto<IpAccountVO> saveOrUpdate(@RequestBody IpAccountParam accountParam){
+    public Mono<BaseReturnDto<IpAccountVO>> saveOrUpdate(@RequestBody IpAccountParam accountParam){
         LoginUser user= TokenUtil.getUser();
         ipAccountService.saveOrUpdate(accountParam,user.getUsername(),user.getUserid());
-        return BaseReturnDto.success();
+        return Mono.just(BaseReturnDto.success());
     }
 
     /** 
@@ -62,9 +63,9 @@ public class IpAccountController{
      */
     @Operation(summary = "通过主键删除数据")
     @DeleteMapping("/delete/{id}")
-    public BaseReturnDto<Boolean> deleteById(@PathVariable Long id){
+    public Mono<BaseReturnDto<Boolean>> deleteById(@PathVariable Long id){
         LoginUser user = TokenUtil.getUser();
-        return BaseReturnDto.success(ipAccountService.deleteById(id,user));
+        return Mono.just(BaseReturnDto.success(ipAccountService.deleteById(id,user)));
     }
 
     /**
@@ -75,8 +76,8 @@ public class IpAccountController{
      */
     @Operation(summary = "修改状态")
     @PostMapping("/switchStatus")
-    public BaseReturnDto<Boolean> switchStatus(@RequestBody SwitchStatusParam switchStatusParam){
+    public Mono<BaseReturnDto<Boolean>> switchStatus(@RequestBody SwitchStatusParam switchStatusParam){
         LoginUser user = TokenUtil.getUser();
-        return BaseReturnDto.success(ipAccountService.switchStatus(switchStatusParam,user));
+        return Mono.just(BaseReturnDto.success(ipAccountService.switchStatus(switchStatusParam,user)));
     }
 }

+ 7 - 6
src/main/java/com/hr/controller/IpInterfaceCallbackController.java

@@ -14,6 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
 
 import java.util.List;
 
@@ -33,8 +34,8 @@ public class IpInterfaceCallbackController {
      */
     @Operation(summary = "分页查询接口调用记录")
     @GetMapping("/list")
-    public BasePageResult<IpInterfaceCallVO> queryList(InterfaceCalledQueryParam ipInterfaceCalledQueryParam){
-        return ipOrderService.queryList(ipInterfaceCalledQueryParam);
+    public Mono<BasePageResult<IpInterfaceCallVO>> queryList(InterfaceCalledQueryParam ipInterfaceCalledQueryParam){
+        return Mono.just(ipOrderService.queryList(ipInterfaceCalledQueryParam));
     }
 
     /**
@@ -44,9 +45,9 @@ public class IpInterfaceCallbackController {
      */
     @Operation(summary = "查询接口调用详情")
     @GetMapping("/detail/{id}")
-    public BaseReturnDto<InterfaceCalledDetail> interfaceDetail(@PathVariable Long id){
+    public Mono<BaseReturnDto<InterfaceCalledDetail>> interfaceDetail(@PathVariable Long id){
         InterfaceCalledDetail vo = ipOrderService.interfaceDetail(id);
-        return BaseReturnDto.success(vo);
+        return Mono.just(BaseReturnDto.success(vo));
     }
 
 
@@ -57,8 +58,8 @@ public class IpInterfaceCallbackController {
      */
     @Operation(summary = "查询接口回调记录")
     @GetMapping("/callback/history/{id}")
-    public BaseReturnDto<List<CallbackHistoryVO>> queryList(@PathVariable long id){
+    public Mono<BaseReturnDto<List<CallbackHistoryVO>>> queryList(@PathVariable long id){
         List<CallbackHistoryVO> list = ipOrderService.callbackHistory(id);
-        return BaseReturnDto.success(list);
+        return Mono.just(BaseReturnDto.success(list));
     }
 }

+ 26 - 20
src/main/java/com/hr/controller/IpInterfaceController.java

@@ -17,7 +17,9 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
+import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Mono;
 
 import java.util.List;
 
@@ -43,9 +45,9 @@ public class IpInterfaceController {
      */
     @Operation(summary = "分页查询")
     @GetMapping("/list")
-    public BasePageResult<IpInterfaceVO> paginQuery(IpInterfaceParam ipInterfaceParam){
+    public Mono<BasePageResult<IpInterfaceVO>> paginQuery(IpInterfaceParam ipInterfaceParam){
         BasePageResult<IpInterfaceVO> ipAccountPOS = ipInterfaceService.paginQuery(ipInterfaceParam, ipInterfaceParam.getPageNum(), ipInterfaceParam.getPageSize());
-        return ipAccountPOS;
+        return Mono.just(ipAccountPOS);
     }
     
     /** 
@@ -56,10 +58,13 @@ public class IpInterfaceController {
      */
     @Operation(summary = "新增/更新数据")
     @PostMapping("/saveOrUpdate")
-    public BaseReturnDto<IpAccountVO> saveOrUpdate(@RequestBody IpInterfaceParam ipInterfaceParam){
+    public Mono<BaseReturnDto<IpAccountVO>> saveOrUpdate(@RequestBody IpInterfaceParam ipInterfaceParam){
         LoginUser user= TokenUtil.getUser();
+        if(user==null || user.getUserid()==null || user.getUserid()==0L){
+            throw new RuntimeException("没有找到用户信息");
+        }
         ipInterfaceService.saveOrUpdate(ipInterfaceParam,user.getUsername(),user.getUserid());
-        return BaseReturnDto.success();
+        return Mono.just(BaseReturnDto.success());
     }
 
     /** 
@@ -70,8 +75,9 @@ public class IpInterfaceController {
      */
     @Operation(summary = "通过主键删除数据")
     @DeleteMapping("/delete/{id}")
-    public BaseReturnDto<Boolean> deleteById(@PathVariable Long id){
-        return BaseReturnDto.success(ipInterfaceService.deleteById(id));
+    public Mono<BaseReturnDto<Boolean>> deleteById(@PathVariable Long id){
+        LoginUser user = TokenUtil.getUser();
+        return Mono.just(BaseReturnDto.success(ipInterfaceService.deleteById(id,user)));
     }
 
     /**
@@ -81,8 +87,8 @@ public class IpInterfaceController {
      */
     @Operation(summary = "修改状态")
     @PostMapping("/switchStatus")
-    public BaseReturnDto<Boolean> switchStatus(@RequestBody SwitchStatusParam switchStatusParam){
-        return BaseReturnDto.success(ipInterfaceService.switchStatus(switchStatusParam));
+    public Mono<BaseReturnDto<Boolean>> switchStatus(@RequestBody SwitchStatusParam switchStatusParam){
+        return Mono.just(BaseReturnDto.success(ipInterfaceService.switchStatus(switchStatusParam)));
     }
 
 
@@ -92,8 +98,8 @@ public class IpInterfaceController {
      */
     @Operation(summary = "接口下拉列表")
     @PostMapping("/optionList")
-    public BaseReturnDto<List<NameValueVO>> optionList(){
-        return BaseReturnDto.success(ipInterfaceService.optionList());
+    public Mono<BaseReturnDto<List<NameValueVO>>> optionList(){
+        return Mono.just(BaseReturnDto.success(ipInterfaceService.optionList()));
     }
 
     /**
@@ -101,10 +107,10 @@ public class IpInterfaceController {
      */
     @Operation(summary = "账号配置接口")
     @PostMapping("/interfaceConfig")
-    public BaseReturnDto interfaceConfig(@RequestBody InterfaceConfigParam param){
+    public Mono<BaseReturnDto> interfaceConfig(@RequestBody InterfaceConfigParam param){
         LoginUser user = TokenUtil.getUser();
         ipTokenInterfaceService.interfaceConfig(param,user);
-        return BaseReturnDto.success();
+        return Mono.just(BaseReturnDto.success());
     }
 
 
@@ -113,13 +119,13 @@ public class IpInterfaceController {
      */
     @Operation(summary = "生成 token")
     @PostMapping("/token/generate")
-    public BaseReturnDto<SecretVO> generateToken(){
+    public Mono<BaseReturnDto<SecretVO>> generateToken(){
         SecretVO vo = new SecretVO();
         String secret = RandomStringUtils.random(64, "0123456789abcdef");
         String token = RandomStringUtils.random(32, "0123456789abcdef");
         vo.setToken(token);
         vo.setSecret(secret);
-        return BaseReturnDto.success(vo);
+        return Mono.just(BaseReturnDto.success(vo));
     }
 
 
@@ -128,10 +134,10 @@ public class IpInterfaceController {
      */
     @Operation(summary = "删除账号关联的接口")
     @DeleteMapping("/delAccountInterface/{id}")
-    public BaseReturnDto delAccountInterface(@PathVariable Long id){
+    public Mono<BaseReturnDto> delAccountInterface(@PathVariable Long id){
         LoginUser user = TokenUtil.getUser();
         ipTokenInterfaceService.delAccountInterface(id,user);
-        return BaseReturnDto.success();
+        return Mono.just(BaseReturnDto.success());
     }
 
     /**
@@ -139,9 +145,9 @@ public class IpInterfaceController {
      */
     @Operation(summary = "查询账号下关联的接口列表")
     @PostMapping("/account/ref/list")
-    public BasePageResult<AccountInterfaceVO> accountInterfaceList(@RequestBody AccountInterfaceParam pageParam){
+    public Mono<BasePageResult<AccountInterfaceVO>> accountInterfaceList(@RequestBody AccountInterfaceParam pageParam){
         BasePageResult<AccountInterfaceVO> result = ipTokenInterfaceService.accountInterfaceList(pageParam);
-        return result;
+        return Mono.just(result);
     }
 
     /**
@@ -151,7 +157,7 @@ public class IpInterfaceController {
      */
     @Operation(summary = "修改状态")
     @PostMapping("/account/interface/ref/switchStatus")
-    public BaseReturnDto<Boolean> accountInterfaceRefSwitch(@RequestBody SwitchStatusParam switchStatusParam){
-        return BaseReturnDto.success(ipTokenInterfaceService.switchStatus(switchStatusParam));
+    public Mono<BaseReturnDto<Boolean>> accountInterfaceRefSwitch(@RequestBody SwitchStatusParam switchStatusParam){
+        return Mono.just(BaseReturnDto.success(ipTokenInterfaceService.switchStatus(switchStatusParam)));
     }
 }

+ 3 - 2
src/main/java/com/hr/controller/TestCallBackController.java

@@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
 
 @RestController
 @RequestMapping("/callback")
@@ -15,12 +16,12 @@ public class TestCallBackController {
     private BizHandlerFactory bizHandlerFactory;
 
     @RequestMapping("/test")
-    public Boolean test(@RequestBody JSONObject json) {
+    public Mono<Boolean> test(@RequestBody JSONObject json) {
         // 根据序列号查询到对应的业务id
         String businessNo = "aabbccddee";
         String interfaceNo = "aiwen";
         Boolean result = bizHandlerFactory.doCallBack(interfaceNo,businessNo,json);
-        return result;
+        return Mono.just(result);
 
     }
 

+ 5 - 1
src/main/java/com/hr/externelSystem/AiwenIpService.java

@@ -163,6 +163,10 @@ public class AiwenIpService implements BizHandler<AiwenParam,AiwenParseIpInfoVO>
                 }
 
                 String url = aiwenDto.getUrl() + "/?key=" + aiwenDto.getKey() + "&ip=" + aiwenIpParam.getIp() + "&coordsys=WGS84";
+                Map<String,String> requestMap = new HashMap();
+                requestMap.put("key", aiwenDto.getKey());
+                requestMap.put("ip", aiwenIpParam.getIp());
+                logDto.setRequestParam(JSON.toJSONString(requestMap));
                 logDto.setUrl(url);
                 // 调用接口解析ip地址信息
                 String response = HttpClientUtils.get(url, new HashMap());
@@ -207,7 +211,7 @@ public class AiwenIpService implements BizHandler<AiwenParam,AiwenParseIpInfoVO>
                     log.error("埃文ip地址请求失败:{},接口返回数据格式不正确", aiwenIpParam.getIp());
                 }
             } catch (Exception e) {
-                log.info("埃文ip地址解析异常, {}", e.getMessage());
+                log.error("埃文ip地址解析异常, {},{}", aiwenIpParam.getIp(),e.getMessage());
                 logDto.setErrorMessage("埃文ip地址解析异常");
                 Long counterr = redisService.redisTemplate.opsForValue().increment(curnetkey, 1L);
                 if(counterr%aiwenAlertConfig.getAiwennetworklimitstep()==1) {

+ 5 - 0
src/main/java/com/hr/externelSystem/BizHandlerFactory.java

@@ -50,6 +50,7 @@ public class BizHandlerFactory {
      */
     public BaseReturnDto<Object> dispatch(AggregateRequest req, AggregateQueryDTO dto) {
         IpInterfacePO ipInterfacePO = dto.getIpInterfacePO();
+        log.info("ipInterfacePO:{}",JSON.toJSONString(ipInterfacePO));
         BizHandler handler = getHandler(ipInterfacePO.getInterfaceNo());
         IpOrderPO ipOrderPO = new IpOrderPO();
         IpLogPO ipLogPO = new IpLogPO();
@@ -64,6 +65,7 @@ public class BizHandlerFactory {
             ipOrderPO.setStatus("handle");
             ipOrderRepository.save(ipOrderPO);
             ipLogRepository.save(ipLogPO);
+            log.info("openApiHandle:{}",handler.getRequestClass());
             Object handle = handler.handle(o, ipInterfacePO,logDto);
             ipLogPO.setSystemResponse(JSON.toJSONString(handle));
             String errorMessage = logDto.getErrorMessage();
@@ -75,6 +77,7 @@ public class BizHandlerFactory {
                 ipOrderPO.setStatus("fail");
                 ipLogPO.setStatus("fail");
             }
+
             ipOrderPO.setIid(ipInterfacePO.getId());
             ipOrderPO.setUpdateTime(new Date());
             ipOrderPO.setBusinessNo(logDto.getBusinessNo());
@@ -105,6 +108,7 @@ public class BizHandlerFactory {
         ipOrderPO.setCallbackNum(ipTokenInterfacePO.getCallbackNum());
         ipOrderPO.setCallbackUrl(ipTokenInterfacePO.getCallbackUrl());
         ipOrderPO.setAddTime(new Date());
+        ipOrderPO.setTid(dto.getIpTokenInterfacePO().getId());
         ipOrderPO.setManufacturer(ipInterfacePO.getManufacturer());
 
 
@@ -122,6 +126,7 @@ public class BizHandlerFactory {
         ipOrderPO.setInterfaceName(ipOrder.getInterfaceName());
         ipOrderPO.setAccNo(ipOrder.getAccNo());
         ipOrderPO.setIid(ipOrder.getIid());
+        ipOrderPO.setTid(ipOrder.getTid());
         ipOrderPO.setRefId(ipOrder.getId());
         ipOrderPO.setCallbackUrl(ipOrder.getCallbackUrl());
         ipOrderPO.setAddTime(callDateTime);

+ 6 - 4
src/main/java/com/hr/externelSystem/ESignGenPdfService.java

@@ -33,11 +33,13 @@ public class ESignGenPdfService implements BizHandler<EsignParmDto, EsignReturnD
     @Override
     public EsignReturnDto handle(EsignParmDto esignParmDto, IpInterfacePO ipInterfacePO, ApiLogDto logDto) {
         BaseReturnDto<EsignReturnDto>  rdto=esignService.platformSignByPdfStream(esignParmDto);
-
+        log.info("生成pdf返回的值:{}",rdto);
         logDto.setHttpStatus(String.valueOf(rdto.getCode()));
-        logDto.setUrl(rdto.getData().getOssurl());
-        logDto.setResponseParam(JSONObject.toJSONString(rdto.getData()));
-        logDto.setErrorMessage(rdto.getMsg());
+        logDto.setUrl("http://sdkapi.esign.cn");
+        logDto.setResponseParam(JSONObject.toJSONString(rdto));
+        if(rdto.getCode()!=200){
+            logDto.setErrorMessage(rdto.getMsg());
+        }
         logDto.setBusinessNo(esignParmDto.getOssFileName());
 
         return rdto.getData();

+ 10 - 2
src/main/java/com/hr/externelSystem/GeestService.java

@@ -68,12 +68,20 @@ public class GeestService implements BizHandler<GeestParam, GeestVO> {
             logDto.setResponseParam(responseStr);
             log.info("极验验证结果:{}",responseStr);
             GeetestDTO dto = JSON.parseObject(responseStr, GeetestDTO.class);
-            logDto.setHttpStatus(dto.getStatus().toString());
-            if(dto.getStatus() == 200){
+            if(dto.getStatus() != null && dto.getStatus() == 200){
                 mobile = dto.getResult();
                 vo.setCode(200);
                 vo.setMobile(mobile);
             }
+            if(dto.getStatus()!= null){
+                logDto.setHttpStatus(dto.getStatus().toString());
+                if(dto.getStatus() == 200){
+                    mobile = dto.getResult();
+                    vo.setCode(200);
+                    vo.setMobile(mobile);
+                }
+            }
+            logDto.setErrorMessage(dto.getError_msg());
         } catch (SignatureException e) {
             log.error("极验--解密失败",e);
             vo.setErrMsg("解密失败");

+ 5 - 3
src/main/java/com/hr/externelSystem/HrGenPdfService.java

@@ -35,9 +35,11 @@ public class HrGenPdfService implements BizHandler<EsignParmDto, EsignReturnDto>
 
         BaseReturnDto<EsignReturnDto> rdto=esignService.hrSignByPdfStream(esignParmDto);
         logDto.setHttpStatus(String.valueOf(rdto.getCode()));
-        logDto.setUrl(rdto.getData().getOssurl());
-        logDto.setResponseParam(JSONObject.toJSONString(rdto.getData()));
-        logDto.setErrorMessage(rdto.getMsg());
+        logDto.setUrl("http://sdkapi.esign.cn");
+        logDto.setResponseParam(JSONObject.toJSONString(rdto));
+        if(rdto.getCode()!=200){
+            logDto.setErrorMessage(rdto.getMsg());
+        }
         logDto.setBusinessNo(esignParmDto.getOssFileName());
         return rdto.getData();
     }

+ 1 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileNameService.java

@@ -47,6 +47,7 @@ public class ShujubaoMobileNameService implements BizHandler<ShujubaoMobileNameP
             if (null != resultObj && "10000".equals(resultObj.getString("code")) && null != resultObj.getJSONObject("data") && "2".equals(resultObj.getJSONObject("data").getString("state"))){
                 return false;
             }
+            logDto.setErrorMessage(resultObj.getString("message"));
         } catch (Exception e){
             log.info("phone name check error data:{}  exception:{}", shujubaoMobileNameParam, e.getMessage());
         }

+ 1 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileOwnerService.java

@@ -70,6 +70,7 @@ public class ShujubaoMobileOwnerService implements BizHandler<ShujubaoMobileOwne
 
                 return result;
             }
+            logDto.setErrorMessage(resultObj.getString("message"));
         } catch (Exception e){
             log.info("手机号归属地解析失败, 手机号: {}, exception:{}", shujubaoMobileNameParam.getMobile(), e.getMessage());
             return null;

+ 1 - 0
src/main/java/com/hr/externelSystem/ShujubaoMobileStateService.java

@@ -52,6 +52,7 @@ public class ShujubaoMobileStateService implements BizHandler<ShujubaoMobileOwne
                     return false;
                 }
             }
+            logDto.setErrorMessage(resultObj.getString("message"));
         } catch (Exception e){
             log.info("phone state check error data:{}  exception:{}", shujubaoMobileNameParam.getMobile(), e.getMessage());
         }

+ 1 - 0
src/main/java/com/hr/externelSystem/ShujubaoThreeElementVerificationService.java

@@ -67,6 +67,7 @@ public class ShujubaoThreeElementVerificationService implements BizHandler<Shuju
                     }
                 }
             }
+            logDto.setErrorMessage(respJson.getString("message"));
         } catch (Exception e) {
             log.info("三要素校验接口调用失败, 失败原因: {},", e.getMessage(), e);
         }

+ 4 - 1
src/main/java/com/hr/externelSystem/TencentFaceService.java

@@ -23,6 +23,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -34,6 +35,7 @@ import java.util.UUID;
  */
 @Data
 @Slf4j
+@Service
 public class TencentFaceService implements BizHandler<TencentFaceParam, OcrParamVO>{
 
     private final String CODE = "0";
@@ -96,6 +98,7 @@ public class TencentFaceService implements BizHandler<TencentFaceParam, OcrParam
                     ocrParamVO.setLicence(tencentFaceDto.getLicence());
                     return ocrParamVO;
                 } else {
+                    logDto.setErrorMessage(resultJson.getString("msg"));
                     log.warn("ocr param interface error {},idNo {}", resultJson.getString("msg"),tencentFaceParam.getIdCardNo());
                     throw new RuntimeException("ocr param interface error");
                 }
@@ -194,7 +197,7 @@ public class TencentFaceService implements BizHandler<TencentFaceParam, OcrParam
 
     @Override
     public Class<TencentFaceParam> getRequestClass() {
-        return null;
+        return TencentFaceParam.class;
     }
 
     @Override

+ 3 - 0
src/main/java/com/hr/externelSystem/TencentOrcSignService.java

@@ -24,7 +24,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 
+import java.io.Serial;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.UUID;
@@ -34,6 +36,7 @@ import java.util.UUID;
  */
 @Data
 @Slf4j
+@Service
 public class TencentOrcSignService implements BizHandler<TencentOcrSignParam, OcrParamVO>{
 
     private final String CODE = "0";

+ 7 - 1
src/main/java/com/hr/repository/domain/IpOrderPO.java

@@ -138,7 +138,13 @@ public class IpOrderPO {
     @Schema(description = "更新人姓名")
 	private String updateUserName;
 
-	/**	
+
+
+    /** tid,; */
+    @Column(name="tid")
+    private Long tid ;
+
+	/**
 	关联调用记录
 	*/
     @Column(name = "ref_id")

+ 2 - 0
src/main/java/com/hr/repository/jpa/Demo1Jpa.java

@@ -16,6 +16,8 @@ import java.util.List;
 
 public interface Demo1Jpa extends JpaRepository<Demo1Entity, String> {
 
+    public Demo1Entity findByFid(Long id);
+
 
     public List<TestEntity> findByFname(String name);
 

+ 3 - 0
src/main/java/com/hr/repository/jpa/IpInterfaceRepository.java

@@ -25,4 +25,7 @@ public interface IpInterfaceRepository extends JpaRepository<IpInterfacePO,Long>
 
     BasePageResult<IpInterfaceVO> queryPage(@Param("interfaceName") String interfaceName, @Param("statusList") List<String> statusList);
 
+    Integer countEnableInterfaceRef(@Param("iid") Long iid);
+
+    Integer countEnableAccountRef(@Param("id") Long id);
 }

+ 4 - 0
src/main/java/com/hr/repository/jpa/IpTokenInterfaceRepository.java

@@ -18,4 +18,8 @@ public interface IpTokenInterfaceRepository extends JpaRepository<IpTokenInterfa
     IpTokenInterfacePO findByAidAndIid(Long aid, Long iid);
 
     BasePageResult<IpTokenInterfacePO> queryList(@Param("aid") Long aid, @Param("statusList") List<String> statusList);
+
+    List<IpTokenInterfacePO> queryRefList(@Param("accountId") Long accountId, @Param("interfaceId") Long interfaceId);
+
+    IpTokenInterfacePO getByAidAndIid(@Param("accountId") Long accountId, @Param("interfaceId") Long interfaceId);
 }

+ 19 - 0
src/main/java/com/hr/repository/service/DemoService.java

@@ -3,6 +3,7 @@ package com.hr.repository.service;
 import com.alibaba.fastjson2.JSONObject;
 import com.hr.dto.QueryDto;
 import com.hr.fegin.dto.MyDemoDto;
+import com.hr.repository.domain.Demo1Entity;
 import com.hr.repository.domain.TestEntity;
 import com.hr.repository.jpa.Demo1Jpa;
 import com.hr.repository.jpa.TestJpa;
@@ -24,6 +25,24 @@ public class DemoService {
     @Autowired
     private Demo1Jpa demo1Jpa;
 
+
+    public void savee(){
+        Demo1Entity md=demo1Jpa.findByFid(1L);
+        if(md!=null){
+            md.setFname("test");
+        }
+        else{
+            md=new Demo1Entity();
+            md.setFname("test");
+        }
+        log.info("save test");
+        demo1Jpa.save(md);
+
+//        if(1==1){
+//            throw new RuntimeException("测试事务");
+//        }
+    }
+
     @Transactional
     public void insertLog(){
         TestEntity tt1=new TestEntity();

+ 28 - 6
src/main/java/com/hr/repository/service/impl/EsignServiceImpl.java

@@ -291,12 +291,34 @@ public class EsignServiceImpl implements EsignService {
 //                signPos1.setAddSignTime(true);// 是否显示本地签署时间,需要width设置92以上才可以看到时间
                 posBeansUser.add(signPos1);
                 platformSignParam.setPosBeans(posBeansUser);//签章位置信息
-                signRst=signHelper.platformSign(platformSignParam);
-                if (signRst.getErrCode() != 0) {
-                    String typeMsg="Esign平台自身";
-                    throw new SuperException(
-                            MessageFormat.format("{0}用户签章,签署失败: errCode = {1},msg = {2}",
-                                    typeMsg, signRst.getErrCode(), signRst.getMsg()));
+                try {
+                    signRst = signHelper.platformSign(platformSignParam);
+                    if (signRst.getErrCode() != 0) {
+                        String typeMsg = "Esign平台自身";
+                        throw new SuperException(
+                                MessageFormat.format("{0}用户签章,签署失败: errCode = {1},msg = {2}",
+                                        typeMsg, signRst.getErrCode(), signRst.getMsg()));
+                    }
+                }catch (Exception ex1) {
+                    log.error("通过E签宝签章失败:", ex1);
+                    //如果e签宝次数用完了,则需要调用平台自签章,111111
+                    try {
+                        log.info("通过系统重新签章");
+                        //将e签宝的参数进行调整以便适应本地生成用户签名
+                        if (parm.getWidthUser() != null) {
+                            parm.setWidthUser(parm.getWidthUser() - 20);
+                        }
+                        if (parm.getPosYUser() != null) {
+                            parm.setPosYUser(parm.getPosYUser() - 49);
+                        }
+                        if (parm.getPosXUser() != null) {
+                            parm.setPosXUser(parm.getPosXUser() - 50);
+                        }
+                        return hrSignByPdfStream(parm);
+
+                    } catch (Exception e1) {
+                        log.error("签章Pdf2,非E签宝,失败:", e1);
+                    }
                 }
 
 

+ 2 - 3
src/main/java/com/hr/repository/service/impl/IpOrderServiceImpl.java

@@ -94,10 +94,9 @@ public class IpOrderServiceImpl implements IpOrderService {
     public InterfaceCalledDetail interfaceDetail(Long id) {
         IpOrderPO ipOrderPO = ipOrderRepository.findById(id).get();
         ipOrderPO.getAccNo();
-        IpAccountPO accountPO = ipAccountRepository.findByAccNo(ipOrderPO.getAccNo());
         IpLogPO ipLog = ipLogRepository.findByOid(ipOrderPO.getId());
-        IpInterfacePO ipInterfacePO = ipInterfaceRepository.findById(ipOrderPO.getIid()).get();
-        IpTokenInterfacePO ipTokenInterfacePO = ipTokenInterfaceRepository.findByAidAndIid(accountPO.getId(), ipInterfacePO.getId());
+        IpTokenInterfacePO ipTokenInterfacePO = ipTokenInterfaceRepository.findById(ipOrderPO.getTid()).get();
+        IpInterfacePO ipInterfacePO = ipInterfaceRepository.findById(ipTokenInterfacePO.getIid()).get();
         Long tid = ipTokenInterfacePO.getTid();
         IpTokenPO ipTokenPO = ipTokenRepository.findById(tid).get();
         InterfaceCalledDetail vo = new InterfaceCalledDetail();

+ 5 - 5
src/main/java/com/hr/service/IpInterfaceService.java

@@ -1,6 +1,5 @@
 package com.hr.service;
 
-import com.github.pagehelper.PageInfo;
 import com.hr.param.InterfaceConfigParam;
 import com.hr.param.IpInterfaceParam;
 import com.hr.param.SwitchStatusParam;
@@ -8,7 +7,7 @@ import com.hr.repository.domain.IpInterfacePO;
 import com.hr.vo.IpInterfaceVO;
 import com.hr.vo.NameValueVO;
 import com.yy.basedevelop.common.data.BasePageResult;
-import org.springframework.data.domain.Page;
+import com.yy.basedevelop.dto.LoginUser;
 
 import java.util.List;
 
@@ -50,13 +49,14 @@ public interface IpInterfaceService{
      * @return 实例对象
      */
     void update(IpInterfacePO IpInterfacePO);
-    /** 
+    /**
      * 通过主键删除数据
      *
-     * @param iid 主键
+     * @param iid  主键
+     * @param user
      * @return 是否成功
      */
-    boolean deleteById(Long iid);
+    boolean deleteById(Long iid, LoginUser user);
 
     void saveOrUpdate(IpInterfaceParam ipInterfaceParam, String username, Long userid);
 

+ 11 - 2
src/main/java/com/hr/service/impl/IpAccountServiceImpl.java

@@ -9,6 +9,7 @@ import com.hr.param.IpAccountParam;
 import com.hr.param.SwitchStatusParam;
 import com.hr.repository.domain.IpAccountPO;
 import com.hr.repository.jpa.IpAccountRepository;
+import com.hr.repository.jpa.IpInterfaceRepository;
 import com.hr.service.IpAccountService;
 import com.hr.util.SnowflakeIdWorker;
 import com.hr.vo.IpAccountVO;
@@ -35,8 +36,12 @@ public class IpAccountServiceImpl implements IpAccountService {
     @Autowired
     private IpAccountRepository ipAccountRepository;
 
+    @Autowired
+    private IpInterfaceRepository ipInterfaceRepository;
+
+
     private static final Cache<String, IpAccountVO> QUERY_CACHE = CacheBuilder.newBuilder()
-            .expireAfterWrite(100, TimeUnit.SECONDS)
+            .expireAfterWrite(1, TimeUnit.SECONDS)
             .build();
 
     /** 
@@ -88,7 +93,7 @@ public class IpAccountServiceImpl implements IpAccountService {
 
     @Override
     public IpAccountVO queryByAccountNo(String accountNo) {
-        String key = "queryByAccountNo";
+        String key = "queryByAccountNo:" + accountNo;
         IpAccountVO cacheValue = QUERY_CACHE.getIfPresent(key);
         if(cacheValue != null){
             return cacheValue;
@@ -155,6 +160,10 @@ public class IpAccountServiceImpl implements IpAccountService {
      */
     public boolean deleteById(Long id, LoginUser user){
         IpAccountPO ipAccountPO = ipAccountRepository.findById(id).get();
+        Integer countNum = ipInterfaceRepository.countEnableAccountRef(id);
+        if(countNum > 0){
+            throw new RuntimeException("存在激活的接口关联,请先停用关联的接口");
+        }
         ipAccountPO.setStatus("delete");
         ipAccountPO.setUpdateTime(new Date());
         ipAccountPO.setUpdateUserId(user.getUserid());

+ 20 - 7
src/main/java/com/hr/service/impl/IpInterfaceServiceImpl.java

@@ -1,7 +1,6 @@
 package com.hr.service.impl;
 
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
 import com.hr.param.InterfaceConfigParam;
@@ -14,6 +13,7 @@ import com.hr.util.SnowflakeIdWorker;
 import com.hr.vo.IpInterfaceVO;
 import com.hr.vo.NameValueVO;
 import com.yy.basedevelop.common.data.BasePageResult;
+import com.yy.basedevelop.dto.LoginUser;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -34,7 +34,7 @@ public class IpInterfaceServiceImpl implements IpInterfaceService {
     private IpInterfaceRepository ipInterfaceRepository;
 
     private static final Cache<String, IpInterfaceVO> QUERY_CACHE = CacheBuilder.newBuilder()
-            .expireAfterWrite(100, TimeUnit.SECONDS)
+            .expireAfterWrite(1, TimeUnit.SECONDS)
             .build();
     
     /** 
@@ -88,7 +88,7 @@ public class IpInterfaceServiceImpl implements IpInterfaceService {
 
     @Override
     public IpInterfaceVO queryByInterfaceCode(String interfaceCode) {
-        String key = "queryByInterfaceCode";
+        String key = "queryByInterfaceCode:" + interfaceCode;
         IpInterfaceVO vo = QUERY_CACHE.getIfPresent(key);
         if(vo != null){
             return vo;
@@ -109,7 +109,7 @@ public class IpInterfaceServiceImpl implements IpInterfaceService {
     @Override
     public List<NameValueVO> optionList() {
         List<IpInterfacePO> list = ipInterfaceRepository.findAll();
-        List<IpInterfacePO> resultList = list.stream().filter(item -> item.getStatus().equals("normal")).collect(Collectors.toList());
+        List<IpInterfacePO> resultList = list.stream().filter(item -> !item.getStatus().equals("delete")).collect(Collectors.toList());
         List<NameValueVO> result = new ArrayList<>();
         resultList.forEach(item -> {
             NameValueVO vo = new NameValueVO();
@@ -174,11 +174,24 @@ public class IpInterfaceServiceImpl implements IpInterfaceService {
     /**
      * 通过主键删除数据
      *
-     * @param iid 主键
+     * @param iid  主键
+     * @param user
      * @return 是否成功
      */
-    public boolean deleteById(Long iid){
-        ipInterfaceRepository.deleteById(iid);
+    public boolean deleteById(Long iid, LoginUser user){
+        IpInterfacePO ipInterfacePO = ipInterfaceRepository.findById(iid).get();
+        if(ipInterfacePO == null){
+            return false;
+        }
+        Integer countNum = ipInterfaceRepository.countEnableInterfaceRef(iid);
+        if(countNum > 0){
+            throw new RuntimeException("存在激活的接口关联,请先停用关联的接口");
+        }
+        ipInterfacePO.setStatus("delete");
+        ipInterfacePO.setUpdateTime(new Date());
+        ipInterfacePO.setUpdateUserId(user.getUserid());
+        ipInterfacePO.setUpdateUserName(user.getUsername());
+        ipInterfaceRepository.save(ipInterfacePO);
         return true;
     }
 }

+ 29 - 9
src/main/java/com/hr/service/impl/IpTokenInterfaceServiceImpl.java

@@ -27,6 +27,7 @@ import com.yy.basedevelop.common.data.BasePageResult;
 import com.yy.basedevelop.common.util.ruoyi.utils.DateUtils;
 import com.yy.basedevelop.dto.LoginUser;
 import jakarta.persistence.criteria.Predicate;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,7 @@ import java.util.stream.Collectors;
  * @author : http://www.yonsum.com
  * @date : 2025-10-10
  */
+@Slf4j
 @Service
 public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
     @Autowired
@@ -53,7 +55,7 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
     private IpInterfaceRepository ipInterfaceRepository;
 
     private static final Cache<String, AggregateQueryDTO> QUERY_CACHE = CacheBuilder.newBuilder()
-            .expireAfterWrite(100, TimeUnit.SECONDS)
+            .expireAfterWrite(1, TimeUnit.SECONDS)
             .build();
     @Autowired
     private IpAccountService ipAccountService;
@@ -117,7 +119,11 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
             throw new RuntimeException("记录不存在");
         }
         IpTokenInterfacePO ipTokenInterfacePO = optional.get();
-
+        Long iid = ipTokenInterfacePO.getIid();
+        IpInterfacePO ipInterfacePO = ipInterfaceRepository.findById(iid).get();
+        if ("delete".equals(ipInterfacePO.getStatus()) && "normal".equals(switchStatusParam.getStatus())) {
+            throw new RuntimeException("接口已被删除,无法启用");
+        }
         ipTokenInterfacePO.setStatus(switchStatusParam.getStatus());
         ipTokenInterfaceRepository.save(ipTokenInterfacePO);
         return true;
@@ -172,10 +178,12 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
             vo.setToken(ipTokenPO.getToken());
             vo.setRemark(ipTokenPO.getRemark());
             IpInterfacePO ipInterfacePO = interfaceMap.get(item.getIid());
-            vo.setInterfaceCode(ipInterfacePO.getInterfaceNo());
-            vo.setInterfaceName(ipInterfacePO.getInterfaceName());
-            vo.setInterfaceId(ipInterfacePO.getId());
-            vo.setManufacturer(ipInterfacePO.getManufacturer());
+            if(ipInterfacePO != null){
+                vo.setInterfaceCode(ipInterfacePO.getInterfaceNo());
+                vo.setInterfaceName(ipInterfacePO.getInterfaceName());
+                vo.setInterfaceId(ipInterfacePO.getId());
+                vo.setManufacturer(ipInterfacePO.getManufacturer());
+            }
             vo.setCallback(item.getIsCallback());
             vo.setCallbackUrl(item.getCallbackUrl());
             return vo;
@@ -187,7 +195,7 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
 
     @Override
     public AggregateQueryDTO queryConfigByInterfaceCodeAndAccountNo(Long accountId, Long interfaceId) {
-        String key = "queryConfigByInterfaceCodeAndAccountNo";
+        String key = "queryConfigByInterfaceCodeAndAccountNo:" + accountId + ":" + interfaceId;
         AggregateQueryDTO aggregateQueryDTO = QUERY_CACHE.getIfPresent(key);
         if(aggregateQueryDTO != null){
             return aggregateQueryDTO;
@@ -201,8 +209,10 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
             IpTokenInterfacePO po = new IpTokenInterfacePO();
             po.setAid(accountId);
             po.setIid(interfaceId);
+            po.setStatus("normal");
             Example<IpTokenInterfacePO> example = Example.of(po, matcher);
             List<IpTokenInterfacePO> interfacePOList = ipTokenInterfaceRepository.findAll(example);
+            log.info("interfacePOList:{},{},{}",accountId,interfaceId,interfacePOList);
             if(!interfacePOList.isEmpty()){
                 IpTokenInterfacePO first = interfacePOList.getFirst();
                 Long tid = first.getTid();
@@ -247,6 +257,15 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
         IpTokenPO ipTokenPO;
         // 校验唯一性
         if(id != null){
+            List<IpTokenInterfacePO> interfaceList = ipTokenInterfaceRepository.queryRefList(param.getAccountId(), param.getInterfaceId());
+            if(!interfaceList.isEmpty()){
+                for (IpTokenInterfacePO tokenInterfacePO : interfaceList) {
+                    if(!tokenInterfacePO.getId().equals(id)){
+                        throw new RuntimeException("该账号下已存在对应接口");
+                    }
+                }
+            }
+
             ipTokenInterfacePO = ipTokenInterfaceRepository.findById(param.getId()).get();
             ipTokenPO = ipTokenRepository.findById(ipTokenInterfacePO.getTid()).get();
             if(ipTokenPO == null){
@@ -257,8 +276,8 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
                 throw new RuntimeException("参数异常");
             }
         }else{
-            IpTokenInterfacePO ipTokenInterfacePO1 = ipTokenInterfaceRepository.findByAidAndIid(param.getAccountId(), param.getInterfaceId());
-            if(ipTokenInterfacePO1 != null){
+            List<IpTokenInterfacePO> interfaceList = ipTokenInterfaceRepository.queryRefList(param.getAccountId(), param.getInterfaceId());
+            if(!interfaceList.isEmpty()){
                 throw new RuntimeException("该账号下已存在对应接口");
             }
 
@@ -275,6 +294,7 @@ public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
             ipTokenPO.setAddUserName(user.getUsername());
             ipTokenPO.setAid(param.getAccountId());
             ipTokenPO.setId(SnowflakeIdWorker.nextId());
+            ipTokenPO.setAddTime(new Date());
             ipTokenInterfacePO.setTid(ipTokenPO.getId());
         }
         ipTokenPO.setRemark(param.getRemark());

+ 3 - 1
src/main/java/com/hr/vo/IpInterfaceCallVO.java

@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.Date;
+
 @Data
 public class IpInterfaceCallVO {
 
@@ -27,5 +29,5 @@ public class IpInterfaceCallVO {
 
     @Schema(description = "创建时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    private String addTime;
+    private Date addTime;
 }

+ 1 - 1
src/main/resources/logback.xml

@@ -65,7 +65,7 @@
 
     <logger name="com.hr" level="info" />
     <logger name="com.ruoyi" level="info" />
-    <logger name="com.yy.basedevelop.common" level="info" />
+    <logger name="com.yy.basedevelop" level="info" />
     <logger name="org.springframework" level="info" />
 
     <root level="info">

+ 1 - 1
src/main/resources/mapper/IpAccountMapper.xml

@@ -6,6 +6,6 @@
 
 
     <select id="queryList" resultType="com.hr.vo.IpAccountVO">
-        select * from ip_account t where t.acc_no like '%'||:accNo||'%' and status in(:statusList)
+        select * from ip_account t where t.acc_no like '%'||:accNo||'%' and status in(:statusList) order by id desc
     </select>
 </mapper>

+ 7 - 1
src/main/resources/mapper/IpInterfaceMapper.xml

@@ -21,6 +21,12 @@
         where 1 = 1 and ord.ref_id = :id
     </select>
     <select id="queryPage" resultType="com.hr.vo.IpInterfaceVO">
-        select * from ip_interface where 1=1 and interface_name like '%'||:interfaceName||'%' and status in (:statusList)
+        select * from ip_interface where 1=1 and interface_name like '%'||:interfaceName||'%' and status in (:statusList) order by id desc
+    </select>
+    <select id="countEnableInterfaceRef" resultType="java.lang.Integer">
+        select count(*) from ip_token_interface where status = 'normal' and iid = :iid
+    </select>
+    <select id="countEnableAccountRef" resultType="java.lang.Integer">
+        select count(*) from ip_token_interface where status = 'normal' and aid = :id
     </select>
 </mapper>

+ 1 - 0
src/main/resources/mapper/IpLogMapper.xml

@@ -17,5 +17,6 @@
         from ip_log log
         left join ip_order ord on ord.id = log.oid
         where 1 =1 and ref_id = 0 and  ord.id =:id and ord.acc_no = :accountNo and  ord.interface_name like '%'||:interfaceName||'%'
+        order by ord.id desc
     </select>
 </mapper>

+ 7 - 1
src/main/resources/mapper/IpTokenInterfaceMapper.xml

@@ -6,6 +6,12 @@
 
 
     <select id="queryList" resultType="com.hr.repository.domain.IpTokenInterfacePO">
-        select * from ip_token_interface where 1=1 and aid = :aid and status in(:statusList)
+        select * from ip_token_interface where 1=1 and aid = :aid and status in(:statusList) order by id desc
+    </select>
+    <select id="queryRefList" resultType="com.hr.repository.domain.IpTokenInterfacePO">
+        select * from ip_token_interface where 1=1 and aid = :accountId and iid = :interfaceId and status != 'delete'
+    </select>
+    <select id="getByAidAndIid" resultType="com.hr.repository.domain.IpTokenInterfacePO">
+        select * from ip_token_interface where 1=1 and aid = :accountId and iid = :interfaceId and status != 'delete'
     </select>
 </mapper>