From 9d0512aa6a192ee105ff9251e68a4360c7355319 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期二, 10 六月 2025 18:34:53 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- 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 ded6fa1..5c63db2 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 @@ -8,12 +8,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.pipIrrGlobal.voSe.VoTermCommon; +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; @@ -99,6 +97,41 @@ } /** + * 鏍规嵁姘村崱缂栧彿鍒ゆ柇璇ュ崱鏄惁鍙互鎸傚け + * @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:鍙互琛ュ崱 @@ -135,6 +168,40 @@ 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 + */ + public Map canCancel(DtoCancel 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())); map.put("success", true); map.put("content", card); @@ -198,6 +265,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 +279,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 +335,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 +353,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 +395,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 +425,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 +446,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 +465,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 +491,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) { @@ -426,7 +499,7 @@ return map; } - VoTermRecharge voTermRecharge = new VoTermRecharge(); + VoTermCommon voTermRecharge = new VoTermCommon(); voTermRecharge.setProjectNo(projectNo); voTermRecharge.setCardNum(po.getCardNum()); voTermRecharge.setOrderNo(orderNo); @@ -480,4 +553,270 @@ map.put("content", voTermActiveCard); return map; } + + /** + * 鎸傚け + * @param po + * @return + */ + @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 cancel(DtoCancel po) { + Map map = new HashMap<>(); + map.put("success", false); + map.put("content", null); + String orderNo = generateOrderNo(); + + Map map_canCancel = canCancel(po); + if(map_canCancel.get("success").equals(false)) { + map.put("msg", map_canCancel.get("msg").toString()); + return map; + } + CardSimple card = (CardSimple) map_canCancel.get("content"); + Long cardId = card.getCardId(); + Long clientId = card.getClientId(); + + SeCardOperate seCardOperate = new SeCardOperate(); + seCardOperate.setCardId(cardId); + seCardOperate.setClientId(clientId); + seCardOperate.setTradeAmount(-po.getRefund()); + seCardOperate.setPaymentId(po.getRefundType()); + seCardOperate.setOperateType(OperateTypeENUM.CANCEL.getCode()); + seCardOperate.setRemarks(po.getRemarks()); + seCardOperate.setOperator(po.getOperator()); + seCardOperate.setOperateDt(new Date()); + seCardOperate.setOrderNo(orderNo); + seCardOperate.setOperateValid((byte) 1); + seCardOperateMapper.insert(seCardOperate); + if (seCardOperate.getId() == 0) { + map.put("msg", "閿�鍗″け璐�-閿�鍗¤褰曞啓鍏ュ紓甯�"); + return map; + } + + VoTermCommon voTermCandel = new VoTermCommon(); + voTermCandel.setProjectNo(projectNo); + voTermCandel.setCardNum(po.getCardNum()); + voTermCandel.setOrderNo(orderNo); + + map.put("success", true); + map.put("msg", "鎿嶄綔鎴愬姛"); + map.put("content", voTermCandel); + 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"); + } + } else if (operateType == 2) { + /** + * 鍏呭�兼搷浣滄墽琛岄�氱煡 + * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 + * 2. 鍏呭�煎巻鍙茶褰曟敼涓烘湁鏁� + * 3. 淇敼姘村崱琛ㄧ殑鎿嶄綔淇℃伅 + */ + turnOperateValidByOrderNumber(orderNumber + "p"); + turnRechargeHistoryValidByOrderNumber(orderNumber); + updateCard(cardId, orderNumber+"p"); + }else if (operateType == 3) { + /** + * 閿�鍗℃搷浣滄墽琛岄�氱煡 + * 1. 鎿嶄綔璁板綍鏀逛负鏈夋晥 + * 2. 淇敼姘村崱琛ㄦ搷浣滀俊鎭強浣欓 + */ + + Integer rec_ope = turnOperateValidByOrderNumber(orderNumber); + Integer rec_card = updateCardInfo(cardId, orderNumber); + if (rec_ope == 0 || rec_card == 0) { + map.put("msg", "閿�鍗″洖璋冨け璐�"); + return map; + } + + } else if (operateType == 4) { + /** + * 琛ュ崱鎿嶄綔鎵ц閫氱煡 + * 1. 鏂版按鍗¤褰曟敼涓烘湁鏁� + * 2. 寮�鍗℃搷浣滆褰曟敼涓烘湁鏁� + * 3. 濡傛灉瀛樺湪閫�杩橀噾棰� + * 娓呯┖鍘熷崱浣欓 + */ + Integer rec_card = turnCardValidByOrderNumber(orderNumber); + Integer rec_ope = turnOperateValidByOrderNumber(orderNumber); + emptyCardBalance(orderNumber); + if (rec_card == 0 || rec_ope == 0) { + map.put("msg", "琛ュ崱鍥炶皟澶辫触"); + return map; + } + + } + + 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; + } + + /** + * 濡傛灉琛ュ崱鏃堕��杩樹簡閲戦锛屾竻绌烘寕澶卞崱浣欓 + * @param orderNumber + */ + public Integer emptyCardBalance(String orderNumber) { + Integer rec_empty = 0; + Float noTradeAmount = seCardOperateMapper.getNoTradeAmount(orderNumber); + if(noTradeAmount != null && noTradeAmount > 0) { + rec_empty = seClientCardMapper.emptyCardBalance(orderNumber); + } + return rec_empty; + } + + /** + * 淇敼娉ㄩ攢姘村崱琛ㄧ殑璁板綍鍙婁綑棰濓紙0锛� + * @param orderNumber + * @return + */ + public Integer updateCardInfo(Long cardId, String orderNumber) { + Date operateTime = seCardOperateMapper.getOperateTime(orderNumber); + + SeClientCard clientCard = new SeClientCard(); + clientCard.setId(cardId); + clientCard.setCanceldt(operateTime); + clientCard.setMoney(0f); + clientCard.setState(CardStateENUM.CANCELLED.getCode()); + clientCard.setLastoper(LastOperateENUM.CANCEL.getCode()); + return seClientCardMapper.updateByPrimaryKeySelective(clientCard); + } } -- Gitblit v1.8.0