Browse Source

增加基础菜单功能

longhu 1 tháng trước cách đây
mục cha
commit
f7b7299463
34 tập tin đã thay đổi với 1857 bổ sung0 xóa
  1. 8 0
      pom.xml
  2. 92 0
      src/main/java/com/hr/controller/IpAccountController.java
  3. 21 0
      src/main/java/com/hr/param/IpAccountParam.java
  4. 43 0
      src/main/java/com/hr/repository/domain/IpAccountPO.java
  5. 46 0
      src/main/java/com/hr/repository/domain/IpInterfacePO.java
  6. 54 0
      src/main/java/com/hr/repository/domain/IpLogPO.java
  7. 85 0
      src/main/java/com/hr/repository/domain/IpOrderPO.java
  8. 46 0
      src/main/java/com/hr/repository/domain/IpTokenInterfacePO.java
  9. 45 0
      src/main/java/com/hr/repository/domain/IpTokenPO.java
  10. 21 0
      src/main/java/com/hr/repository/jpa/IpAccountRepository.java
  11. 17 0
      src/main/java/com/hr/repository/jpa/IpInterfaceRepository.java
  12. 18 0
      src/main/java/com/hr/repository/jpa/IpLogRepository.java
  13. 17 0
      src/main/java/com/hr/repository/jpa/IpOrderRepository.java
  14. 16 0
      src/main/java/com/hr/repository/jpa/IpTokenInterfaceRepository.java
  15. 17 0
      src/main/java/com/hr/repository/jpa/IpTokenRepository.java
  16. 53 0
      src/main/java/com/hr/repository/service/IpInterfaceService.java
  17. 53 0
      src/main/java/com/hr/repository/service/IpLogService.java
  18. 52 0
      src/main/java/com/hr/repository/service/IpOrderService.java
  19. 52 0
      src/main/java/com/hr/repository/service/IpTokenInterfaceService.java
  20. 52 0
      src/main/java/com/hr/repository/service/IpTokenService.java
  21. 79 0
      src/main/java/com/hr/repository/service/impl/IpInterfaceServiceImpl.java
  22. 86 0
      src/main/java/com/hr/repository/service/impl/IpLogServiceImpl.java
  23. 80 0
      src/main/java/com/hr/repository/service/impl/IpOrderServiceImpl.java
  24. 85 0
      src/main/java/com/hr/repository/service/impl/IpTokenInterfaceServiceImpl.java
  25. 86 0
      src/main/java/com/hr/repository/service/impl/IpTokenServiceImpl.java
  26. 57 0
      src/main/java/com/hr/service/IpAccountService.java
  27. 110 0
      src/main/java/com/hr/service/impl/IpAccountServiceImpl.java
  28. 173 0
      src/main/java/com/hr/util/SnowflakeIdWorker.java
  29. 38 0
      src/main/java/com/hr/vo/IpAccountVO.java
  30. 41 0
      src/main/java/com/hr/vo/IpInterfaceVO.java
  31. 51 0
      src/main/java/com/hr/vo/IpLogVO.java
  32. 83 0
      src/main/java/com/hr/vo/IpOrderVO.java
  33. 40 0
      src/main/java/com/hr/vo/IpTokenInterfaceVO.java
  34. 40 0
      src/main/java/com/hr/vo/IpTokenVO.java

+ 8 - 0
pom.xml

@@ -110,6 +110,14 @@
         </dependency>
 
 
+        <dependency>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>1.6.9</version>
+        </dependency>
+
+
+
 
 
         <!-- 链路追踪依赖 -->

+ 92 - 0
src/main/java/com/hr/controller/IpAccountController.java

@@ -0,0 +1,92 @@
+package com.hr.controller;
+
+import com.hr.common.core.context.SecurityContextHolder;
+import com.hr.param.IpAccountParam;
+import com.hr.repository.domain.IpAccountPO;
+import com.hr.service.IpAccountService;
+import com.hr.vo.IpAccountVO;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 账户管理
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@RestController
+@RequestMapping("/IpAccountPO")
+@Tag(name = "账户管理")
+public class IpAccountController{
+    @Autowired
+    private IpAccountService ipAccountService;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param aid 主键
+     * @return 实例对象
+     */
+    @Operation(summary = "通过ID查询单条数据")
+    @GetMapping("{aid}")
+    public ResponseEntity<IpAccountVO> queryById(@PathVariable("aid") Long aid){
+        return ResponseEntity.ok(ipAccountService.queryById(aid));
+    }
+    
+    /** 
+     * 分页查询
+     *
+     * @param IpAccountPO 筛选条件
+     * @param pageRequest 分页对象
+     * @return 查询结果
+     */
+    @Operation(summary = "分页查询")
+    @GetMapping
+    public Page<IpAccountPO> paginQuery(IpAccountPO IpAccountPO, PageRequest pageRequest){
+        return ipAccountService.paginQuery(IpAccountPO, pageRequest.getPageNumber(), pageRequest.getPageSize());
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    @Operation(summary = "新增/更新数据")
+    @PostMapping
+    public ResponseEntity<IpAccountVO> saveOrUpdate(@RequestBody IpAccountParam accountParam){
+        String userName = SecurityContextHolder.getUserName();
+        Long userId = SecurityContextHolder.getUserId();
+        ipAccountService.saveOrUpdate(accountParam,userName,userId);
+        return ResponseEntity.ok().build();
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    @Operation(summary = "更新数据")
+    @PutMapping
+    public ResponseEntity edit(IpAccountPO IpAccountPO){
+        ipAccountService.update(IpAccountPO);
+        return ResponseEntity.ok("success");
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param aid 主键
+     * @return 是否成功
+     */
+    @Operation(summary = "通过主键删除数据")
+    @DeleteMapping
+    public ResponseEntity<Boolean> deleteById(Long aid){
+        return ResponseEntity.ok(ipAccountService.deleteById(aid));
+    }
+}

+ 21 - 0
src/main/java/com/hr/param/IpAccountParam.java

@@ -0,0 +1,21 @@
+package com.hr.param;
+
+import lombok.Data;
+
+ /**
+ * 账户表;IpAccount数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+public class IpAccountParam{
+    /** 主键 */
+    private Long id ;
+    /** 账户编号 */
+    private String accNo ;
+    /** 备注 */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除 */
+    private String accStatus ;
+
+}

+ 43 - 0
src/main/java/com/hr/repository/domain/IpAccountPO.java

@@ -0,0 +1,43 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import lombok.Data;
+import org.springframework.web.bind.annotation.ModelAttribute;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+ /**
+ * 账户表;IpAccount数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+@Entity(name="ip_account")
+public class IpAccountPO implements Serializable,Cloneable{
+    @Id
+    /** 主键 */
+    private Long id ;
+    /** 账户编号 */
+    private String accNo ;
+    /** 备注 */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除 */
+    private String accStatus ;
+    /** 创建时间 */
+    private LocalDateTime addTime ;
+    /** 更新时间 */
+    private LocalDateTime updateTime ;
+    /** 创建人id */
+    private Long addUserId ;
+    /** 更新人id */
+    private Long updateUserId ;
+    /** 创建人姓名 */
+    private String addUserName ;
+    /** 更新人姓名 */
+    private String updateUserName ;
+}

+ 46 - 0
src/main/java/com/hr/repository/domain/IpInterfacePO.java

@@ -0,0 +1,46 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+ /**
+ * 接口表;IpInterface数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+@Entity(name="ip_interface")
+public class IpInterfacePO implements Serializable,Cloneable{
+
+    /** 主键,; */
+    @Id
+    private Long id ;
+    /** 接口名称,名称唯一,; */
+    private String interfaceName ;
+    /** 接口厂商,; */
+    private String manufacturer ;
+    /** 备注,; */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除,; */
+    private String interfaceStatus ;
+    /** 接口配置,JSON格式的配置文件,存放接口参数,; */
+    private String interfaceConfig ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+
+}

+ 54 - 0
src/main/java/com/hr/repository/domain/IpLogPO.java

@@ -0,0 +1,54 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 接口日志表;IpLog数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+@Entity(name="ip_log")
+public class IpLogPO implements Serializable,Cloneable{
+
+    @Id
+    /** 主键,; */
+    private Long id ;
+    /** 调用记录表主键,; */
+    private String oid ;
+    /** 调用编号(业务编号),唯一,格式为年月日时分秒毫秒加6位随机数
+20250918010256001000001,; */
+    private String orderNo ;
+    /** 执行类型,request请求,callback回调,; */
+    private String executeType ;
+    /** 请求地址/回调地址,如果是请求类型则记录请求地址。若是回调类型则记录回调地址。,; */
+    private String url ;
+    /** 请求状态,handle处理中,success成功,fail失败,; */
+    private String status ;
+    /** 请求参数,临时存储json格式,通过定时任务上传到OSS后更换为oss存储url,; */
+    private String requestParam ;
+    /** 响应结果,临时存储json格式,通过定时任务上传到OSS后更换为oss存储url,; */
+    private String responseResult ;
+    /** 响应状态码,; */
+    private String httpStatus ;
+    /** 异常信息,存储调用时的各种程序异常信息,; */
+    private String msg ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+    
+}

+ 85 - 0
src/main/java/com/hr/repository/domain/IpOrderPO.java

@@ -0,0 +1,85 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 调用记录表;IpOrder数据表的PO对象
+ *
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+@Entity(name = "ip_order")
+public class IpOrderPO implements Serializable, Cloneable {
+
+    @Id
+    /**
+     * 主键,;
+     */
+    private Long id;
+    /**
+     * 调用编号(业务编号),唯一,格式为年月日时分秒毫秒加6位随机数20250918010256001000001,;
+     */
+    private String orderNo;
+    /**
+     * 接口名称,;
+     */
+    private String interfaceName;
+    /**
+     * 账户编号,;
+     */
+    private String accNo;
+    /**
+     * token值,;
+     */
+    private String token;
+    /**
+     * 回调地址,;
+     */
+    private String callbackUrl;
+    /**
+     * 是否支持回调,yes支持,no不支持,;
+     */
+    private String isCallback;
+    /**
+     * 回调次数,尝试回调的次数,超过次数则不再回调,;
+     */
+    private int callbackNum;
+    /**
+     * 调用状态,handle处理中,success成功,fail失败,;
+     */
+    private String orderStatus;
+    /**
+     * 回调状态,handle处理中,success成功,fail失败,;
+     */
+    private String callbackStatus;
+    /**
+     * 创建时间,;
+     */
+    private LocalDateTime addTime;
+    /**
+     * 更新时间,;
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 创建人id,;
+     */
+    private String addUserId;
+    /**
+     * 更新人id,;
+     */
+    private String updateUserId;
+    /**
+     * 创建人姓名,;
+     */
+    private String addUserName;
+    /**
+     * 更新人姓名,;
+     */
+    private String updateUserName;
+}

+ 46 - 0
src/main/java/com/hr/repository/domain/IpTokenInterfacePO.java

@@ -0,0 +1,46 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+ /**
+ * token与接口关系表;IpTokenInterface数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+ 
+@Data
+@Entity(name = "ip_token_interface")
+public class IpTokenInterfacePO implements Serializable,Cloneable{
+
+    @Id
+    /** 主键,; */
+    private Long id ;
+    /** token表主键,; */
+    private String tid ;
+    /** 接口表主键,; */
+    private String iid ;
+    /** 是否支持回调,yes支持,no不支持,; */
+    private String isCallback ;
+    /** 回调地址(回调url),回调的url,只有在支持回调时才有,; */
+    private String callbackUrl ;
+    /** 回调次数,尝试回调的次数,超过次数则不再回调,; */
+    private int callbackNum ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+}

+ 45 - 0
src/main/java/com/hr/repository/domain/IpTokenPO.java

@@ -0,0 +1,45 @@
+package com.hr.repository.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+ /**
+ * token表;Long数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+ 
+@Data
+@Entity(name = "ip_token")
+public class IpTokenPO implements Serializable,Cloneable{
+    @Id
+    /** 主键,; */
+    private Long id ;
+    /** 账户表主键,; */
+    private Long aid ;
+    /** token值,; */
+    private String token ;
+    /** 密钥值,; */
+    private String secret ;
+    /** 备注,; */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除,; */
+    private String tokenStatus ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+}

+ 21 - 0
src/main/java/com/hr/repository/jpa/IpAccountRepository.java

@@ -0,0 +1,21 @@
+package com.hr.repository.jpa;
+
+import com.hr.param.IpAccountParam;
+import com.hr.repository.domain.IpAccountPO;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * 账户表;(ip_account)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+
+public interface IpAccountRepository extends JpaRepository<IpAccountPO, Long> {
+
+    IpAccountPO queryById(Long aid);
+
+    IpAccountPO findByAccNo(String accNo);
+}

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

@@ -0,0 +1,17 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.IpInterfacePO;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * 接口表;(ip_interface)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+public interface IpInterfaceRepository extends JpaRepository<IpInterfacePO,Long> {
+
+    IpInterfacePO queryById(Long id);
+
+}

+ 18 - 0
src/main/java/com/hr/repository/jpa/IpLogRepository.java

@@ -0,0 +1,18 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.IpLogPO;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * 接口日志表;(ip_log)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+public interface IpLogRepository extends JpaRepository<IpLogPO,Long> {
+
+ IpLogPO queryById(Long lid);
+
+}

+ 17 - 0
src/main/java/com/hr/repository/jpa/IpOrderRepository.java

@@ -0,0 +1,17 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.IpOrderPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * 调用记录表;(ip_order)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+public interface IpOrderRepository extends JpaRepository<IpOrderPO,Long> {
+
+    IpOrderPO queryById(Long oid);
+
+}

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

@@ -0,0 +1,16 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.IpTokenInterfacePO;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * token与接口关系表;(ip_token_interface)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+public interface IpTokenInterfaceRepository extends JpaRepository<IpTokenInterfacePO,Long> {
+
+    IpTokenInterfacePO queryById(Long tiid);
+}

+ 17 - 0
src/main/java/com/hr/repository/jpa/IpTokenRepository.java

@@ -0,0 +1,17 @@
+package com.hr.repository.jpa;
+
+import com.hr.repository.domain.IpTokenPO;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.List;
+
+/**
+ * token表;(ip_token)表数据库访问层
+ * @author : Longhoo
+ * @date : 2025-10-10
+ */
+public interface IpTokenRepository extends JpaRepository<IpTokenPO,Long> {
+
+    IpTokenPO queryById(Long id);
+
+}

+ 53 - 0
src/main/java/com/hr/repository/service/IpInterfaceService.java

@@ -0,0 +1,53 @@
+package com.hr.repository.service;
+
+import com.github.pagehelper.PageInfo;
+import com.hr.repository.domain.IpInterfacePO;
+import com.hr.vo.IpInterfaceVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * 接口表;(ip_interface)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpInterfaceService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param iid 主键
+     * @return 实例对象
+     */
+    IpInterfaceVO queryById(Long iid);
+    
+    /**
+     * 分页查询
+     *
+     * @param IpInterfacePO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpInterfacePO> paginQuery(IpInterfacePO IpInterfacePO, Integer current, Integer size);
+    /** 
+     * 新增数据
+     *
+     * @param IpInterfacePO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpInterfacePO IpInterfacePO);
+    /** 
+     * 更新数据
+     *
+     * @param IpInterfacePO 实例对象
+     * @return 实例对象
+     */
+    void update(IpInterfacePO IpInterfacePO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param iid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long iid);
+}

+ 53 - 0
src/main/java/com/hr/repository/service/IpLogService.java

@@ -0,0 +1,53 @@
+package com.hr.repository.service;
+
+
+import com.hr.repository.domain.IpLogPO;
+import com.hr.vo.IpLogVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * 接口日志表;(ip_log)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpLogService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param lid 主键
+     * @return 实例对象
+     */
+    IpLogVO queryById(Long lid);
+    
+    /**
+     * 分页查询
+     *
+     * @param IpLogPO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpLogPO> paginQuery(IpLogPO IpLogPO, Integer current, Integer size);
+    /** 
+     * 新增数据
+     *
+     * @param IpLogPO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpLogPO IpLogPO);
+    /** 
+     * 更新数据
+     *
+     * @param IpLogPO 实例对象
+     * @return 实例对象
+     */
+    void update(IpLogPO IpLogPO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param lid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long lid);
+}

+ 52 - 0
src/main/java/com/hr/repository/service/IpOrderService.java

@@ -0,0 +1,52 @@
+package com.hr.repository.service;
+
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.vo.IpOrderVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * 调用记录表;(ip_order)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpOrderService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param oid 主键
+     * @return 实例对象
+     */
+    IpOrderVO queryById(Long oid);
+    
+    /**
+     * 分页查询
+     *
+     * @param IpOrderPO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpOrderPO> paginQuery(IpOrderPO IpOrderPO, Integer current, Integer size);
+    /** 
+     * 新增数据
+     *
+     * @param IpOrderPO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpOrderPO IpOrderPO);
+    /** 
+     * 更新数据
+     *
+     * @param IpOrderPO 实例对象
+     * @return 实例对象
+     */
+    void update(IpOrderPO IpOrderPO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param oid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long oid);
+}

+ 52 - 0
src/main/java/com/hr/repository/service/IpTokenInterfaceService.java

@@ -0,0 +1,52 @@
+package com.hr.repository.service;
+
+import com.hr.repository.domain.IpTokenInterfacePO;
+import com.hr.vo.IpTokenInterfaceVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * token与接口关系表;(ip_token_interface)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpTokenInterfaceService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param tiid 主键
+     * @return 实例对象
+     */
+    IpTokenInterfaceVO queryById(Long tiid);
+    
+    /**
+     * 分页查询
+     *
+     * @param IpTokenInterfacePO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpTokenInterfacePO> paginQuery(IpTokenInterfacePO IpTokenInterfacePO, Integer current, Integer size);
+    /** 
+     * 新增数据
+     *
+     * @param IpTokenInterfacePO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpTokenInterfacePO IpTokenInterfacePO);
+    /** 
+     * 更新数据
+     *
+     * @param IpTokenInterfacePO 实例对象
+     * @return 实例对象
+     */
+    void update(IpTokenInterfacePO IpTokenInterfacePO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param tiid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long tiid);
+}

+ 52 - 0
src/main/java/com/hr/repository/service/IpTokenService.java

@@ -0,0 +1,52 @@
+package com.hr.repository.service;
+
+import com.hr.repository.domain.IpTokenPO;
+import com.hr.vo.IpTokenVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * token表;(ip_token)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpTokenService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param tid 主键
+     * @return 实例对象
+     */
+    IpTokenVO queryById(Long tid);
+    
+    /**
+     * 分页查询
+     *
+     * @param ipTokenPO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpTokenPO> paginQuery(IpTokenPO ipTokenPO, Integer current, Integer size);
+    /**
+     * 新增数据
+     *
+     * @param ipTokenPO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpTokenPO ipTokenPO);
+    /** 
+     * 更新数据
+     *
+     * @param IpTokenPO 实例对象
+     * @return 实例对象
+     */
+    void update(IpTokenPO ipTokenPO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param tid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long tid);
+}

+ 79 - 0
src/main/java/com/hr/repository/service/impl/IpInterfaceServiceImpl.java

@@ -0,0 +1,79 @@
+package com.hr.repository.service.impl;
+
+import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.jpa.IpInterfaceRepository;
+import com.hr.repository.service.IpInterfaceService;
+import com.hr.vo.IpInterfaceVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+/**
+ * 接口表;(ip_interface)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpInterfaceServiceImpl implements IpInterfaceService {
+    @Autowired
+    private IpInterfaceRepository ipInterfaceRepository;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    public IpInterfaceVO queryById(Long id){
+        IpInterfacePO ipInterfacePO = ipInterfaceRepository.queryById(id);
+        IpInterfaceVO ipInterfaceVO = new IpInterfaceVO();
+        if(ipInterfacePO != null){
+            BeanUtils.copyProperties(ipInterfacePO, ipInterfaceVO);
+            return ipInterfaceVO;
+        }
+        return null;
+    }
+
+     @Override
+     public Page<IpInterfacePO> paginQuery(IpInterfacePO IpInterfacePO, Integer current, Integer size) {
+         ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                 .withIgnoreNullValues()                              // 忽略 null 字段
+                 .withIgnoreCase();
+         Pageable pageAble = PageRequest.of(current, size);
+         Example<IpInterfacePO> example = Example.of(IpInterfacePO, matcher);
+         Page<IpInterfacePO> result = ipInterfaceRepository.findAll(example, pageAble);
+         return result;
+     }
+
+     /**
+     * 新增数据
+     *
+     * @param IpInterfacePO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpInterfacePO IpInterfacePO){
+        ipInterfaceRepository.save(IpInterfacePO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpInterfacePO 实例对象
+     * @return 实例对象
+     */
+    public void  update(IpInterfacePO IpInterfacePO){
+        ipInterfaceRepository.save(IpInterfacePO);
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param iid 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long iid){
+        ipInterfaceRepository.deleteById(iid);
+        return true;
+    }
+}

+ 86 - 0
src/main/java/com/hr/repository/service/impl/IpLogServiceImpl.java

@@ -0,0 +1,86 @@
+package com.hr.repository.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hr.repository.domain.IpInterfacePO;
+import com.hr.repository.domain.IpLogPO;
+import com.hr.repository.jpa.IpLogRepository;
+import com.hr.repository.service.IpLogService;
+import com.hr.vo.IpLogVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 接口日志表;(ip_log)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpLogServiceImpl implements IpLogService {
+    @Autowired
+    private IpLogRepository ipLogRepository;
+
+     /**
+      * 通过ID查询单条数据
+      *
+      * @param lid 主键
+      * @return 实例对象
+      */
+     @Override
+     public IpLogVO queryById(Long lid) {
+         IpLogVO vo = new IpLogVO();
+         IpLogPO ipLogPO = ipLogRepository.queryById(lid);
+         if(ipLogPO != null){
+             BeanUtils.copyProperties(ipLogPO,vo);
+             return vo;
+         }
+
+         return null;
+     }
+
+     @Override
+     public Page<IpLogPO> paginQuery(IpLogPO IpLogPO, Integer current, Integer size) {
+         ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                 .withIgnoreNullValues()                              // 忽略 null 字段
+                 .withIgnoreCase();
+         Pageable pageAble = PageRequest.of(current, size);
+         Example<IpLogPO> example = Example.of(IpLogPO, matcher);
+         Page<IpLogPO> result = ipLogRepository.findAll(example, pageAble);
+         return result;
+     }
+
+     /**
+     * 新增数据
+     *
+     * @param IpLogPO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpLogPO IpLogPO){
+        ipLogRepository.save(IpLogPO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpLogPO 实例对象
+     * @return 实例对象
+     */
+    public void update(IpLogPO IpLogPO){
+        ipLogRepository.save(IpLogPO);
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param lid 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long lid){
+        ipLogRepository.deleteById(lid);
+        return true;
+    }
+}

+ 80 - 0
src/main/java/com/hr/repository/service/impl/IpOrderServiceImpl.java

@@ -0,0 +1,80 @@
+package com.hr.repository.service.impl;
+
+import com.hr.repository.domain.IpOrderPO;
+import com.hr.repository.jpa.IpOrderRepository;
+import com.hr.repository.service.IpOrderService;
+import com.hr.vo.IpOrderVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+/**
+ * 调用记录表;(ip_order)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpOrderServiceImpl implements IpOrderService {
+    @Autowired
+    private IpOrderRepository ipOrderRepository;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param oid 主键
+     * @return 实例对象
+     */
+    public IpOrderVO queryById(Long oid){
+        IpOrderVO ipOrderVO = new IpOrderVO();
+        IpOrderPO ipOrderPO = ipOrderRepository.queryById(oid);
+        if(ipOrderPO != null){
+            BeanUtils.copyProperties(ipOrderPO, ipOrderVO);
+            return ipOrderVO;
+        }
+        return null;
+    }
+
+     @Override
+     public Page<IpOrderPO> paginQuery(IpOrderPO IpOrderPO, Integer current, Integer size) {
+         ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                 .withIgnoreNullValues()                              // 忽略 null 字段
+                 .withIgnoreCase();
+         Pageable pageAble = PageRequest.of(current, size);
+         Example<IpOrderPO> example = Example.of(IpOrderPO, matcher);
+         Page<IpOrderPO> result = ipOrderRepository.findAll(example, pageAble);
+         return result;
+     }
+
+
+     /**
+     * 新增数据
+     *
+     * @param IpOrderPO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpOrderPO IpOrderPO){
+        ipOrderRepository.save(IpOrderPO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpOrderPO 实例对象
+     * @return 实例对象
+     */
+    public void update(IpOrderPO IpOrderPO){
+        ipOrderRepository.save(IpOrderPO);
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param oid 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long oid){
+        ipOrderRepository.deleteById(oid);
+        return false;
+    }
+}

+ 85 - 0
src/main/java/com/hr/repository/service/impl/IpTokenInterfaceServiceImpl.java

@@ -0,0 +1,85 @@
+package com.hr.repository.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hr.repository.domain.IpLogPO;
+import com.hr.repository.domain.IpTokenInterfacePO;
+import com.hr.repository.jpa.IpTokenInterfaceRepository;
+import com.hr.repository.service.IpTokenInterfaceService;
+import com.hr.vo.IpTokenInterfaceVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * token与接口关系表;(ip_token_interface)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpTokenInterfaceServiceImpl implements IpTokenInterfaceService {
+    @Autowired
+    private IpTokenInterfaceRepository ipTokenInterfaceRepository;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param tiid 主键
+     * @return 实例对象
+     */
+    public IpTokenInterfaceVO queryById(Long tiid){
+        IpTokenInterfacePO ipTokenInterfacePO = ipTokenInterfaceRepository.queryById(tiid);
+        IpTokenInterfaceVO ipTokenInterfaceVO = new IpTokenInterfaceVO();
+        if(ipTokenInterfacePO != null){
+            BeanUtils.copyProperties(ipTokenInterfacePO, ipTokenInterfaceVO);
+            return ipTokenInterfaceVO;
+        }
+        return null;
+    }
+
+    
+    /** 
+     * 新增数据
+     *
+     * @param IpTokenInterfacePO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpTokenInterfacePO IpTokenInterfacePO){
+        ipTokenInterfaceRepository.save(IpTokenInterfacePO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpTokenInterfacePO 实例对象
+     * @return 实例对象
+     */
+    public void update(IpTokenInterfacePO IpTokenInterfacePO){
+        ipTokenInterfaceRepository.save(IpTokenInterfacePO);
+    }
+
+     @Override
+     public Page<IpTokenInterfacePO> paginQuery(IpTokenInterfacePO ipTokenInterfacePO, Integer current, Integer size) {
+         ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                 .withIgnoreNullValues()                              // 忽略 null 字段
+                 .withIgnoreCase();
+         Pageable pageAble = PageRequest.of(current, size);
+         Example<IpTokenInterfacePO> example = Example.of(ipTokenInterfacePO, matcher);
+         Page<IpTokenInterfacePO> result = ipTokenInterfaceRepository.findAll(example, pageAble);
+         return result;
+     }
+
+     /**
+     * 通过主键删除数据
+     *
+     * @param tiid 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long tiid){
+        ipTokenInterfaceRepository.deleteById(tiid);
+        return true;
+    }
+}

+ 86 - 0
src/main/java/com/hr/repository/service/impl/IpTokenServiceImpl.java

@@ -0,0 +1,86 @@
+package com.hr.repository.service.impl;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.hr.repository.domain.IpTokenInterfacePO;
+import com.hr.repository.domain.IpTokenPO;
+import com.hr.repository.jpa.IpTokenRepository;
+import com.hr.repository.service.IpTokenService;
+import com.hr.vo.IpOrderVO;
+import com.hr.vo.IpTokenVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * token表;(ip_token)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpTokenServiceImpl implements IpTokenService {
+    @Autowired
+    private IpTokenRepository ipTokenRepository;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    public IpTokenVO queryById(Long id){
+        IpTokenPO ipTokenPO = ipTokenRepository.queryById(id);
+        IpTokenVO ipOrderVO = new IpTokenVO();
+        if(ipTokenPO != null){
+            BeanUtils.copyProperties(ipTokenPO, ipOrderVO);
+            return ipOrderVO;
+        }
+        return null;
+    }
+
+     @Override
+     public Page<IpTokenPO> paginQuery(IpTokenPO ipTokenPO, Integer current, Integer size) {
+         ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                 .withIgnoreNullValues()                              // 忽略 null 字段
+                 .withIgnoreCase();
+         Pageable pageAble = PageRequest.of(current, size);
+         Example<IpTokenPO> example = Example.of(ipTokenPO, matcher);
+         Page<IpTokenPO> result = ipTokenRepository.findAll(example, pageAble);
+         return result;
+     }
+
+    
+    /** 
+     * 新增数据
+     *
+     * @param IpTokenPO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpTokenPO IpTokenPO){
+        ipTokenRepository.save(IpTokenPO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpTokenPO 实例对象
+     * @return 实例对象
+     */
+    public void update(IpTokenPO IpTokenPO){
+        ipTokenRepository.save(IpTokenPO);
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long id){
+        ipTokenRepository.deleteById(id);
+        return true;
+    }
+}

+ 57 - 0
src/main/java/com/hr/service/IpAccountService.java

@@ -0,0 +1,57 @@
+package com.hr.service;
+
+
+import com.github.pagehelper.PageInfo;
+import com.hr.param.IpAccountParam;
+import com.hr.repository.domain.IpAccountPO;
+import com.hr.vo.IpAccountVO;
+import org.springframework.data.domain.Page;
+
+/**
+ * 账户表;(ip_account)表服务接口
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+public interface IpAccountService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param aid 主键
+     * @return 实例对象
+     */
+    IpAccountVO queryById(Long aid);
+    
+    /**
+     * 分页查询
+     *
+     * @param IpAccountPO 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<IpAccountPO> paginQuery(IpAccountPO IpAccountPO, Integer current, Integer size);
+    /** 
+     * 新增数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    void insert(IpAccountPO IpAccountPO);
+    /** 
+     * 更新数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    void update(IpAccountPO IpAccountPO);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param aid 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long aid);
+
+    void saveOrUpdate(IpAccountParam accountParam, String userName, Long userId);
+}

+ 110 - 0
src/main/java/com/hr/service/impl/IpAccountServiceImpl.java

@@ -0,0 +1,110 @@
+package com.hr.service.impl;
+
+
+import cn.hutool.core.lang.Snowflake;
+import cn.hutool.core.util.IdUtil;
+import com.hr.param.IpAccountParam;
+import com.hr.repository.domain.IpAccountPO;
+import com.hr.repository.jpa.IpAccountRepository;
+import com.hr.service.IpAccountService;
+import com.hr.vo.IpAccountVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.*;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+
+/**
+ * 账户表;(ip_account)表服务接口实现类
+ * @author : http://www.yonsum.com
+ * @date : 2025-10-10
+ */
+@Service
+public class IpAccountServiceImpl implements IpAccountService {
+    @Autowired
+    private IpAccountRepository ipAccountRepository;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    public IpAccountVO queryById(Long id){
+        IpAccountVO vo = new IpAccountVO();
+        IpAccountPO ipAccountPO = ipAccountRepository.queryById(id);
+        if(ipAccountPO != null){
+            BeanUtils.copyProperties(ipAccountPO, vo);
+            return vo;
+        }
+        return null;
+    }
+
+    @Override
+    public Page<IpAccountPO> paginQuery(IpAccountPO ipAccountPO, Integer current, Integer size) {
+        ExampleMatcher matcher = ExampleMatcher.matchingAll()
+                .withIgnoreNullValues()                              // 忽略 null 字段
+                .withIgnoreCase();
+        Pageable pageAble = PageRequest.of(current, size);
+        Example<IpAccountPO> example = Example.of(ipAccountPO, matcher);
+        Page<IpAccountPO> page = ipAccountRepository.findAll(example, pageAble);
+        return page;
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    public void insert(IpAccountPO IpAccountPO){
+        ipAccountRepository.save(IpAccountPO);
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param IpAccountPO 实例对象
+     * @return 实例对象
+     */
+    public void update(IpAccountPO IpAccountPO){
+        ipAccountRepository.save(IpAccountPO);
+    }
+
+    @Override
+    public void saveOrUpdate(IpAccountParam accountParam, String userName, Long userId) {
+        IpAccountPO ipAccountPO ;
+        if(accountParam.getId() == null){
+            ipAccountPO = ipAccountRepository.findByAccNo(accountParam.getAccNo());
+            if(ipAccountPO != null){
+                throw new RuntimeException("账户编号已存在");
+            }
+        }
+        ipAccountPO = new IpAccountPO();
+        BeanUtils.copyProperties(accountParam, ipAccountPO);
+        if(accountParam.getId() == null){
+            Snowflake snowflake = IdUtil.getSnowflake(1, 1);
+            ipAccountPO.setId(Id);
+            ipAccountPO.setAddTime(LocalDateTime.now());
+            ipAccountPO.setAddUserId(userId);
+            ipAccountPO.setAddUserName(userName);
+        }
+        ipAccountPO.setUpdateTime(LocalDateTime.now());
+        ipAccountPO.setUpdateUserId(userId);
+        ipAccountPO.setUpdateUserName(userName);
+        ipAccountRepository.save(ipAccountPO);
+
+    }
+
+    /**
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long id){
+        ipAccountRepository.deleteById(id);
+        return true;
+    }
+}

+ 173 - 0
src/main/java/com/hr/util/SnowflakeIdWorker.java

@@ -0,0 +1,173 @@
+package com.hr.util;
+
+
+import java.util.concurrent.TimeUtil
+
+/**
+ * <p>TODO</p>
+ *
+ * @author cheng.jin.peng
+ * @version V1.0.0
+ * @date 2023/5/11 11:17
+ */
+
+public class SnowflakeIdWorker {
+    private static final SnowflakeIdWorker singleBean = new SnowflakeIdWorker(2);
+    /**
+     * 开始时间截 (本次时间戳为:Thu Nov 04 2010 09:42:54 GMT+0800 (中国标准时间)----1288834974657L---1656543015264587776--19 )
+     */
+    private final long startTime = 1546300800L;
+
+    /** 机器id所占的位数 */
+    private final long workerIdBits = 3L;
+
+    /** 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */
+    private final long maxWorkerId = -1L ^ (-1L << workerIdBits);
+
+    /** 序列在id中占的位数 */
+    private final long sequenceBits = 5L;
+
+    /** 机器ID向左移12位 */
+    private final long workerIdShift = sequenceBits;
+
+    /** 时间截向左移22位(10+12) */
+    private final long timestampLeftShift = sequenceBits + workerIdBits;
+
+    /** 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
+    private final long sequenceMask = -1L ^ (-1L << sequenceBits);
+
+    /** 工作机器ID(0~1024) */
+    private long workerId;
+
+    /** 毫秒内序列(0~4095) */
+    private long sequence = 0L;
+
+    /** 上次生成ID的时间截 */
+    private long lastTimestamp = -1L;
+
+    //==============================Constructors=====================================
+
+
+    private SnowflakeIdWorker(){
+    /**
+     * 构造函数
+     * @param workerId 工作ID (0~1024)
+     */
+
+    }
+    private SnowflakeIdWorker(long workerId) {
+        if (workerId > maxWorkerId || workerId < 0) {
+            throw new IllegalArgumentException(String.format("workerId can't be greater than %d or less than 0", maxWorkerId));
+        }
+        this.workerId = workerId;
+    }
+
+    // ==============================Methods==========================================
+    /**
+     * 获得下一个ID (该方法是线程安全的)
+     * @return SnowflakeId
+     */
+    public static long nextId() {
+        return singleBean.generateNextId();
+    }
+    public synchronized long generateNextId() {
+        long timestamp = timeGen();
+
+        //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
+        if (timestamp < lastTimestamp) {
+            throw new RuntimeException(
+                    String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timestamp));
+        }
+
+        //如果是同一时间生成的,则进行毫秒内序列
+        if (lastTimestamp == timestamp) {
+            sequence = (sequence + 1) & sequenceMask;
+            //毫秒内序列溢出
+            if (sequence == 0) {
+                //阻塞到下一个毫秒,获得新的时间戳
+                timestamp = tilNextMillis(lastTimestamp);
+            }
+        }
+        //时间戳改变,毫秒内序列重置
+        else {
+            sequence = 0L;
+        }
+
+        //上次生成ID的时间截
+        lastTimestamp = timestamp;
+
+        //移位并通过或运算拼到一起组成64位的ID
+        return ((timestamp - startTime) << timestampLeftShift)
+                | (workerId << workerIdShift)
+                | sequence;
+    }
+
+    /**
+     * 阻塞到下一个毫秒,直到获得新的时间戳
+     * @param lastTimestamp 上次生成ID的时间截
+     * @return 当前时间戳
+     */
+    protected long tilNextMillis(long lastTimestamp) {
+        long timestamp = timeGen();
+        while (timestamp <= lastTimestamp) {
+            timestamp = timeGen();
+        }
+        return timestamp;
+    }
+
+    /**
+     * 返回以毫秒为单位的当前时间
+     * @return 当前时间(毫秒)
+     */
+    protected long timeGen() {
+        return System.currentTimeMillis();
+    }
+
+    /**
+     * 测试
+     */
+    public static void main(String[] args) {
+        System.out.println("开始:"+System.currentTimeMillis());
+
+
+
+//        for (int i = 0; i < 50; i++) {
+//            try {
+//                Thread.sleep(1000);
+//            } catch (InterruptedException e) {
+//                throw new RuntimeException(e);
+//            }
+//            long id = idWorker.nextId();
+//            System.out.println(id+"长度="+String.valueOf(id).length());
+//
+//        }
+        //SnowflakeIdWorker idWorker = new SnowflakeIdWorker(2);
+        for(int i=0; i<10; i++){
+            try {
+                TimeUnit.MILLISECONDS.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+
+        }
+
+        /*System.out.println("结束:"+System.currentTimeMillis());
+
+        Set<Long> set = new HashSet<>();
+
+        for (int i = 0; i < 100000;i++){
+            long id = idWorker.nextId();
+            try {
+                TimeUnit.MILLISECONDS.sleep(1000);
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+            System.out.println(id);
+            set.add(id);
+        }
+//        for (Long aLong : set) {
+//            System.out.println(aLong);
+//        }
+        System.out.println(set.size());*/
+    }
+}

+ 38 - 0
src/main/java/com/hr/vo/IpAccountVO.java

@@ -0,0 +1,38 @@
+package com.hr.vo;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+ /**
+ * 账户表;IpAccount数据表的VO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+public class IpAccountVO implements Serializable,Cloneable{
+    /** 主键,; */
+    private Long id ;
+    /** 账户编号,; */
+    private String accNo ;
+    /** 备注,; */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除,; */
+    private String accStatus ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+}

+ 41 - 0
src/main/java/com/hr/vo/IpInterfaceVO.java

@@ -0,0 +1,41 @@
+package com.hr.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+ /**
+ * 接口表;IpInterface数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+public class IpInterfaceVO implements Serializable,Cloneable{
+
+    /** 主键,; */
+    private Long id ;
+    /** 接口名称,名称唯一,; */
+    private String interfaceName ;
+    /** 接口厂商,; */
+    private String manufacturer ;
+    /** 备注,; */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除,; */
+    private String interfaceStatus ;
+    /** 接口配置,JSON格式的配置文件,存放接口参数,; */
+    private String interfaceConfig ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+
+}

+ 51 - 0
src/main/java/com/hr/vo/IpLogVO.java

@@ -0,0 +1,51 @@
+package com.hr.vo;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 接口日志表;IpLog数据表的PO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+public class IpLogVO implements Serializable,Cloneable{
+
+    /** 主键,; */
+    private Long id ;
+    /** 调用记录表主键,; */
+    private String oid ;
+    /** 调用编号(业务编号),唯一,格式为年月日时分秒毫秒加6位随机数 20250918010256001000001,; */
+    private String orderNo ;
+    /** 执行类型,request请求,callback回调,; */
+    private String executeType ;
+    /** 请求地址/回调地址,如果是请求类型则记录请求地址。若是回调类型则记录回调地址。,; */
+    private String url ;
+    /** 请求状态,handle处理中,success成功,fail失败,; */
+    private String status ;
+    /** 请求参数,临时存储json格式,通过定时任务上传到OSS后更换为oss存储url,; */
+    private String requestParam ;
+    /** 响应结果,临时存储json格式,通过定时任务上传到OSS后更换为oss存储url,; */
+    private String responseResult ;
+    /** 响应状态码,; */
+    private String httpStatus ;
+    /** 异常信息,存储调用时的各种程序异常信息,; */
+    private String msg ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+    
+}

+ 83 - 0
src/main/java/com/hr/vo/IpOrderVO.java

@@ -0,0 +1,83 @@
+package com.hr.vo;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * 调用记录表;IpOrder数据表的PO对象
+ *
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+@Data
+public class IpOrderVO implements Serializable, Cloneable {
+
+    /**
+     * 主键,;
+     */
+    private Long id;
+    /**
+     * 调用编号(业务编号),唯一,格式为年月日时分秒毫秒加6位随机数20250918010256001000001,;
+     */
+    private String orderNo;
+    /**
+     * 接口名称,;
+     */
+    private String interfaceName;
+    /**
+     * 账户编号,;
+     */
+    private String accNo;
+    /**
+     * token值,;
+     */
+    private String token;
+    /**
+     * 回调地址,;
+     */
+    private String callbackUrl;
+    /**
+     * 是否支持回调,yes支持,no不支持,;
+     */
+    private String isCallback;
+    /**
+     * 回调次数,尝试回调的次数,超过次数则不再回调,;
+     */
+    private int callbackNum;
+    /**
+     * 调用状态,handle处理中,success成功,fail失败,;
+     */
+    private String orderStatus;
+    /**
+     * 回调状态,handle处理中,success成功,fail失败,;
+     */
+    private String callbackStatus;
+    /**
+     * 创建时间,;
+     */
+    private LocalDateTime addTime;
+    /**
+     * 更新时间,;
+     */
+    private LocalDateTime updateTime;
+    /**
+     * 创建人id,;
+     */
+    private String addUserId;
+    /**
+     * 更新人id,;
+     */
+    private String updateUserId;
+    /**
+     * 创建人姓名,;
+     */
+    private String addUserName;
+    /**
+     * 更新人姓名,;
+     */
+    private String updateUserName;
+}

+ 40 - 0
src/main/java/com/hr/vo/IpTokenInterfaceVO.java

@@ -0,0 +1,40 @@
+package com.hr.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+ /**
+ * token与接口关系表;IpTokenInterface数据表的VO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+ 
+@Data
+public class IpTokenInterfaceVO implements Serializable,Cloneable{
+    /** 主键,; */
+    private Long id ;
+    /** token表主键,; */
+    private String tid ;
+    /** 接口表主键,; */
+    private String iid ;
+    /** 是否支持回调,yes支持,no不支持,; */
+    private String isCallback ;
+    /** 回调地址(回调url),回调的url,只有在支持回调时才有,; */
+    private String callbackUrl ;
+    /** 回调次数,尝试回调的次数,超过次数则不再回调,; */
+    private int callbackNum ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+}

+ 40 - 0
src/main/java/com/hr/vo/IpTokenVO.java

@@ -0,0 +1,40 @@
+package com.hr.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+ /**
+ * token表;Long数据表的VO对象
+ * @author : longhoo
+ * @date : 2025-10-10
+ */
+ 
+@Data
+public class IpTokenVO implements Serializable,Cloneable{
+    /** 主键,; */
+    private Long id ;
+    /** 账户表主键,; */
+    private Long aid ;
+    /** token值,; */
+    private String token ;
+    /** 密钥值,; */
+    private String secret ;
+    /** 备注,; */
+    private String remark ;
+    /** 状态,normal 有效,disable 禁用,delete 删除,; */
+    private String tokenStatus ;
+    /** 创建时间,; */
+    private LocalDateTime addTime ;
+    /** 更新时间,; */
+    private LocalDateTime updateTime ;
+    /** 创建人id,; */
+    private String addUserId ;
+    /** 更新人id,; */
+    private String updateUserId ;
+    /** 创建人姓名,; */
+    private String addUserName ;
+    /** 更新人姓名,; */
+    private String updateUserName ;
+}