From 3e68e7c7999fd3d976389ffe6d9650dd0906c98f Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 06 六月 2025 11:18:21 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV

---
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java          |  131 +++++++++++++++++++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoLoss.java     |   48 +++++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java |   39 +++++++
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java  |    2 
 pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java        |   22 ++++
 5 files changed, 237 insertions(+), 5 deletions(-)

diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java
index 33a1ec5..2af6117 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardCtrl.java
@@ -6,6 +6,7 @@
 import com.dy.pipIrrGlobal.voSe.VoTermActiveCard;
 import com.dy.pipIrrGlobal.voSe.VoTermRecharge;
 import com.dy.pipIrrTerminal.card.dto.ActiveCard;
+import com.dy.pipIrrTerminal.card.dto.DtoLoss;
 import com.dy.pipIrrTerminal.card.dto.DtoRecharge;
 import com.dy.pipIrrTerminal.card.dto.DtoReissue;
 import jakarta.validation.Valid;
@@ -78,6 +79,27 @@
     }
 
     /**
+     * 鎸傚け
+     * @param po
+     * @param bindingResult
+     * @return
+     */
+    @PostMapping(path = "termReportLoss", consumes = MediaType.APPLICATION_JSON_VALUE)
+    @SsoAop()
+    public BaseResponse<Boolean> termReportLoss(@RequestBody @Valid DtoLoss po, BindingResult bindingResult) {
+        if (bindingResult != null && bindingResult.hasErrors()) {
+            return BaseResponseUtils.buildErrorMsg(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+        }
+
+        Map map_result = cardSv.reportLoss(po);
+        if(map_result.get("success").equals(false)) {
+            return BaseResponseUtils.buildErrorMsg(map_result.get("msg").toString());
+        }
+        return BaseResponseUtils.buildSuccess(map_result.get("content")) ;
+
+    }
+
+    /**
      * 琛ュ崱
      * @param po
      * @param bindingResult
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
index ded6fa1..a5e5bbe 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java
@@ -1,5 +1,6 @@
 package com.dy.pipIrrTerminal.card;
 
+import com.dy.common.webUtil.BaseResponseUtils;
 import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper;
 import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper;
 import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper;
@@ -10,10 +11,7 @@
 import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory;
 import com.dy.pipIrrGlobal.voSe.VoTermActiveCard;
 import com.dy.pipIrrGlobal.voSe.VoTermRecharge;
-import com.dy.pipIrrTerminal.card.dto.ActiveCard;
-import com.dy.pipIrrTerminal.card.dto.CardSimple;
-import com.dy.pipIrrTerminal.card.dto.DtoRecharge;
-import com.dy.pipIrrTerminal.card.dto.DtoReissue;
+import com.dy.pipIrrTerminal.card.dto.*;
 import com.dy.pipIrrTerminal.card.enums.CardStateENUM;
 import com.dy.pipIrrTerminal.card.enums.LastOperateENUM;
 import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM;
@@ -95,6 +93,41 @@
         }
 
         map.put("success", true);
+        return map;
+    }
+
+    /**
+     * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互鎸傚け
+     * @param po
+     * @return true:鍙互鎶ュけ
+     */
+    public Map canReportLoss(DtoLoss po) {
+        Map map = new HashMap<>();
+        map.put("success", false);
+        map.put("content", null);
+
+        Long cardNum = po.getCardNum();
+        String stateName = seClientCardMapper.getCardStateByCardNum(cardNum);
+        if(stateName == null || stateName.equals("") || !stateName.equals("姝e父")) {
+            map.put("msg", stateName + ", " + "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔");
+            return map;
+        }
+
+        /**
+         * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿
+         */
+        Map map_card = Optional.ofNullable(seClientCardMapper.getCardIdAndClientNum(cardNum)).orElse(new HashMap());
+        if (map_card == null || map_card.size() <= 0) {
+            map.put("msg", "鍗″彿閿欒锛岃鍗′笉瀛樺湪");
+            return map;
+        }
+        CardSimple card = new CardSimple();
+        card.setCardId(Long.parseLong(map_card.get("cardId").toString()));
+        card.setClientId(Long.parseLong(map_card.get("clientId").toString()));
+        //card.setProtocol(map_card.get("protocol").toString());
+
+        map.put("success", true);
+        map.put("content", card);
         return map;
     }
 
@@ -198,6 +231,7 @@
         return dtf.format(dateTime) + sb.toString();
     }
 
+    @Transactional(rollbackFor = Exception.class)
     public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) {
         Map map = new HashMap<>();
         map.put("success", false);
@@ -266,6 +300,7 @@
      * @param cardNum
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     public Map plusRecharge(ActiveCard po, Long cardNum) {
         Map map = new HashMap<>();
         map.put("success", false);
@@ -480,4 +515,92 @@
         map.put("content", voTermActiveCard);
         return map;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    public Map reportLoss(DtoLoss po) {
+        Map map = new HashMap<>();
+        map.put("success", false);
+        map.put("content", null);
+
+        Map map_canReportLoss = canReportLoss(po);
+        if(map_canReportLoss.get("success").equals(false)) {
+            map.put("msg", map_canReportLoss.get("msg").toString());
+            return map;
+        }
+        CardSimple card = (CardSimple) map_canReportLoss.get("content");
+        Long cardId = card.getCardId();
+        Long clientId = card.getClientId();
+
+        Float money = Optional.ofNullable(po.getMoney()).orElse(0f);
+        Float refund = Optional.ofNullable(po.getRefund()).orElse(0f);
+
+        SeClientCard seClientCard = new SeClientCard();
+        seClientCard.setId(cardId);
+        seClientCard.setMoney(money);
+        seClientCard.setLossdtdt(new Date());
+        seClientCard.setState(CardStateENUM.LOSS.getCode());
+        seClientCard.setLastoper(LastOperateENUM.LOSS.getCode());
+        Integer rec_updateClientCard = Optional.ofNullable(seClientCardMapper.updateByPrimaryKeySelective(seClientCard)).orElse(0);
+        if (rec_updateClientCard == 0) {
+            map.put("msg", "鎸傚け澶辫触-鍐滄埛鍗′慨鏀瑰紓甯�");
+            return map;
+        }
+
+        SeCardOperate seCardOperate = new SeCardOperate();
+        seCardOperate.setCardId(cardId);
+        seCardOperate.setClientId(clientId);
+        seCardOperate.setMoney(money);
+        seCardOperate.setTradeAmount(-refund);
+        seCardOperate.setPaymentId(1L);
+        seCardOperate.setOperateType(OperateTypeENUM.LOSS.getCode());
+        seCardOperate.setRemarks(po.getRemarks());
+        seCardOperate.setOperator(po.getOperator());
+        seCardOperate.setOperateDt(new Date());
+        seCardOperate.setOperateValid((byte) 2);
+        seCardOperateMapper.insert(seCardOperate);
+        if (seCardOperate.getId() == 0) {
+            map.put("msg", "鎸傚け澶辫触-鎸傚け璁板綍鍐欏叆寮傚父");
+            return map;
+        }
+
+        map.put("success", true);
+        map.put("msg", "鎿嶄綔鎴愬姛");
+        return map;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public Map callBack(DtoCallBack po) {
+        Map map = new HashMap<>();
+        map.put("success", false);
+        map.put("content", null);
+
+        String cardAddr = po.getCardAddr();
+        Integer operateType = po.getOperateType();
+        String orderNumber = po.getOrderNumber();
+
+        Long cardId = seClientCardMapper.getCardIdByAddr(cardAddr);
+        if (cardId == null || cardId.equals(0)) {
+            map.put("msg", "鎮ㄦ寚瀹氱殑姘村崱涓嶅瓨鍦�");
+            return map;
+        }
+
+        if(operateType == 1) {
+            /**
+             * 寮�鍗℃搷浣滄墽琛岄�氱煡
+             *  1.渚濇嵁姘村崱鍦板潃銆佽鍗曞彿灏嗘棤鏁堢姸鎬佺殑鎿嶄綔璁板綍鏀逛负鏈夋晥
+             *  2.渚濇嵁姘村崱ID灏嗘棤鏁堢姸鎬佺殑姘村崱璁板綍鏀逛负鏈夋晥
+             *  3.濡傛灉寮�鍗″悓姝ュ厖鍊�
+             *      淇敼鍏呭�兼搷浣滆褰曚负鏈夋晥
+             *      淇敼鍏呭�煎巻鍙茶褰曚负鏈夋晥
+             *      淇敼姘村崱琛ㄧ殑鎿嶄綔淇℃伅
+             */
+
+        }
+
+
+
+        map.put("success", true);
+        map.put("msg", "鎿嶄綔鎴愬姛");
+        return map;
+    }
 }
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java
new file mode 100644
index 0000000..678657f
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoCallBack.java
@@ -0,0 +1,39 @@
+package com.dy.pipIrrTerminal.card.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-06-05 10:48
+ * @LastEditTime 2025-06-05 10:48
+ * @Description 鍥炶皟浼犺緭瀵硅薄
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class DtoCallBack {
+    public static final long serialVersionUID = 202506051049001L;
+
+    /**
+     * 姘村崱鍦板潃
+     */
+    @NotBlank(message = "姘村崱鍦板潃涓嶈兘涓虹┖")
+    private String cardAddr;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    @NotBlank(message = "璁㈠崟缂栧彿涓嶈兘涓虹┖")
+    private String orderNumber;
+
+    /**
+     * 鎿嶄綔绫诲瀷锛�1-寮�鍗★紝2-鍏呭�硷紝3-閿�鍗★紝4-琛ュ崱锛�5-琛ユ墸
+     */
+    @NotNull(message = "鎿嶄綔绫诲瀷涓嶈兘涓虹┖")
+    private Integer operateType;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoLoss.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoLoss.java
new file mode 100644
index 0000000..7508406
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoLoss.java
@@ -0,0 +1,48 @@
+package com.dy.pipIrrTerminal.card.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.*;
+
+/**
+ * @author ZhuBaoMin
+ * @date 2025-06-05 8:46
+ * @LastEditTime 2025-06-05 8:46
+ * @Description 鎸傚け浼犺緭瀵硅薄
+ */
+
+@Data
+@Builder
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+public class DtoLoss {
+    public static final long serialVersionUID = 202506050848001L;
+
+    /**
+     * 瑕佹寕澶辩殑姘村崱缂栧彿
+     */
+    @NotNull(message = "姘村崱缂栧彿涓嶈兘涓虹┖")
+    private Long cardNum;
+
+    /**
+     * 浣欓
+     */
+    private Float money;
+
+    /**
+     * 閫�娆鹃噾棰�
+     */
+    private Float refund;
+
+    /**
+     * 澶囨敞淇℃伅
+     */
+    private String remarks;
+
+    /**
+     * 鎿嶄綔浜虹紪鍙�
+     */
+    @NotNull(message = "鎿嶄綔浜轰笉鑳戒负绌�")
+    private Long operator;
+}
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java
index 9e5321a..fed7810 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/dto/DtoReissue.java
@@ -9,7 +9,7 @@
  * @author ZhuBaoMin
  * @date 2025-06-04 14:42
  * @LastEditTime 2025-06-04 14:42
- * @Description 琛ュ崱浼犲叆瀵硅薄
+ * @Description 琛ュ崱浼犺緭瀵硅薄
  */
 
 @Data

--
Gitblit v1.8.0