|
|
@@ -48,6 +48,9 @@ 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.manage.distribute.sub.UserDistributeSubMapper;
|
|
|
+import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubRewardsMapper;
|
|
|
+import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubWaitingMapper;
|
|
|
import com.cyksj.mapper.market.task.TaskTypeMapper;
|
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
|
|
|
@@ -269,6 +272,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final UserCertRecordMapper userCertRecordMapper;
|
|
|
|
|
|
+ private final UserDistributeSubMapper userDistributeSubMapper;
|
|
|
+
|
|
|
+ private final UserDistributeSubRewardsMapper userDistributeSubRewardsMapper;
|
|
|
+
|
|
|
+ private final UserDistributeSubWaitingMapper userDistributeSubWaitingMapper;
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -2372,6 +2381,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //下级渠道目标额达标 提成金额发放
|
|
|
+ sendSubDistributeRewards(orderDon);
|
|
|
} catch (Exception e) {
|
|
|
log.error("回调修改订单信息错误,orderId:{},error:{}", orderDon.getId(), StringUtil.getErrorText(e));
|
|
|
}
|
|
|
@@ -2904,4 +2915,54 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
return takeMoney;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 下级渠道奖励
|
|
|
+ */
|
|
|
+ public void sendSubDistributeRewards(OrderDon orderDon) {
|
|
|
+ if (orderDon.getIsDistribute()) {
|
|
|
+ UserDistributeSub userDistributeSub = userDistributeSubMapper.getSubRelate(orderDon.getUserId());
|
|
|
+ if (userDistributeSub != null) {
|
|
|
+ //分销用户id
|
|
|
+ Long userId = userDistributeSub.getUserId();
|
|
|
+ //下级渠道用户id
|
|
|
+ Long subUserId = userDistributeSub.getSubUserId();
|
|
|
+
|
|
|
+ UserDistributeSubWaiting userDistributeSubWaiting = userDistributeSubWaitingMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
|
|
|
+ .eq(UserDistributeSubWaiting::getUserId, userId)
|
|
|
+ .orderByDesc(UserDistributeSubWaiting::getLevel).last("limit 1"));
|
|
|
+ //小于最大奖励级别
|
|
|
+ if (userDistributeSubWaiting == null || userDistributeSubWaiting.getLevel() < UserDistributeSubRewards.RewardLevel.values().length) {
|
|
|
+ List<UserDistributeSubRewards> userDistributeSubRewards = userDistributeSubRewardsMapper.selectList(Wrappers.lambdaQuery(UserDistributeSubRewards.class)
|
|
|
+ .gt(userDistributeSubWaiting != null, UserDistributeSubRewards::getLevel, userDistributeSubWaiting.getLevel())
|
|
|
+ .orderByAsc(UserDistributeSubRewards::getLevel));
|
|
|
+ for (UserDistributeSubRewards userDistributeSubReward : userDistributeSubRewards) {
|
|
|
+ log.info("当前级别:{}对应的目标金额是{}", userDistributeSubReward.getLevel(), userDistributeSubReward.getTargetAmount().divide(BigDecimal.valueOf(100)));
|
|
|
+ Integer rewardLevel = userDistributeSubReward.getLevel();
|
|
|
+ Integer months = userDistributeSubReward.getMonths();
|
|
|
+ BigDecimal targetAmount = userDistributeSubReward.getTargetAmount();
|
|
|
+ //是否达到目标额
|
|
|
+ BigDecimal subOrderMoney = orderDonMapper.selectSubChannelOrderMoney(subUserId, DateUtil.offsetMonth(userDistributeSub.getCreatedTime(), months));
|
|
|
+ if (subOrderMoney != null && subOrderMoney.compareTo(targetAmount) >= 0) {
|
|
|
+ try {
|
|
|
+ //达标 发放提成
|
|
|
+ UserDistributeSubWaiting newSubWaiting = new UserDistributeSubWaiting();
|
|
|
+ newSubWaiting.setMoney(userDistributeSubReward.getMoney());
|
|
|
+ newSubWaiting.setUserId(userId);
|
|
|
+ newSubWaiting.setSubUserId(subUserId);
|
|
|
+ newSubWaiting.setSendStatus(UserDistributeSubWaiting.Status.waiting);
|
|
|
+ newSubWaiting.setSendTime(DateUtil.offsetDay(DateTime.now(), 3));
|
|
|
+ newSubWaiting.setMonths(months);
|
|
|
+ newSubWaiting.setLevel(rewardLevel);
|
|
|
+ userDistributeSubWaitingMapper.insert(newSubWaiting);
|
|
|
+ log.info("分销用户:{}下级渠道:{}达到:{}销售额,发送奖励成功", userId, subUserId, UserDistributeSubRewards.RewardLevel.values()[rewardLevel].getMsg());
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|