From 3e39fd833920dc78e2b8ece3b4f3b2ac2705b9c1 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期四, 01 八月 2024 18:20:59 +0800 Subject: [PATCH] 修改2.0 bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java | 35 ++++++++++++++++++++++++++--------- 1 files changed, 26 insertions(+), 9 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java index dc8cfd9..ff48b02 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/SettlementRecordServiceImpl.java @@ -22,6 +22,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; @@ -98,13 +99,13 @@ Driver driver1 = driverService.selectById(driverId); SettlementRecord settlementRecord = this.selectOne(new EntityWrapper<SettlementRecord>().eq("driverId", driverId).eq("paymentStatus", 1)); if(null == settlementRecord){ - return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No need to make payments for the time being" : "Pas besoin d’effectuer de paiements pour le moment"); + return ResultUtil.error(language == 1 ? "暂无需支付" : language == 2 ? "No payment is required" : "Aucun paiement n’est requis"); } Double payMoney = settlementRecord.getPayMoney(); ResultUtil resultUtil = ResultUtil.success(""); if(payType == 1){//手机支付 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId(); + String merchantTransactionId = sdf.format(new Date()) + language + payType + settlementRecord.getId(); CheckoutRequest checkoutRequest = new CheckoutRequest(); checkoutRequest.setMsisdn(Long.valueOf(driver1.getPhone())); checkoutRequest.setCustomerEmail(driver1.getEmail()); @@ -128,7 +129,7 @@ if(payType == 2){//银行卡支付 BankCard bankCard = bankCardService.selectById(bankCardId); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); - String merchantTransactionId = sdf.format(new Date()) + language + settlementRecord.getId(); + String merchantTransactionId = sdf.format(new Date()) + language + payType + settlementRecord.getId(); CheckoutRequest checkoutRequest = new CheckoutRequest(); checkoutRequest.setMsisdn(Long.valueOf(bankCard.getCode())); checkoutRequest.setCustomerEmail(driver1.getEmail()); @@ -156,9 +157,10 @@ Double laveActivityMoney = driver1.getLaveActivityMoney(); Double laveBusinessMoney = driver1.getLaveBusinessMoney(); - if(laveActivityMoney.compareTo(payMoney) < 0){ + //活动余额小于结算金额 + if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) < 0){ driver1.setLaveActivityMoney(0D); - BigDecimal m = new BigDecimal(payMoney).subtract(new BigDecimal(laveActivityMoney)); + BigDecimal m = new BigDecimal(payMoney).subtract(new BigDecimal(laveActivityMoney)).setScale(2, RoundingMode.HALF_EVEN); driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(m).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); settlementRecord.setPayMoney(laveActivityMoney); settlementRecord.setPaymentStatus(2); @@ -175,8 +177,9 @@ settlementRecord1.setPayMoney(m.doubleValue()); settlementRecord1.setBalanceType(2); this.insert(settlementRecord1); - - }else{ + } + //活动余额大于结算金额 + if(null != laveActivityMoney && 0 < laveActivityMoney && laveActivityMoney.compareTo(payMoney) >= 0){ driver1.setLaveActivityMoney(new BigDecimal(laveActivityMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); settlementRecord.setPaymentStatus(2); settlementRecord.setPayType(payType); @@ -185,6 +188,17 @@ this.updateById(settlementRecord); balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 1, payMoney, settlementRecord.getType() + 2); } + if(null == laveActivityMoney || 0 == laveActivityMoney){ + driver1.setLaveActivityMoney(0D); + driver1.setLaveBusinessMoney(new BigDecimal(laveBusinessMoney).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); + settlementRecord.setPaymentStatus(2); + settlementRecord.setPayType(payType); + settlementRecord.setBalanceType(2); + settlementRecord.setPayTime(new Date()); + this.updateById(settlementRecord); + balanceUsageRecordService.saveBalanceUsageRecord(settlementRecord.getDriverId(), 2, payMoney, settlementRecord.getType() + 2); + } + driver1.setBalance(new BigDecimal(driver1.getBalance()).subtract(new BigDecimal(payMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); //添加交易明细 @@ -205,6 +219,7 @@ public List<QueryHistoricalSettlement> queryHistoricalSettlement(Integer language, Integer driverId, Integer pageNum, Integer size) { pageNum = (pageNum - 1) * size; List<Map<String, Object>> list = this.baseMapper.queryHistoricalSettlement(driverId, pageNum, size); + Double aDouble = this.baseMapper.queryHistoricalSettlementTotal(driverId); List<QueryHistoricalSettlement> datas = new ArrayList<>(); for (Map<String, Object> map : list) { QueryHistoricalSettlement queryHistoricalSettlement = new QueryHistoricalSettlement(); @@ -218,7 +233,6 @@ queryHistoricalSettlement.setType(Integer.valueOf(map.get("type").toString())); } if(null != map.get("payType")){ - Integer balanceType = Integer.valueOf(map.get("balanceType").toString()); switch (map.get("payType").toString()){ case "1": queryHistoricalSettlement.setPayType(language == 1 ? "手机支付" : language == 2 ? "Mobile Money" : "Paiement mobile"); @@ -227,10 +241,12 @@ queryHistoricalSettlement.setPayType(language == 1 ? "线上支付" : language == 2 ? "Bank Card" : "Carte bancaire"); break; default: + Integer balanceType = Integer.valueOf(map.get("balanceType").toString()); queryHistoricalSettlement.setPayType(language == 1 ? "余额支付(" + (balanceType == 1 ? "奖励" : "收入") + ")" : language == 2 ? "Wallet (" + (balanceType == 1 ? "Reward" : "Income") + ")" : "Portefeuille (" + (balanceType == 1 ? "Récompense" : "Revenu") + ")"); break; } } + queryHistoricalSettlement.setTotalPrice(aDouble); datas.add(queryHistoricalSettlement); } return datas; @@ -261,11 +277,11 @@ w = w == 1 ? 7 : w - 1; int d = today.get(Calendar.DAY_OF_MONTH); if(null != settlementAllocation){ - List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); JSONObject jsonObject = JSON.parseObject(settlementAllocation.getContent()); Integer type = jsonObject.getInteger("type"); Integer day = jsonObject.getInteger("day"); if(type == 2 && w == day){//周结算 + List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); for (Map<String, Object> map : list) { Integer driverId = Integer.valueOf(map.get("driverId").toString()); Double price = Double.valueOf(map.get("price").toString()); @@ -289,6 +305,7 @@ } } if(type == 3 && d == day){//月结算 + List<Map<String, Object>> list = settlementDetailService.queryGroupDriver(); for (Map<String, Object> map : list) { Integer driverId = Integer.valueOf(map.get("driverId").toString()); Double price = Double.valueOf(map.get("price").toString()); -- Gitblit v1.7.1