package com.xzx.gc.pay.service; import cn.hutool.core.convert.Convert; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import com.xzx.gc.common.constant.Constants; import com.xzx.gc.common.utils.BusinessUtil; import com.xzx.gc.entity.CityPartner; import com.xzx.gc.entity.PartnerAccount; import com.xzx.gc.entity.PartnerAccountLog; import com.xzx.gc.model.admin.AccountLogModel; import com.xzx.gc.model.admin.PartnerAccountLogModel; import com.xzx.gc.model.admin.PartnerAccountModel; import com.xzx.gc.pay.mapper.CityPartnerMapper; import com.xzx.gc.pay.mapper.PartnerAccountLogMapper; import com.xzx.gc.util.DoubleUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @Service @Transactional @Slf4j public class PartnerAccountLogService { @Autowired private PartnerAccountLogMapper partnerAccountLogMapper; @Autowired private CityPartnerMapper cityPartnerMapper; @Autowired private BusinessUtil businessUtil; @Autowired private PartnerAccountService partnerAccountService; public void add(PartnerAccountLog partnerAccountLog){ String now=DateUtil.now(); partnerAccountLog.setCreateTime(now); partnerAccountLog.setDelFlag(Constants.DEL_NOT_FLAG); partnerAccountLog.setUpdateTime(now); //未审核 partnerAccountLog.setApproverStatus("1"); PartnerAccount byAccount=partnerAccountLog.getPartnerAccount(); if(byAccount==null) { String accountId = partnerAccountLog.getAccountId(); if (StrUtil.isBlank(accountId)) { PartnerAccount byPartnerId = partnerAccountService.findByPartnerId(partnerAccountLog.getPartnerId()); if (byPartnerId != null) { partnerAccountLog.setAccountId(byPartnerId.getAccount()); } } if (StrUtil.isBlank(partnerAccountLog.getAccountId())) return; byAccount = partnerAccountService.findByAccount(partnerAccountLog.getAccountId()); } if(StrUtil.isNotBlank(partnerAccountLog.getMoney())) { partnerAccountLog.setAccountMoney(businessUtil.changeMoney(byAccount.getHbb())); BigDecimal add = NumberUtil.add(Convert.toBigDecimal(partnerAccountLog.getAccountMoney()), Convert.toBigDecimal(partnerAccountLog.getMoney())); partnerAccountLog.setHbb(businessUtil.changeMoney(add)); } if(StrUtil.isNotBlank(partnerAccountLog.getManageLimit())) { partnerAccountLog.setOldLimit(businessUtil.changeMoney(byAccount.getOverdraftLimit())); BigDecimal add = NumberUtil.add(Convert.toBigDecimal(partnerAccountLog.getOldLimit()), Convert.toBigDecimal(partnerAccountLog.getManageLimit())); partnerAccountLog.setNewLimit(businessUtil.changeMoney(add)); } if(StrUtil.isNotBlank(partnerAccountLog.getManageLimitFix())) { partnerAccountLog.setOldLimitFix(businessUtil.changeMoney(byAccount.getFixedLimit())); BigDecimal add = NumberUtil.add(Convert.toBigDecimal(partnerAccountLog.getOldLimitFix()), Convert.toBigDecimal(partnerAccountLog.getManageLimitFix())); partnerAccountLog.setNewLimitFix(businessUtil.changeMoney(add)); } partnerAccountLogMapper.insertSelective(partnerAccountLog); } public void insertPartnerAccountLog(PartnerAccountModel accountModel, String type, BigDecimal money, String payOrderId, String packageType) { //写入日志 AccountLogModel log = new AccountLogModel(); boolean flag = true; if(null!=accountModel.getAddType()&&!"".equals(accountModel.getAddType())){ log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).add(money).toString())); }else{ flag = false; log.setNewMoney(DoubleUtil.roundTwo(new BigDecimal(accountModel.getHbb()).subtract(money).toString())); } CityPartner partner = cityPartnerMapper.queryEntityByUserIds(accountModel.getUserId()); PartnerAccountLogModel partnerLog = new PartnerAccountLogModel(); partnerLog.setFlowNo(payOrderId); partnerLog.setCreateTime(DateUtil.now()); partnerLog.setApproverStatus("1"); if(type.equals("14")){ if(!flag){ partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString())); }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money.toString())); } }else{ if(!flag){ partnerLog.setMoney(DoubleUtil.roundTwo(money.multiply(new BigDecimal("-1")).toString())); }else{ partnerLog.setMoney(DoubleUtil.roundTwo(money.toString())); } } partnerLog.setHbb(log.getNewMoney()); partnerLog.setDelFlag(0); partnerLog.setAccountId(accountModel.getAccount()); partnerLog.setAccountMoney(DoubleUtil.roundTwo(accountModel.getHbb() + "")); partnerLog.setUserName(partner.getPartnerName()); if (null != packageType) { partnerLog.setType(packageType); } else { if(type.equals("9")){ partnerLog.setType("12"); }else if(type.equals("8")){ partnerLog.setType("7"); }else{ partnerLog.setType("1"); } } partnerLog.setUserPhone(partner.getMobilePhone()); partnerLog.setRoleName("城市合伙人"); partnerAccountLogMapper.addPartnerAccountLog(partnerLog); } }