From 7e3811d8546c9b4107f88325bdfd1b8c81284e6c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 06 十二月 2024 11:31:04 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java | 50 +++++++++++++++++------- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java | 6 ++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java | 6 +++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 15 +++++++ ruoyi-modules/ruoyi-job/pom.xml | 6 +++ ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java | 4 ++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 11 +++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java | 5 ++ ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java | 3 + ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java | 4 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java | 3 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java | 2 + 12 files changed, 98 insertions(+), 17 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java index eaae6be..67de05c 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppUserClientFallbackFactory.java @@ -52,6 +52,12 @@ log.error("获取用户祖籍列表失败:{}", cause.getMessage()); throw new RuntimeException("获取用户祖籍列表失败"); } + + @Override + public R<AppUser> getSuperiorLeader(Long id) { + return R.fail("获取直帮上级用户失败"); + } + @Override public R<Long> getVipCount(Long userId, Integer vipId) { log.error("获取直推会员数失败:{}", cause.getMessage()); diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java index 772f740..dea7127 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java @@ -46,6 +46,9 @@ @GetMapping("/appletLogin/getUserAncestorList") R<List<AppUser>> getUserAncestorList(@RequestParam("id") Long id); + @GetMapping("/appletLogin/getSuperiorLeader") + R<AppUser> getSuperiorLeader(@RequestParam("id") Long id); + @PostMapping("/app-user/getVipCount") diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java index 6379aa0..fff54b2 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java @@ -77,7 +77,11 @@ @ApiModelProperty(value = "获取返佣积分上级类型(1=直推上级,2=直帮上级)") @TableField("superior_type") private Integer superiorType; - + + @ApiModelProperty(value = "获取分佣金额上级类型(1=直推上级,2=直帮上级)") + @TableField("superior_price_type") + private Integer superiorPriceType; + @ApiModelProperty(value = "核销门店可获得服务费") @TableField("servuce_shop_charges") private BigDecimal servuceShopCharges; diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java index 99e44cb..d6b5789 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java @@ -72,6 +72,10 @@ @TableField("superior_type") private Integer superiorType; + @ApiModelProperty(value = "获取分佣金额上级类型(1=直推上级,2=直帮上级)") + @TableField("superior_price_type") + private Integer superiorPriceType; + @ApiModelProperty(value = "核销门店可获得服务费") @TableField("servuce_shop_charges") private BigDecimal servuceShopCharges; diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/ruoyi-job/pom.xml index 14334bf..107092d 100644 --- a/ruoyi-modules/ruoyi-job/pom.xml +++ b/ruoyi-modules/ruoyi-job/pom.xml @@ -16,6 +16,12 @@ </description> <dependencies> + + <dependency> + <groupId>com.ruoyi</groupId> + <artifactId>ruoyi-modules-order</artifactId> + <version>3.6.2</version> + </dependency> <!-- SpringCloud Alibaba Nacos --> <dependency> diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java index f6915f7..87ee464 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java @@ -1,5 +1,6 @@ package com.ruoyi.job.task; +import com.ruoyi.order.service.CommissionService; import lombok.extern.log4j.Log4j2; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; @@ -12,6 +13,8 @@ public class AfterSalesTask { @Resource private RedisTemplate<String, String> redisTemplate; + @Resource + private CommissionService commissionService; /** * 计算佣金(设置每分钟执行一次) @@ -22,6 +25,7 @@ // 从延迟队列中获取需要处理的订单 Set<String> orderIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:commission", 0, now); if (orderIds != null && !orderIds.isEmpty()) { + commissionService.calculationCommission(orderIds); // 处理完后移除已处理的订单 redisTemplate.opsForZSet().removeRangeByScore("delay_queue:commission", 0, now); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index 5a7f985..df6bffd 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -294,6 +294,17 @@ return R.ok(list); } + /** + * 获取用户的直帮上级用户 + */ + @ResponseBody + @PostMapping("/getSuperiorLeader") + @ApiOperation(value = "获取用户的直帮上级用户") + public R<AppUser> getSuperiorLeader(@RequestParam("id") Long id) { + AppUser superiorLeader = appUserService.getSuperiorLeader(id); + return R.ok(superiorLeader); + } + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java index a313542..a51d268 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/AppUserService.java @@ -62,4 +62,9 @@ * 获取用户的祖籍列表 */ List<AppUser> getUserAncestorList(Long id,List<AppUser> list); + + /** + * 获取指定用户的直帮上级用户(消费用户绑定的上级,最近一个用户会员类型为【创业者】的用户) + */ + AppUser getSuperiorLeader(Long id); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java index 89f8b03..28554a7 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java @@ -380,4 +380,19 @@ return list; } + @Override + public AppUser getSuperiorLeader(Long id) { + AppUser appUser = getById(id); + Long inviteUserId = appUser.getInviteUserId(); + AppUser inviteUser = getById(inviteUserId); + if (inviteUser == null){ + return null; + } + if (inviteUser.getVipId() > 3) { + return inviteUser; + }else { + getSuperiorLeader(inviteUserId); + } + return null; + } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java index da99507..07a13a0 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java @@ -2,11 +2,12 @@ import java.time.LocalDateTime; import java.util.List; +import java.util.Set; public interface CommissionService { // 计算佣金 - void calculationCommission(List<Long> orderIds); + void calculationCommission(Set<String> orderIds); void addToCommissionDelayQueue(Long orderId, LocalDateTime afterSalesDeadline); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java index 2efa1cb..a2d00ce 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java @@ -20,6 +20,7 @@ import java.time.ZoneId; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; @Service @@ -49,7 +50,7 @@ } @Override - public void calculationCommission(List<Long> orderIds) { + public void calculationCommission(Set<String> orderIds) { List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() .in(OrderGood::getOrderId, orderIds)); @@ -77,32 +78,51 @@ throw new RuntimeException("获取用户信息失败"); } Long inviteUserId = appUser.getInviteUserId(); + // 直推上级用户 AppUser inviteUser = appUserClient.getAppUserById(inviteUserId); + + // 获取直帮上级用户 + R<AppUser> superiorLeaderR = appUserClient.getSuperiorLeader(appUserId); + if (!R.isSuccess(superiorLeaderR)) { + throw new RuntimeException("获取直帮上级信息失败"); + } + AppUser superiorLeader = superiorLeaderR.getData(); for (OrderGood og : v) {// 累计分销金额 - // 上级分销金额 - if (inviteUser != null){ + // 直推上级分佣金额 + Integer superiorType = og.getSuperiorType(); + if (superiorType == 1 && inviteUser != null){ + // 分佣金额 BigDecimal superiorSubcommission = og.getSuperiorSubcommission(); BigDecimal totalDistributionAmount = inviteUser.getTotalDistributionAmount(); totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission); - // - Integer superiorType = og.getSuperiorType(); + inviteUser.setTotalDistributionAmount(totalDistributionAmount); + + // 分佣积分 Integer sharePoint = inviteUser.getSharePoint(); - if (superiorType == 1) { + Integer superiorRebatePoints = og.getSuperiorRebatePoints(); + sharePoint = sharePoint + superiorRebatePoints; + inviteUser.setSharePoint(sharePoint); + + appUserClient.editAppUserById(inviteUser); + }else + // 直帮上级分佣金额 + if (superiorType == 2 && superiorLeader != null){ + // 分佣金额 + BigDecimal superiorSubcommission = og.getSuperiorSubcommission(); + BigDecimal totalDistributionAmount = superiorLeader.getTotalDistributionAmount(); + totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission); + superiorLeader.setTotalDistributionAmount(totalDistributionAmount); + + // 分佣积分 + Integer sharePoint = superiorLeader.getSharePoint(); Integer superiorRebatePoints = og.getSuperiorRebatePoints(); sharePoint = sharePoint + superiorRebatePoints; - } else if (superiorType == 2) { + superiorLeader.setSharePoint(sharePoint); - } else { - continue; + appUserClient.editAppUserById(superiorLeader); } - inviteUser.setTotalDistributionAmount(totalDistributionAmount); - inviteUser.setSharePoint(sharePoint); - } - - // 门店分销金额 - og.getBoundShopCharges(); } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java index 3253aaf..ef90133 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java @@ -101,6 +101,8 @@ Goods goods = this.getById(goodsId); GoodsVO goodsVO = new GoodsVO(); BeanUtils.copyBeanProp(goodsVO, goods); + goodsVO.setGoodsId(goods.getId()); + goodsVO.setGoodsName(goods.getName()); goodsVO.setSellingPrice(sellingPrice); goodsVO.setIntegral(integral); return goodsVO; -- Gitblit v1.7.1