puzhibing
2023-05-31 0a6f905b50a88993da05b9b3114394fb91dbc7d0
driver/guns-admin/src/main/java/com/agentdriving/driver/modular/system/service/impl/AccountChangeDetailServiceImpl.java
@@ -2,6 +2,7 @@
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;
@@ -110,142 +111,77 @@
     * 处理司机保险
     */
    @Override
    public void deductionInsurance() {
    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");
        List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("approvalStatus", 2).eq("status", 1));
        for (Driver driver : drivers) {
            Double couponBalance = driver.getCouponBalance();
            Double backgroundBalance = driver.getBackgroundBalance();
            Double balance = driver.getBalance();
            Double commission = driver.getCommission();
            double all = couponBalance + backgroundBalance + balance + commission;
            if(num1 > all){
                continue;
            }
        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();
            if(backgroundBalance > 0 && backgroundBalance < d){
                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(driver.getBackgroundBalance());
                accountChangeDetail.setNewData(0D);
                accountChangeDetail.setExplain("收取保险费");
                accountChangeDetail.setCreateTime(new Date());
                this.insert(accountChangeDetail);
                d -= backgroundBalance;
                driver.setBackgroundBalance(0D);
        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(backgroundBalance > 0 && backgroundBalance >= d){
                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(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                driver.setBackgroundBalance(driver.getBackgroundBalance() - d);
                accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                accountChangeDetail.setExplain("收取保险费");
                accountChangeDetail.setCreateTime(new Date());
                this.insert(accountChangeDetail);
            if(couponBalance > 0 && couponBalance >= d){
                driver.setCouponBalance(driver.getCouponBalance() - d);
                d = 0;
            }
            if(d > 0){
                if(couponBalance > 0 && couponBalance < d){
                    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(driver.getCouponBalance());
                    accountChangeDetail.setNewData(0D);
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d -= couponBalance;
                    driver.setCouponBalance(0D);
                }
                if(couponBalance > 0 && couponBalance >= d){
                    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(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setCouponBalance(driver.getCouponBalance() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                }
            }
            if(d > 0){
                if(commission > 0 && commission < d){
                    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(driver.getCommission());
                    accountChangeDetail.setNewData(0D);
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d -= commission;
                    driver.setCommission(0D);
                }
                if(commission > 0 && commission >= d){
                    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(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setCommission(driver.getCommission() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                }
            }
            if(d > 0){
                if(balance > 0 && balance < d){
                    continue;
                }
                if(balance > 0 && balance >= d){
                    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(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    driver.setBalance(driver.getBalance() - d);
                    accountChangeDetail.setNewData(driver.getBalance() + driver.getBackgroundBalance() + driver.getCouponBalance() + driver.getCommission());
                    accountChangeDetail.setExplain("收取保险费");
                    accountChangeDetail.setCreateTime(new Date());
                    this.insert(accountChangeDetail);
                    d = 0;
                }
            }
            driverService.updateById(driver);
        }
        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);
    }
}