| package com.xzx.gc.order.service;  | 
|   | 
| import cn.hutool.core.convert.Convert;  | 
| import cn.hutool.core.util.NumberUtil;  | 
| import cn.hutool.json.JSONUtil;  | 
| import com.xzx.gc.common.constant.CommonEnum;  | 
| import com.xzx.gc.common.constant.Constants;  | 
| import com.xzx.gc.common.constant.OrderEnum;  | 
| import com.xzx.gc.common.constant.UserEnum;  | 
| import com.xzx.gc.entity.PartnerAccountLog;  | 
| import com.xzx.gc.entity.PlatformAccountLog;  | 
| import com.xzx.gc.entity.RedPaperRule;  | 
| import com.xzx.gc.model.comon.account.AllAcountParamDto;  | 
| import com.xzx.gc.service.BaseAccountService;  | 
| 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;  | 
| import java.math.RoundingMode;  | 
|   | 
| @Service  | 
| @Transactional  | 
| @Slf4j  | 
| public class CommissionsService extends BaseAccountService {  | 
|   | 
|   | 
|     @Autowired  | 
|     private RedPaperRuleService redPaperRuleService;  | 
|   | 
|     @Autowired  | 
|     private PartnerAccountService partnerAccountService;  | 
|   | 
|     @Autowired  | 
|     private PlatformAccountInfoService platformAccountInfoService;  | 
|   | 
|     @Autowired  | 
|     private PartnerAccountLogService partnerAccountLogService;  | 
|   | 
|     @Autowired  | 
|     private PlatformAccountLogService platformAccountLogService;  | 
|   | 
|   | 
|   | 
|     @Override  | 
|     public Object account(AllAcountParamDto allAcountParamDto) {  | 
|         RedPaperRule one = redPaperRuleService.getOne(UserEnum.提佣规则.getValue(), allAcountParamDto.getPartnerId());  | 
|         if (one != null) {  | 
|             //提佣比例  如0.005就是5厘  城市合伙人每笔订单成交,总部收取每笔订单回收流水的0.5%做为平台服务费。  | 
|             BigDecimal shareRatio = Convert.toBigDecimal(one.getShareRatio(), Constants.MONEY_INIT);  | 
|             if (shareRatio.compareTo(BigDecimal.ZERO) == 0) {  | 
|                 return null;  | 
|             }  | 
|             BigDecimal mul = NumberUtil.mul(allAcountParamDto.getMoney(), shareRatio);  | 
|             mul = NumberUtil.round(mul, 2, RoundingMode.HALF_UP);  | 
|             if (mul.compareTo(BigDecimal.ZERO) == 0) {  | 
|                 return null;  | 
|             }  | 
|             //账户及日志变动  | 
|             allAcountParamDto.setMoney(mul);  | 
|   | 
|   | 
|             log.debug("准备进行提佣操作:{}", JSONUtil.toJsonPrettyStr(allAcountParamDto));  | 
|             //提佣 合伙人账户扣钱,总部加钱  | 
|             PartnerAccountLog partnerAccountLog = new PartnerAccountLog();  | 
|             partnerAccountLog.setPartnerId(allAcountParamDto.getPartnerId());  | 
|             partnerAccountLog.setFlowNo(allAcountParamDto.getFlowNo());  | 
|             partnerAccountLog.setType(OrderEnum.提佣.getValue());  | 
|             partnerAccountLog.setMoney("-" + allAcountParamDto.getMoney().toString());  | 
|             partnerAccountLog.setRuleId(allAcountParamDto.getRuleId());  | 
|             partnerAccountLogService.add(partnerAccountLog);  | 
|             partnerAccountService.updateReduceMoneyByPartnerId(allAcountParamDto.getPartnerId(), allAcountParamDto.getMoney());  | 
|   | 
|             PlatformAccountLog platformAccountLog = new PlatformAccountLog();  | 
|             platformAccountLog.setType(Convert.toInt(CommonEnum.平台总部流水提佣.getValue()));  | 
|             platformAccountLog.setFlowNo(allAcountParamDto.getFlowNo());  | 
|             platformAccountLog.setCreateUserId(allAcountParamDto.getPartnerId());  | 
|             platformAccountLog.setHbb(allAcountParamDto.getMoney());  | 
|             platformAccountLogService.add(platformAccountLog);  | 
|             platformAccountInfoService.updateHbb(allAcountParamDto.getMoney().toString());  | 
|             log.debug("提佣操作已完成");  | 
|         }  | 
|         return null;  | 
|     }  | 
| }  |