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