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);
|
|
}
|
}
|