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 | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 226 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 e244ab3..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,22 +1,28 @@ package com.dy.pipIrrTerminal.card; -import com.dy.common.webUtil.BaseResponse; 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; +import com.dy.pipIrrTerminal.card.enums.RechargeTypeENUM; import lombok.extern.slf4j.Slf4j; 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; @@ -44,6 +50,9 @@ @Autowired private PrWaterPriceMapper prWaterPriceMapper; + @Autowired + private SeRechargeHistoryMapper seRechargeHistoryMapper; + @Value("${project.projectNo}") private Integer projectNo; @@ -66,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; } /** @@ -124,7 +197,6 @@ } return dtf.format(dateTime) + sb.toString(); } - public Map addCardAndOperate(ActiveCard po, Long cardNum, String orderNo) { Map map = new HashMap<>(); @@ -188,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()); @@ -202,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); @@ -250,12 +335,100 @@ Float balance = Optional.ofNullable(seClientCardMapper.getMoneyByCardNum(cardNum)).orElse(0f); Double waterPrice = prWaterPriceMapper.getPrice(); + 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", voTermActiveCard); + 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); + + Map map_canRecharge = canRecharge(po); + if(map_canRecharge.get("success").equals(false)) { + map.put("msg", map_canRecharge.get("msg").toString()); + return map; + } + + /** + * 渚濇嵁姘村崱缂栧彿鑾峰彇姘村崱琛ㄤ富閿強鍐滄埛缂栧彿 + */ + Map map_cardAndClient = seClientCardMapper.getCardIdAndClientNum(po.getCardNum()); + if (map_cardAndClient == null || map_cardAndClient.size() <= 0) { + map.put("msg", "鍗″彿閿欒锛岃鍗′笉瀛樺湪"); + return map; + } + Long cardId = Long.parseLong(map_cardAndClient.get("cardId").toString()); + Long clientId = Long.parseLong(map_cardAndClient.get("clientId").toString()); + String orderNo = generateOrderNo(); + + /** + * 娣诲姞姘村崱鍏呭�兼搷浣滆褰� + */ + SeCardOperate seCardOperate = new SeCardOperate(); + seCardOperate.setCardId(cardId); + seCardOperate.setClientId(clientId); + seCardOperate.setMoney(po.getMoney()); + seCardOperate.setTradeAmount(po.getAmount()); + seCardOperate.setGift(po.getGift()); + seCardOperate.setOperateType(OperateTypeENUM.RECHARGE.getCode()); + seCardOperate.setPaymentId(po.getPaymentId()); + seCardOperate.setPrice(po.getPrice()); + 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) { + map.put("msg", "鍏呭�煎け璐�-鍏呭�艰褰曞啓鍏ュ紓甯�"); + return map; + } + + /** + * 娣诲姞鍏呭�煎巻鍙茶褰� + */ + SeRechargeHistory seRechargeHistory = new SeRechargeHistory(); + seRechargeHistory.setCardid(cardId); + seRechargeHistory.setClientid(clientId); + seRechargeHistory.setMoney(po.getMoney()); + seRechargeHistory.setAmount(po.getAmount()); + seRechargeHistory.setGift(po.getGift()); + Float afterRecharge = po.getMoney() + po.getAmount() + po.getGift(); + seRechargeHistory.setAfterrecharge(afterRecharge); + seRechargeHistory.setPaymentid(po.getPaymentId()); + seRechargeHistory.setPrice(po.getPrice()); + seRechargeHistory.setRemarks(po.getRemarks()); + seRechargeHistory.setOperator(po.getOperator()); + seRechargeHistory.setOperatedt(new Date()); + seRechargeHistory.setOperateValid((byte) 1); + seRechargeHistoryMapper.insert(seRechargeHistory); + Long rec_seRechargeHistory = Optional.ofNullable(seRechargeHistory.getId()).orElse(0L); + if (rec_seRechargeHistory == 0) { + map.put("msg", "鍏呭�煎け璐�-鍏呭�煎巻鍙茶褰曞啓鍏ュ紓甯�"); + return map; + } + VoTermRecharge voTermRecharge = new VoTermRecharge(); voTermRecharge.setProjectNo(projectNo); - voTermRecharge.setCardNum(cardNum); - voTermRecharge.setBalance(balance); - voTermRecharge.setWaterPrice(waterPrice); - voTermRecharge.setTime(new Date()); + voTermRecharge.setCardNum(po.getCardNum()); voTermRecharge.setOrderNo(orderNo); map.put("success", true); @@ -264,4 +437,47 @@ 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