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 | 203 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 193 insertions(+), 10 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 ded6fa1..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 @@ -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; @@ -8,12 +9,10 @@ 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.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; @@ -24,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.*; @@ -95,6 +95,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 +233,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); @@ -211,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()); @@ -266,7 +303,8 @@ * @param cardNum * @return */ - public Map plusRecharge(ActiveCard po, Long cardNum) { + @Transactional(rollbackFor = Exception.class) + public Map plusRecharge(ActiveCard po, Long cardNum, String orderNo) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); @@ -283,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; @@ -325,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; @@ -355,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); @@ -376,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(); + } /** * 娣诲姞姘村崱鍏呭�兼搷浣滆褰� @@ -393,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); @@ -419,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) { @@ -480,4 +521,146 @@ 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; + } + + /** + * 鎿嶄綔鍥炶皟 + * @param po + * @return + */ + @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.濡傛灉寮�鍗″悓姝ュ厖鍊� + * 淇敼鍏呭�兼搷浣滆褰曚负鏈夋晥 + * 淇敼鍏呭�煎巻鍙茶褰曚负鏈夋晥 + * 淇敼姘村崱琛ㄧ殑鎿嶄綔淇℃伅 + */ + 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