|
|
@@ -47,6 +47,7 @@ import com.cyksj.mapper.manage.coupon.CouponMapper;
|
|
|
import com.cyksj.mapper.manage.coupon.CouponSkuMapper;
|
|
|
import com.cyksj.mapper.manage.coupon.CouponUserMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.*;
|
|
|
+import com.cyksj.mapper.manage.distribute.equipment.UserDistributeEquipmentMapper;
|
|
|
import com.cyksj.mapper.market.task.TaskTypeMapper;
|
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
|
|
|
@@ -164,6 +165,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final UserDistributeMapper userDistributeMapper;
|
|
|
|
|
|
+ private final UserDistributeEquipmentMapper userDistributeEquipmentMapper;
|
|
|
+
|
|
|
private final UserPlatDistributeRateMapper userPlatDistributeRateMapper;
|
|
|
|
|
|
private final BusinessDistributeDefaultSkuRateConfigMapper businessDistributeDefaultSkuRateConfigMapper;
|
|
|
@@ -198,8 +201,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final GroupRelationFrontService groupRelationFrontService;
|
|
|
|
|
|
- private final TransferAccountsRecordMapper transferAccountsRecordMapper;
|
|
|
-
|
|
|
private final GroupRelationClearService groupRelationClearService;
|
|
|
|
|
|
private final UserRenewChangeTicketRecordMapper userRenewChangeTicketRecordMapper;
|
|
|
@@ -1470,6 +1471,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
Long businessId = null;
|
|
|
//普通分销
|
|
|
GoodsDon goodsDon = goodsDonMapper.selectById(order.getGoodsId());
|
|
|
+ GoodsDonSku goodsDonSku = null;
|
|
|
if (goodsDon == null || !goodsDon.getIsDistribute()) {
|
|
|
log.info("分销订单orderId:{}对应平台goodsId:{}不存在或已不参与分成比例", order.getId(), order.getGoodsId());
|
|
|
return;
|
|
|
@@ -1497,7 +1499,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
rate = goodsDon.getRate();
|
|
|
//实物分销比例
|
|
|
if (goodsDon.getType() == 2) {
|
|
|
- GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
|
|
|
+ goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
|
|
|
if (goodsDonSku != null) {
|
|
|
//不包含套餐权益
|
|
|
if (!goodsDonSku.getIsBenefits()) {
|
|
|
@@ -1551,7 +1553,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
rate = userPlatDistributeRate.getRate();
|
|
|
secondRate = userPlatDistributeRate.getSecondRate();
|
|
|
if (goodsDon.getType() == 2) {
|
|
|
- GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
|
|
|
+ goodsDonSku = goodsDonSkuMapper.selectById(order.getSkuId());
|
|
|
if (goodsDonSku != null) {
|
|
|
//不包含套餐权益
|
|
|
if (!goodsDonSku.getIsBenefits()) {
|
|
|
@@ -1568,8 +1570,20 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
points = returnPoints;
|
|
|
}
|
|
|
if (userDistribute != null) {
|
|
|
- //处理渠道规则分销
|
|
|
- points = handlerDistributeRule(order, distributeWaitingSendPoints, userDistribute.getId(), distributePointsExchangeMoney, points);
|
|
|
+ UserDistributeEquipment userDistributeEquipment = null;
|
|
|
+ if (goodsDon.getType() == 2) {
|
|
|
+ userDistributeEquipment = userDistributeEquipmentMapper.selectOne(Wrappers.lambdaQuery(UserDistributeEquipment.class)
|
|
|
+ .eq(UserDistributeEquipment::getUserId, userDistribute.getUserId()).last("limit 1"));
|
|
|
+ }
|
|
|
+ //是否特殊渠道设备分销用户
|
|
|
+ if (userDistributeEquipment != null) {
|
|
|
+ BigDecimal takeMoney = handlerEquipmentDistribute(order, goodsDonSku, userDistributeEquipment);
|
|
|
+ points = takeMoney.multiply(BigDecimal.valueOf(distributePointsExchangeMoney.getPoints())).divide(distributePointsExchangeMoney.getMoney(), 2, RoundingMode.HALF_DOWN);
|
|
|
+ distributeWaitingSendPoints.setIsSpecialEp(true);
|
|
|
+ } else {
|
|
|
+ //处理渠道规则分销
|
|
|
+ points = handlerDistributeRule(order, distributeWaitingSendPoints, userDistribute.getId(), distributePointsExchangeMoney, points);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
distributeWaitingSendPoints.setPoints(points);
|
|
|
@@ -2612,6 +2626,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setIsDistribute(true);
|
|
|
UserDistribute userDistribute = userDistributeMapper.selectOne(Wrappers.lambdaQuery(UserDistribute.class).eq(UserDistribute::getUserId, userDistributeShared.getSharedId()));
|
|
|
if (userDistribute != null) {
|
|
|
+ orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
|
|
|
+ //是否特殊渠道设备分销用户
|
|
|
+ Integer selectCount = userDistributeEquipmentMapper.selectCount(Wrappers.lambdaQuery(UserDistributeEquipment.class)
|
|
|
+ .eq(UserDistributeEquipment::getUserId, userDistribute.getUserId()));
|
|
|
+ if (selectCount > 0) {
|
|
|
+ orderDon.setIsFixedDistribute(true);
|
|
|
+ return;
|
|
|
+ }
|
|
|
//直接去除
|
|
|
if (!userDistributeShared.getIsBind()) {
|
|
|
UserDistributeSharedRelateUnbind userDistributeSharedRelateUnbind = userDistributeSharedRelateUnbindMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSharedRelateUnbind.class)
|
|
|
@@ -2660,7 +2682,6 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setIsFixedDistribute(false);
|
|
|
}
|
|
|
}
|
|
|
- orderDon.setCpsPopularizeId(userDistributeShared.getDsPopularizeId());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2832,4 +2853,55 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 特殊设备分销
|
|
|
+ */
|
|
|
+ private BigDecimal handlerEquipmentDistribute(OrderDon orderDon, GoodsDonSku goodsDonSku, UserDistributeEquipment userDistributeEquipment) {
|
|
|
+ BigDecimal takeMoney = BigDecimal.ZERO;
|
|
|
+ try {
|
|
|
+ //设备提成 含路由器
|
|
|
+ if (goodsDonSku.getSpecJson().contains("路由")) {
|
|
|
+ takeMoney = takeMoney.add(userDistributeEquipment.getEp());
|
|
|
+ }
|
|
|
+ BigDecimal couponMoney = orderDon.getCouponMoney();
|
|
|
+ BigDecimal balance = orderDon.getBalance();
|
|
|
+ List<Integer> specIdsList = Jsons.parseList(goodsDonSku.getSpecIds(), Integer.class);
|
|
|
+ //包含Apple TV
|
|
|
+ if (goodsDonSku.getSpecJson().contains("TV")) {
|
|
|
+ takeMoney = takeMoney.add(userDistributeEquipment.getApTv());
|
|
|
+ }
|
|
|
+ //包含套餐
|
|
|
+ if (userDistributeEquipment.getCombo() != null && userDistributeEquipment.getCombo().compareTo(BigDecimal.ZERO) > 0 && goodsDonSku.getSpecJson().contains("套餐")) {
|
|
|
+ GoodsDonSpec goodsDonSpec = goodsDonSpecMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSpec.class)
|
|
|
+ .eq(GoodsDonSpec::getGoodsId, orderDon.getGoodsId()).last("limit 1"));
|
|
|
+ List<ReqGoodsSkuSpec> specs = Jsons.parseList(goodsDonSpec.getSpecsJson(), ReqGoodsSkuSpec.class);
|
|
|
+ for (ReqGoodsSkuSpec e : specs) {
|
|
|
+ if (e.getKey().contains("套餐")) {
|
|
|
+ List<ReqGoodsSkuSpec.Node> values = e.getValues();
|
|
|
+ for (ReqGoodsSkuSpec.Node node : values) {
|
|
|
+ if (specIdsList.contains(node.getId())) {
|
|
|
+ BigDecimal price = node.getPrice();
|
|
|
+ takeMoney = takeMoney.add(price.multiply(userDistributeEquipment.getCombo()).divide(BigDecimal.valueOf(100)));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //使用优惠分摊一半
|
|
|
+ if (couponMoney != null) {
|
|
|
+ takeMoney = takeMoney.subtract(couponMoney.divide(BigDecimal.valueOf(2), 0, RoundingMode.DOWN));
|
|
|
+ }
|
|
|
+ if (balance != null) {
|
|
|
+ takeMoney = takeMoney.subtract(balance.divide(BigDecimal.valueOf(2), 0, RoundingMode.DOWN));
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ //防止超过订单金额
|
|
|
+ if (takeMoney.compareTo(orderDon.getMoney()) > 0) {
|
|
|
+ takeMoney = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ return takeMoney;
|
|
|
+ }
|
|
|
}
|