From ee1800e3988e4913f5328c2cba07735fb4d06eff Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期五, 06 六月 2025 17:30:37 +0800 Subject: [PATCH] 操作回调开卡附加充值部分 --- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 78 ++++++++++++++++++++++++++++++++++---- 1 files changed, 69 insertions(+), 9 deletions(-) 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 a5e5bbe..af93c99 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 @@ -9,6 +9,7 @@ import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; import com.dy.pipIrrGlobal.pojoSe.SeClientCard; import com.dy.pipIrrGlobal.pojoSe.SeRechargeHistory; +import com.dy.pipIrrGlobal.voSe.VoAfterRecharge; import com.dy.pipIrrGlobal.voSe.VoTermActiveCard; import com.dy.pipIrrGlobal.voSe.VoTermRecharge; import com.dy.pipIrrTerminal.card.dto.*; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; @@ -245,6 +247,7 @@ seClientCard.setClientid(po.getClientId()); seClientCard.setMoney(po.getAmount()); seClientCard.setState(CardStateENUM.INVALID.getCode()); + seClientCard.setOrderNo(orderNo); if (po.getOriginalCardId() != null) { // 琛ュ崱 seClientCard.setOriginalCardId(po.getOriginalCardId()); @@ -301,7 +304,7 @@ * @return */ @Transactional(rollbackFor = Exception.class) - public Map plusRecharge(ActiveCard po, Long cardNum) { + public Map plusRecharge(ActiveCard po, Long cardNum, String orderNo) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); @@ -318,7 +321,7 @@ dtoRecharge.setMoney(0f); dtoRecharge.setGift(0f); dtoRecharge.setPrice(0f); - Map map_plusRecharge = addRecharge(dtoRecharge); + Map map_plusRecharge = addRecharge(dtoRecharge, orderNo); if (!map_plusRecharge.get("success").equals(true)) { map.put("msg", "寮�鍗″け璐�-鍏呭�煎紓甯�"); return map; @@ -360,7 +363,7 @@ } if (amount != null && amount > 0 && originalCardId == null) { - Map map_plusRecharge = plusRecharge(po, cardNum); + Map map_plusRecharge = plusRecharge(po, cardNum, orderNo); if(map_plusRecharge.get("success").equals(false)) { map.put("msg", map_plusRecharge.get("msg").toString()); return map; @@ -390,7 +393,7 @@ * @return */ @Transactional(rollbackFor = Exception.class) - public Map addRecharge(DtoRecharge po) { + public Map addRecharge(DtoRecharge po, String orderNo) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); @@ -411,7 +414,9 @@ } Long cardId = Long.parseLong(map_cardAndClient.get("cardId").toString()); Long clientId = Long.parseLong(map_cardAndClient.get("clientId").toString()); - String orderNo = generateOrderNo(); + if(orderNo == null || orderNo.length() <= 0) { + orderNo = generateOrderNo(); + } /** * 娣诲姞姘村崱鍏呭�兼搷浣滆褰� @@ -428,7 +433,7 @@ seCardOperate.setRemarks(po.getRemarks()); seCardOperate.setOperator(po.getOperator()); seCardOperate.setOperateDt(new Date()); - seCardOperate.setOrderNo(orderNo); + seCardOperate.setOrderNo(orderNo + "p"); seCardOperate.setOperateValid((byte) 1); seCardOperateMapper.insert(seCardOperate); Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L); @@ -454,6 +459,7 @@ seRechargeHistory.setOperator(po.getOperator()); seRechargeHistory.setOperatedt(new Date()); seRechargeHistory.setOperateValid((byte) 1); + seRechargeHistory.setOrderNo(orderNo); seRechargeHistoryMapper.insert(seRechargeHistory); Long rec_seRechargeHistory = Optional.ofNullable(seRechargeHistory.getId()).orElse(0L); if (rec_seRechargeHistory == 0) { @@ -568,6 +574,11 @@ return map; } + /** + * 鎿嶄綔鍥炶皟 + * @param po + * @return + */ @Transactional(rollbackFor = Exception.class) public Map callBack(DtoCallBack po) { Map map = new HashMap<>(); @@ -587,20 +598,69 @@ if(operateType == 1) { /** * 寮�鍗℃搷浣滄墽琛岄�氱煡 - * 1.渚濇嵁姘村崱鍦板潃銆佽鍗曞彿灏嗘棤鏁堢姸鎬佺殑鎿嶄綔璁板綍鏀逛负鏈夋晥 + * 1.渚濇嵁璁㈠崟鍙峰皢鏃犳晥鐘舵�佺殑鎿嶄綔璁板綍鏀逛负鏈夋晥 * 2.渚濇嵁姘村崱ID灏嗘棤鏁堢姸鎬佺殑姘村崱璁板綍鏀逛负鏈夋晥 * 3.濡傛灉寮�鍗″悓姝ュ厖鍊� * 淇敼鍏呭�兼搷浣滆褰曚负鏈夋晥 * 淇敼鍏呭�煎巻鍙茶褰曚负鏈夋晥 * 淇敼姘村崱琛ㄧ殑鎿嶄綔淇℃伅 */ + Integer rec_ope = turnOperateValidByOrderNumber(orderNumber); + Integer rec_card = turnCardValidByOrderNumber(orderNumber); + if (rec_ope == 0 || rec_card == 0) { + map.put("msg", "涓嶅瓨鍦ㄦ湭鐢熸晥鐨勬按鍗�"); + return map; + } + if(isMergeRecharge(cardId)) { + turnOperateValidByOrderNumber(orderNumber + "p"); + turnRechargeHistoryValidByOrderNumber(orderNumber); + updateCard(cardId, orderNumber+"p"); + } } - - map.put("success", true); map.put("msg", "鎿嶄綔鎴愬姛"); return map; } + + // 鏍规嵁璁㈠崟鍙峰皢鎿嶄綔璁板綍鏀逛负鏈夋晥 + public Integer turnOperateValidByOrderNumber(String orderNumber) { + return seCardOperateMapper.turnOperateValidByOrderNumber(orderNumber); + } + + // 鏍规嵁璁㈠崟鍙峰皢姘村崱鏀逛负鏈夋晥 + public Integer turnCardValidByOrderNumber(String orderNumber) { + return seClientCardMapper.turnCardValidByOrderNumber(orderNumber); + } + + // 鏍规嵁璁㈠崟鍙峰皢鍏呭�煎巻鍙叉敼涓烘湁鏁� + public Integer turnRechargeHistoryValidByOrderNumber(String orderNumber) { + return seRechargeHistoryMapper.turnRechargeHistoryValidByOrderNumber(orderNumber); + } + + // 鏍规嵁cardId鍒ゆ柇鏄惁鏄悎骞跺厖鍊� + public Boolean isMergeRecharge(Long cardId) { + Integer plusRechargeCount = seCardOperateMapper.getPlusRechargeCount(cardId); + if (plusRechargeCount == 0) { + return false; + } + return true; + } + + // 淇敼姘村崱淇℃伅 + public Boolean updateCard(Long cardId, String orderNumber) { + VoAfterRecharge voAfterRecharge = seCardOperateMapper.getBalanceAfterRecharge(orderNumber); + + SeClientCard clientCard = new SeClientCard(); + clientCard.setId(cardId); + clientCard.setMoney(voAfterRecharge.getBalanceAfterRecharge()); + clientCard.setRechargedt(voAfterRecharge.getOperateTime()); + clientCard.setLastoper(LastOperateENUM.RECHARGE.getCode()); + Integer rec_updateClientCard = seClientCardMapper.updateByPrimaryKeySelective(clientCard); + if (rec_updateClientCard == null || rec_updateClientCard == 0) { + return false; + } + return true; + } } -- Gitblit v1.8.0