package com.xzx.gc.order.service; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.NumberUtil; 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.exception.RestException; 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.PartnerAccountLogModel; import com.xzx.gc.model.admin.PartnerAccountModel; import com.xzx.gc.order.mapper.PartnerAccountMapper; 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 tk.mybatis.mapper.entity.Example; import java.math.BigDecimal; import java.util.List; @Service @Transactional @Slf4j public class PartnerAccountService { @Autowired private PartnerAccountMapper partnerAccountMapper; @Autowired private PartnerAccountLogService partnerAccountLogService; public PartnerAccount findByPartnerId(String partnerId){ PartnerAccount partnerAccount=new PartnerAccount(); partnerAccount.setPartnerId(partnerId); partnerAccount.setDelFlag(Constants.DEL_NOT_FLAG); PartnerAccount partnerAccount1 = partnerAccountMapper.selectOne(partnerAccount); return partnerAccount1; } public PartnerAccount findByAccount(String accountId){ PartnerAccount partnerAccount=new PartnerAccount(); partnerAccount.setAccount(accountId); partnerAccount.setDelFlag(0); return partnerAccountMapper.selectOne(partnerAccount); } public List findByType(String type){ PartnerAccount partnerAccount=new PartnerAccount(); partnerAccount.setDelFlag(Constants.DEL_NOT_FLAG); partnerAccount.setType(type); return partnerAccountMapper.select(partnerAccount); } public void updateReduceMoneyByPartnerId(String partnerId,BigDecimal money){ //判断合伙人账户的钱是否足够 PartnerAccount byPartnerId = findByPartnerId(partnerId); BigDecimal bigDecimal = Convert.toBigDecimal(byPartnerId.getHbb(),Constants.MONEY_INIT); if(bigDecimal.compareTo(money)<0){ throw new RestException(-1,"合伙人账户余额不足,支付失败"); } partnerAccountMapper.updateReduceMoneyByPartnerId(partnerId,money); } public void updateAddMoneyByPartnerId(String partnerId,BigDecimal money){ partnerAccountMapper.updateAddMoneyByPartnerId(partnerId,money); } public void addPartnerAccountLog(String money, CityPartner partner, String settleId){ PartnerAccountLog partnerAccountLog = new PartnerAccountLog(); partnerAccountLog.setPartnerId(partner.getId().toString()); partnerAccountLog.setFlowNo(settleId); partnerAccountLog.setType(OrderEnum.结算提成.getValue()); partnerAccountLog.setMoney("-" + money); partnerAccountLog.setAccountId(partner.getAccountNo()); partnerAccountLog.setUserName(partner.getPartnerName()); partnerAccountLog.setUserPhone(partner.getMobilePhone()); partnerAccountLog.setRoleName("城市合伙人"); partnerAccountLogService.add(partnerAccountLog); //扣除 updateReduceMoneyByPartnerId(partner.getId().toString(),Convert.toBigDecimal(money)); } }