|
|
@@ -4,12 +4,10 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.cyksj.common.constant.Constant;
|
|
|
import com.cyksj.mapper.OrderDonMapper;
|
|
|
import com.cyksj.mapper.UserRenewChangeTicketRecordMapper;
|
|
|
+import com.cyksj.mapper.manage.distribute.UserBusinessDefaultRateConfigMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.UserDistributeBusinessOrderDonRecordMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.UserDistributeBusinessRateMapper;
|
|
|
-import com.cyksj.model.entity.OrderDon;
|
|
|
-import com.cyksj.model.entity.UserDistributeBusinessOrderDonRecord;
|
|
|
-import com.cyksj.model.entity.UserDistributeBusinessRate;
|
|
|
-import com.cyksj.model.entity.UserRenewChangeTicketRecord;
|
|
|
+import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.distribute.UserBusinessFrontService;
|
|
|
import com.ejlchina.searcher.BeanSearcher;
|
|
|
@@ -42,8 +40,10 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
|
|
|
private final RedisService redisService;
|
|
|
|
|
|
+ private final UserBusinessDefaultRateConfigMapper defaultRateConfigMapper;
|
|
|
+
|
|
|
@Override
|
|
|
- public void taskDistributeRateBenefits(Long sharedId, Long businessId, OrderDon order) {
|
|
|
+ public void taskDistributeRateBenefits(Long sharedId, Long businessId, OrderDon order, Integer distributeRate) {
|
|
|
UserDistributeBusinessRate businessRate = userDistributeBusinessRateMapper.selectOne(Wrappers.lambdaQuery(UserDistributeBusinessRate.class)
|
|
|
.eq(UserDistributeBusinessRate::getBusinessId, businessId)
|
|
|
.eq(UserDistributeBusinessRate::getGoodsId, order.getGoodsId())
|
|
|
@@ -51,10 +51,10 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
if (businessRate != null) {
|
|
|
//首单
|
|
|
if (order.getOrderType() == 1) {
|
|
|
- log.info("商务首单分销分配提成开始");
|
|
|
+ log.info("商务首单orderId:{}分销分配提成开始", order.getId());
|
|
|
//用户之前是否下过单
|
|
|
Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
- .eq(OrderDon::getUserId,order.getUserId())
|
|
|
+ .eq(OrderDon::getUserId, order.getUserId())
|
|
|
.ne(OrderDon::getId, order.getId()).notIn(OrderDon::getStatus, Constant.noOrderAllStatus));
|
|
|
if (count == 0) {
|
|
|
//是否享受过该用户带来的首单 提成
|
|
|
@@ -68,7 +68,10 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
boolean isSuccess = redisService.setNx(RedisService.key.BUSINESS_FIRST_ORDER_USER_KEY.getNameFormat(order.getUserId()), businessId, RedisService.key.BUSINESS_FIRST_ORDER_USER_KEY.getTimeout());
|
|
|
if (isSuccess) {
|
|
|
//首单虚物规格 提成
|
|
|
- record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, businessRate.getFirstOrderRate(), null);
|
|
|
+ record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, businessRate.getFirstOrderRate(), null, distributeRate);
|
|
|
+ if (record == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
businessOrderDonRecordMapper.insert(record);
|
|
|
log.info("开始给商务人员:{}分配分销人:{}分销的用户:{}首单:{}提成", businessId, sharedId, order.getUserId(), order.getId());
|
|
|
}
|
|
|
@@ -94,7 +97,10 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
if (relationId.equals(preRelationId)) {
|
|
|
try {
|
|
|
//分配首单续费提成
|
|
|
- record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, null, businessRate.getRenewOrderRate());
|
|
|
+ record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, null, businessRate.getRenewOrderRate(), distributeRate);
|
|
|
+ if (record == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
businessOrderDonRecordMapper.insert(record);
|
|
|
log.info("开始给商务人员:{}分配分销人:{}分销的用户:{}续费首单:{}提成", businessId, sharedId, order.getUserId(), order.getId());
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
@@ -108,7 +114,10 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
if (renewChangeTicketRecord != null && renewChangeTicketRecord.getPreRelationId().equals(preRelationId)) {
|
|
|
try {
|
|
|
//分配首单续费更换车位后提成
|
|
|
- record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, null, businessRate.getRenewOrderRate());
|
|
|
+ record = saveBusinessTakeMoneyRecord(order, businessId, sharedId, null, businessRate.getRenewOrderRate(), distributeRate);
|
|
|
+ if (record == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
businessOrderDonRecordMapper.insert(record);
|
|
|
log.info("开始给商务人员:{}分配分销人:{}分销的用户:{}续费首单:{}更换后车位提成", businessId, sharedId, order.getUserId(), order.getId());
|
|
|
} catch (DuplicateKeyException e) {
|
|
|
@@ -126,7 +135,13 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
/**
|
|
|
* 保存商务分配提成记录
|
|
|
*/
|
|
|
- public UserDistributeBusinessOrderDonRecord saveBusinessTakeMoneyRecord(OrderDon order, Long businessId, Long sharedId, Integer firstOrderRate, Integer renewOrderRate) {
|
|
|
+ public UserDistributeBusinessOrderDonRecord saveBusinessTakeMoneyRecord(OrderDon order, Long businessId, Long sharedId, Integer firstOrderRate, Integer renewOrderRate, Integer distributeRate) {
|
|
|
+ UserBusinessDefaultRateConfig defaultGoodsRateConfig = defaultRateConfigMapper.selectOne(Wrappers.lambdaQuery(UserBusinessDefaultRateConfig.class)
|
|
|
+ .eq(UserBusinessDefaultRateConfig::getGoodsId, order.getGoodsId()).last("limit 1"));
|
|
|
+ if (defaultGoodsRateConfig == null) {
|
|
|
+ log.info("系统默认商务分销配置未配置,businessId:{},orderId:{}", businessId, order.getId());
|
|
|
+ return null;
|
|
|
+ }
|
|
|
UserDistributeBusinessOrderDonRecord record = new UserDistributeBusinessOrderDonRecord();
|
|
|
record.setBusinessId(businessId);
|
|
|
record.setUserId(order.getUserId());
|
|
|
@@ -135,15 +150,35 @@ public class UserBusinessFrontServiceImpl implements UserBusinessFrontService {
|
|
|
record.setOrderCreatedTime(order.getCreatedTime());
|
|
|
record.setOrderId(order.getId());
|
|
|
record.setPreRelationId(order.getRelationId());
|
|
|
+ //是否超过默认配置平台比例
|
|
|
+ Integer defaultGoodsMaxRate = defaultGoodsRateConfig.getMaxRate();
|
|
|
//首单提成比例
|
|
|
BigDecimal orderMoney = order.getMoney();
|
|
|
BigDecimal takeMoney = null;
|
|
|
if (firstOrderRate != null) {
|
|
|
+ if (distributeRate > defaultGoodsMaxRate) {
|
|
|
+ if (defaultGoodsRateConfig.getIsPlatPay()) {
|
|
|
+ log.info("首单,平台承担商务businessId:{}配置分销者sharedId:{}超过平台goodsId:{}最高分销比例:{}", businessId, sharedId, order.getGoodsId(), defaultGoodsMaxRate);
|
|
|
+ }else {
|
|
|
+ firstOrderRate -= distributeRate - defaultGoodsMaxRate;
|
|
|
+ log.info("商务businessId:{}配置分销者sharedId:{}比例超过默认比例,可获取首单提成比例为:{}", businessId, sharedId, firstOrderRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
BigDecimal firstRate = BigDecimal.valueOf(firstOrderRate).divide(BigDecimal.valueOf(100));
|
|
|
+ record.setRate(firstOrderRate);
|
|
|
takeMoney = orderMoney.multiply(firstRate);
|
|
|
}
|
|
|
if (renewOrderRate != null) {
|
|
|
+ if (distributeRate > defaultGoodsMaxRate) {
|
|
|
+ if (defaultGoodsRateConfig.getIsPlatPay()) {
|
|
|
+ log.info("首单续费,平台承担商务businessId:{}配置分销者sharedId:{}超过平台goodsId:{}最高分销比例:{}", businessId, sharedId, order.getGoodsId(), defaultGoodsMaxRate);
|
|
|
+ }else {
|
|
|
+ renewOrderRate -= distributeRate - defaultGoodsMaxRate;
|
|
|
+ log.info("商务businessId:{}配置分销者sharedId:{}比例超过默认比例,可获取首单续费提成比例为:{}", businessId, sharedId, firstOrderRate);
|
|
|
+ }
|
|
|
+ }
|
|
|
BigDecimal renewRate = BigDecimal.valueOf(renewOrderRate).divide(BigDecimal.valueOf(100));
|
|
|
+ record.setRate(renewOrderRate);
|
|
|
takeMoney = orderMoney.multiply(renewRate);
|
|
|
}
|
|
|
record.setTakeMoney(takeMoney);
|