From bc230a4679ee851d5bd9cab83ad6316e483a5764 Mon Sep 17 00:00:00 2001
From: Administrator <zhubaomin>
Date: 星期一, 11 十二月 2023 15:21:36 +0800
Subject: [PATCH] 2023-12-11 朱宝民 IC卡14个接口完成,全部改为长主键

---
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java   |   11 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml                        |   35 ++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml                          |   68 +++-
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeUnlockMapper.java             |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml                            |   68 +++-
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java      |   57 ++++
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml                   |   24 +
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeUnlock.java                  |   44 ++-
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java       |   11 
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/daoSe/SeReversalMapper.java           |    4 
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml                          |   37 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockCtrl.java     |   92 +++++++
 pipIrr-platform/pipIrr-global/src/main/java/com/dy/pipIrrGlobal/pojoSe/SeReversal.java                |   46 ++-
 pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml                        |   43 ++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java  |   64 +++++
 pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalCtrl.java |   95 +++++++
 16 files changed, 575 insertions(+), 128 deletions(-)

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 3baed82..6ccbf70 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
@@ -8,8 +8,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/6 15:41
- * @LastEditTime 2023/12/6 15:41
+ * @date 2023/12/11 9:17
+ * @LastEditTime 2023/12/11 9:17
  * @Description
  */
 public interface SeReversalMapper {
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 eb4a59a..c011843 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
@@ -8,8 +8,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/6 14:40
- * @LastEditTime 2023/12/6 14:40
+ * @date 2023/12/11 9:11
+ * @LastEditTime 2023/12/11 9:11
  * @Description
  */
 public interface SeUnlockMapper {
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 b13294e..843327c 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
@@ -5,6 +5,7 @@
 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.Positive;
 import lombok.*;
@@ -14,8 +15,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/6 15:41
- * @LastEditTime 2023/12/6 15:41
+ * @date 2023/12/11 9:17
+ * @LastEditTime 2023/12/11 9:17
  * @Description
  */
 
@@ -30,12 +31,12 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @Schema(name = "姘村崱鍐叉瀹炰綋")
-public class SeReversal {
+public class SeReversal implements BaseEntity {
     public static final long serialVersionUID = 1L;
 
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@@ -43,43 +44,50 @@
     private Long id;
 
     /**
-    * 姘村崱缂栧彿
-    */
+     * 姘村崱缂栧彿
+     */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "姘村崱缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
     private Long cardid;
 
     /**
-    * 鍗$墖浣欓
-    */
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
+    private Long clientid;
+
+    /**
+     * 鍗$墖浣欓
+     */
     @Schema(description = "鍗$墖浣欓", requiredMode = Schema.RequiredMode.REQUIRED)
     @Length(message = "鍗$墖浣欓涓嶅皬浜巤min}瀛�", min = 1)
-    private Double cardbalance;
+    private Float cardbalance;
 
     /**
-    * 绯荤粺浣欓
-    */
+     * 绯荤粺浣欓
+     */
     @Schema(description = "绯荤粺浣欓", requiredMode = Schema.RequiredMode.REQUIRED)
     @Length(message = "绯荤粺浣欓涓嶅皬浜巤min}瀛�", min = 1)
-    private Double systembalance;
+    private Float systembalance;
 
     /**
-    * 澶囨敞淇℃伅
-    */
+     * 澶囨敞淇℃伅
+     */
     @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Length(message = "澶囨敞闀垮害灏忎簬{max}瀛�", min = 1, max = 200)
     private String remarks;
 
     /**
-    * 鎿嶄綔浜虹紪鍙�
-    */
+     * 鎿嶄綔浜虹紪鍙�
+     */
     @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
     private Long operator;
 
     /**
-    * 鎿嶄綔鏃堕棿
-    */
+     * 鎿嶄綔鏃堕棿
+     */
     @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Date operatedt;
 }
\ No newline at end of file
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 3300986..a5c0464 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
@@ -5,6 +5,7 @@
 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.Positive;
 import lombok.*;
@@ -14,8 +15,8 @@
 
 /**
  * @author ZhuBaoMin
- * @date 2023/12/6 14:40
- * @LastEditTime 2023/12/6 14:40
+ * @date 2023/12/11 9:11
+ * @LastEditTime 2023/12/11 9:11
  * @Description
  */
 
@@ -30,12 +31,12 @@
 @NoArgsConstructor
 @AllArgsConstructor
 @Schema(name = "姘村崱瑙i攣瀹炰綋")
-public class SeUnlock {
+public class SeUnlock implements BaseEntity {
     public static final long serialVersionUID = 1L;
 
     /**
-    * 涓婚敭
-    */
+     * 涓婚敭
+     */
     @JSONField(serializeUsing= ObjectWriterImplToString.class)
     @TableId(type = IdType.INPUT)
     @Schema(description = "瀹炰綋id", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
@@ -43,36 +44,43 @@
     private Long id;
 
     /**
-    * 姘村崱缂栧彿
-    */
+     * 姘村崱缂栧彿
+     */
     @Schema(description = "姘村崱缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "姘村崱缂栧彿蹇呴』涓哄ぇ浜�0鐨勬暣鏁�")
     private Long cardid;
 
     /**
-    * 鍓╀綑閲戦
-    */
-    @Schema(description = "鍓╀綑閲戦", requiredMode = Schema.RequiredMode.REQUIRED)
-    @Length(message = "鍓╀綑閲戦涓嶅皬浜巤min}瀛�", min = 1)
-    private Double money;
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Length(message = "鍐滄埛缂栧彿涓嶅皬浜巤min}", min = 1)
+    private Long clientid;
 
     /**
-    * 澶囨敞淇℃伅
-    */
+     * 鍓╀綑閲戦
+     */
+    @Schema(description = "鍓╀綑閲戦", requiredMode = Schema.RequiredMode.REQUIRED)
+    @Length(message = "鍓╀綑閲戦涓嶅皬浜巤min}瀛�", min = 1)
+    private Float money;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
     @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Length(message = "澶囨敞闀垮害灏忎簬{max}瀛�", min = 1, max = 200)
     private String remarks;
 
     /**
-    * 鎿嶄綔浜虹紪鍙�
-    */
+     * 鎿嶄綔浜虹紪鍙�
+     */
     @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
     private Long operator;
 
     /**
-    * 鎿嶄綔鏃堕棿
-    */
+     * 鎿嶄綔鏃堕棿
+     */
     @Schema(description = "鎿嶄綔鏃堕棿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
     private Date operatedt;
 }
\ 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 f96ab0a..6ca1504 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeActiveCardMapper.xml
@@ -32,17 +32,34 @@
     delete from se_active_card
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard" useGeneratedKeys="true">
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard">
     <!--@mbg.generated-->
-    insert into se_active_card (cardId, clientId, cardCost, 
-      paymentId, reissueAmount, operateType, 
-      remarks, `operator`, operateDt
-      )
-    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{cardcost,jdbcType=INTEGER}, 
-      #{paymentid,jdbcType=BIGINT}, #{reissueamount,jdbcType=DOUBLE}, #{operatetype,jdbcType=TINYINT}, 
-      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}
-      )
+    insert into se_active_card (id, cardId, clientId, cardCost, paymentId, reissueAmount, operateType, remarks, `operator`, operateDt)
+    values (#{id,jdbcType=BIGINT},
+            #{cardid,jdbcType=BIGINT},
+            #{clientid,jdbcType=BIGINT},
+            #{cardcost,jdbcType=INTEGER},
+            #{paymentid,jdbcType=BIGINT},
+            #{reissueamount,jdbcType=DOUBLE},
+            #{operatetype,jdbcType=TINYINT},
+            #{remarks,jdbcType=VARCHAR},
+            #{operator,jdbcType=BIGINT},
+            #{operatedt,jdbcType=TIMESTAMP})
   </insert>
+
+<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard" useGeneratedKeys="true">-->
+<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
+<!--    insert into se_active_card (cardId, clientId, cardCost, -->
+<!--      paymentId, reissueAmount, operateType, -->
+<!--      remarks, `operator`, operateDt-->
+<!--      )-->
+<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{cardcost,jdbcType=INTEGER}, -->
+<!--      #{paymentid,jdbcType=BIGINT}, #{reissueamount,jdbcType=DOUBLE}, #{operatetype,jdbcType=TINYINT}, -->
+<!--      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}-->
+<!--      )-->
+<!--  </insert>-->
+
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeActiveCard" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_active_card
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
index 7b03575..8acacf5 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientCardMapper.xml
@@ -43,19 +43,40 @@
     SELECT id AS cardId FROM se_client_card WHERE cardAddr = #{cardAddr}
   </select>
 
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard">
     <!--@mbg.generated-->
-    insert into se_client_card (cardAddr, clientId, money, 
-      `state`, createDt, replaceDt, 
-      rechargeDt, lossDtDt, cancelDt, 
-      unlockDt, reversalDt, consumeDt, 
-      lastOper, remarks)
-    values (#{cardaddr,jdbcType=VARCHAR}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, 
-      #{state,jdbcType=TINYINT}, #{createdt,jdbcType=TIMESTAMP}, #{replacedt,jdbcType=TIMESTAMP}, 
-      #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP}, #{canceldt,jdbcType=TIMESTAMP}, 
-      #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, 
-      #{lastoper,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR})
+    insert into se_client_card (id, cardAddr, clientId, money, `state`, createDt, replaceDt, rechargeDt, lossDtDt, cancelDt, unlockDt, reversalDt, consumeDt, lastOper, remarks)
+    values (#{id,jdbcType=BIGINT},
+            #{cardaddr,jdbcType=VARCHAR},
+            #{clientid,jdbcType=BIGINT},
+            #{money,jdbcType=FLOAT},
+            #{state,jdbcType=TINYINT},
+            #{createdt,jdbcType=TIMESTAMP},
+            #{replacedt,jdbcType=TIMESTAMP},
+            #{rechargedt,jdbcType=TIMESTAMP},
+            #{lossdtdt,jdbcType=TIMESTAMP},
+            #{canceldt,jdbcType=TIMESTAMP},
+            #{unlockdt,jdbcType=TIMESTAMP},
+            #{reversaldt,jdbcType=TIMESTAMP},
+            #{consumedt,jdbcType=TIMESTAMP},
+            #{lastoper,jdbcType=TINYINT},
+            #{remarks,jdbcType=VARCHAR})
   </insert>
+
+<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">-->
+<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
+<!--    insert into se_client_card (cardAddr, clientId, money, -->
+<!--      `state`, createDt, replaceDt, -->
+<!--      rechargeDt, lossDtDt, cancelDt, -->
+<!--      unlockDt, reversalDt, consumeDt, -->
+<!--      lastOper, remarks)-->
+<!--    values (#{cardaddr,jdbcType=VARCHAR}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, -->
+<!--      #{state,jdbcType=TINYINT}, #{createdt,jdbcType=TIMESTAMP}, #{replacedt,jdbcType=TIMESTAMP}, -->
+<!--      #{rechargedt,jdbcType=TIMESTAMP}, #{lossdtdt,jdbcType=TIMESTAMP}, #{canceldt,jdbcType=TIMESTAMP}, -->
+<!--      #{unlockdt,jdbcType=TIMESTAMP}, #{reversaldt,jdbcType=TIMESTAMP}, #{consumedt,jdbcType=TIMESTAMP}, -->
+<!--      #{lastoper,jdbcType=TINYINT}, #{remarks,jdbcType=VARCHAR})-->
+<!--  </insert>-->
+
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClientCard" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_client_card
diff --git a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
index 5493a0f..6ef17f6 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeHistoryMapper.xml
@@ -34,17 +34,25 @@
     delete from se_recharge_history
     where id = #{id,jdbcType=BIGINT}
   </delete>
+
+
   <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory" useGeneratedKeys="true">
     <!--@mbg.generated-->
-    insert into se_recharge_history (cardId, clientId, money, 
-      amount, gift, afterRecharge, 
-      paymentId, price, remarks, 
-      `operator`, operateDt)
-    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, 
-      #{amount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{afterrecharge,jdbcType=FLOAT}, 
-      #{paymentid,jdbcType=BIGINT}, #{price,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, 
-      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_recharge_history (id, cardId, clientId, money, amount, gift, afterRecharge, paymentId, price, remarks, `operator`, operateDt)
+    values (#{id,jdbcType=BIGINT},
+            #{cardid,jdbcType=BIGINT},
+            #{clientid,jdbcType=BIGINT},
+            #{money,jdbcType=FLOAT},
+            #{amount,jdbcType=FLOAT},
+            #{gift,jdbcType=FLOAT},
+            #{afterrecharge,jdbcType=FLOAT},
+            #{paymentid,jdbcType=BIGINT},
+            #{price,jdbcType=FLOAT},
+            #{remarks,jdbcType=VARCHAR},
+            #{operator,jdbcType=BIGINT},
+            #{operatedt,jdbcType=TIMESTAMP})
   </insert>
+
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_recharge_history
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 76d7882..7ebcb09 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeRechargeMapper.xml
@@ -34,17 +34,36 @@
     delete from se_recharge
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge" useGeneratedKeys="true">
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge">
     <!--@mbg.generated-->
-    insert into se_recharge (cardId, clientId, money, 
-      amount, gift, afterRecharge, 
-      paymentId, price, remarks, 
-      `operator`, operateDt)
-    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, 
-      #{amount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{afterrecharge,jdbcType=FLOAT}, 
-      #{paymentid,jdbcType=BIGINT}, #{price,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, 
-      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})
+    insert into se_recharge (id, cardId, clientId, money, amount, gift, afterRecharge, paymentId, price, remarks, `operator`, operateDt)
+    values (#{id,jdbcType=BIGINT},
+            #{cardid,jdbcType=BIGINT},
+            #{clientid,jdbcType=BIGINT},
+            #{money,jdbcType=FLOAT},
+            #{amount,jdbcType=FLOAT},
+            #{gift,jdbcType=FLOAT},
+            #{afterrecharge,jdbcType=FLOAT},
+            #{paymentid,jdbcType=BIGINT},
+            #{price,jdbcType=FLOAT},
+            #{remarks,jdbcType=VARCHAR},
+            #{operator,jdbcType=BIGINT},
+            #{operatedt,jdbcType=TIMESTAMP})
   </insert>
+
+<!--  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge" useGeneratedKeys="true">-->
+<!--    &lt;!&ndash;@mbg.generated&ndash;&gt;-->
+<!--    insert into se_recharge (cardId, clientId, money, -->
+<!--      amount, gift, afterRecharge, -->
+<!--      paymentId, price, remarks, -->
+<!--      `operator`, operateDt)-->
+<!--    values (#{cardid,jdbcType=BIGINT}, #{clientid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, -->
+<!--      #{amount,jdbcType=FLOAT}, #{gift,jdbcType=FLOAT}, #{afterrecharge,jdbcType=FLOAT}, -->
+<!--      #{paymentid,jdbcType=BIGINT}, #{price,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, -->
+<!--      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})-->
+<!--  </insert>-->
+
   <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeRecharge" useGeneratedKeys="true">
     <!--@mbg.generated-->
     insert into se_recharge
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 dff9579..0f5d2e2 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeReversalMapper.xml
@@ -6,6 +6,7 @@
     <!--@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="cardBalance" jdbcType="FLOAT" property="cardbalance" />
     <result column="systemBalance" jdbcType="FLOAT" property="systembalance" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
@@ -14,7 +15,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, cardBalance, systemBalance, remarks, `operator`, operateDt
+    id, cardId, clientId, cardBalance, systemBalance, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -28,21 +29,39 @@
     delete from se_reversal
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal" useGeneratedKeys="true">
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeReversal">
     <!--@mbg.generated-->
-    insert into se_reversal (cardId, cardBalance, systemBalance, 
-      remarks, `operator`, operateDt
-      )
-    values (#{cardid,jdbcType=BIGINT}, #{cardbalance,jdbcType=FLOAT}, #{systembalance,jdbcType=FLOAT}, 
-      #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP}
-      )
+    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>
+
+<!--  <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>
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="cardbalance != null">
         cardBalance,
@@ -63,6 +82,9 @@
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="cardid != null">
         #{cardid,jdbcType=BIGINT},
+      </if>
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="cardbalance != null">
         #{cardbalance,jdbcType=FLOAT},
@@ -88,6 +110,9 @@
       <if test="cardid != null">
         cardId = #{cardid,jdbcType=BIGINT},
       </if>
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
+      </if>
       <if test="cardbalance != null">
         cardBalance = #{cardbalance,jdbcType=FLOAT},
       </if>
@@ -110,6 +135,7 @@
     <!--@mbg.generated-->
     update se_reversal
     set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       cardBalance = #{cardbalance,jdbcType=FLOAT},
       systemBalance = #{systembalance,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
@@ -121,7 +147,7 @@
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧啿姝h褰曟暟-->
   <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
     SELECT
-        COUNT(*) AS recordCount
+    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
@@ -144,17 +170,17 @@
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栧啿姝h褰�-->
   <select id="getReversals" resultType="com.dy.pipIrrGlobal.voSe.VoReversal">
     SELECT
-      (@i:=@i+1) AS id,
-      cli.`name` AS clientName,
-      cli.id AS clientId,
-      card.cardAddr,
-      rev.cardBalance,
-      (SELECT `name` FROM ba_user WHERE id =  rev.operator) AS operator,
-      rev.operateDt
-    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
+        (@i:=@i+1) AS id,
+        cli.`name` AS clientName,
+        cli.id AS clientId,
+        card.cardAddr,
+        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
+        , (SELECT @i:=0) AS itable
     <where>
       <if test = "clientName != null and clientName !=''">
         AND cli.name like CONCAT('%',#{clientName},'%')
@@ -165,7 +191,7 @@
       </if>
 
       <if test = "reversalTimeStart != null and reversalTimeStop != null">
-        AND card.unlockDt BETWEEN #{reversalTimeStart} AND #{reversalTimeStop}
+        AND rev.operateDt BETWEEN #{reversalTimeStart} AND #{reversalTimeStop}
       </if>
     </where>
 
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 e4d1d89..0642219 100644
--- a/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
+++ b/pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeUnlockMapper.xml
@@ -6,6 +6,7 @@
     <!--@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="money" jdbcType="FLOAT" property="money" />
     <result column="remarks" jdbcType="VARCHAR" property="remarks" />
     <result column="operator" jdbcType="BIGINT" property="operator" />
@@ -13,7 +14,7 @@
   </resultMap>
   <sql id="Base_Column_List">
     <!--@mbg.generated-->
-    id, cardId, money, remarks, `operator`, operateDt
+    id, cardId, clientId, money, remarks, `operator`, operateDt
   </sql>
   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
     <!--@mbg.generated-->
@@ -27,19 +28,37 @@
     delete from se_unlock
     where id = #{id,jdbcType=BIGINT}
   </delete>
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock" useGeneratedKeys="true">
+
+  <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeUnlock">
     <!--@mbg.generated-->
-    insert into se_unlock (cardId, money, remarks, 
-      `operator`, operateDt)
-    values (#{cardid,jdbcType=BIGINT}, #{money,jdbcType=FLOAT}, #{remarks,jdbcType=VARCHAR}, 
-      #{operator,jdbcType=BIGINT}, #{operatedt,jdbcType=TIMESTAMP})
+    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>
+
+<!--  <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>
+      <if test="clientid != null">
+        clientId,
       </if>
       <if test="money != null">
         money,
@@ -57,6 +76,9 @@
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="cardid != null">
         #{cardid,jdbcType=BIGINT},
+      </if>
+      <if test="clientid != null">
+        #{clientid,jdbcType=BIGINT},
       </if>
       <if test="money != null">
         #{money,jdbcType=FLOAT},
@@ -79,6 +101,9 @@
       <if test="cardid != null">
         cardId = #{cardid,jdbcType=BIGINT},
       </if>
+      <if test="clientid != null">
+        clientId = #{clientid,jdbcType=BIGINT},
+      </if>
       <if test="money != null">
         money = #{money,jdbcType=FLOAT},
       </if>
@@ -98,6 +123,7 @@
     <!--@mbg.generated-->
     update se_unlock
     set cardId = #{cardid,jdbcType=BIGINT},
+      clientId = #{clientid,jdbcType=BIGINT},
       money = #{money,jdbcType=FLOAT},
       remarks = #{remarks,jdbcType=VARCHAR},
       `operator` = #{operator,jdbcType=BIGINT},
@@ -109,9 +135,9 @@
   <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
     SELECT
         COUNT(*) AS recordCount
-    FROM se_client_card card
-    INNER JOIN se_unlock unl ON unl.cardId = card.id
-    INNER JOIN ba_client cli ON	 card.clientId = cli.id
+    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
     <where>
       <if test = "clientName != null and clientName !=''">
@@ -123,7 +149,7 @@
       </if>
 
       <if test = "unlocklTimeStart != null and unlockTimeStop != null">
-        AND card.unlockDt BETWEEN #{unlocklTimeStart} AND #{unlockTimeStop}
+        AND unl.operateDt BETWEEN #{unlocklTimeStart} AND #{unlockTimeStop}
       </if>
     </where>
   </select>
@@ -131,16 +157,16 @@
   <!--鏍规嵁鎸囧畾鐨勬潯浠惰幏鍙栬В閿佽褰�-->
   <select id="getUnlocks" resultType="com.dy.pipIrrGlobal.voSe.VoUnlock">
     SELECT
-      (@i:=@i+1) AS id,
-      cli.`name` AS clientName,
-      cli.id AS clientId,
-      card.cardAddr,
-      unl.money,
-      (SELECT `name` FROM ba_user WHERE id =  unl.operator) AS operator,
-      unl.operateDt
-    FROM se_client_card card
-      INNER JOIN se_unlock unl ON unl.cardId = card.id
-      INNER JOIN ba_client cli ON	 card.clientId = cli.id
+        (@i:=@i+1) AS id,
+        cli.`name` AS clientName,
+        cli.id AS clientId,
+        card.cardAddr,
+        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
     <where>
       <if test = "clientName != null and clientName !=''">
@@ -152,7 +178,7 @@
       </if>
 
       <if test = "unlocklTimeStart != null and unlockTimeStop != null">
-        AND card.unlockDt BETWEEN #{unlocklTimeStart} AND #{unlockTimeStop}
+        AND unl.operateDt BETWEEN #{unlocklTimeStart} AND #{unlockTimeStop}
       </if>
     </where>
 
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
new file mode 100644
index 0000000..8c2a766
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/DtoReversal.java
@@ -0,0 +1,64 @@
+package com.dy.pipIrrSell.reversal;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/11 9:36
+ * @LastEditTime 2023/12/11 9:36
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "鍐叉浼犲叆瀵硅薄")
+public class DtoReversal {
+    public static final long serialVersionUID = 1L;
+
+    /**
+     * 姘村崱鍦板潃
+     */
+    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank
+    private String cardAddr;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long clientId;
+
+    /**
+     * 鍗$墖浣欓
+     */
+    @Schema(description = "鍗$墖浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Min(value = 0, message="鍗$墖浣欓涓嶈兘灏忎簬0")
+    private Float cardBalance;
+
+    /**
+     * 绯荤粺浣欓
+     */
+    @Schema(description = "绯荤粺浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Min(value = 0, message="绯荤粺浣欓涓嶈兘灏忎簬0")
+    private Float systemBalance;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+    private Long operator;
+}
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 82c0edc..4756804 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
@@ -5,7 +5,11 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.pojoSe.SeReversal;
 import com.dy.pipIrrGlobal.voSe.VoReversal;
+import com.dy.pipIrrSell.clientCard.ClientCardSv;
+import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -13,15 +17,19 @@
 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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+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
@@ -37,6 +45,7 @@
 @RequiredArgsConstructor
 public class ReversalCtrl {
     private final ReversalSv reversalSv;
+    private final ClientCardSv clientCardSv;
 
     @Operation(summary = "鑾峰緱涓�椤靛啿姝h褰�", description = "杩斿洖涓�椤靛啿姝f暟鎹�")
     @ApiResponses(value = {
@@ -58,4 +67,82 @@
             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 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         鍐滄埛缂栧彿
+         * cardBalance      鍗$墖浣欓
+         * systemBalance    绯荤粺浣欓
+         * remarks          澶囨敞
+         * operator         鎿嶄綔浜虹紪鍙�
+         * reversalTime     鍐叉
+         */
+        Long cardId = 0L;
+        String cardAddr = po.getCardAddr();
+        Long clientId = po.getClientId();
+        Float cardBalance = po.getCardBalance();
+        Float systemBalance = po.getSystemBalance();
+        String remarks = po.getRemarks();
+        Long operator = po.getOperator();
+        Date reversalTime = new Date();
+
+        /**
+         * 渚濇嵁姘村崱鍦板潃鑾峰彇姘村崱缂栧彿锛堜富閿級
+         */
+        cardId = Optional.ofNullable(clientCardSv.getCardIdByAddr(cardAddr)).orElse(0L);
+        if(cardId == 0) {
+            return BaseResponseUtils.buildFail("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        }
+
+        /**
+         * 淇敼鍐滄埛鍗′俊鎭細
+         *      鎸傚け鏃堕棿
+         *      鏈�鍚庢搷浣滅被鍨�-4
+         */
+        SeClientCard seClientCard = new SeClientCard();
+        seClientCard.setId(cardId);
+        seClientCard.setReversaldt(reversalTime);
+        seClientCard.setLastoper(LastOperateENUM.REVERSAL.getCode());
+        Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+        if(rec_updateClientCard == 0) {
+            return BaseResponseUtils.buildFail("鍐叉澶辫触-鍐滄埛鍗″啿姝e紓甯�");
+        }
+
+        /**
+         * 娣诲姞瑙i攣璁板綍
+         */
+        SeReversal reversal = new SeReversal();
+        reversal.setCardid(cardId);
+        reversal.setClientid(clientId);
+        reversal.setCardbalance(cardBalance);
+        reversal.setSystembalance(systemBalance);
+        reversal.setRemarks(remarks);
+        reversal.setOperator(operator);
+        reversal.setOperatedt(reversalTime);
+        Long rec = Optional.ofNullable(reversalSv.add(reversal)).orElse(0L);
+        if(rec == 0) {
+            return BaseResponseUtils.buildFail("瑙i攣澶辫触-瑙i攣璁板綍鍐欏叆寮傚父");
+        }
+
+        return BaseResponseUtils.buildSuccess(true) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
index 2a57911..42d00be 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/reversal/ReversalSv.java
@@ -2,6 +2,7 @@
 
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeReversalMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeReversal;
 import com.dy.pipIrrGlobal.voSe.VoReversal;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
@@ -53,4 +54,14 @@
         rsVo.obj = seReversalMapper.getReversals(params);
         return rsVo ;
     }
+
+    /**
+     * 娣诲姞鍐叉璁板綍
+     * @param po
+     * @return
+     */
+    public Long add(SeReversal po) {
+        seReversalMapper.insert(po);
+        return po.getId();
+    }
 }
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
new file mode 100644
index 0000000..4c311b3
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/DtoUnlock.java
@@ -0,0 +1,57 @@
+package com.dy.pipIrrSell.unlock;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Positive;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2023/12/11 9:34
+ * @LastEditTime 2023/12/11 9:34
+ * @Description
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Schema(name = "瑙i攣浼犲叆瀵硅薄")
+public class DtoUnlock {
+    public static final long serialVersionUID = 1L;
+
+    /**
+     * 姘村崱鍦板潃
+     */
+    @Schema(description = "姘村崱鍦板潃", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @NotBlank
+    private String cardAddr;
+
+    /**
+     * 鍐滄埛缂栧彿
+     */
+    @Schema(description = "鍐滄埛缂栧彿", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private Long clientId;
+
+    /**
+     * 浣欓
+     */
+    @Schema(description = "浣欓", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Min(value = 0, message="浣欓涓嶈兘灏忎簬0")
+    private Float money;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    @Schema(description = "澶囨敞", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @Schema(description = "鎿嶄綔浜虹紪鍙�", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
+    @Positive(message = "鎿嶄綔浜虹紪鍙峰繀椤讳负澶т簬0鐨勬暣鏁�")
+    private Long operator;
+}
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 f93ce4b..c4684c6 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
@@ -5,7 +5,11 @@
 import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.pojoSe.SeClientCard;
+import com.dy.pipIrrGlobal.pojoSe.SeUnlock;
 import com.dy.pipIrrGlobal.voSe.VoUnlock;
+import com.dy.pipIrrSell.clientCard.ClientCardSv;
+import com.dy.pipIrrSell.clientCard.LastOperateENUM;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.media.Content;
@@ -13,15 +17,19 @@
 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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+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
@@ -37,6 +45,7 @@
 @RequiredArgsConstructor
 public class UnlockCtrl {
     private final UnlockSv unlockSv;
+    private final ClientCardSv clientCardSv;
 
     @Operation(summary = "鑾峰緱涓�椤佃В閿佽褰�", description = "杩斿洖涓�椤佃В閿佹暟鎹�")
     @ApiResponses(value = {
@@ -58,4 +67,79 @@
             return BaseResponseUtils.buildException(e.getMessage()) ;
         }
     }
+
+    @Operation(summary = "娣诲姞瑙i攣璁板綍", description = "娣诲姞瑙i攣璁板綍")
+    @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 DtoUnlock 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         鍐滄埛缂栧彿
+         * money            浣欓
+         * remarks          澶囨敞
+         * operator         鎿嶄綔浜虹紪鍙�
+         * unlockTime       瑙i攣鏃堕棿
+         */
+        Long cardId = 0L;
+        String cardAddr = po.getCardAddr();
+        Long clientId = po.getClientId();
+        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("鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+        }
+
+        /**
+         * 淇敼鍐滄埛鍗′俊鎭細
+         *      鎸傚け鏃堕棿
+         *      鏈�鍚庢搷浣滅被鍨�-4
+         */
+        SeClientCard seClientCard = new SeClientCard();
+        seClientCard.setId(cardId);
+        seClientCard.setUnlockdt(unlockTime);
+        seClientCard.setLastoper(LastOperateENUM.UNLOCK.getCode());
+        Integer rec_updateClientCard = Optional.ofNullable(clientCardSv.UpdateClientCard(seClientCard)).orElse(0);
+        if(rec_updateClientCard == 0) {
+            return BaseResponseUtils.buildFail("瑙i攣澶辫触-鍐滄埛鍗¤В閿佸紓甯�");
+        }
+
+        /**
+         * 娣诲姞瑙i攣璁板綍
+         */
+        SeUnlock seUnlock = new SeUnlock();
+        seUnlock.setCardid(cardId);
+        seUnlock.setClientid(clientId);
+        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.buildSuccess(true) ;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
index 1884f70..85d1754 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/unlock/UnlockSv.java
@@ -2,6 +2,7 @@
 
 import com.dy.common.webUtil.QueryResultVo;
 import com.dy.pipIrrGlobal.daoSe.SeUnlockMapper;
+import com.dy.pipIrrGlobal.pojoSe.SeUnlock;
 import com.dy.pipIrrGlobal.voSe.VoUnlock;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.common.utils.PojoUtils;
@@ -53,4 +54,14 @@
         rsVo.obj = seUnlockMapper.getUnlocks(params);
         return rsVo ;
     }
+
+    /**
+     * 娣诲姞瑙i攣璁板綍
+     * @param po
+     * @return
+     */
+    public Long add(SeUnlock po) {
+        seUnlockMapper.insert(po);
+        return po.getId();
+    }
 }

--
Gitblit v1.8.0