package com.agentdriving.driver.modular.system.service.impl;
|
|
import com.agentdriving.driver.modular.system.dao.AccountChangeDetailMapper;
|
import com.agentdriving.driver.modular.system.model.AccountChangeDetail;
|
import com.agentdriving.driver.modular.system.model.Order;
|
import com.agentdriving.driver.modular.system.util.UUIDUtil;
|
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.agentdriving.driver.modular.system.model.Driver;
|
import com.agentdriving.driver.modular.system.model.SystemConfig;
|
import com.agentdriving.driver.modular.system.service.IAccountChangeDetailService;
|
import com.agentdriving.driver.modular.system.service.IDriverService;
|
import com.agentdriving.driver.modular.system.service.ISystemConfigService;
|
import com.agentdriving.driver.modular.system.warpper.BalanceDetailWarpper;
|
import com.agentdriving.driver.modular.system.warpper.CommissionDetailListWarpper;
|
import com.agentdriving.driver.modular.system.warpper.CommissionDetailWarpper;
|
import com.agentdriving.driver.modular.system.warpper.IntegralIncomeAndExpensesWarpper;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* 账户变动
|
* @author zhibing.pu
|
* @date 2023/3/4 11:34
|
*/
|
@Service
|
public class AccountChangeDetailServiceImpl extends ServiceImpl<AccountChangeDetailMapper, AccountChangeDetail> implements IAccountChangeDetailService {
|
|
@Autowired
|
private IDriverService driverService;
|
|
@Autowired
|
private ISystemConfigService systemConfigService;
|
|
|
|
|
|
/**
|
* 保存数据
|
* @param accountChangeDetail
|
* @throws Exception
|
*/
|
@Override
|
public void saveData(AccountChangeDetail accountChangeDetail) throws Exception {
|
accountChangeDetail.setCreateTime(new Date());
|
this.baseMapper.insert(accountChangeDetail);
|
}
|
|
|
/**
|
* 获取积分收支明细
|
* @param driverId
|
* @param type
|
* @param pageNum
|
* @param pageSize
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public List<IntegralIncomeAndExpensesWarpper> queryDriverIntegralIncomeAndExpenses(Integer driverId, Integer type, Integer pageNum, Integer pageSize) throws Exception {
|
pageNum = (pageNum - 1) * pageSize;
|
return this.baseMapper.queryDriverIntegralIncomeAndExpenses(driverId, type, pageNum, pageSize);
|
}
|
|
|
/**
|
* 获取佣金明细列表
|
* @param driverId
|
* @param time
|
* @param pageNum
|
* @param pageSize
|
* @return
|
* @throws Exception
|
*/
|
@Override
|
public CommissionDetailListWarpper queryCommissionDetail(Integer driverId, String time, Integer pageNum, Integer pageSize) throws Exception {
|
pageNum = (pageNum - 1) * pageSize;
|
List<CommissionDetailWarpper> commissionDetailWarppers = this.baseMapper.queryCommissionDetail(driverId, time, pageNum, pageSize);
|
Double aDouble = this.baseMapper.queryCommissionDetailTotal(driverId, time);
|
CommissionDetailListWarpper commissionDetailListWarpper = new CommissionDetailListWarpper();
|
commissionDetailListWarpper.setList(commissionDetailWarppers);
|
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(Integer driverId) {
|
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");
|
Driver driver = driverService.selectById(driverId);
|
Double couponBalance = driver.getCouponBalance();
|
Double backgroundBalance = driver.getBackgroundBalance();
|
Double balance = driver.getBalance();
|
Double commission = driver.getCommission();
|
double all = couponBalance + backgroundBalance + balance + commission;
|
if(num1.compareTo(all) > 0){
|
return;
|
}
|
|
double d = num1.doubleValue();
|
Double old = driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission();
|
if(backgroundBalance > 0 && backgroundBalance < d){
|
d -= backgroundBalance;
|
driver.setBackgroundBalance(0D);
|
}
|
if(backgroundBalance > 0 && backgroundBalance >= d){
|
driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
|
d = 0;
|
}
|
|
if(d > 0){
|
if(couponBalance > 0 && couponBalance < d){
|
d -= couponBalance;
|
driver.setCouponBalance(0D);
|
}
|
if(couponBalance > 0 && couponBalance >= d){
|
driver.setCouponBalance(driver.getCouponBalance() - d);
|
d = 0;
|
}
|
}
|
if(d > 0){
|
if(commission > 0 && commission < d){
|
d -= commission;
|
driver.setCommission(0D);
|
}
|
if(commission > 0 && commission >= d){
|
driver.setCommission(driver.getCommission() - d);
|
d = 0;
|
}
|
}
|
if(d > 0){
|
if(balance > 0 && balance < d){
|
d -= commission;
|
driver.setBalance(0D);
|
return;
|
}
|
if(balance > 0 && balance >= d){
|
driver.setBalance(driver.getBalance() - d);
|
d = 0;
|
}
|
}
|
|
AccountChangeDetail accountChangeDetail = new AccountChangeDetail();
|
accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3));
|
accountChangeDetail.setUserType(2);
|
accountChangeDetail.setUserId(driver.getId());
|
accountChangeDetail.setType(1);
|
accountChangeDetail.setChangeType(8);
|
accountChangeDetail.setOldData(old);
|
accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
|
accountChangeDetail.setExplain("收取保险费");
|
accountChangeDetail.setCreateTime(new Date());
|
this.insert(accountChangeDetail);
|
driverService.updateById(driver);
|
}
|
}
|