From 123062d3a26cab5c3233bab88f077829184a3798 Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期四, 05 六月 2025 20:27:42 +0800 Subject: [PATCH] 挂失 --- pipIrr-platform/pipIrr-web/pipIrr-web-terminal/src/main/java/com/dy/pipIrrTerminal/card/CardSv.java | 363 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 351 insertions(+), 12 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..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,22 +1,26 @@ 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.DtoRecharge; +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; +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 +48,9 @@ @Autowired private PrWaterPriceMapper prWaterPriceMapper; + @Autowired + private SeRechargeHistoryMapper seRechargeHistoryMapper; + @Value("${project.projectNo}") private Integer projectNo; @@ -66,6 +73,105 @@ } 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 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; + } + + /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互琛ュ崱 + * @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; } /** @@ -125,7 +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); @@ -188,11 +294,21 @@ return map; } + /** + * 寮�鍗¢檮鍔犲厖鍊� + * @param po + * @param cardNum + * @return + */ + @Transactional(rollbackFor = Exception.class) 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 +318,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 +370,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 +472,135 @@ 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; + } + + @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; + } } -- Gitblit v1.8.0