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