From a30be18fa7896e36943462aef9e9949f0acf7f5e Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期四, 21 十二月 2023 14:34:45 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml                                       |   18 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml                                               |   83 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SePaymentMethodMapper.java                       |    3 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/result/SystemResultCode.java                |   23 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/DtoCancel.java                       |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml                                                                  |  138 ++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java                          |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java                       |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java                                     |   45 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml                                             |  287 +++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoLoss.java                                       |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.jar                                           |    0 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java                      |   34 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw.cmd                                                                 |  205 ++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java                   |    8 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java         |   23 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java                            |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePermissionsMapper.java                     |   30 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java                     |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java                  |   54 +
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java              |   27 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java                              |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCancel.java                                     |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java                          |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeHistoryMapper.java               |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java                          |   62 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java                            |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeMapper.java                      |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java                  |   62 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePermissions.java                          |   64 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml                                               |   19 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java         |   28 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleSv.java                            |   31 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePermissionsMapper.xml                                    |   86 +
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java                            |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java                   |   27 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java                  |   16 
 pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml                                                |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java                                     |   11 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReversal.java                                   |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/.gitignore                                                               |   34 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java                          |   36 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java                  |    1 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml                                         |   24 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java                |   96 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw                                                                     |  308 ++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrDivide.java                                   |  152 +++
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/test/java/com/dy/pipIrrProject/PipIrrWebProjectApplicationTests.java |   13 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml                                             |   85 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java                       |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java                                   |    9 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.properties                                    |    2 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java                              |   10 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java                                |    8 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoUnlock.java                                     |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java                      |   36 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java                                 |    9 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java                                 |    6 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebFilterConfiguration.java    |   52 +
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebListenerConfiguration.java  |   68 +
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml                                           |   93 -
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java                              |   41 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java                                   |    6 
 pipIrr-platform/pipIrr-web/pom.xml                                                                                     |    1 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java                         |    4 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java                                |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java                          |   29 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml                                           |   18 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletMapper.java                              |    6 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java                                   |    9 
 pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml                                            |   73 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java                                   |   33 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/DtoLoss.java                           |   10 
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java                  |   38 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml                                             |   90 -
 75 files changed, 2,492 insertions(+), 420 deletions(-)

diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePermissionsMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePermissionsMapper.java
new file mode 100644
index 0000000..0e3781b
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaRolePermissionsMapper.java
@@ -0,0 +1,30 @@
+package com.dy.pipIrrGlobal.daoBa;
+
+import com.dy.pipIrrGlobal.pojoBa.BaRolePermissions;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/19 16:48
+ * @LastEditTime 2023/12/19 16:48
+ * @Description
+ */
+public interface BaRolePermissionsMapper {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(BaRolePermissions record);
+
+    int insertSelective(BaRolePermissions record);
+
+    BaRolePermissions selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(BaRolePermissions record);
+
+    int updateByPrimaryKey(BaRolePermissions record);
+
+    /**
+     * 渚濇嵁瑙掕壊缂栧彿鍒犻櫎瑙掕壊鎺堟潈
+     * @return
+     */
+    int delPermissionsByRoleId(@Param("roleId") Long roleId);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
index cef278f..e0ebca4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoBa/BaUserMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
+import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -85,4 +86,11 @@
      * @return update count
      */
     int deleteLogicById(Long id);
+
+    /**
+     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鐢ㄦ埛淇℃伅
+     * @param userId 鐢ㄦ埛缂栧彿
+     * @return 鐢ㄦ埛淇℃伅鍒楄〃
+     */
+    List<VoUserInfo> getUserInfos(@Param("userId") Long userId);
 }
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java
new file mode 100644
index 0000000..5eb7697
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoPr/PrDivideMapper.java
@@ -0,0 +1,41 @@
+package com.dy.pipIrrGlobal.daoPr;
+
+import com.dy.pipIrrGlobal.pojoPr.PrDivide;
+import com.dy.pipIrrGlobal.voPr.VoDivide;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 9:16
+ * @LastEditTime 2023/12/21 9:16
+ * @Description
+ */
+public interface PrDivideMapper {
+    int deleteByPrimaryKey(Long id);
+
+    int insert(PrDivide record);
+
+    int insertSelective(PrDivide record);
+
+    PrDivide selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(PrDivide record);
+
+    int updateByPrimaryKey(PrDivide record);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰曟暟
+     * @param params
+     * @return
+     */
+    Long getRecordCount(Map<?, ?> params);
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰�
+     * @param params
+     * @return
+     */
+    List<VoDivide> getDivides(Map<?, ?> params);
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
index 590eee9..9b697ed 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeActiveCardMapper.java
@@ -1,7 +1,9 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeActiveCard;
 import com.dy.pipIrrGlobal.voSe.VoActiveCard;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
@@ -12,7 +14,9 @@
  * @LastEditTime 2023/12/18 16:58
  * @Description
  */
-public interface SeActiveCardMapper {
+
+@Mapper
+public interface SeActiveCardMapper extends BaseMapper<SeActiveCard> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeActiveCard record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
index b6a0fc8..27b77f4 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeCancelMapper.java
@@ -1,18 +1,22 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeCancel;
 import com.dy.pipIrrGlobal.voSe.VoCancel;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/9 10:14
- * @LastEditTime 2023/12/9 10:14
+ * @date 2023/12/20 14:48
+ * @LastEditTime 2023/12/20 14:48
  * @Description
  */
-public interface SeCancelMapper {
+
+@Mapper
+public interface SeCancelMapper extends BaseMapper<SeCancel> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeCancel record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
index 6f16c9a..aaa7433 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeClientCardMapper.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.Map;
@@ -11,7 +13,9 @@
  * @LastEditTime 2023/12/18 16:26
  * @Description
  */
-public interface SeClientCardMapper {
+
+@Mapper
+public interface SeClientCardMapper extends BaseMapper<SeClientCard> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeClientCard record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
index 7ea6e04..790880d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeLossMapper.java
@@ -1,18 +1,22 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeLoss;
 import com.dy.pipIrrGlobal.voSe.VoLoss;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/9 8:55
- * @LastEditTime 2023/12/9 8:55
+ * @date 2023/12/19 15:08
+ * @LastEditTime 2023/12/19 15:08
  * @Description
  */
-public interface SeLossMapper {
+
+@Mapper
+public interface SeLossMapper extends BaseMapper<SeLoss> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeLoss record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SePaymentMethodMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SePaymentMethodMapper.java
index 85ce300..500ec43 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SePaymentMethodMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SePaymentMethodMapper.java
@@ -1,5 +1,6 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SePaymentMethod;
 import org.apache.ibatis.annotations.Mapper;
 
@@ -13,7 +14,7 @@
  */
 
 @Mapper
-public interface SePaymentMethodMapper {
+public interface SePaymentMethodMapper extends BaseMapper<SePaymentMethod> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SePaymentMethod record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
index 777395e..c39569d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeHistoryMapper.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author ZhuBaoMin
@@ -8,7 +10,9 @@
  * @LastEditTime 2023/12/19 10:35
  * @Description
  */
-public interface SeRechargeHistoryMapper {
+
+@Mapper
+public interface SeRechargeHistoryMapper extends BaseMapper<SeRechargeHistory> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeRechargeHistory record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
index ef6d8b4..5a064bc 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeRechargeMapper.java
@@ -1,7 +1,9 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeRecharge;
 import com.dy.pipIrrGlobal.voSe.VoRecharge;
+import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -13,7 +15,9 @@
  * @LastEditTime 2023/12/19 10:18
  * @Description
  */
-public interface SeRechargeMapper {
+
+@Mapper
+public interface SeRechargeMapper extends BaseMapper<SeRecharge> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeRecharge record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
index 6ccbf70..98d2574 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java
@@ -1,18 +1,22 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeReversal;
 import com.dy.pipIrrGlobal.voSe.VoReversal;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/11 9:17
- * @LastEditTime 2023/12/11 9:17
+ * @date 2023/12/20 16:52
+ * @LastEditTime 2023/12/20 16:52
  * @Description
  */
-public interface SeReversalMapper {
+
+@Mapper
+public interface SeReversalMapper extends BaseMapper<SeReversal> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeReversal record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
index c011843..2c0088b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java
@@ -1,18 +1,22 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeUnlock;
 import com.dy.pipIrrGlobal.voSe.VoUnlock;
+import org.apache.ibatis.annotations.Mapper;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/11 9:11
- * @LastEditTime 2023/12/11 9:11
+ * @date 2023/12/20 16:05
+ * @LastEditTime 2023/12/20 16:05
  * @Description
  */
-public interface SeUnlockMapper {
+
+@Mapper
+public interface SeUnlockMapper extends BaseMapper<SeUnlock> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeUnlock record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletMapper.java
index 33d48b5..1cc0294 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletMapper.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeWallet;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author ZhuBaoMin
@@ -8,7 +10,9 @@
  * @LastEditTime 2023/12/11 16:29
  * @Description
  */
-public interface SeWalletMapper {
+
+@Mapper
+public interface SeWalletMapper extends BaseMapper<SeWallet> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeWallet record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeHistoryMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeHistoryMapper.java
index abeaa27..14eb8d2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeHistoryMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeHistoryMapper.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeWalletRechargeHistory;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author ZhuBaoMin
@@ -8,7 +10,9 @@
  * @LastEditTime 2023/12/12 9:06
  * @Description
  */
-public interface SeWalletRechargeHistoryMapper {
+
+@Mapper
+public interface SeWalletRechargeHistoryMapper extends BaseMapper<SeWalletRechargeHistory> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeWalletRechargeHistory record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeMapper.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeMapper.java
index 84b5e3b..77ab6cb 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeMapper.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeWalletRechargeMapper.java
@@ -1,6 +1,8 @@
 package com.dy.pipIrrGlobal.daoSe;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.dy.pipIrrGlobal.pojoSe.SeWalletRecharge;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * @author ZhuBaoMin
@@ -8,7 +10,9 @@
  * @LastEditTime 2023/12/12 9:06
  * @Description
  */
-public interface SeWalletRechargeMapper {
+
+@Mapper
+public interface SeWalletRechargeMapper extends BaseMapper<SeWalletRecharge> {
     int deleteByPrimaryKey(Long id);
 
     int insert(SeWalletRecharge record);
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePermissions.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePermissions.java
new file mode 100644
index 0000000..3bff3ae
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoBa/BaRolePermissions.java
@@ -0,0 +1,64 @@
+package com.dy.pipIrrGlobal.pojoBa;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/19 16:48
+ * @LastEditTime 2023/12/19 16:48
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import jakarta.validation.constraints.Size;
+import lombok.*;
+
+/**
+ * 瑙掕壊鏉冮檺鍏宠仈琛�
+ */
+
+@TableName(value="ba_role_permissions", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "瑙掕壊鏉冮檺瀹炰綋")
+public class BaRolePermissions implements BaseEntity {
+    public static final long serialVersionUID = 1L;
+
+    /**
+    * 涓婚敭
+    */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long id;
+
+    /**
+    * 瑙掕壊缂栧彿
+    */
+    @Schema(description = "瑙掕壊缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Positive(message = "瑙掕壊缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
+    private Long roleid;
+
+    /**
+     * 瑙掕壊鍚嶇О
+     */
+    @Schema(description = "瑙掕壊鍚嶇О", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Size(max = 20)
+    private String roleName;
+
+    /**
+    * 鏉冮檺鍒楄〃
+    */
+    @Schema(description = "鏉冮檺鍒楄〃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank(message = "鏉冮檺鍒楄〃涓嶈兘涓虹┖")
+    private String permissions;
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrDivide.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrDivide.java
new file mode 100644
index 0000000..6d2dec4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoPr/PrDivide.java
@@ -0,0 +1,152 @@
+package com.dy.pipIrrGlobal.pojoPr;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 20:17
+ * @LastEditTime 2023/12/20 20:17
+ * @Description
+ */
+
+import com.alibaba.fastjson2.annotation.JSONField;
+import com.alibaba.fastjson2.writer.ObjectWriterImplToString;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+import org.hibernate.validator.constraints.Length;
+
+import java.util.Date;
+
+/**
+ * 鍒嗘按鎴胯〃
+ */
+
+@TableName(value="pr_divide", autoResultMap = true)
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍒嗘按鎴垮疄浣�")
+public class PrDivide implements BaseEntity {
+    public static final long serialVersionUID = 1L;
+    /**
+     * 涓婚敭
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @TableId(type = IdType.INPUT)
+    @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long id;
+
+    /**
+     * 鎵�鍦ㄥ幙
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄥ幙ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotEmpty(message = "鎵�鍦ㄥ幙涓嶈兘涓虹┖")
+    private Long countyid;
+
+    /**
+     * 鎵�鍦ㄩ晣
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄩ晣ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotEmpty(message = "鎵�鍦ㄩ晣涓嶈兘涓虹┖")
+    private Long townid;
+
+    /**
+     * 鎵�鍦ㄦ潙
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄦ潙ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotEmpty(message = "鎵�鍦ㄦ潙涓嶈兘涓虹┖")
+    private Long villageid;
+
+    /**
+     * 鎵�鍦ㄧ墖鍖�
+     */
+    @JSONField(serializeUsing= ObjectWriterImplToString.class)
+    @Schema(description = "鎵�鍦ㄧ墖鍖篒D", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "鎵�鍦ㄧ墖鍖轰笉鑳戒负绌�")
+    private Long blockid;
+
+    /**
+     * 鍒嗘按鍙e悕绉版垨缂栧彿
+     */
+    @Schema(description = "鍒嗘按鎴垮悕绉�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "鍒嗘按鎴垮悕绉颁笉鑳戒负绌�")
+    @Length(message = "鍒嗘按鎴垮悕绉颁笉澶т簬{max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 25)
+    private String name;
+
+    /**
+     * 瑕嗙洊鏉�
+     */
+    @Schema(description = "瑕嗙洊鏉�", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Length(message = "瑕嗙洊鏉戜笉澶т簬{max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 100)
+    private String villages;
+
+    /**
+     * 瑕嗙洊闈㈢Н锛堝钩鏂瑰叕閲岋級
+     */
+    @Schema(description = "瑕嗙洊闈㈢Н", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Double area;
+
+    /**
+     * 璐熻矗浜�
+     */
+    @Schema(description = "璐熻矗浜�", requiredMode = Schema.RequiredMode.REQUIRED)
+    private String header;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @Schema(description = "鑱旂郴鐢佃瘽", requiredMode = Schema.RequiredMode.REQUIRED)
+    //@NotBlank(message = "鑱旂郴鐢佃瘽涓嶈兘涓虹┖")
+    @Length(message = "鍐滆仈绯荤數璇濆繀椤粄max}浣嶆暟鎹�", min = 11, max = 11)
+    private String phone;
+
+    /**
+     * 缁忓害
+     */
+    @Schema(description = "缁忓害", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "缁忓害涓嶈兘涓虹┖")
+    private Double lng;
+
+    /**
+     * 绾害
+     */
+    @Schema(description = "缁忓害", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "缁忓害涓嶈兘涓虹┖")
+    private Double lat;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "澶囨敞涓嶅ぇ浜巤max}瀛楋紝涓嶅皬浜巤min}瀛�", min = 1, max = 200)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotNull(message = "鎿嶄綔浜虹紪鍙蜂笉鑳戒负绌�")
+    private Long operator;
+
+    /**
+     * 鎿嶄綔鏃堕棿
+     */
+    @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Date operatedt;
+
+    /**
+     * 閫昏緫鍒犻櫎鏍囪瘑;0-鏈垹闄わ紝1-鍒犻櫎
+     */
+    @Schema(description = "鍒犻櫎鏍囪瘑", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Byte deleted;
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
index 3a900b1..f96a0f0 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeCancel.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -46,15 +47,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Positive(message = "姘村崱缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
-    private Long cardid;
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private String cardnum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
-    private Long clientid;
+    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private String clientnum;
 
     /**
      * 閫�娆鹃噾棰�
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
index c5d1a82..7938329 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeLoss.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -16,7 +17,7 @@
 /**
  * @author ZhuBaoMin
  * @date 2023/12/9 8:55
- * @LastEditTime 2023/12/9 8:55
+ * @LastEditTime 2023/12/19 15:14
  * @Description
  */
 
@@ -46,15 +47,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Length(message = "姘村崱缂栧彿涓嶅皬浜巤min}", min = 1)
-    private Long cardid;
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private String cardnum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
-    private Long clientid;
+    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private String clientnum;
 
     /**
      * 浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
index 843327c..4c6d281 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -47,15 +48,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Positive(message = "姘村崱缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
-    private Long cardid;
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private String cardnum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
-    private Long clientid;
+    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private String clientnum;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
index a5c0464..c2428f1 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.dy.common.po.BaseEntity;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.Positive;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
@@ -47,15 +48,15 @@
      * 姘村崱缂栧彿
      */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Positive(message = "姘村崱缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
-    private Long cardid;
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private String cardnum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
-    private Long clientid;
+    @NotBlank(message = "鍐滄埛缂栧彿涓嶈兘涓虹┖")
+    private String clientnum;
 
     /**
      * 鍓╀綑閲戦
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
new file mode 100644
index 0000000..e750264
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voBa/VoUserInfo.java
@@ -0,0 +1,33 @@
+package com.dy.pipIrrGlobal.voBa;
+
+import com.dy.common.po.BaseEntity;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 10:19
+ * @LastEditTime 2023/12/20 10:19
+ * @Description 鐢ㄦ埛淇℃伅瑙嗗浘瀵硅薄
+ */
+
+@Data
+@Schema(title = "鐢ㄦ埛淇℃伅瑙嗗浘瀵硅薄")
+public class VoUserInfo implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "鐢ㄦ埛ID")
+    private Long userId;
+
+    @Schema(title = "鐢ㄦ埛濮撳悕")
+    private String userName;
+
+    @Schema(title = "瑙掕壊ID")
+    private Long roleId;
+
+    @Schema(title = "瑙掕壊鍚嶇О")
+    private String roleName;
+
+    @Schema(title = "鎺堟潈鍒楄〃")
+    private String permissions;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java
new file mode 100644
index 0000000..5973c5c
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voPr/VoDivide.java
@@ -0,0 +1,45 @@
+package com.dy.pipIrrGlobal.voPr;
+
+import com.dy.common.po.BaseEntity;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 9:28
+ * @LastEditTime 2023/12/21 9:28
+ * @Description
+ */
+
+@Data
+@Schema(title = "鍒嗘按鎴胯鍥惧璞�")
+public class VoDivide implements BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @Schema(title = "ID")
+    private Long id;
+
+    @Schema(title = "鍒嗘按鎴垮悕绉�")
+    private String divideName;
+
+    @Schema(title = "鎵�灞炵墖鍖�")
+    private String blockName;
+
+    @Schema(title = "璐熻矗浜�")
+    private String header;
+
+    @Schema(title = "鑱旂郴鐢佃瘽")
+    private String phone;
+
+    @Schema(title = "褰掑睘鍦�")
+    private String address;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @Schema(title = "鎿嶄綔鏃堕棿")
+    private Date operateDt;
+}
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
index cad9d4a..17f3535 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoActiveCard.java
@@ -27,10 +27,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    @Schema(title = "姘村崱缂栧彿")
+    private String cardNum;
 
     @Schema(title = "姘村崱鐘舵��")
     private Byte state;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCancel.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCancel.java
index d324c92..4a3dc4b 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCancel.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoCancel.java
@@ -27,10 +27,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
     @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    private String cardNum;
 
     @Schema(title = "閫�鍥為噾棰�")
     private Float refund;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoLoss.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoLoss.java
index 93c2dd0..6c21326 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoLoss.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoLoss.java
@@ -29,10 +29,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    @Schema(title = "姘村崱缂栧彿")
+    private String cardNum;
 
     @Schema(title = "鍗$墖浣欓")
     @JsonSerialize(using = Double2Serializer.class)
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
index 1994e6a..e423945 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoRecharge.java
@@ -27,10 +27,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    @Schema(title = "姘村崱缂栧彿")
+    private String cardNum;
 
     @Schema(title = "鍏呭�奸噾棰�")
     private Float amount;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReversal.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReversal.java
index af5bc58..e454a58 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReversal.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoReversal.java
@@ -26,10 +26,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    @Schema(title = "姘村崱缂栧彿")
+    private String cardNum;
 
     @Schema(title = "鍓╀綑閲戦")
     private Float cardBalance;
diff --git a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoUnlock.java b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoUnlock.java
index 9101f4c..1967e73 100644
--- a/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoUnlock.java
+++ b/pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/voSe/VoUnlock.java
@@ -27,10 +27,10 @@
     private String clientName;
 
     @Schema(title = "鍐滄埛缂栧彿")
-    private Long clientId;
+    private String clientNum;
 
-    @Schema(title = "姘村崱鍦板潃")
-    private String cardAddr;
+    @Schema(title = "姘村崱缂栧彿")
+    private String cardNum;
 
     @Schema(title = "鍓╀綑閲戦")
     private Float money;
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
index b5a8210..7e13709 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/application-global.yml
@@ -106,4 +106,8 @@
     sell:
         webPort: 8084
         actutorPort: 9084
-        idSuffix: 6
\ No newline at end of file
+        idSuffix: 6
+    project:
+        webPort: 8085
+        actutorPort: 9085
+        idSuffix: 7
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePermissionsMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePermissionsMapper.xml
new file mode 100644
index 0000000..f91308f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaRolePermissionsMapper.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoBa.BaRolePermissionsMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoBa.BaRolePermissions">
+    <!--@mbg.generated-->
+    <!--@Table ba_role_permissions-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="roleId" jdbcType="BIGINT" property="roleid" />
+    <result column="permissions" jdbcType="VARCHAR" property="permissions" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, roleId, permissions
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from ba_role_permissions
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from ba_role_permissions
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+
+  <!--渚濇嵁瑙掕壊缂栧彿鍒犻櫎瑙掕壊鎺堟潈-->
+  <delete id="delPermissionsByRoleId" parameterType="java.lang.Long">
+    delete from ba_role_permissions where roleId = ${roleId}
+  </delete>
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoBa.BaRolePermissions">
+    <!--@mbg.generated-->
+    insert into ba_role_permissions (id, roleId, permissions
+      )
+    values (#{id,jdbcType=BIGINT}, #{roleid,jdbcType=BIGINT}, #{permissions,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaRolePermissions">
+    <!--@mbg.generated-->
+    insert into ba_role_permissions
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="roleid != null">
+        roleId,
+      </if>
+      <if test="permissions != null">
+        permissions,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="roleid != null">
+        #{roleid,jdbcType=BIGINT},
+      </if>
+      <if test="permissions != null">
+        #{permissions,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoBa.BaRolePermissions">
+    <!--@mbg.generated-->
+    update ba_role_permissions
+    <set>
+      <if test="roleid != null">
+        roleId = #{roleid,jdbcType=BIGINT},
+      </if>
+      <if test="permissions != null">
+        permissions = #{permissions,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoBa.BaRolePermissions">
+    <!--@mbg.generated-->
+    update ba_role_permissions
+    set roleId = #{roleid,jdbcType=BIGINT},
+      permissions = #{permissions,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
index c80eb58..0383d9c 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/BaUserMapper.xml
@@ -221,4 +221,23 @@
         update ba_user set deleted = 1
         where id = #{id,jdbcType=BIGINT}
     </delete>
+
+    <!--鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鐢ㄦ埛淇℃伅-->
+    <select id="getUserInfos" resultType="com.dy.pipIrrGlobal.voBa.VoUserInfo">
+        SELECT
+            user.id AS userId,
+            user.`name` AS userName,
+            rol.id AS roleId,
+            rol.`name` AS roleName,
+            per.permissions
+        FROM ba_user user
+            INNER JOIN ba_user_role use_rol ON user.id = use_rol.userId
+            INNER JOIN ba_role rol ON rol.id = use_rol.roleId
+            INNER JOIN ba_role_permissions per ON per.roleId = rol.id
+        <where>
+            <if test = "userId != null and userId > 0">
+                AND user.id = ${userId}
+            </if>
+        </where>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml
new file mode 100644
index 0000000..d9b4ac4
--- /dev/null
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/PrDivideMapper.xml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dy.pipIrrGlobal.daoPr.PrDivideMapper">
+  <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoPr.PrDivide">
+    <!--@mbg.generated-->
+    <!--@Table pr_divide-->
+    <id column="id" jdbcType="BIGINT" property="id" />
+    <result column="countyId" jdbcType="BIGINT" property="countyid" />
+    <result column="townId" jdbcType="BIGINT" property="townid" />
+    <result column="villageId" jdbcType="BIGINT" property="villageid" />
+    <result column="blockId" jdbcType="BIGINT" property="blockid" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="villages" jdbcType="VARCHAR" property="villages" />
+    <result column="area" jdbcType="FLOAT" property="area" />
+    <result column="header" jdbcType="VARCHAR" property="header" />
+    <result column="phone" jdbcType="VARCHAR" property="phone" />
+    <result column="lng" jdbcType="DOUBLE" property="lng" />
+    <result column="lat" jdbcType="DOUBLE" property="lat" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="operator" jdbcType="BIGINT" property="operator" />
+    <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" />
+    <result column="deleted" jdbcType="TINYINT" property="deleted" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    <!--@mbg.generated-->
+    id, countyId, townId, villageId, blockId, `name`, villages, area, `header`, phone, 
+    lng, lat, remarks, `operator`, operateDt, deleted
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
+    <!--@mbg.generated-->
+    select 
+    <include refid="Base_Column_List" />
+    from pr_divide
+    where id = #{id,jdbcType=BIGINT}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <!--@mbg.generated-->
+    delete from pr_divide
+    where id = #{id,jdbcType=BIGINT}
+  </delete>
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoPr.PrDivide">
+    <!--@mbg.generated-->
+    insert into pr_divide (id, countyId, townId, 
+      villageId, blockId, `name`, 
+      villages, area, `header`, 
+      phone, lng, lat, remarks, 
+      `operator`, operateDt, deleted
+      )
+    values (#{id,jdbcType=BIGINT}, #{countyid,jdbcType=BIGINT}, #{townid,jdbcType=BIGINT}, 
+      #{villageid,jdbcType=BIGINT}, #{blockid,jdbcType=BIGINT}, #{name,jdbcType=VARCHAR}, 
+      #{villages,jdbcType=VARCHAR}, #{area,jdbcType=FLOAT}, #{header,jdbcType=VARCHAR}, 
+      #{phone,jdbcType=VARCHAR}, #{lng,jdbcType=DOUBLE}, #{lat,jdbcType=DOUBLE}, #{remarks,jdbcType=VARCHAR}, 
+      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}, #{deleted,jdbcType=TINYINT}
+      )
+  </insert>
+
+  <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrDivide">
+    <!--@mbg.generated-->
+    insert into pr_divide
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="countyid != null">
+        countyId,
+      </if>
+      <if test="townid != null">
+        townId,
+      </if>
+      <if test="villageid != null">
+        villageId,
+      </if>
+      <if test="blockid != null">
+        blockId,
+      </if>
+      <if test="name != null">
+        `name`,
+      </if>
+      <if test="villages != null">
+        villages,
+      </if>
+      <if test="area != null">
+        area,
+      </if>
+      <if test="header != null">
+        `header`,
+      </if>
+      <if test="phone != null">
+        phone,
+      </if>
+      <if test="lng != null">
+        lng,
+      </if>
+      <if test="lat != null">
+        lat,
+      </if>
+      <if test="remarks != null">
+        remarks,
+      </if>
+      <if test="operator != null">
+        `operator`,
+      </if>
+      <if test="operatedt != null">
+        operateDt,
+      </if>
+      <if test="deleted != null">
+        deleted,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=BIGINT},
+      </if>
+      <if test="countyid != null">
+        #{countyid,jdbcType=BIGINT},
+      </if>
+      <if test="townid != null">
+        #{townid,jdbcType=BIGINT},
+      </if>
+      <if test="villageid != null">
+        #{villageid,jdbcType=BIGINT},
+      </if>
+      <if test="blockid != null">
+        #{blockid,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="villages != null">
+        #{villages,jdbcType=VARCHAR},
+      </if>
+      <if test="area != null">
+        #{area,jdbcType=FLOAT},
+      </if>
+      <if test="header != null">
+        #{header,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="lng != null">
+        #{lng,jdbcType=DOUBLE},
+      </if>
+      <if test="lat != null">
+        #{lat,jdbcType=DOUBLE},
+      </if>
+      <if test="remarks != null">
+        #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=TINYINT},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoPr.PrDivide">
+    <!--@mbg.generated-->
+    update pr_divide
+    <set>
+      <if test="countyid != null">
+        countyId = #{countyid,jdbcType=BIGINT},
+      </if>
+      <if test="townid != null">
+        townId = #{townid,jdbcType=BIGINT},
+      </if>
+      <if test="villageid != null">
+        villageId = #{villageid,jdbcType=BIGINT},
+      </if>
+      <if test="blockid != null">
+        blockId = #{blockid,jdbcType=BIGINT},
+      </if>
+      <if test="name != null">
+        `name` = #{name,jdbcType=VARCHAR},
+      </if>
+      <if test="villages != null">
+        villages = #{villages,jdbcType=VARCHAR},
+      </if>
+      <if test="area != null">
+        area = #{area,jdbcType=FLOAT},
+      </if>
+      <if test="header != null">
+        `header` = #{header,jdbcType=VARCHAR},
+      </if>
+      <if test="phone != null">
+        phone = #{phone,jdbcType=VARCHAR},
+      </if>
+      <if test="lng != null">
+        lng = #{lng,jdbcType=DOUBLE},
+      </if>
+      <if test="lat != null">
+        lat = #{lat,jdbcType=DOUBLE},
+      </if>
+      <if test="remarks != null">
+        remarks = #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="operator != null">
+        `operator` = #{operator,jdbcType=BIGINT},
+      </if>
+      <if test="operatedt != null">
+        operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      </if>
+      <if test="deleted != null">
+        deleted = #{deleted,jdbcType=TINYINT},
+      </if>
+    </set>
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoPr.PrDivide">
+    <!--@mbg.generated-->
+    update pr_divide
+    set countyId = #{countyid,jdbcType=BIGINT},
+      townId = #{townid,jdbcType=BIGINT},
+      villageId = #{villageid,jdbcType=BIGINT},
+      blockId = #{blockid,jdbcType=BIGINT},
+      `name` = #{name,jdbcType=VARCHAR},
+      villages = #{villages,jdbcType=VARCHAR},
+      area = #{area,jdbcType=FLOAT},
+      `header` = #{header,jdbcType=VARCHAR},
+      phone = #{phone,jdbcType=VARCHAR},
+      lng = #{lng,jdbcType=DOUBLE},
+      lat = #{lat,jdbcType=DOUBLE},
+      remarks = #{remarks,jdbcType=VARCHAR},
+      `operator` = #{operator,jdbcType=BIGINT},
+      operateDt = #{operatedt,jdbcType=TIMESTAMP},
+      deleted = #{deleted,jdbcType=TINYINT}
+    where id = #{id,jdbcType=BIGINT}
+  </update>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰曟暟-->
+  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
+    SELECT
+        COUNT(*) AS recordCount
+    FROM pr_divide divi
+        INNER JOIN ba_block blo ON divi.blockId = blo.id
+        INNER JOIN ba_district country ON divi.countyId = country.id
+        INNER JOIN ba_district town ON divi.townId = town.id
+        INNER JOIN ba_district village ON divi.villageid = village.id
+        , (SELECT @i:=0) AS itable
+    <where>
+      <if test = "divideName != null and divideName !=''">
+        AND divi.name LIKE CONCAT('%',#{divideName},'%')
+      </if>
+
+      <if test = "blockName != null and blockName !=''">
+        AND blo.name = #{blockName}
+      </if>
+    </where>
+  </select>
+
+  <!--鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰�-->
+  <select id="getDivides" resultType="com.dy.pipIrrGlobal.voPr.VoDivide">
+    SELECT
+      (@i:=@i+1) AS id,
+      divi.name AS divideName,
+      blo.`name` AS blockName,
+      divi.header,
+      divi.phone,
+      CONCAT(country.`name`, town.`name`, village.`name`) AS address,
+      divi.operateDt
+    FROM pr_divide divi
+        INNER JOIN ba_block blo ON divi.blockId = blo.id
+        INNER JOIN ba_district country ON divi.countyId = country.id
+        INNER JOIN ba_district town ON divi.townId = town.id
+        INNER JOIN ba_district village ON divi.villageid = village.id
+        , (SELECT @i:=0) AS itable
+    <where>
+      <if test = "divideName != null and divideName !=''">
+        AND divi.name LIKE CONCAT('%',#{divideName},'%')
+      </if>
+
+      <if test = "blockName != null and blockName !=''">
+        AND blo.name = #{blockName}
+      </if>
+    </where>
+    ORDER BY divi.operateDt DESC
+    <if test="pageCurr != null and pageSize != null">
+      LIMIT ${pageCurr}, ${pageSize}
+    </if>
+  </select>
+
+</mapper>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
index f84a50d..941c01e 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
@@ -164,9 +164,9 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_active_card act
-        INNER JOIN ba_client cli ON act.clientNum = cli.num
-        INNER JOIN se_client_card card ON act.cardNum = card.cardNum
-        , (SELECT @i:=0) AS itable
+      INNER JOIN ba_client cli ON act.clientNum = cli.num
+      INNER JOIN se_client_card card ON act.cardNum = card.cardNum
+      , (SELECT @i:=0) AS itable
     <where>
       <if test = "operateType != null and operateType > 0">
         AND act.operateType = ${operateType}
@@ -175,10 +175,6 @@
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
-
-      <!--      <if test = "cardAddr != null and cardAddr !=''">-->
-      <!--        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')-->
-      <!--      </if>-->
 
       <if test = "cardNum != null and cardNum !=''">
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
@@ -199,13 +195,13 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.id AS clientId,
-        card.cardAddr,
+        cli.num AS clientNum,
+        card.cardNum,
         card.state,
         (CASE
-        WHEN card.state = 1 THEN "姝e父"
-        WHEN card.state = 2 THEN "宸叉敞閿�"
-        ELSE "宸叉寕澶�"
+          WHEN card.state = 1 THEN "姝e父"
+          WHEN card.state = 2 THEN "宸叉敞閿�"
+          ELSE "宸叉寕澶�"
         END) AS stateName,
         act.reissueAmount,
         act.cardCost,
@@ -224,10 +220,6 @@
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
-
-<!--      <if test = "cardAddr != null and cardAddr !=''">-->
-<!--        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')-->
-<!--      </if>-->
 
       <if test = "cardNum != null and cardNum !=''">
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
index 0aee3e7..2bbefd7 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeCancelMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_cancel-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardId" jdbcType="BIGINT" property="cardid" />
-    <result column="clientId" jdbcType="BIGINT" property="clientid" />
+    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
+    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
     <result column="refund" jdbcType="FLOAT" property="refund" />
     <result column="refundType" jdbcType="TINYINT" property="refundtype" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, clientId, refund, refundType, remarks, `operator`, operateDt
+    id, cardNum, clientNum, refund, refundType, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -30,39 +30,25 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel">
     <!--@mbg.generated-->
-    insert into se_cancel (id, cardId, clientId, refund, refundType, remarks, `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT},
-            #{cardid,jdbcType=BIGINT},
-            #{clientid,jdbcType=BIGINT},
-            #{refund,jdbcType=FLOAT},
-            #{refundtype,jdbcType=TINYINT},
-            #{remarks,jdbcType=VARCHAR},
-            #{operator,jdbcType=BIGINT},
-            #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_cancel (id, cardNum, clientNum, refund,
+      refundType, remarks, `operator`, 
+      operateDt)
+    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{refund,jdbcType=FLOAT},
+      #{refundtype,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
+      #{operatedt,jdbcType=TIMESTAMP})
   </insert>
-
-<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel" useGeneratedKeys="true">-->
-<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
-<!--    insert into se_cancel (cardId, clientId, refund, -->
-<!--      refundType, remarks, `operator`, -->
-<!--      operateDt)-->
-<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{refund,jdbcType=FLOAT}, -->
-<!--      #{refundtype,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, -->
-<!--      #{operatedt,jdbcType=TIMESTAMP})-->
-<!--  </insert>-->
-
 
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_cancel
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        cardId,
+      <if test="cardnum != null">
+        cardNum,
       </if>
-      <if test="clientid != null">
-        clientId,
+      <if test="clientnum != null">
+        clientNum,
       </if>
       <if test="refund != null">
         refund,
@@ -81,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="refund != null">
         #{refund,jdbcType=FLOAT},
@@ -108,11 +94,11 @@
     <!--@mbg.generated-->
     update se_cancel
     <set>
-      <if test="cardid != null">
-        cardId = #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        cardNum = #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        clientId = #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        clientNum = #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="refund != null">
         refund = #{refund,jdbcType=FLOAT},
@@ -135,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeCancel">
     <!--@mbg.generated-->
     update se_cancel
-    set cardId = #{cardid,jdbcType=BIGINT},
-      clientId = #{clientid,jdbcType=BIGINT},
+    set cardNum = #{cardnum,jdbcType=VARCHAR},
+      clientNum = #{clientnum,jdbcType=VARCHAR},
       refund = #{refund,jdbcType=FLOAT},
       refundType = #{refundtype,jdbcType=TINYINT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -150,16 +136,16 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_cancel can
-    INNER JOIN se_client_card card ON can.cardId = card.id
-    INNER JOIN ba_client cli ON can.clientId = cli.id
-    , (SELECT @i:=0) AS itable
+        INNER JOIN se_client_card card ON can.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON can.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "cancelTimeStart != null and cancelTimeStop != null">
@@ -173,33 +159,33 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.id AS clientId,
-        card.cardAddr,
+        cli.num AS clientNum,
+        card.cardNum,
         can.refund,
         (CASE
-        WHEN can.refundType = 1 THEN "鐜伴噾"
+            WHEN can.refundType = 1 THEN "鐜伴噾"
         END) AS refundTypeName,
         can.refundType,
         (SELECT `name` FROM ba_user WHERE id =  can.operator) AS operator,
         can.operateDt
     FROM se_cancel can
-    INNER JOIN se_client_card card ON can.cardId = card.id
-    INNER JOIN ba_client cli ON can.clientId = cli.id
-    , (SELECT @i:=0) AS itable
+        INNER JOIN se_client_card card ON can.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON can.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "cancelTimeStart != null and cancelTimeStop != null">
         AND can.operateDt BETWEEN #{cancelTimeStart} AND #{cancelTimeStop}
       </if>
     </where>
-
+    ORDER BY can.operateDt DESC
     <if test="pageCurr != null and pageSize != null">
       LIMIT ${pageCurr}, ${pageSize}
     </if>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
index c52b5ea..15d62b2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeLossMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_loss-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardId" jdbcType="BIGINT" property="cardid" />
-    <result column="clientId" jdbcType="BIGINT" property="clientid" />
+    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
+    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="refund" jdbcType="FLOAT" property="refund" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, clientId, money, refund, remarks, `operator`, operateDt
+    id, cardNum, clientNum, money, refund, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -30,38 +30,25 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss">
     <!--@mbg.generated-->
-    insert into se_loss (id, cardId, clientId, money, refund, remarks, `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT},
-            #{cardid,jdbcType=BIGINT},
-            #{clientid,jdbcType=BIGINT},
-            #{money,jdbcType=FLOAT},
-            #{refund,jdbcType=FLOAT},
-            #{remarks,jdbcType=VARCHAR},
-            #{operator,jdbcType=BIGINT},
-            #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_loss (id, cardNum, clientNum, money,
+      refund, remarks, `operator`, 
+      operateDt)
+    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+      #{refund,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
+      #{operatedt,jdbcType=TIMESTAMP})
   </insert>
-
-<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss" useGeneratedKeys="true">-->
-<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
-<!--    insert into se_loss (cardId, clientId, money, -->
-<!--      refund, remarks, `operator`, -->
-<!--      operateDt)-->
-<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, -->
-<!--      #{refund,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, -->
-<!--      #{operatedt,jdbcType=TIMESTAMP})-->
-<!--  </insert>-->
 
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_loss
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        cardId,
+      <if test="cardnum != null">
+        cardNum,
       </if>
-      <if test="clientid != null">
-        clientId,
+      <if test="clientnum != null">
+        clientNum,
       </if>
       <if test="money != null">
         money,
@@ -80,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -107,11 +94,11 @@
     <!--@mbg.generated-->
     update se_loss
     <set>
-      <if test="cardid != null">
-        cardId = #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        cardNum = #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        clientId = #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        clientNum = #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -134,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeLoss">
     <!--@mbg.generated-->
     update se_loss
-    set cardId = #{cardid,jdbcType=BIGINT},
-      clientId = #{clientid,jdbcType=BIGINT},
+    set cardNum = #{cardnum,jdbcType=VARCHAR},
+      clientNum = #{clientnum,jdbcType=VARCHAR},
       money = #{money,jdbcType=FLOAT},
       refund = #{refund,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -149,16 +136,16 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_loss loss
-    INNER JOIN se_client_card card ON loss.cardId = card.id
-    INNER JOIN ba_client cli ON loss.clientId = cli.id
+    INNER JOIN se_client_card card ON loss.cardNum = card.cardNum
+    INNER JOIN ba_client cli ON loss.clientNum = cli.num
     , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "lossTimeStart != null and lossTimeStop != null">
@@ -172,29 +159,29 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.id AS clientId,
-        card.cardAddr,
+        cli.num AS clientNum,
+        card.cardNum,
         loss.money,
         (SELECT `name` FROM ba_user WHERE id =  loss.operator) AS operator,
         loss.operateDt
     FROM se_loss loss
-        INNER JOIN se_client_card card ON loss.cardId = card.id
-        INNER JOIN ba_client cli ON loss.clientId = cli.id
+        INNER JOIN se_client_card card ON loss.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON loss.clientNum = cli.num
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "lossTimeStart != null and lossTimeStop != null">
         AND loss.operateDt BETWEEN #{lossTimeStart} AND #{lossTimeStop}
       </if>
     </where>
-
+    ORDER BY loss.operateDt DESC
     <if test="pageCurr != null and pageSize != null">
       LIMIT ${pageCurr}, ${pageSize}
     </if>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
index 00fe845..74c067d 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
@@ -190,24 +190,18 @@
     select
         COUNT(*) AS recordCount
     FROM se_recharge_history rec
-    INNER JOIN se_client_card card ON rec.cardNum = card.cardNum
-    INNER JOIN ba_client cli ON rec.clientNum = cli.num
-    , (SELECT @i:=0) AS itable
+        INNER JOIN se_client_card card ON rec.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON rec.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <!--      <if test = "clientId != null and clientId > 0">-->
-      <!--        AND rec.clientId like CONCAT('%',#{clientId},'%')-->
-      <!--      </if>-->
       <if test = "clientNum != null and clientNum > 0">
         AND rec.clientNum like CONCAT('%',#{clientNum},'%')
       </if>
 
-      <!--      <if test = "cardAddr != null and cardAddr !=''">-->
-      <!--        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')-->
-      <!--      </if>-->
       <if test = "cardNum != null and cardNum !=''">
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
@@ -244,16 +238,10 @@
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-<!--      <if test = "clientId != null and clientId > 0">-->
-<!--        AND rec.clientId like CONCAT('%',#{clientId},'%')-->
-<!--      </if>-->
       <if test = "clientNum != null and clientNum > 0">
         AND rec.clientNum like CONCAT('%',#{clientNum},'%')
       </if>
 
-<!--      <if test = "cardAddr != null and cardAddr !=''">-->
-<!--        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')-->
-<!--      </if>-->
       <if test = "cardNum != null and cardNum !=''">
         AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
index 0f5d2e2..03884b2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_reversal-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardId" jdbcType="BIGINT" property="cardid" />
-    <result column="clientId" jdbcType="BIGINT" property="clientid" />
+    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
+    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
     <result column="cardBalance" jdbcType="FLOAT" property="cardbalance" />
     <result column="systemBalance" jdbcType="FLOAT" property="systembalance" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -15,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, clientId, cardBalance, systemBalance, remarks, `operator`, operateDt
+    id, cardNum, clientNum, cardBalance, systemBalance, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -30,38 +30,25 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
     <!--@mbg.generated-->
-    insert into se_reversal (id, cardId, clientId, cardBalance, systemBalance, remarks, `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT},
-            #{cardid,jdbcType=BIGINT},
-            #{clientid,jdbcType=BIGINT},
-            #{cardbalance,jdbcType=FLOAT},
-            #{systembalance,jdbcType=FLOAT},
-            #{remarks,jdbcType=VARCHAR},
-            #{operator,jdbcType=BIGINT},
-            #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_reversal (id, cardNum, clientNum, cardBalance,
+      systemBalance, remarks, `operator`, 
+      operateDt)
+    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{cardbalance,jdbcType=FLOAT},
+      #{systembalance,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, 
+      #{operatedt,jdbcType=TIMESTAMP})
   </insert>
-
-<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal" useGeneratedKeys="true">-->
-<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
-<!--    insert into se_reversal (cardId, clientId, cardBalance, -->
-<!--      systemBalance, remarks, `operator`, -->
-<!--      operateDt)-->
-<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{cardbalance,jdbcType=FLOAT}, -->
-<!--      #{systembalance,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, -->
-<!--      #{operatedt,jdbcType=TIMESTAMP})-->
-<!--  </insert>-->
 
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_reversal
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        cardId,
+      <if test="cardnum != null">
+        cardNum,
       </if>
-      <if test="clientid != null">
-        clientId,
+      <if test="clientnum != null">
+        clientNum,
       </if>
       <if test="cardbalance != null">
         cardBalance,
@@ -80,11 +67,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="cardbalance != null">
         #{cardbalance,jdbcType=FLOAT},
@@ -107,11 +94,11 @@
     <!--@mbg.generated-->
     update se_reversal
     <set>
-      <if test="cardid != null">
-        cardId = #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        cardNum = #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        clientId = #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        clientNum = #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="cardbalance != null">
         cardBalance = #{cardbalance,jdbcType=FLOAT},
@@ -134,8 +121,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
     <!--@mbg.generated-->
     update se_reversal
-    set cardId = #{cardid,jdbcType=BIGINT},
-      clientId = #{clientid,jdbcType=BIGINT},
+    set cardNum = #{cardnum,jdbcType=VARCHAR},
+      clientNum = #{clientnum,jdbcType=VARCHAR},
       cardBalance = #{cardbalance,jdbcType=FLOAT},
       systemBalance = #{systembalance,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -147,22 +134,22 @@
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧啿姝h褰曟暟-->
   <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
     SELECT
-    COUNT(*) AS recordCount
-    FROM se_client_card card
-    INNER JOIN se_reversal rev ON rev.cardId = card.id
-    INNER JOIN ba_client cli ON	 card.clientId = cli.id
-    , (SELECT @i:=0) AS itable
+        COUNT(*) AS recordCount
+    FROM se_reversal rev
+        INNER JOIN se_client_card card ON rev.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON rev.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
-      <if test = "reversallTimeStart != null and reversalTimeStop != null">
-        AND card.unlockDt BETWEEN #{reversallTimeStart} AND #{reversalTimeStop}
+      <if test = "reversalTimeStart != null and reversalTimeStop != null">
+        AND rev.operateDt BETWEEN #{reversalTimeStart} AND #{reversalTimeStop}
       </if>
     </where>
   </select>
@@ -172,29 +159,29 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.id AS clientId,
-        card.cardAddr,
+        cli.num AS clientNum,
+        card.cardNum,
         rev.cardBalance,
         (SELECT `name` FROM ba_user WHERE id =  rev.operator) AS operator,
         rev.operateDt
     FROM se_reversal rev
-        INNER JOIN se_client_card card ON rev.cardId = card.id
-        INNER JOIN ba_client cli ON rev.clientId = cli.id
+        INNER JOIN se_client_card card ON rev.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON rev.clientNum = cli.num
         , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "reversalTimeStart != null and reversalTimeStop != null">
         AND rev.operateDt BETWEEN #{reversalTimeStart} AND #{reversalTimeStop}
       </if>
     </where>
-
+    ORDER BY rev.operateDt DESC
     <if test="pageCurr != null and pageSize != null">
       LIMIT ${pageCurr}, ${pageSize}
     </if>
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
index 0642219..329661f 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
@@ -5,8 +5,8 @@
     <!--@mbg.generated-->
     <!--@Table se_unlock-->
     <id column="id" jdbcType="BIGINT" property="id" />
-    <result column="cardId" jdbcType="BIGINT" property="cardid" />
-    <result column="clientId" jdbcType="BIGINT" property="clientid" />
+    <result column="cardNum" jdbcType="VARCHAR" property="cardnum" />
+    <result column="clientNum" jdbcType="VARCHAR" property="clientnum" />
     <result column="money" jdbcType="FLOAT" property="money" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
     <result column="operator" jdbcType="BIGINT" property="operator" />
@@ -14,7 +14,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, clientId, money, remarks, `operator`, operateDt
+    id, cardNum, clientNum, money, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -29,36 +29,25 @@
     where id = #{id,jdbcType=BIGINT}
   </delete>
 
-  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
     <!--@mbg.generated-->
-    insert into se_unlock (id, cardId, clientId, money, remarks, `operator`, operateDt)
-    values (#{id,jdbcType=BIGINT},
-            #{cardid,jdbcType=BIGINT},
-            #{clientid,jdbcType=BIGINT},
-            #{money,jdbcType=FLOAT},
-            #{remarks,jdbcType=VARCHAR},
-            #{operator,jdbcType=BIGINT},
-            #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_unlock (id, cardNum, clientNum, money,
+      remarks, `operator`, operateDt
+      )
+    values (#{id,jdbcType=BIGINT}, #{cardnum,jdbcType=VARCHAR}, #{clientnum,jdbcType=VARCHAR}, #{money,jdbcType=FLOAT},
+      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}
+      )
   </insert>
 
-<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock" useGeneratedKeys="true">-->
-<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
-<!--    insert into se_unlock (cardId, clientId, money, -->
-<!--      remarks, `operator`, operateDt-->
-<!--      )-->
-<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, -->
-<!--      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}-->
-<!--      )-->
-<!--  </insert>-->
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_unlock
     <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        cardId,
+      <if test="cardnum != null">
+        cardNum,
       </if>
-      <if test="clientid != null">
-        clientId,
+      <if test="clientnum != null">
+        clientNum,
       </if>
       <if test="money != null">
         money,
@@ -74,11 +63,11 @@
       </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="cardid != null">
-        #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -98,11 +87,11 @@
     <!--@mbg.generated-->
     update se_unlock
     <set>
-      <if test="cardid != null">
-        cardId = #{cardid,jdbcType=BIGINT},
+      <if test="cardnum != null">
+        cardNum = #{cardnum,jdbcType=VARCHAR},
       </if>
-      <if test="clientid != null">
-        clientId = #{clientid,jdbcType=BIGINT},
+      <if test="clientnum != null">
+        clientNum = #{clientnum,jdbcType=VARCHAR},
       </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
@@ -122,8 +111,8 @@
   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
     <!--@mbg.generated-->
     update se_unlock
-    set cardId = #{cardid,jdbcType=BIGINT},
-      clientId = #{clientid,jdbcType=BIGINT},
+    set cardNum = #{cardnum,jdbcType=VARCHAR},
+      clientNum = #{clientnum,jdbcType=VARCHAR},
       money = #{money,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
       `operator` = #{operator,jdbcType=BIGINT},
@@ -136,16 +125,16 @@
     SELECT
         COUNT(*) AS recordCount
     FROM se_unlock unl
-    INNER JOIN se_client_card card ON unl.cardId = card.id
-    INNER JOIN ba_client cli ON unl.clientId = cli.id
-    , (SELECT @i:=0) AS itable
+        INNER JOIN se_client_card card ON unl.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON unl.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "unlocklTimeStart != null and unlockTimeStop != null">
@@ -159,29 +148,29 @@
     SELECT
         (@i:=@i+1) AS id,
         cli.`name` AS clientName,
-        cli.id AS clientId,
-        card.cardAddr,
+        cli.num AS clientNum,
+        card.cardNum,
         unl.money,
         (SELECT `name` FROM ba_user WHERE id =  unl.operator) AS operator,
         unl.operateDt
     FROM se_unlock unl
-      INNER JOIN se_client_card card ON unl.cardId = card.id
-      INNER JOIN ba_client cli ON unl.clientId = cli.id
-      , (SELECT @i:=0) AS itable
+        INNER JOIN se_client_card card ON unl.cardNum = card.cardNum
+        INNER JOIN ba_client cli ON unl.clientNum = cli.num
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
       </if>
 
-      <if test = "cardAddr != null and cardAddr !=''">
-        AND card.cardAddr like CONCAT('%',#{cardAddr},'%')
+      <if test = "cardNum != null and cardNum !=''">
+        AND card.cardNum like CONCAT('%',#{cardNum},'%')
       </if>
 
       <if test = "unlocklTimeStart != null and unlockTimeStop != null">
         AND unl.operateDt BETWEEN #{unlocklTimeStart} AND #{unlockTimeStop}
       </if>
     </where>
-
+    ORDER BY unl.operateDt DESC
     <if test="pageCurr != null and pageSize != null">
       LIMIT ${pageCurr}, ${pageSize}
     </if>
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/result/SystemResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/result/SystemResultCode.java
new file mode 100644
index 0000000..bc30e74
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/result/SystemResultCode.java
@@ -0,0 +1,23 @@
+package com.dy.pipIrrBase.result;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 13:46
+ * @LastEditTime 2023/12/20 13:46
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum SystemResultCode {
+    /**
+     * 瑙掕壊
+     */
+    PERMISSION_ERROR(10001, "鎺堟潈閿欒");
+
+    private final Integer code;
+    private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
index a115dea..df75fe1 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleCtrl.java
@@ -6,8 +6,10 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrBase.result.SystemResultCode;
 import com.dy.pipIrrBase.user.QueryVo;
 import com.dy.pipIrrGlobal.pojoBa.BaRole;
+import com.dy.pipIrrGlobal.pojoBa.BaRolePermissions;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -16,23 +18,26 @@
 import io.swagger.v3.oas.annotations.responses.ApiResponses;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 @Slf4j
 @Tag(name = "瑙掕壊绠$悊", description = "瑙掕壊澧炲垹鏀规煡绛夋搷浣�")
 @RestController
 @RequestMapping(path="role")
+@RequiredArgsConstructor
 @SuppressWarnings("unchecked")//java鐗堟湰瓒婇珮锛屽娉涘瀷绾︽潫瓒婁弗锛屾墍浠ラ厤缃甋uppressWarnings("unchecked")
 public class RoleCtrl {
 
     private RoleSv sv ;
+    private final RoleSv roleSv;
 
     @Autowired
     private void setSv(RoleSv sv){
@@ -129,7 +134,7 @@
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
         po.id = null ;
-        int count;
+        Long count;
         try {
             po.deleted = Deleted.NO ;//榛樿涓嶅垹闄�
             count = this.sv.save(po);
@@ -252,4 +257,55 @@
         }
     }
 
+    @Operation(summary = "鎺堟潈", description = "鎺堟潈")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "addPermissions", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop("-1")//@SsoAop(power = "-1")
+    public BaseResponse<Boolean> permission(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid BaRolePermissions po, @Parameter(hidden = true) BindingResult bindingResult){
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        /**
+         * 濡傛灉roleid鍜宺oleName閮界┖锛氭彁绀洪敊璇俊鎭�
+         * 濡傛灉roleid涓虹┖锛氭柊寤鸿鑹蹭笖鎺堟潈
+         *      1. 娣诲姞瑙掕壊璁板綍
+         *      2. 娣诲姞瑙掕壊銆佹潈闄愬叧鑱旇褰�
+         * 濡傛灉roleid涓嶄负绌猴細淇敼瑙掕壊鎺堟潈
+         *      1. 鍒犻櫎瑙掕壊銆佹潈闄愯褰�
+         *      2. 娣诲姞瑙掕壊銆佹潈闄愯褰�
+         */
+
+        Long roleid = Optional.ofNullable(po.getRoleid()).orElse(0L);
+        String roleName = Optional.ofNullable(po.getRoleName()).orElse("");
+        String permissions = Optional.ofNullable(po.getPermissions()).orElse("");
+
+        if(roleid == 0 && roleName.length() == 0) {
+            return BaseResponseUtils.buildFail(SystemResultCode.PERMISSION_ERROR.getMessage());
+        }
+
+        // 鏂板缓瑙掕壊涓旀巿鏉�
+        if(roleid == 0) {
+            BaRole baRole = new BaRole();
+            baRole.setName(roleName);
+            roleid = Optional.ofNullable(roleSv.save(baRole)).orElse(0L);
+            po.setRoleid(roleid);
+            roleSv.addPermissions(po);
+            return BaseResponseUtils.buildSuccess(true) ;
+        }
+
+        // 淇敼瑙掕壊鎺堟潈
+        roleSv.delPermissionsByRoleId(roleid);
+        roleSv.addPermissions(po);
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleSv.java
index d67b381..073fe7d 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/role/RoleSv.java
@@ -3,8 +3,10 @@
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrBase.user.QueryVo;
 import com.dy.pipIrrGlobal.daoBa.BaRoleMapper;
+import com.dy.pipIrrGlobal.daoBa.BaRolePermissionsMapper;
 import com.dy.pipIrrGlobal.daoBa.BaRolePrivilegeMapper;
 import com.dy.pipIrrGlobal.pojoBa.BaRole;
+import com.dy.pipIrrGlobal.pojoBa.BaRolePermissions;
 import com.dy.pipIrrGlobal.pojoBa.BaRolePrivilege;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
@@ -32,6 +34,8 @@
         this.rolePrivDao = dao;
     }
 
+    @Autowired
+    private BaRolePermissionsMapper baRolePermissionsMapper;
 
     /**
      * 寰楀埌鎵�鏈夎鑹�
@@ -78,9 +82,15 @@
      * @param po 瀹炰綋
      * @return 褰卞搷璁板綍鏁伴噺
      */
+
+    /**
+     * 12鏈�20鏃� 鏈卞疂姘戜慨鏀硅繑鍥炲�硷紝娣诲姞瑙掕壊鍚庤繑鍥炰富閿�
+     */
     @Transactional
-    public int save(BaRole po){
-        return this.dao.putin(po) ;
+    public Long save(BaRole po){
+        //return this.dao.putin(po) ;
+        this.dao.putin(po) ;
+        return po.getId();
     }
 
     /**
@@ -126,5 +136,22 @@
         return this.dao.deleteLogicById(id) ;
     }
 
+    /**
+     * 娣诲姞鎺堟潈璁板綍
+     * @param po
+     * @return
+     */
+    public Integer addPermissions(BaRolePermissions po) {
+        return baRolePermissionsMapper.insert(po);
+    }
+
+    /**
+     * 渚濇嵁瑙掕壊缂栧彿鍒犻櫎鎺堟潈璁板綍
+     * @param roleid
+     * @return
+     */
+    public Integer delPermissionsByRoleId(Long roleid) {
+        return baRolePermissionsMapper.delPermissionsByRoleId(roleid);
+    }
 
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
index bdca5c5..760b054 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserCtrl.java
@@ -11,6 +11,7 @@
 import com.dy.common.webUtil.ResultCodeMsg;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
 import com.dy.pipIrrGlobal.util.Constant;
+import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import com.mysql.cj.util.StringUtils;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -49,7 +50,6 @@
     private void setSv(UserSv sv) {
         this.sv = sv;
     }
-
 
     /**
      * 瀹㈡埛绔姹傚緱鍒伴粯璁ゅ瘑鐮�
@@ -474,4 +474,31 @@
             return BaseResponseUtils.buildSuccess(true);
         }
     }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鐢ㄦ埛淇℃伅
+     * @param userId 鐢ㄦ埛缂栧彿
+     * @return 鐢ㄦ埛淇℃伅鍒楄〃
+     */
+    @Operation(summary = "鑾峰緱鍏ㄩ儴鐢ㄦ埛淇℃伅", description = "杩斿洖鍏ㄩ儴鐢ㄦ埛淇℃伅鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖鍏ㄩ儴鐢ㄦ埛鏁版嵁锛圔aseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = BaUser.class))}
+            )
+    })
+    @GetMapping("/getUserInfos/{userId}")
+    @SsoAop("-1")
+    public BaseResponse<QueryResultVo<List<VoUserInfo>>> getUserInfos(@PathVariable("userId") Long userId) {
+        try {
+            List<VoUserInfo> res = this.sv.getUserInfos(userId);
+            System.out.println("   :" + res);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鏌ヨ鐢ㄦ埛淇℃伅寮傚父", e);
+            return BaseResponseUtils.buildException(e.getMessage());
+        }
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
index 0c900bd..ebe2415 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-base/src/main/java/com/dy/pipIrrBase/user/UserSv.java
@@ -6,6 +6,7 @@
 import com.dy.pipIrrGlobal.daoBa.BaUserRoleMapper;
 import com.dy.pipIrrGlobal.pojoBa.BaUser;
 import com.dy.pipIrrGlobal.pojoBa.BaUserRole;
+import com.dy.pipIrrGlobal.voBa.VoUserInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -162,5 +163,12 @@
         return val;
     }
 
-
+    /**
+     * 鏍规嵁鐢ㄦ埛缂栧彿鑾峰彇鐢ㄦ埛淇℃伅
+     * @param userId 鐢ㄦ埛缂栧彿
+     * @return 鐢ㄦ埛淇℃伅鍒楄〃
+     */
+    public List<VoUserInfo> getUserInfos(Long userId) {
+        return dao.getUserInfos(userId);
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/.gitignore b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.gitignore
new file mode 100644
index 0000000..f80a40f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.gitignore
@@ -0,0 +1,34 @@
+HELP.md
+target/
+/pipIrr-web-sell.iml
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.jar b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000..cb28b0e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.jar
Binary files differ
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.properties b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..5f0536e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,2 @@
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw b/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw
new file mode 100644
index 0000000..66df285
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw
@@ -0,0 +1,308 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#    https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.2.0
+#
+# Required ENV vars:
+# ------------------
+#   JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+#   MAVEN_OPTS - parameters passed to the Java VM when running Maven
+#     e.g. to debug Maven itself, use
+#       set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+#   MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+  if [ -f /usr/local/etc/mavenrc ] ; then
+    . /usr/local/etc/mavenrc
+  fi
+
+  if [ -f /etc/mavenrc ] ; then
+    . /etc/mavenrc
+  fi
+
+  if [ -f "$HOME/.mavenrc" ] ; then
+    . "$HOME/.mavenrc"
+  fi
+
+fi
+
+# OS specific support.  $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "$(uname)" in
+  CYGWIN*) cygwin=true ;;
+  MINGW*) mingw=true;;
+  Darwin*) darwin=true
+    # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+    # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+    if [ -z "$JAVA_HOME" ]; then
+      if [ -x "/usr/libexec/java_home" ]; then
+        JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
+      else
+        JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
+      fi
+    fi
+    ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+  if [ -r /etc/gentoo-release ] ; then
+    JAVA_HOME=$(java-config --jre-home)
+  fi
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+  [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
+    JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+  javaExecutable="$(which javac)"
+  if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
+    # readlink(1) is not available as standard on Solaris 10.
+    readLink=$(which readlink)
+    if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
+      if $darwin ; then
+        javaHome="$(dirname "\"$javaExecutable\"")"
+        javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
+      else
+        javaExecutable="$(readlink -f "\"$javaExecutable\"")"
+      fi
+      javaHome="$(dirname "\"$javaExecutable\"")"
+      javaHome=$(expr "$javaHome" : '\(.*\)/bin')
+      JAVA_HOME="$javaHome"
+      export JAVA_HOME
+    fi
+  fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+  if [ -n "$JAVA_HOME"  ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+      # IBM's JDK on AIX uses strange locations for the executables
+      JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+      JAVACMD="$JAVA_HOME/bin/java"
+    fi
+  else
+    JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
+  fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+  echo "Error: JAVA_HOME is not defined correctly." >&2
+  echo "  We cannot execute $JAVACMD" >&2
+  exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+  echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+  if [ -z "$1" ]
+  then
+    echo "Path not specified to find_maven_basedir"
+    return 1
+  fi
+
+  basedir="$1"
+  wdir="$1"
+  while [ "$wdir" != '/' ] ; do
+    if [ -d "$wdir"/.mvn ] ; then
+      basedir=$wdir
+      break
+    fi
+    # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+    if [ -d "${wdir}" ]; then
+      wdir=$(cd "$wdir/.." || exit 1; pwd)
+    fi
+    # end of workaround
+  done
+  printf '%s' "$(cd "$basedir" || exit 1; pwd)"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+  if [ -f "$1" ]; then
+    # Remove \r in case we run on Windows within Git Bash
+    # and check out the repository with auto CRLF management
+    # enabled. Otherwise, we may read lines that are delimited with
+    # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
+    # splitting rules.
+    tr -s '\r\n' ' ' < "$1"
+  fi
+}
+
+log() {
+  if [ "$MVNW_VERBOSE" = true ]; then
+    printf '%s\n' "$1"
+  fi
+}
+
+BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
+if [ -z "$BASE_DIR" ]; then
+  exit 1;
+fi
+
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
+log "$MAVEN_PROJECTBASEDIR"
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+if [ -r "$wrapperJarPath" ]; then
+    log "Found $wrapperJarPath"
+else
+    log "Couldn't find $wrapperJarPath, downloading it ..."
+
+    if [ -n "$MVNW_REPOURL" ]; then
+      wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    else
+      wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    fi
+    while IFS="=" read -r key value; do
+      # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
+      safeValue=$(echo "$value" | tr -d '\r')
+      case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
+      esac
+    done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+    log "Downloading from: $wrapperUrl"
+
+    if $cygwin; then
+      wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+    fi
+
+    if command -v wget > /dev/null; then
+        log "Found wget ... using wget"
+        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        else
+            wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+        fi
+    elif command -v curl > /dev/null; then
+        log "Found curl ... using curl"
+        [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+        if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+            curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+        else
+            curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+        fi
+    else
+        log "Falling back to using Java to download"
+        javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
+        javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
+        # For Cygwin, switch paths to Windows format before running javac
+        if $cygwin; then
+          javaSource=$(cygpath --path --windows "$javaSource")
+          javaClass=$(cygpath --path --windows "$javaClass")
+        fi
+        if [ -e "$javaSource" ]; then
+            if [ ! -e "$javaClass" ]; then
+                log " - Compiling MavenWrapperDownloader.java ..."
+                ("$JAVA_HOME/bin/javac" "$javaSource")
+            fi
+            if [ -e "$javaClass" ]; then
+                log " - Running MavenWrapperDownloader.java ..."
+                ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
+            fi
+        fi
+    fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+# If specified, validate the SHA-256 sum of the Maven wrapper jar file
+wrapperSha256Sum=""
+while IFS="=" read -r key value; do
+  case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
+  esac
+done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+if [ -n "$wrapperSha256Sum" ]; then
+  wrapperSha256Result=false
+  if command -v sha256sum > /dev/null; then
+    if echo "$wrapperSha256Sum  $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
+      wrapperSha256Result=true
+    fi
+  elif command -v shasum > /dev/null; then
+    if echo "$wrapperSha256Sum  $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
+      wrapperSha256Result=true
+    fi
+  else
+    echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
+    echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
+    exit 1
+  fi
+  if [ $wrapperSha256Result = false ]; then
+    echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
+    echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
+    echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
+    exit 1
+  fi
+fi
+
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+  [ -n "$JAVA_HOME" ] &&
+    JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+  [ -n "$CLASSPATH" ] &&
+    CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+  [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+    MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+# shellcheck disable=SC2086 # safe args
+exec "$JAVACMD" \
+  $MAVEN_OPTS \
+  $MAVEN_DEBUG_OPTS \
+  -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+  "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+  ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw.cmd b/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw.cmd
new file mode 100644
index 0000000..95ba6f5
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/mvnw.cmd
@@ -0,0 +1,205 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM    https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.2.0
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM     e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on"  echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Found %WRAPPER_JAR%
+    )
+) else (
+    if not "%MVNW_REPOURL%" == "" (
+        SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+    )
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Couldn't find %WRAPPER_JAR%, downloading it ...
+        echo Downloading from: %WRAPPER_URL%
+    )
+
+    powershell -Command "&{"^
+		"$webclient = new-object System.Net.WebClient;"^
+		"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+		"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+		"}"^
+		"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
+		"}"
+    if "%MVNW_VERBOSE%" == "true" (
+        echo Finished downloading %WRAPPER_JAR%
+    )
+)
+@REM End of extension
+
+@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
+SET WRAPPER_SHA_256_SUM=""
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+    IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
+)
+IF NOT %WRAPPER_SHA_256_SUM%=="" (
+    powershell -Command "&{"^
+       "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
+       "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
+       "  Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
+       "  Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
+       "  Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
+       "  exit 1;"^
+       "}"^
+       "}"
+    if ERRORLEVEL 1 goto error
+)
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+  %JVM_CONFIG_MAVEN_PROPS% ^
+  %MAVEN_OPTS% ^
+  %MAVEN_DEBUG_OPTS% ^
+  -classpath %WRAPPER_JAR% ^
+  "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+  %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml
new file mode 100644
index 0000000..c01d5cf
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/pom.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>pipIrr-web</artifactId>
+        <groupId>com.dy</groupId>
+        <version>1.0.0</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <packaging>jar</packaging>
+    <artifactId>pipIrr-web-project</artifactId>
+    <name>pipIrr-web-project</name>
+    <description>web椤圭洰閰嶇疆绯荤粺</description>
+
+
+    <build>
+        <plugins>
+            <!-- 鐢熸垚涓嶅寘鍚緷璧杍ar鐨勫彲鎵цjar鍖�
+            <plugin>
+                !- spring boot鎻愪緵鐨刴aven鎵撳寘鎻掍欢 -
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        !-
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                        -
+                        <configuration>
+                            !- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar  -
+                            <classifier>execute</classifier>
+                            !- 涓嶆寚瀹氱敓鎴愯矾寰勭殑璇�, 榛樿淇濆瓨鍦� ${build.directory} 涓� -
+                            <outputDirectory>${project.build.directory}/execute</outputDirectory>
+                            <finalName>${artifactId}-${version}</finalName>
+                            <layout>ZIP</layout>
+                            <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
+                            <includes>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-common</artifactId>
+                                </include>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-global</artifactId>
+                                </include>
+                            </includes>
+                            <excludes>
+                                <exclude>
+                                    <groupId>org.projectlombok</groupId>
+                                    <artifactId>lombok</artifactId>
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+
+            </plugin>
+            -->
+            <!-- 鎷疯礉渚濊禆鐨刯ar鍖呭埌lib鐩綍-->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <configuration>
+                            <!-- 涓嶅姞鐨勮瘽鏈�缁堝寘鍚嶄负: ${artifactId}-${version}.jar, 鍔犱簡鐨勮瘽鏈�缁堝寘鍚�: ${artifactId}-${version}-${classifier}.jar
+                            <classifier>execute</classifier>
+                            -->
+                            <!-- ${project.build.directory}鏄痬aven鍙橀噺锛屽唴缃殑锛岃〃绀簍arget鐩綍,濡傛灉涓嶅啓锛屽皢鍦ㄦ牴鐩綍涓嬪垱寤�/lib -->
+                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                            <!-- excludeTransitive:鏄惁涓嶅寘鍚棿鎺ヤ緷璧栧寘锛屾瘮濡傛垜浠緷璧朅锛屼絾鏄疉鍙堜緷璧栦簡B锛屾垜浠槸鍚︿篃瑕佹妸B鎵撹繘鍘� 榛樿涓嶆墦-->
+                            <excludeTransitive>false</excludeTransitive>
+                            <!-- 澶嶅埗鐨刯ar鏂囦欢鍘绘帀鐗堟湰淇℃伅 -->
+                            <stripVersion>false</stripVersion>
+                            <finalName>${project.artifactId}-${project.version}</finalName>
+                            <layout>ZIP</layout>
+                            <mainClass>com.dy.pipIrrBase.PipIrrBaseApplication</mainClass>
+                            <includes>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-common</artifactId>
+                                </include>
+                                <include>
+                                    <groupId>com.dy</groupId>
+                                    <artifactId>pipIrr-global</artifactId>
+                                </include>
+                            </includes>
+                            <excludes>
+                                <exclude>
+                                    <groupId>org.projectlombok</groupId>
+                                    <artifactId>lombok</artifactId>
+                                </exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <!-- 璁剧疆java缂栬瘧鐗堟湰锛岃繍琛岀幆澧冪増鏈� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <!-- source锛� 婧愪唬鐮佺紪璇戠増鏈紱target锛� 鐩爣骞冲彴缂栬瘧鐗堟湰锛沞ncoding锛� 瀛楃闆嗙紪鐮併�� -->
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 瑙e喅璧勬簮鏂囦欢鐨勭紪鐮侀棶棰� -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-resources-plugin</artifactId>
+                <configuration>
+                    <encoding>${encoding}</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- maven閲屾墽琛屾祴璇曠敤渚嬬殑鎻掍欢 -->
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <skipTests>true</skipTests>
+                </configuration>
+            </plugin>
+            <plugin>
+                <!-- 涓嬮潰瑙e喅锛氬綋杩涜Maven Lifecycle package鏃舵姤閿欙細Could not find artifact org.apache.mina:mina-core:bundle:2.2.1 in maven (https://repo1.maven.org/maven2/)-->
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
new file mode 100644
index 0000000..f46ea6a
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/PipIrrProjectApplication.java
@@ -0,0 +1,28 @@
+package com.dy.pipIrrProject;
+
+import com.dy.common.multiDataSource.EnableMultiDataSource;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 19:43
+ * @LastEditTime 2023/12/20 19:43
+ * @Description
+ */
+
+@SpringBootApplication
+@EnableAspectJAutoProxy
+@EnableMultiDataSource
+@ComponentScan(basePackages = {"com.dy.common", "com.dy.pipIrrGlobal", "com.dy.pipIrrProject"})
+@MapperScan({"com.dy.pipIrrGlobal.daoPr"})
+public class PipIrrProjectApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(PipIrrProjectApplication.class, args);
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebFilterConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebFilterConfiguration.java
new file mode 100644
index 0000000..8d876fc
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebFilterConfiguration.java
@@ -0,0 +1,52 @@
+package com.dy.pipIrrProject.config;
+
+import com.dy.common.webFilter.DevOfDataSourceNameSetFilter;
+import com.dy.common.webFilter.UserTokenFilter;
+import jakarta.servlet.Filter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 21:17
+ * @LastEditTime 2023/12/20 21:17
+ * @Description
+ */
+
+@Configuration
+public class WebFilterConfiguration {
+
+    @Value("${pipIrr.global.dev}")
+    public String isDevStage ;//鏄惁涓哄紑鍙戦樁娈�
+    @Value("${pipIrr.global.dsName}")
+    public String dsName ;//寮�鍙戦樁娈电殑鏁版嵁婧愬悕绉�
+
+    /**
+     * DevOfDataSourceNameSetFilter涓嶶serTokenFilter鍙兘涓�涓閰嶇疆涓婏紝
+     * 鎵�浠ヤ粬浠殑order閮芥槸1
+     */
+    private static final int order_UserTokenFilter = 1 ;//涓庝笅闈�
+    private static final int order_DevOfDataSourceNameSetFilter = 1 ;
+
+
+    @Bean
+    public FilterRegistrationBean<? extends Filter> RegFilter() {
+        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<>();
+        if(this.isDevStage != null && !this.isDevStage.trim().equals("") && this.isDevStage.trim().equalsIgnoreCase("true")){
+            filterRegistrationBean.setFilter(new DevOfDataSourceNameSetFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.addInitParameter("dataSourceName",dsName);//璁剧疆init鍙傛暟
+            filterRegistrationBean.setName("DevOfDataSourceNameSetFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_DevOfDataSourceNameSetFilter);//鎵ц娆″簭
+        }else{
+            filterRegistrationBean.setFilter(new UserTokenFilter());
+            filterRegistrationBean.addUrlPatterns("/*");//閰嶇疆杩囨护瑙勫垯
+            filterRegistrationBean.setName("UserTokenFilter");//璁剧疆杩囨护鍣ㄥ悕绉�
+            filterRegistrationBean.setOrder(order_UserTokenFilter);//鎵ц娆″簭
+        }
+        return filterRegistrationBean;
+    }
+
+}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebListenerConfiguration.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebListenerConfiguration.java
new file mode 100644
index 0000000..19afd6d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/config/WebListenerConfiguration.java
@@ -0,0 +1,68 @@
+package com.dy.pipIrrProject.config;
+
+import com.dy.common.webListener.GenerateIdSetSuffixListener;
+import jakarta.servlet.ServletContextListener;
+import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/5 10:33
+ * @LastEditTime 2023/12/5 10:33
+ * @Description
+ */
+@Configuration
+public class WebListenerConfiguration {
+
+    /**
+     * 鍚姩椤哄簭
+     */
+    //private static final int order_config = 0 ;
+    private static final int order_idSetSuffix = 1 ;
+    //private static final int order_init = 2 ;
+
+    /*
+    * 瑙f瀽鍚勭***.config閰嶇疆鐨凜onfigListener锛屾殏鏃朵笉閲囩敤姝ょ閰嶇疆鏂瑰紡
+    *
+    @Bean
+    public ConfigListener getGlConfigListener(){
+        return new ConfigListener() ;
+    }
+    /**
+     * 澶栭儴鎻愪緵Listener
+     * @param listener 澶栭儴鎻愪緵Listener
+     * @return 娉ㄥ唽Bean
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> regConfigListener(ConfigListener listener) {
+        ServletListenerRegistrationBean<ConfigListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(listener);
+        listenerRegistrationBean.setOrder(order_config);
+        return listenerRegistrationBean;
+    }
+    */
+
+    /**
+     * 鍐呴儴鎻愪緵listener锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屾牴鎹厤缃� 璁剧疆ID浜х敓鍣ㄧ殑鍚庣紑
+     * @return 娉ㄥ唽Bean
+     */
+    @Bean
+    public ServletListenerRegistrationBean<? extends ServletContextListener> regSsoListener() {
+        ServletListenerRegistrationBean<GenerateIdSetSuffixListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+        listenerRegistrationBean.setListener(new GenerateIdSetSuffixListener());
+        listenerRegistrationBean.setOrder(order_idSetSuffix);
+        return listenerRegistrationBean;
+    }
+
+//    /**
+//     * 鍐呴儴鎻愪緵listener锛岃listener鍦ㄧ郴缁熷惎鍔ㄦ椂锛屽垵濮嬪寲鏁版嵁搴撴暟鎹�
+//     * @return 娉ㄥ唽Bean
+//     */
+//    @Bean
+//    public ServletListenerRegistrationBean<? extends ServletContextListener> regInitListener() {
+//        ServletListenerRegistrationBean<InitListener> listenerRegistrationBean = new ServletListenerRegistrationBean<>();
+//        listenerRegistrationBean.setListener(new InitListener());
+//        listenerRegistrationBean.setOrder(order_init);
+//        return listenerRegistrationBean;
+//    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
new file mode 100644
index 0000000..66ef655
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideCtrl.java
@@ -0,0 +1,96 @@
+package com.dy.pipIrrProject.divide;
+
+import com.dy.common.aop.SsoAop;
+import com.dy.common.webUtil.BaseResponse;
+import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoPr.PrDivide;
+import com.dy.pipIrrGlobal.voPr.VoDivide;
+import com.dy.pipIrrGlobal.voSe.VoActiveCard;
+import com.dy.pipIrrProject.result.ProjectResultCode;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.*;
+
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 20:11
+ * @LastEditTime 2023/12/20 20:11
+ * @Description
+ */
+
+@Slf4j
+@Tag(name = "鍒嗘按鎴跨鐞�", description = "鍒嗘按鎴挎搷浣�")
+@RestController
+@RequestMapping(path="divide")
+@RequiredArgsConstructor
+public class DivideCtrl {
+    private final DivideSv divideSv;
+
+    @Operation(summary = "鑾峰緱涓�椤靛垎姘存埧璁板綍", description = "杩斿洖涓�椤靛垎姘存埧鏁版嵁")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "杩斿洖涓�椤靛紑鍗℃暟鎹紙BaseResponse.content:QueryResultVo[{}]锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = VoActiveCard.class))}
+            )
+    })
+    @GetMapping(path = "/getDivides", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop("-1")
+    public BaseResponse<QueryResultVo<List<VoDivide>>> getDivides(@RequestBody @Parameter(description = "鏌ヨform琛ㄥ崟json鏁版嵁", required = true) QueryVo vo){
+        try {
+            QueryResultVo<List<VoDivide>> res = divideSv.getDivides(vo);
+            return BaseResponseUtils.buildSuccess(res);
+        } catch (Exception e) {
+            log.error("鑾峰彇寮�鍗¤褰曞紓甯�", e);
+            return BaseResponseUtils.buildException(e.getMessage()) ;
+        }
+    }
+
+    @Operation(summary = "娣诲姞鍒嗘按鎴胯褰�", description = "娣诲姞鍒嗘按鎴胯褰�")
+    @ApiResponses(value = {
+            @ApiResponse(
+                    responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE,
+                    description = "鎿嶄綔缁撴灉锛歵rue锛氭垚鍔燂紝false锛氬け璐ワ紙BaseResponse.content锛�",
+                    content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
+                            schema = @Schema(implementation = Boolean.class))}
+            )
+    })
+    @PostMapping(path = "add", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @Transactional(rollbackFor = Exception.class)
+    @SsoAop("-1")//@SsoAop(power = "-1")
+    public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid PrDivide po, @Parameter(hidden = true) BindingResult bindingResult){
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        if(bindingResult != null && bindingResult.hasErrors()){
+            return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Date operateTime = new Date();
+        po.setOperatedt(operateTime);
+        Integer rec = Optional.ofNullable(divideSv.addDivide(po)).orElse(0);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail(ProjectResultCode.DIVIDE_FAIL.getMessage());
+        }
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java
new file mode 100644
index 0000000..9633b5f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/DivideSv.java
@@ -0,0 +1,54 @@
+package com.dy.pipIrrProject.divide;
+
+import com.dy.common.webUtil.QueryResultVo;
+import com.dy.pipIrrGlobal.daoPr.PrDivideMapper;
+import com.dy.pipIrrGlobal.pojoPr.PrDivide;
+import com.dy.pipIrrGlobal.voPr.VoDivide;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.dubbo.common.utils.PojoUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 20:12
+ * @LastEditTime 2023/12/20 20:12
+ * @Description 鍒嗘按鎴挎湇鍔$被
+ */
+
+@Slf4j
+@Service
+public class DivideSv {
+    @Autowired
+    private PrDivideMapper prDivideMapper;
+
+    /**
+     * 娣诲姞鍒嗘按鎴�
+     * @param po
+     * @return
+     */
+    Integer addDivide(PrDivide po) {
+        return prDivideMapper.insert(po);
+    }
+
+    /**
+     * 鏍规嵁鎸囧畾鏉′欢鑾峰彇鍒嗘按鎴胯褰�
+     * @param queryVo 鏌ヨ瑙嗗浘
+     * @return 鍒嗘按鎴胯褰曞垪琛�
+     */
+    public QueryResultVo<List<VoDivide>> getDivides(QueryVo queryVo) {
+        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
+
+        Long itemTotal = prDivideMapper.getRecordCount(params);
+
+        QueryResultVo<List<VoDivide>> rsVo = new QueryResultVo<>() ;
+        rsVo.pageSize = queryVo.pageSize ;
+        rsVo.pageCurr = queryVo.pageCurr ;
+        rsVo.calculateAndSet(itemTotal, params);
+        rsVo.obj = prDivideMapper.getDivides(params);
+        return rsVo ;
+    }
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java
new file mode 100644
index 0000000..3e488ce
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/divide/QueryVo.java
@@ -0,0 +1,27 @@
+package com.dy.pipIrrProject.divide;
+
+import com.dy.common.webUtil.QueryConditionVo;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 9:50
+ * @LastEditTime 2023/12/21 9:50
+ * @Description
+ */
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ToString(callSuper = true)
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Schema(name = "鍒嗘按鎴挎煡璇㈡潯浠�")
+public class QueryVo extends QueryConditionVo {
+    @Schema(description = "鍐滄埛濮撳悕")
+    public String divideName;
+
+    @Schema(description = "IC鍗″彿")
+    public String blockName;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
new file mode 100644
index 0000000..2ebe707
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/java/com/dy/pipIrrProject/result/ProjectResultCode.java
@@ -0,0 +1,23 @@
+package com.dy.pipIrrProject.result;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/21 10:09
+ * @LastEditTime 2023/12/21 10:09
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum ProjectResultCode {
+    /**
+     * 鍒嗘按鎴�
+     */
+    DIVIDE_FAIL(10001, "鍒嗘按鎴挎坊鍔犲け璐�");
+
+    private final Integer code;
+    private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
new file mode 100644
index 0000000..edd6882
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/application.yml
@@ -0,0 +1,18 @@
+spring:
+  profiles:
+    include: global, database, database-ym, database-pj
+
+#actutor鐨剋eb绔彛
+management:
+  server:
+    port: ${pipIrr.project.actutorPort}
+#web鏈嶅姟绔彛锛�8085
+server:
+  port: ${pipIrr.project.webPort}
+  servlet:
+    context-path: /project #web璁块棶涓婁笅鏂囪矾寰�
+    context-parameters:
+      #GenerateIdSetSuffixListener涓簲鐢紝鍙栧�艰寖鍥存槸0-99
+      idSuffix: ${pipIrr.project.idSuffix}
+      #ConfigListener涓簲鐢�
+      #configFileNames: config-global.xml,config-demo.xml
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
new file mode 100644
index 0000000..924901d
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/main/resources/log4j2.yml
@@ -0,0 +1,73 @@
+Configuration:
+  #status锛岃繖涓敤浜庤缃甽og4j2鑷韩鍐呴儴鐨勪俊鎭緭鍑猴紝鍙互涓嶈缃紝褰撹缃垚trace鏃讹紝浣犱細鐪嬪埌log4j2鍐呴儴鍚勭璇︾粏杈撳嚭锛涘彲浠ヨ缃垚Off(鍏抽棴)鎴朎rror(鍙緭鍑洪敊璇俊鎭�)
+  status: Error
+
+  Properties: # 瀹氫箟鍏ㄥ眬鍙橀噺
+    Property:
+      #鏃ュ織鏂囦欢瀛樺偍鐨勭洰褰�
+      - name: log.path
+        value: ./logs
+      #鏃ュ織鏂囦欢瀛樺偍鍚嶇О
+      - name: project.name
+        value: pipIrrBase
+
+  #瀹氫箟杈撳嚭鍣紝鍙互杈撳嚭鍒版帶鍒跺彴鍜屾枃浠�.
+  Appenders:
+    #杈撳嚭鍒版帶鍒跺彴
+    Console:
+      #Appender鍛藉悕
+      name: CONSOLE
+      target: SYSTEM_OUT
+      ThresholdFilter:
+        level: debug #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+        onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+        onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+      #鏃ュ織鍐呭鏍峰紡
+      PatternLayout:
+        #%n-鎹㈣
+        #%m-鏃ュ織鍐呭锛岃緭鍑轰唬鐮佷腑鎸囧畾鐨勬棩蹇椾俊鎭�
+        #%p-杈撳嚭浼樺厛绾э紝鍗矰EBUG,INFO,WARN,ERROR,FATAL
+        #%r-绋嬪簭鍚姩鍒扮幇鍦ㄧ殑姣鏁�
+        #%%- 杈撳嚭涓�涓�"%" 瀛楃
+        #%t-褰撳墠绾跨▼鍚�
+        #%d-鏃ユ湡鍜屾椂闂�, 甯哥敤鐨勬牸寮忔湁%d{DATE},%d{ABSOLUTE},%d{HH:mm:ss,SSS},%d{ddMMyyyyHH:mm:ss,SSS}
+        #%l-鍚�%F%L%C%M
+        #%F-java婧愭枃浠跺悕
+        #%L-java婧愮爜琛屾暟
+        #%C-java绫诲悕,%C{1}杈撳嚭鏈�鍚庝竴涓厓绱�
+        #%M-java鏂规硶鍚�
+        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+    # 杈撳嚭鍒版枃浠讹紝瓒呰繃10MB褰掓。
+    RollingFile:
+      - name: ROLLING_FILE
+        ignoreExceptions: false
+        fileName: ${log.path}/${project.name}.log
+        filePattern: "${log.path}/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
+        ThresholdFilter:
+          level: error #杈撳嚭鏃ュ織绾у埆锛岃緭鍑烘棩蹇楁椂锛岄鍏堢敱Loggers.Root.level鎴朙oggers.Logger.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢辨湰level鍒ゆ柇鏄惁杈撳嚭
+          onMatch: ACCEPT #onMatch=ACCEPT 澶т簬绛変簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織杈撳嚭
+          onMismatch: DENY #onMismatch=DENY 灏忎簬 "level" 閰嶇疆鐨勭瓑绾у湴鏃ュ織涓嶈緭鍑�
+        #鏃ュ織鍐呭鏍峰紡
+        PatternLayout:
+          pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS}:%4p %t (%C.%M:%L) - %m%n"
+        Policies:
+          SizeBasedTriggeringPolicy:
+            size: "10 MB"
+        DefaultRolloverStrategy:
+          max: 1000
+
+  Loggers:
+    Root:
+      level: info #鏃ュ織杈撳嚭绾у埆锛屽叡鏈�8涓骇鍒紝鎸夌収浠庝綆鍒伴珮涓猴細all < trace < debug < info < warn < error < fatal < off
+      AppenderRef: #Root鐨勫瓙鑺傜偣锛岀敤鏉ユ寚瀹氳鏃ュ織杈撳嚭鍒板摢涓狝ppender.
+        - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+        - ref: ROLLING_FILE  #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+    # 涓哄寘閰嶇疆鐗规畩鐨凩og绾у埆锛屾柟渚胯皟璇曪紝
+    # 涓嶅彈Loggers.Root.level闄愬埗
+    Logger:
+      - name: com.dy.pipIrrGlobal.daoSe
+        additivity: false #鍘婚櫎閲嶅鐨刲og
+        level: debug #杈撳嚭鏃ュ織绾у埆
+        AppenderRef:
+          - ref: CONSOLE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰.level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.Console.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
+          - ref: ROLLING_FILE #杈撳嚭鏃ュ織鏃讹紝棣栧厛鐢辨湰level鍒ゆ柇鏄惁杈撳嚭锛岀劧鍚庡啀鐢变笂闈㈢殑Appenders.RollingFile.ThresholdFilter.level鍒ゆ柇鏄惁杈撳嚭
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/test/java/com/dy/pipIrrProject/PipIrrWebProjectApplicationTests.java b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/test/java/com/dy/pipIrrProject/PipIrrWebProjectApplicationTests.java
new file mode 100644
index 0000000..438f830
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-project/src/test/java/com/dy/pipIrrProject/PipIrrWebProjectApplicationTests.java
@@ -0,0 +1,13 @@
+package com.dy.pipIrrProject;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class PipIrrWebProjectApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
index 286fa64..a427049 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/PipIrrSellApplication.java
@@ -13,6 +13,7 @@
  * @LastEditTime 2023/12/7 15:07
  * @Description
  */
+
 @SpringBootApplication
 @EnableAspectJAutoProxy
 @EnableMultiDataSource
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
index ff4a4fd..68de44c 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/activeCard/ActiveCardCtrl.java
@@ -14,6 +14,7 @@
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import com.dy.pipIrrSell.recharge.DtoRecharge;
 import com.dy.pipIrrSell.recharge.RechargeCtrl;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -46,7 +47,6 @@
 public class ActiveCardCtrl {
     private final ActiveCardSv activeCardSv;
     private final ClientCardSv clientCardSv;
-
     private final RechargeCtrl rechargeCtrl;
 
     @Operation(summary = "鑾峰緱涓�椤靛紑鍗¤褰�", description = "杩斿洖涓�椤靛紑鍗℃暟鎹�")
@@ -97,7 +97,7 @@
          */
         VoAreaCode voAreaCode = activeCardSv.getAreaCodeByNum(po.getClientNum());
         if(voAreaCode == null) {
-            return BaseResponseUtils.buildFail("璇ュ啘鎴疯鏀垮尯鍒掑紓甯革紝璇疯仈绯荤郴缁熺鐞嗗憳");
+            return BaseResponseUtils.buildFail(SellResultCode.AREA_CODE_MISTAKE.getMessage());
         }
         String provinceId = voAreaCode.getProvinceId();
         String cityId = voAreaCode.getCityId();
@@ -117,7 +117,7 @@
             Integer number = Integer.parseInt(cardNum.substring(12));
             number = number + 1;
             if(number > 9999) {
-                return BaseResponseUtils.buildFail("姘村崱缂栧彿宸叉弧锛岃鑱旂郴绯荤粺绠$悊鍛�");
+                return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_OVERRUN.getMessage());
             }
             cardNum = cardNum.substring(0, 12) + String.format("%04d", number);
         } else {
@@ -126,7 +126,6 @@
 
 
         /**
-         * cardId           姘村崱缂栧彿锛堟彃鍏ヨ褰曞悗鐢熸垚锛�
          * cardAddr         姘村崱鍦板潃锛堜粎浠呭啓鍏ワ紝鏃犱笟鍔★級
          * clientNum        鍐滄埛缂栧彿
          * cardCost         鍗$墖璐圭敤
@@ -137,9 +136,7 @@
          * operator         鎿嶄綔浜虹紪鍙�
          * activeTime       寮�鍗℃椂闂�
          */
-        //Long cardId = 0L;
         String cardAddr = po.getCardAddr();
-        //Long clientId = po.getClientId();
         String clientNum = po.getClientNum();
         Integer cardCost = po.getCardCost();
         Float amount = po.getAmount();
@@ -153,7 +150,6 @@
          */
         SeClientCard seClientCard = new SeClientCard();
         seClientCard.setCardaddr(cardAddr);
-        //seClientCard.setClientid(clientId);
         seClientCard.setCardnum(cardNum);
         seClientCard.setClientnum(clientNum);
         seClientCard.setMoney(0.0);
@@ -163,7 +159,7 @@
 
         Long cardId = Optional.ofNullable(clientCardSv.add(seClientCard)).orElse(0L) ;
         if(cardId == 0) {
-            return BaseResponseUtils.buildFail("寮�鍗″け璐�-鍐滄埛鍗″啓鍏ュ紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
@@ -172,8 +168,6 @@
         SeActiveCard activeCard = new SeActiveCard();
         activeCard.setCardnum(cardNum);
         activeCard.setClientnum(clientNum);
-        //activeCard.setCardid(cardId);
-        //activeCard.setClientid(clientId);
         activeCard.setCardcost(cardCost);
         activeCard.setPaymentid(paymentId);
         activeCard.setOperatetype(OperateTypeENUM.ACTIVE.getCode());
@@ -182,7 +176,7 @@
         activeCard.setOperatedt(createTime);
         Long rec = Optional.ofNullable(activeCardSv.add(activeCard)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("寮�鍗″け璐�-寮�鍗¤褰曞啓鍏ュ紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_WRITE_ACTIVE_CARD_ERROR.getMessage());
         }
 
         /**
@@ -196,7 +190,7 @@
             dtoRecharge.setPrice(0f);
             BaseResponse<Boolean> job = rechargeCtrl.addRecharge(dtoRecharge);
             if(!job.getCode().equals("0001")) {
-                return BaseResponseUtils.buildFail("寮�鍗℃垚鍔燂紝浣嗗厖鍊煎け璐�");
+                return BaseResponseUtils.buildFail(SellResultCode.ACTIVE_FAIL_RECHARGE_EXCEPTION.getMessage());
             }
         }
 
@@ -233,7 +227,6 @@
          */
         Long cardId = 0L;
         String cardNum = po.getCardNum();
-        //String clientNum = po.getClientNum();
         String clientNum = "";
         Integer cardCost = po.getCardCost();
         Double reissueAmount = po.getReissueAmount();
@@ -247,7 +240,7 @@
          */
         Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
         if(map == null || map.size() <= 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_ERROR.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
         clientNum = map.get("clientNum").toString();
@@ -263,7 +256,7 @@
         seClientCard.setLastoper(LastOperateENUM.REPLACE.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("琛ュ崱澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
@@ -272,8 +265,6 @@
         SeActiveCard activeCard = new SeActiveCard();
         activeCard.setCardnum(cardNum);
         activeCard.setClientnum(clientNum);
-        //activeCard.setCardid(cardId);
-        //activeCard.setClientid(clientId);
         activeCard.setCardcost(cardCost);
         activeCard.setPaymentid(paymentId);
         activeCard.setReissueamount(reissueAmount);
@@ -283,7 +274,7 @@
         activeCard.setOperatedt(replaceTime);
         Long rec = Optional.ofNullable(activeCardSv.add(activeCard)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("琛ュ崱澶辫触-琛ュ崱璁板綍鍐欏叆寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
index 373fe45..726052e 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/CancelCtrl.java
@@ -10,6 +10,7 @@
 import com.dy.pipIrrGlobal.voSe.VoCancel;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -26,10 +27,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -87,18 +85,18 @@
         }
 
         /**
-         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛�
-         * cardAddr         姘村崱鍦板潃
-         * clientId         鍐滄埛缂栧彿
+         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * cardNum          姘村崱缂栧彿
+         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犳敞閿�浣跨敤锛�
          * refund           閫�娆鹃噾棰�
          * refundType       閫�娆炬柟寮�
          * remarks          澶囨敞
          * operator         鎿嶄綔浜虹紪鍙�
-         * cancelTime         鎸傚け鏃堕棿
+         * cancelTime       鎸傚け鏃堕棿
          */
         Long cardId = 0L;
-        String cardAddr = po.getCardAddr();
-        Long clientId = po.getClientId();
+        String cardNum = po.getCardNum();
+        String clientNum = "";
         Float refund = po.getRefund();
         Byte refundType = po.getRefundType();
         String remarks = po.getRemarks();
@@ -106,12 +104,14 @@
         Date cancelTime = new Date();
 
         /**
-         * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛堜富閿級
+         * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
-        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
-        if(cardId == 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+        if(map == null || map.size() <= 0) {
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
+        cardId = Long.parseLong(map.get("cardId").toString());
+        clientNum = map.get("clientNum").toString();
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -124,15 +124,15 @@
         seClientCard.setLastoper(LastOperateENUM.CANCEL.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("娉ㄩ攢澶辫触-鍐滄埛鍗℃敞閿�寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.CANCEL_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
          * 娣诲姞鎸傚け璁板綍
          */
         SeCancel seCancel = new SeCancel();
-        seCancel.setCardid(cardId);
-        seCancel.setClientid(clientId);
+        seCancel.setCardnum(cardNum);
+        seCancel.setClientnum(clientNum);
         seCancel.setRefund(refund);
         seCancel.setRefundtype(refundType);
         seCancel.setRemarks(remarks);
@@ -140,7 +140,7 @@
         seCancel.setOperatedt(cancelTime);
         Long rec = Optional.ofNullable(cancelSv.add(seCancel)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("娉ㄩ攢澶辫触-娉ㄩ攢璁板綍鍐欏叆寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.CANCEL_FAIL_WRITE_CANCELL_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/DtoCancel.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/DtoCancel.java
index 5b6a43e..dc59bf5 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/DtoCancel.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/DtoCancel.java
@@ -23,17 +23,17 @@
     public static final long serialVersionUID = 1L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @NotBlank
-    private String cardAddr;
+    private String cardNum;
 
     /**
      * 鍐滄埛缂栧彿
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Long clientId;
+    //@Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //private Long clientId;
 
     /**
      * 閫�娆鹃噾棰�
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
index a032c0d..b8714a2 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/cancel/QueryVo.java
@@ -24,8 +24,8 @@
     @Schema(description = "鍐滄埛濮撳悕")
     public String clientName;
 
-    @Schema(description = "IC鍗″彿")
-    public String cardAddr;
+    @Schema(description = "姘村崱缂栧彿")
+    public String cardNum;
 
 
     @Schema(description = "娉ㄩ攢鏃堕棿_寮�濮�")
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/DtoLoss.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/DtoLoss.java
index 576af15..6bd7d35 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/DtoLoss.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/DtoLoss.java
@@ -23,17 +23,17 @@
     public static final long serialVersionUID = 1L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @NotBlank
-    private String cardAddr;
+    private String cardNum;
 
     /**
      * 鍐滄埛缂栧彿
      */
-    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Long clientId;
+    //@Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    //private Long clientId;
 
     /**
      * 浣欓
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
index 08bf5b2..3e51765 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/loss/LossCtrl.java
@@ -10,6 +10,7 @@
 import com.dy.pipIrrGlobal.voSe.VoLoss;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -25,11 +26,7 @@
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -81,15 +78,14 @@
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
     public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid DtoLoss po, @Parameter(hidden = true) BindingResult bindingResult){
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
         /**
-         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛�
-         * cardAddr         姘村崱鍦板潃
-         * clientId         鍐滄埛缂栧彿
+         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛�
+         * cardNum          姘村崱缂栧彿
+         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犳寕澶变娇鐢級
          * money            浣欓
          * refund           閫�娆鹃噾棰�
          * remarks          澶囨敞
@@ -97,8 +93,8 @@
          * lossTime         鎸傚け鏃堕棿
          */
         Long cardId = 0L;
-        String cardAddr = po.getCardAddr();
-        Long clientId = po.getClientId();
+        String cardNum = po.getCardNum();
+        String clientNum = "";
         Float money = po.getMoney();
         Float refund = po.getRefund();
         String remarks = po.getRemarks();
@@ -106,12 +102,14 @@
         Date lossTime = new Date();
 
         /**
-         * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛堜富閿級
+         * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
-        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
-        if(cardId == 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+        if(map == null || map.size() <= 0) {
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
+        cardId = Long.parseLong(map.get("cardId").toString());
+        clientNum = map.get("clientNum").toString();
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -124,15 +122,15 @@
         seClientCard.setLastoper(LastOperateENUM.LOSS.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("鎸傚け澶辫触-鍐滄埛鍗℃寕澶卞紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.LOSS_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
          * 娣诲姞鎸傚け璁板綍
          */
         SeLoss seLoss = new SeLoss();
-        seLoss.setCardid(cardId);
-        seLoss.setClientid(clientId);
+        seLoss.setCardnum(cardNum);
+        seLoss.setClientnum(clientNum);
         seLoss.setMoney(money);
         seLoss.setRefund(refund);
         seLoss.setRemarks(remarks);
@@ -140,7 +138,7 @@
         seLoss.setOperatedt(lossTime);
         Long rec = Optional.ofNullable(lossSv.add(seLoss)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("鎸傚け澶辫触-鎸傚け璁板綍鍐欏叆寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.LOSS_FAIL_WRITE_LOSS_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
index a05fbf6..fe123c5 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/recharge/RechargeCtrl.java
@@ -11,6 +11,7 @@
 import com.dy.pipIrrGlobal.voSe.VoRecharge;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -98,10 +99,7 @@
          * rechargeTime     鍏呭�兼椂闂�
          */
         Long cardId = 0L;
-        //String cardAddr = po.getCardAddr();
-        //Long clientId = po.getClientId();
         String cardNum = po.getCardNum();
-        //String clientNum = po.getClientNum();
         String clientNum = "";
         Float money = po.getMoney();
         Float amount = po.getAmount();
@@ -118,7 +116,7 @@
          */
         Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
         if(map == null || map.size() <= 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
         cardId = Long.parseLong(map.get("cardId").toString());
         clientNum = map.get("clientNum").toString();
@@ -134,7 +132,7 @@
         seClientCard.setLastoper(LastOperateENUM.RECHARGE.getCode ());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("鍏呭�煎け璐�-鍐滄埛鍗′慨鏀瑰紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
@@ -145,8 +143,6 @@
          * 娣诲姞鍏呭�艰褰�
          */
         SeRecharge seRecharge = new SeRecharge();
-        //seRecharge.setCardid(cardId);
-        //seRecharge.setClientid(clientId);
         seRecharge.setCardnum(cardNum);
         seRecharge.setClientnum(clientNum);
         seRecharge.setMoney(money);
@@ -160,15 +156,13 @@
         seRecharge.setOperatedt(rechargeTime);
         Long rec = Optional.ofNullable(rechargeSv.add(seRecharge)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.REPLACE_FAIL_WRITE_RECHARGE_ERROR.getMessage());
         }
 
         /**
          * 娣诲姞琛ュ崱鍘嗗彶璁板綍
          */
         SeRechargeHistory seRechargeHistory = new SeRechargeHistory();
-        //seRechargeHistory.setCardid(cardId);
-        //seRechargeHistory.setClientid(clientId);
         seRechargeHistory.setCardnum(cardNum);
         seRechargeHistory.setClientnum(clientNum);
         seRechargeHistory.setMoney(money);
@@ -183,7 +177,7 @@
 
         Long rec_history = Optional.ofNullable(rechargeSv.addHistory(seRechargeHistory)).orElse(0L);
         if(rec_history == 0) {
-            return BaseResponseUtils.buildFail("鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_RECHARGE_HISTORY_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
new file mode 100644
index 0000000..38c69da
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/result/SellResultCode.java
@@ -0,0 +1,62 @@
+package com.dy.pipIrrSell.result;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/20 13:53
+ * @LastEditTime 2023/12/20 13:53
+ * @Description
+ */
+
+@Getter
+@AllArgsConstructor
+public enum SellResultCode {
+    /**
+     * 寮�鍗�/琛ュ崱
+     */
+    AREA_CODE_MISTAKE(10001, "璇ュ啘鎴疯鏀垮尯鍒掑紓甯�"),
+    CARD_NUMBER_OVERRUN(10002, "姘村崱缂栧彿宸叉弧"),
+    ACTIVE_FAIL_WRITE_CLIENT_CARD_ERROR(10003, "寮�鍗″け璐�-鍐滄埛鍗″啓鍏ュ紓甯�"),
+    ACTIVE_FAIL_WRITE_ACTIVE_CARD_ERROR(10004, "寮�鍗″け璐�-寮�鍗¤褰曞啓鍏ュ紓甯�"),
+    ACTIVE_FAIL_RECHARGE_EXCEPTION(10005, "寮�鍗″け璐�-鍏呭�煎紓甯�"),
+    CARD_NUMBER_ERROR(10006, "鍗″彿閿欒锛岃鍗′笉瀛樺湪"),
+    REPLACE_FAIL_WRITE_CLIENT_CARD_ERROR(10007, "琛ュ崱澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    REPLACE_FAIL_WRITE_RECHARGE_ERROR(10008, "琛ュ崱澶辫触-琛ュ崱璁板綍鍐欏叆寮傚父"),
+
+    /**
+     * 鍏呭��
+     */
+    CARD_NUMBER_MISTAKE(20001, "鍗″彿閿欒锛岃鍗′笉瀛樺湪"),
+    RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR(20002, "鍏呭�煎け璐�-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    RECHARGE_FAIL_WRITE_RECHARGE_ERROR(20003, "鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�"),
+    RECHARGE_FAIL_WRITE_RECHARGE_HISTORY_ERROR(20004, "鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�"),
+
+    /**
+     * 鎸傚け
+     */
+    LOSS_FAIL_WRITE_CLIENT_CARD_ERROR(30001, "鎸傚け澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    LOSS_FAIL_WRITE_LOSS_ERROR(30002, "鎸傚け澶辫触-鎸傚け璁板綍鍐欏叆寮傚父"),
+
+    /**
+     * 娉ㄩ攢
+     */
+    CANCEL_FAIL_WRITE_CLIENT_CARD_ERROR(40001, "娉ㄩ攢澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    CANCEL_FAIL_WRITE_CANCELL_ERROR(40002, "娉ㄩ攢澶辫触-娉ㄩ攢璁板綍鍐欏叆寮傚父"),
+
+    /**
+     * 瑙i攣
+     */
+    UNLOCK_FAIL_WRITE_CLIENT_CARD_ERROR(50001, "瑙i攣澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    UNLOCK_FAIL_WRITE_UNLOCK_ERROR(50002, "瑙i攣澶辫触-瑙i攣璁板綍鍐欏叆寮傚父"),
+
+    /**
+     * 鍐叉
+     */
+    REVERSAL_FAIL_WRITE_CLIENT_CARD_ERROR(60001, "鍐叉澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�"),
+    REVERSAL_FAIL_WRITE_REVERSAL_ERROR(60002, "鍐叉澶辫触-鍐叉璁板綍鍐欏叆寮傚父");
+
+    private final Integer code;
+    private final String message;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java
index 8c2a766..a212300 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java
@@ -23,17 +23,17 @@
     public static final long serialVersionUID = 1L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @NotBlank
-    private String cardAddr;
+    private String cardNum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Long clientId;
+    private String clientNum;
 
     /**
      * 鍗$墖浣欓
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
index e2e0be8..9f026eb 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/QueryVo.java
@@ -24,8 +24,8 @@
     @Schema(description = "鍐滄埛濮撳悕")
     public String clientName;
 
-    @Schema(description = "IC鍗″彿")
-    public String cardAddr;
+    @Schema(description = "姘村崱缂栧彿")
+    public String cardNum;
 
 
     @Schema(description = "鍐叉鏃堕棿_寮�濮�")
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
index 97a2d73..9322334 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java
@@ -10,6 +10,7 @@
 import com.dy.pipIrrGlobal.voSe.VoReversal;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -25,11 +26,7 @@
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 
-import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -81,15 +78,14 @@
     @Transactional(rollbackFor = Exception.class)
     @SsoAop()
     public BaseResponse<Boolean> add(@RequestBody @Parameter(description = "form琛ㄥ崟json鏁版嵁", required = true) @Valid DtoReversal po, @Parameter(hidden = true) BindingResult bindingResult){
-        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
         if(bindingResult != null && bindingResult.hasErrors()){
             return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
         }
 
         /**
-         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛�
-         * cardAddr         姘村崱鍦板潃
-         * clientId         鍐滄埛缂栧彿
+         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * cardNum          姘村崱鍦板潃
+         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犲啿姝d娇鐢級
          * cardBalance      鍗$墖浣欓
          * systemBalance    绯荤粺浣欓
          * remarks          澶囨敞
@@ -97,8 +93,8 @@
          * reversalTime     鍐叉
          */
         Long cardId = 0L;
-        String cardAddr = po.getCardAddr();
-        Long clientId = po.getClientId();
+        String cardNum = po.getCardNum();
+        String clientNum = "";
         Float cardBalance = po.getCardBalance();
         Float systemBalance = po.getSystemBalance();
         String remarks = po.getRemarks();
@@ -106,12 +102,14 @@
         Date reversalTime = new Date();
 
         /**
-         * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛堜富閿級
+         * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
-        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
-        if(cardId == 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+        if(map == null || map.size() <= 0) {
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
+        cardId = Long.parseLong(map.get("cardId").toString());
+        clientNum = map.get("clientNum").toString();
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -124,15 +122,15 @@
         seClientCard.setLastoper(LastOperateENUM.REVERSAL.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("鍐叉澶辫触-鍐滄埛鍗″啿姝e紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.RECHARGE_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
-         * 娣诲姞瑙i攣璁板綍
+         * 娣诲姞鍐叉璁板綍
          */
         SeReversal reversal = new SeReversal();
-        reversal.setCardid(cardId);
-        reversal.setClientid(clientId);
+        reversal.setCardnum(cardNum);
+        reversal.setClientnum(clientNum);
         reversal.setCardbalance(cardBalance);
         reversal.setSystembalance(systemBalance);
         reversal.setRemarks(remarks);
@@ -140,7 +138,7 @@
         reversal.setOperatedt(reversalTime);
         Long rec = Optional.ofNullable(reversalSv.add(reversal)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("瑙i攣澶辫触-瑙i攣璁板綍鍐欏叆寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.REVERSAL_FAIL_WRITE_REVERSAL_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java
index 4c311b3..043da7b 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java
@@ -23,17 +23,17 @@
     public static final long serialVersionUID = 1L;
 
     /**
-     * 姘村崱鍦板潃
+     * 姘村崱缂栧彿
      */
-    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    @NotBlank
-    private String cardAddr;
+    @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private String cardNum;
 
     /**
      * 鍐滄埛缂栧彿
      */
     @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
-    private Long clientId;
+    private String clientNum;
 
     /**
      * 浣欓
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
index a952aad..a9242eb 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java
@@ -10,6 +10,7 @@
 import com.dy.pipIrrGlobal.voSe.VoUnlock;
 import com.dy.pipIrrSell.clientCard.ClientCardSv;
 import com.dy.pipIrrSell.clientCard.LastOperateENUM;
+import com.dy.pipIrrSell.result.SellResultCode;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -26,10 +27,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @author ZhuBaoMin
@@ -87,29 +85,31 @@
         }
 
         /**
-         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛�
-         * cardAddr         姘村崱鍦板潃
-         * clientId         鍐滄埛缂栧彿
+         * cardId           姘村崱缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardAddr鍙嶆煡锛屼慨鏀瑰啘鎴峰崱浣跨敤锛�
+         * cardNum          姘村崱鍦板潃
+         * clientNum        鍐滄埛缂栧彿锛堥潪浼犲叆鍙傛暟锛岀敱cardNum鍙嶆煡锛屾坊鍔犺В閿佷娇鐢級
          * money            浣欓
          * remarks          澶囨敞
          * operator         鎿嶄綔浜虹紪鍙�
          * unlockTime       瑙i攣鏃堕棿
          */
         Long cardId = 0L;
-        String cardAddr = po.getCardAddr();
-        Long clientId = po.getClientId();
+        String cardNum = po.getCardNum();
+        String clientNum = "";
         Float money = po.getMoney();
         String remarks = po.getRemarks();
         Long operator = po.getOperator();
         Date unlockTime = new Date();
 
         /**
-         * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛堜富閿級
+         * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
          */
-        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
-        if(cardId == 0) {
-            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        Map map = Optional.ofNullable(clientCardSv.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+        if(map == null || map.size() <= 0) {
+            return BaseResponseUtils.buildFail(SellResultCode.CARD_NUMBER_MISTAKE.getMessage());
         }
+        cardId = Long.parseLong(map.get("cardId").toString());
+        clientNum = map.get("clientNum").toString();
 
         /**
          * 淇敼鍐滄埛鍗′俊鎭細
@@ -122,22 +122,22 @@
         seClientCard.setLastoper(LastOperateENUM.UNLOCK.getCode());
         Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
         if(rec_updateClientCard == 0) {
-            return BaseResponseUtils.buildFail("瑙i攣澶辫触-鍐滄埛鍗¤В閿佸紓甯�");
+            return BaseResponseUtils.buildFail(SellResultCode.UNLOCK_FAIL_WRITE_CLIENT_CARD_ERROR.getMessage());
         }
 
         /**
          * 娣诲姞瑙i攣璁板綍
          */
         SeUnlock seUnlock = new SeUnlock();
-        seUnlock.setCardid(cardId);
-        seUnlock.setClientid(clientId);
+        seUnlock.setCardnum(cardNum);
+        seUnlock.setClientnum(clientNum);
         seUnlock.setMoney(money);
         seUnlock.setRemarks(remarks);
         seUnlock.setOperator(operator);
         seUnlock.setOperatedt(unlockTime);
         Long rec = Optional.ofNullable(unlockSv.add(seUnlock)).orElse(0L);
         if(rec == 0) {
-            return BaseResponseUtils.buildFail("瑙i攣澶辫触-瑙i攣璁板綍鍐欏叆寮傚父");
+            return BaseResponseUtils.buildFail(SellResultCode.UNLOCK_FAIL_WRITE_UNLOCK_ERROR.getMessage());
         }
 
         return BaseResponseUtils.buildSuccess(true) ;
diff --git a/pipIrr-platform/pipIrr-web/pom.xml b/pipIrr-platform/pipIrr-web/pom.xml
index 0720560..06ace49 100644
--- a/pipIrr-platform/pipIrr-web/pom.xml
+++ b/pipIrr-platform/pipIrr-web/pom.xml
@@ -25,6 +25,7 @@
         <module>pipIrr-web-statistics</module>
         <module>pipIrr-web-gis</module>
         <module>pipIrr-web-sell</module>
+        <module>pipIrr-web-project</module>
     </modules>
 
     <dependencies>

--
Gitblit v1.8.0