From 41601a43ab9d3d2b65aad02b33c8d57dba7da055 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期三, 04 六月 2025 17:29:33 +0800 Subject: [PATCH] 开卡附加充值、充值、补卡 --- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 231 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 162 insertions(+), 69 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 8a8e2bc..ded6fa1 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,17 +1,19 @@ package com.dy.pipIrrTerminal.card; -import com.dy.common.webUtil.BaseResponse; -import com.dy.common.webUtil.BaseResponseUtils; import com.dy.pipIrrGlobal.daoPr.PrWaterPriceMapper; import com.dy.pipIrrGlobal.daoSe.SeCardOperateMapper; import com.dy.pipIrrGlobal.daoSe.SeClientCardMapper; import com.dy.pipIrrGlobal.daoSe.SeClientMapper; +import com.dy.pipIrrGlobal.daoSe.SeRechargeHistoryMapper; import com.dy.pipIrrGlobal.pojoSe.SeCardOperate; import com.dy.pipIrrGlobal.pojoSe.SeClientCard; 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.enums.CardStateENUM; import com.dy.pipIrrTerminal.card.enums.LastOperateENUM; import com.dy.pipIrrTerminal.card.enums.OperateTypeENUM; @@ -20,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -47,6 +50,9 @@ @Autowired private PrWaterPriceMapper prWaterPriceMapper; + @Autowired + private SeRechargeHistoryMapper seRechargeHistoryMapper; + @Value("${project.projectNo}") private Integer projectNo; @@ -69,6 +75,70 @@ } return false; + } + + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互鍏呭�� + * @param po + * @return true:鍙互鍏呭�� + */ + public Map canRecharge(DtoRecharge po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + String stateName = Optional.ofNullable(seClientCardMapper.getCardStateByCardNum(po.getCardNum())).orElse(""); + // 鍗曠嫭鍏呭�兼椂鍗$墖蹇呴』涓烘甯� + if((po.getRechargeType() == RechargeTypeENUM.RECHARGE.getCode()) && !stateName.equals("姝e父")) { + map.put("msg", stateName + ", " + "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"); + return map; + } + + map.put("success", true); + return map; + } + + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互琛ュ崱 + * @param po + * @return true:鍙互琛ュ崱 + */ + public Map canReissue(DtoReissue po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Long cardNum = po.getCardNum(); + Integer lostCount = seClientCardMapper.getLostCount(cardNum); + Integer replacedCount = seClientCardMapper.getReplacedCount(cardNum); + if(lostCount == 0 || replacedCount > 0) { + map.put("msg", "姘村崱鏈寕澶辨垨宸茶ˉ鍗★紝涓嶈兘琛ュ崱"); + return map; + } + + Float reissueAmount = po.getReissueAmount(); + if (reissueAmount != null && reissueAmount > 0) { + Double tradeAmount = seCardOperateMapper.getTradeAmountByCardNo(cardNum); + if (tradeAmount != null && tradeAmount > 0) { + map.put("msg", "鍘熷崱鎸傚け鏃跺凡閫�娆撅紝琛ュ崱鏃朵笉鑳借ˉ璐圭敤"); + 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; } /** @@ -127,7 +197,6 @@ } return dtf.format(dateTime) + sb.toString(); } - public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) { Map map = new HashMap<>(); @@ -191,11 +260,20 @@ return map; } + /** + * 寮�鍗¢檮鍔犲厖鍊� + * @param po + * @param cardNum + * @return + */ public Map plusRecharge(ActiveCard po, Long cardNum) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); + /** + * 娣诲姞姘村崱鎿嶄綔璁板綍 + */ DtoRecharge dtoRecharge = new DtoRecharge(); dtoRecharge.setCardNum(cardNum); dtoRecharge.setAmount(po.getAmount()); @@ -205,17 +283,21 @@ dtoRecharge.setMoney(0f); dtoRecharge.setGift(0f); dtoRecharge.setPrice(0f); - //BaseResponse<Boolean> job = cardOperateSv.addRecharge(dtoRecharge); - BaseResponse<Boolean> job = null; - if (!job.getCode().equals("0001")) { + Map map_plusRecharge = addRecharge(dtoRecharge); + if (!map_plusRecharge.get("success").equals(true)) { map.put("msg", "寮�鍗″け璐�-鍏呭�煎紓甯�"); return map; } - map.put("success", true); return map; } + /** + * 婵�娲绘垨琛ュ崱 + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) public Map activeOrReissueTermCard(ActiveCard po) { Map map = new HashMap<>(); map.put("success", false); @@ -253,68 +335,30 @@ Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f); Double waterPrice = prWaterPriceMapper.getPrice(); - VoTermRecharge voTermRecharge = new VoTermRecharge(); - voTermRecharge.setProjectNo(projectNo); - voTermRecharge.setCardNum(cardNum); - voTermRecharge.setBalance(balance); - voTermRecharge.setWaterPrice(waterPrice); - voTermRecharge.setTime(new Date()); - voTermRecharge.setOrderNo(orderNo); + VoTermActiveCard voTermActiveCard = new VoTermActiveCard(); + voTermActiveCard.setProjectNo(projectNo); + voTermActiveCard.setCardNum(cardNum); + voTermActiveCard.setBalance(balance); + voTermActiveCard.setWaterPrice(waterPrice); + voTermActiveCard.setTime(new Date()); + voTermActiveCard.setOrderNo(orderNo); map.put("success", true); map.put("msg", "鎿嶄綔鎴愬姛"); - map.put("content", voTermRecharge); + map.put("content", voTermActiveCard); return map; } - public Map canRecharge(DtoRecharge po) { - Map map = new HashMap<>(); - map.put("success", false); - map.put("content", null); - - String stateName = Optional.ofNullable(seClientCardMapper.getCardStateByCardNum(po.getCardNum())).orElse(""); - // 鍗曠嫭鍏呭�兼椂鍗$墖蹇呴』涓烘甯� - if((po.getRechargeType() == RechargeTypeENUM.RECHARGE.getCode()) && !stateName.equals("姝e父")) { - map.put("msg", stateName + ", " + "姘村崱鐘舵�佷笉鏀寔褰撳墠鎿嶄綔"); - return map; - } - - map.put("success", true); - return map; - } - + /** + * 鍏呭�� + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) public Map addRecharge(DtoRecharge po) { Map map = new HashMap<>(); map.put("success", false); map.put("content", null); - - /** - * cardId 姘村崱缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級 - * clientId 鍐滄埛缂栧彿锛堜緷鎹按鍗$紪鍙疯幏鍙栵級 - * cardNum 姘村崱缂栧彿 - * money 鍗$墖浣欓 - * amount 鍏呭�奸噾棰� - * gift 璧犻�侀噾棰� - * afterRecharge 鍏呭�煎悗浣欓 - * paymentId 鏀粯鏂瑰紡缂栧彿 - * price 姘翠环 - * remarks 澶囨敞 - * operator 鎿嶄綔浜虹紪鍙� - * rechargeTime 鍏呭�兼椂闂� - */ - - //Long cardId = 0L; - //Long clientId = 0L; - //Long cardNum = po.getCardNum(); - //Float money = po.getMoney(); - //Float amount = po.getAmount(); - //Float gift = po.getGift(); - //Float afterRecharge = money + amount + gift; - //Long paymentId = po.getPaymentId(); - //Float price = po.getPrice(); - //String remarks = po.getRemarks(); - //Long operator = po.getOperator(); - //Date rechargeTime = new Date(); Map map_canRecharge = canRecharge(po); if(map_canRecharge.get("success").equals(false)) { @@ -332,6 +376,7 @@ } Long cardId = Long.parseLong(map_cardAndClient.get("cardId").toString()); Long clientId = Long.parseLong(map_cardAndClient.get("clientId").toString()); + String orderNo = generateOrderNo(); /** * 娣诲姞姘村崱鍏呭�兼搷浣滆褰� @@ -348,11 +393,13 @@ seCardOperate.setRemarks(po.getRemarks()); seCardOperate.setOperator(po.getOperator()); seCardOperate.setOperateDt(new Date()); + seCardOperate.setOrderNo(orderNo); seCardOperate.setOperateValid((byte) 1); seCardOperateMapper.insert(seCardOperate); Long rec = Optional.ofNullable(seCardOperate.getId()).orElse(0L); if (rec == 0) { - //return BaseResponseUtils.buildErrorMsg("鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�"); + map.put("msg", "鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�"); + return map; } /** @@ -372,19 +419,65 @@ seRechargeHistory.setOperator(po.getOperator()); seRechargeHistory.setOperatedt(new Date()); seRechargeHistory.setOperateValid((byte) 1); - //seRechargeHistoryMapper.insert(seRechargeHistory); + seRechargeHistoryMapper.insert(seRechargeHistory); Long rec_seRechargeHistory = Optional.ofNullable(seRechargeHistory.getId()).orElse(0L); - //if (rec_seRechargeHistory == 0) { - // return BaseResponseUtils.buildErrorMsg("鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�"); - //} + if (rec_seRechargeHistory == 0) { + map.put("msg", "鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�"); + return map; + } - //Map map_response = new HashMap(); - //map_response.put("projectNo", String.format("%02x", projectNo)); - //map_response.put("orderNumber", rec); - //map_response.put("cardNum", cardNum); - //return BaseResponseUtils.buildSuccess(map_response); + VoTermRecharge voTermRecharge = new VoTermRecharge(); + voTermRecharge.setProjectNo(projectNo); + voTermRecharge.setCardNum(po.getCardNum()); + voTermRecharge.setOrderNo(orderNo); + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + map.put("content", voTermRecharge); return map; } + /** + * 琛ュ崱 + * @param po + * @return + */ + @Transactional(rollbackFor = Exception.class) + public Map reissue(DtoReissue po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + + Map map_canReissue = canReissue(po); + if(map_canReissue.get("success").equals(false)) { + map.put("msg", map_canReissue.get("msg").toString()); + return map; + } + CardSimple card = (CardSimple) map_canReissue.get("content"); + Long cardId = card.getCardId(); + Long clientId = card.getClientId(); + String protocol = card.getProtocol(); + + /** + * 娣诲姞寮�鍗¤褰曪紝閫�杩橀噾棰濆啿鍒版柊鍗′腑 + */ + ActiveCard activeCard = new ActiveCard(); + activeCard.setProtocol(protocol); + activeCard.setCardAddr(po.getCardAddr()); + activeCard.setClientId(clientId); + activeCard.setOriginalCardId(cardId); + activeCard.setCardCost(po.getCardCost()); + activeCard.setAmount(po.getReissueAmount()); + activeCard.setPaymentId(po.getPaymentId()); + activeCard.setRemarks(po.getRemarks()); + activeCard.setOperator(po.getOperator()); + + Map map_newCard = activeOrReissueTermCard(activeCard); + VoTermActiveCard voTermActiveCard = (VoTermActiveCard) map_newCard.get("content"); + + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + map.put("content", voTermActiveCard); + return map; + } } -- Gitblit v1.8.0