|
|
@@ -37,6 +37,8 @@ import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubRewardsMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubWaitingMapper;
|
|
|
import com.cyksj.mapper.manage.sys.WorkOrderMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopDistributeWaitingSendPointsMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopMapper;
|
|
|
import com.cyksj.mapper.shop.YhShopUserDistributeBusinessOrderDonRecordMapper;
|
|
|
import com.cyksj.mapper.stock.GoodsSkuStockRelateMapper;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
@@ -203,6 +205,10 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
|
|
|
private final LumaUserMapper lumaUserMapper;
|
|
|
|
|
|
+ private final UserMirrorShopMapper userMirrorShopMapper;
|
|
|
+
|
|
|
+ private final UserMirrorShopDistributeWaitingSendPointsMapper userMirrorShopDistributeWaitingSendPointsMapper;
|
|
|
+
|
|
|
private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
|
|
|
|
|
|
@Override
|
|
|
@@ -1016,6 +1022,8 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
deductDsPoints(orderDon);
|
|
|
//店铺 分销提成金额扣除
|
|
|
yhShopDistributeService.deductDsMoney(orderDon);
|
|
|
+ //镜像店铺 分销提成金额扣除
|
|
|
+ deductUserMirrorShopMoney(orderDon);
|
|
|
}
|
|
|
|
|
|
if (orderDon.getIsFixedDistribute()) {
|
|
|
@@ -1428,4 +1436,61 @@ public class CmsOrderDonServiceImpl extends ServiceImpl<OrderDonMapper,OrderDon>
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 扣除用户镜像店铺提成
|
|
|
+ */
|
|
|
+ private void deductUserMirrorShopMoney(OrderDon orderDon) {
|
|
|
+ UserMirrorShopDistributeWaitingSendPoints distributeWaitingSendPoints = userMirrorShopDistributeWaitingSendPointsMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShopDistributeWaitingSendPoints.class)
|
|
|
+ .eq(UserMirrorShopDistributeWaitingSendPoints::getOrderId, orderDon.getId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (distributeWaitingSendPoints != null) {
|
|
|
+ BigDecimal money = orderDon.getMoney();
|
|
|
+ BigDecimal refundMoney = orderDon.getRefundMoney();
|
|
|
+ //已发送 发送中 部分 全额退款
|
|
|
+ UserMirrorShopDistributeWaitingSendPoints.Status sendStatus = distributeWaitingSendPoints.getSendStatus();
|
|
|
+ BigDecimal take_money = distributeWaitingSendPoints.getMoney();
|
|
|
+ if (sendStatus == UserMirrorShopDistributeWaitingSendPoints.Status.waiting) {
|
|
|
+ if (refundMoney.compareTo(money) == 0) {
|
|
|
+ //待发送状态 全额退款
|
|
|
+ distributeWaitingSendPoints.setSendStatus(UserMirrorShopDistributeWaitingSendPoints.Status.close);
|
|
|
+ distributeWaitingSendPoints.setRefundMoney(take_money);
|
|
|
+ distributeWaitingSendPoints.setMoney(BigDecimal.ZERO);
|
|
|
+ userMirrorShopDistributeWaitingSendPointsMapper.updateById(distributeWaitingSendPoints);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Integer rate = distributeWaitingSendPoints.getRate();
|
|
|
+ if (rate > 0) {
|
|
|
+ BigDecimal needDeductMoney = refundMoney.multiply(BigDecimal.valueOf(rate).divide(BigDecimal.valueOf(100)));
|
|
|
+ distributeWaitingSendPoints.setRefundMoney(needDeductMoney);
|
|
|
+ //剩余积分
|
|
|
+ distributeWaitingSendPoints.setMoney(take_money.subtract(needDeductMoney));
|
|
|
+ userMirrorShopDistributeWaitingSendPointsMapper.updateById(distributeWaitingSendPoints);
|
|
|
+ }
|
|
|
+ } else if (sendStatus == UserMirrorShopDistributeWaitingSendPoints.Status.success) {
|
|
|
+ //已发送的提成 部分退款 全额退款 需要扣除用户积分
|
|
|
+ //扣除固定推广者积分
|
|
|
+ if (refundMoney.compareTo(money) == 0) {
|
|
|
+ //扣除店铺主 已有的提成金额
|
|
|
+ userBenefitsService.deductUserMirrorShopTakeMoney(orderDon.getId(), distributeWaitingSendPoints.getShopUserId(), take_money);
|
|
|
+ distributeWaitingSendPoints.setRefundMoney(take_money);
|
|
|
+ distributeWaitingSendPoints.setMoney(BigDecimal.ZERO);
|
|
|
+ distributeWaitingSendPoints.setSendStatus(UserMirrorShopDistributeWaitingSendPoints.Status.close);
|
|
|
+ userMirrorShopDistributeWaitingSendPointsMapper.updateById(distributeWaitingSendPoints);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Integer rate = distributeWaitingSendPoints.getRate();
|
|
|
+ if (rate > 0) {
|
|
|
+ BigDecimal needDeductMoney = refundMoney.multiply(BigDecimal.valueOf(rate).divide(BigDecimal.valueOf(100)));
|
|
|
+ //扣除店铺主 已有的提成金额
|
|
|
+ userBenefitsService.deductUserMirrorShopTakeMoney(orderDon.getId(), distributeWaitingSendPoints.getShopUserId(), needDeductMoney);
|
|
|
+ //部分退款
|
|
|
+ distributeWaitingSendPoints.setRefundMoney(needDeductMoney);
|
|
|
+ distributeWaitingSendPoints.setMoney(take_money.subtract(needDeductMoney));
|
|
|
+ userMirrorShopDistributeWaitingSendPointsMapper.updateById(distributeWaitingSendPoints);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|