From 2a498d9f65f873cedb74ab5bcb48ad4b845d0622 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 30 八月 2023 10:01:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 150 insertions(+), 2 deletions(-) diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java index cbadf6d..8f82811 100644 --- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java +++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java @@ -1,14 +1,23 @@ package com.supersavedriving.driver.modular.system.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.supersavedriving.driver.modular.system.dao.AccountChangeDetailMapper; -import com.supersavedriving.driver.modular.system.model.AccountChangeDetail; -import com.supersavedriving.driver.modular.system.service.IAccountChangeDetailService; +import com.supersavedriving.driver.modular.system.model.*; +import com.supersavedriving.driver.modular.system.service.*; +import com.supersavedriving.driver.modular.system.util.ResultUtil; +import com.supersavedriving.driver.modular.system.util.UUIDUtil; +import com.supersavedriving.driver.modular.system.warpper.BalanceDetailWarpper; import com.supersavedriving.driver.modular.system.warpper.CommissionDetailListWarpper; import com.supersavedriving.driver.modular.system.warpper.CommissionDetailWarpper; import com.supersavedriving.driver.modular.system.warpper.IntegralIncomeAndExpensesWarpper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.Date; import java.util.List; @@ -19,6 +28,27 @@ */ @Service public class AccountChangeDetailServiceImpl extends ServiceImpl<AccountChangeDetailMapper, AccountChangeDetail> implements IAccountChangeDetailService { + + @Autowired + private IDriverService driverService; + + @Autowired + private ISystemConfigService systemConfigService; + + @Autowired + private IRechargeRecordService rechargeRecordService; + + @Autowired + private IOrderService orderService; + + @Autowired + private IRevenueService revenueService; + + @Autowired + private ICompanyFundFlowService companyFundFlowService; + + + /** @@ -68,4 +98,122 @@ commissionDetailListWarpper.setTotal(aDouble); return commissionDetailListWarpper; } + + /** + * 获取账户余额明细 + * @param driverId + * @param time + * @param type + * @param pageNum + * @param pageSize + * @return + * @throws Exception + */ + @Override + public List<BalanceDetailWarpper> queryBalanceDetail(Integer driverId, String time, Integer type, Integer pageNum, Integer pageSize) throws Exception { + pageNum = (pageNum - 1) * pageSize; + List<BalanceDetailWarpper> balanceDetailWarppers = this.baseMapper.queryBalanceDetail(driverId, time, type, pageNum, pageSize); + return balanceDetailWarppers; + } + + + /** + * 处理司机保险 + */ + @Override + public void deductionInsurance() { + SystemConfig systemConfig = systemConfigService.selectOne(new EntityWrapper<SystemConfig>().eq("type", 3)); + if(null == systemConfig){ + return; + } + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Double num1 = jsonObject.getDouble("num1"); + List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1)); + for (Driver driver : drivers) { + Double balance1 = revenueService.queryCompanyBalance(); + Double backgroundBalance = driver.getBackgroundBalance(); + Double balance = driver.getBalance(); + double all = backgroundBalance + balance; + if(num1.compareTo(all) > 0){ + continue; + } + + double d = num1.doubleValue(); + if(backgroundBalance > 0 && backgroundBalance < d){ + d -= backgroundBalance; + driver.setBackgroundBalance(0D); + }else if(backgroundBalance >= d){ + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver.getId()); + accountChangeDetail.setType(1); + accountChangeDetail.setChangeType(8); + accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver.setBackgroundBalance(driver.getBackgroundBalance() - d); + accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setExplain("收取保险费"); + accountChangeDetail.setCreateTime(new Date()); + this.insert(accountChangeDetail); + d = 0; + } + if(d > 0){ + if(balance > 0 && balance >= d){ + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(5)); + accountChangeDetail.setUserType(2); + accountChangeDetail.setUserId(driver.getId()); + accountChangeDetail.setType(1); + accountChangeDetail.setChangeType(8); + accountChangeDetail.setOldData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + driver.setBalance(new BigDecimal(driver.getBalance()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setNewData(new BigDecimal(driver.getBalance()).add(new BigDecimal(driver.getBackgroundBalance())).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); + accountChangeDetail.setExplain("收取保险费"); + accountChangeDetail.setCreateTime(new Date()); + this.insert(accountChangeDetail); + + Revenue revenue = new Revenue(); + revenue.setType(3); + revenue.setUserType(4); + revenue.setAmount(d); + revenue.setCreateTime(new Date()); + revenueService.insert(revenue); + + List<RechargeRecord> rechargeRecords = rechargeRecordService.selectList(new EntityWrapper<RechargeRecord>().eq("type", 2).eq("userId", driver.getId()).eq("payStatus", 2).gt("surplusDividedAmount", 0).orderBy("createTime")); + // TODO 测试屏蔽 +// for (RechargeRecord rechargeRecord : rechargeRecords) { +// Double surplusDividedAmount = rechargeRecord.getSurplusDividedAmount(); +// if(surplusDividedAmount.compareTo(d) >= 0){ +// ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), d, 1); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(new BigDecimal(rechargeRecord.getSurplusDividedAmount()).subtract(new BigDecimal(d)).setScale(2, RoundingMode.HALF_EVEN).doubleValue()); +// rechargeRecordService.updateById(rechargeRecord); +// } +// break; +// }else{ +// ResultUtil fengzhang = orderService.fengzhang(3, null, "553021440975", null, rechargeRecord.getId(), rechargeRecord.getOrderNumber(), surplusDividedAmount, 1); +// if(fengzhang.getCode() == 10000){ +// rechargeRecord.setSurplusDividedAmount(0d); +// rechargeRecordService.updateById(rechargeRecord); +// d = new BigDecimal(d).subtract(new BigDecimal(surplusDividedAmount)).setScale(2, RoundingMode.HALF_EVEN).doubleValue(); +// }else{ +// break; +// } +// } +// } + + } + } + driverService.updateById(driver); + + CompanyFundFlow companyFundFlow = new CompanyFundFlow(); + companyFundFlow.setType(4); + companyFundFlow.setObjectType(1); + companyFundFlow.setDriverId(driver.getId()); + companyFundFlow.setBalance(new BigDecimal(balance1)); + companyFundFlow.setMoney(new BigDecimal(num1)); + companyFundFlow.setCreateTime(new Date()); + companyFundFlowService.insert(companyFundFlow); + } + } } -- Gitblit v1.7.1