From 8c83fad498da51773d4aa6a4aa6af13f8e39e27d Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 26 十二月 2024 17:04:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java | 7 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java | 551 +++++++++++++++++++++++++++++++++------ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java | 10 ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java | 24 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/AppUserServiceImpl.java | 3 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java | 20 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java | 14 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java | 8 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/enums/OrderStatus.java | 6 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java | 24 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/CommissionService.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java | 5 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java | 11 /dev/null | 47 --- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/OrderGood.java | 4 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java | 26 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java | 13 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java | 23 + ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java | 8 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java | 5 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java | 8 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java | 6 23 files changed, 657 insertions(+), 174 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java index 1e4f31e..4b7cb2e 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java @@ -98,12 +98,9 @@ @ApiModelProperty(value = "推广人姓名") @TableField(exist = false) private String inviteUserName; - - - @ApiModelProperty(value = "绑定门店id") @TableField("shop_id") - private Long shopId; + private Integer shopId; @ApiModelProperty(value = "绑定门店名称") @TableField(exist = false) private String shopName; diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java index efeec68..c5d9aca 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/feignClient/RemoteOrderGoodsClient.java @@ -55,11 +55,7 @@ @PostMapping("/order/subscribe") public R<Void> subscribe(@RequestParam(value = "id" , required = false) Long id ,@RequestParam(value = "technicianId", required = false) Integer technicianId); - /** - * 预约技师 - */ - @PostMapping("/commission/calculationCommission") - public R<Void> calculationCommission(@RequestBody Set<String> orderIds); + @GetMapping("/shopping-cart/getGoodsPrice") public R<Price> getGoodsPrice(@RequestParam("appUserId") Long appUserId, @RequestParam("goodsId") Integer goodsId, @RequestParam("shopId") Integer shopId); 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 fff54b2..0c87f9c 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 @@ -76,11 +76,11 @@ @ApiModelProperty(value = "获取返佣积分上级类型(1=直推上级,2=直帮上级)") @TableField("superior_type") - private Integer superiorType; + private String superiorType; @ApiModelProperty(value = "获取分佣金额上级类型(1=直推上级,2=直帮上级)") @TableField("superior_price_type") - private Integer superiorPriceType; + private String superiorPriceType; @ApiModelProperty(value = "核销门店可获得服务费") @TableField("servuce_shop_charges") diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java index 9b4068a..a4d8e97 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Shop.java @@ -113,6 +113,10 @@ @ApiModelProperty(value = "门店已用积分") @TableField("use_point") private Integer usePoint; + + @ApiModelProperty(value = "门店剩余积分") + @TableField("lave_point") + private Integer lavePoint; @ApiModelProperty(value = "门店分佣总金额") @TableField("giveaway_all_money") @@ -137,6 +141,10 @@ @ApiModelProperty(value = "已提现金额") @TableField("withdraw_money") private BigDecimal withdrawMoney; + + @ApiModelProperty(value = "余额") + @TableField("balance") + private BigDecimal balance; @ApiModelProperty(value = "门店订单总数") @TableField("order_number") diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java index 8082908..2939f35 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopPoint.java @@ -40,9 +40,9 @@ @TableField("shop_id") private Integer shopId; - @ApiModelProperty(value = "变动类型(1=门店业绩,2=门店返佣,3=下级门店返佣)") + @ApiModelProperty(value = "变动类型(1=门店业绩,2=门店返佣,3=下级门店返佣,4=门店服务返佣)") @TableField("type") - @Excel(name = "变动类型", readConverterExp = "1=门店业绩,2=门店返佣,3=下级门店返佣") + @Excel(name = "变动类型", readConverterExp = "1=门店业绩,2=门店返佣,3=下级门店返佣,4=门店服务返佣") private Integer type; @ApiModelProperty(value = "历史余额") @@ -53,6 +53,10 @@ @TableField("variable_point") @Excel(name = "变动金额") private Integer variablePoint; + + @ApiModelProperty(value = "变动后余额") + @TableField("balance") + private Integer balance; @ApiModelProperty(value = "变动时间") @TableField("create_time") diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java new file mode 100644 index 0000000..bff6cac --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java @@ -0,0 +1,24 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.ShopBalanceStatement; +import com.ruoyi.other.api.feignClient.SeckillActivityInfoClient; +import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author zhibing.pu + * @Date 2024/12/26 15:41 + */ +public class ShopBalanceStatementClientFallbackFactory implements FallbackFactory<ShopBalanceStatementClient> { + @Override + public ShopBalanceStatementClient create(Throwable cause) { + return new ShopBalanceStatementClient(){ + + @Override + public void saveShopBalanceStatement(ShopBalanceStatement shopBalanceStatement) { + R.fail("保存门店余额流水失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java index 1c2144f..45446cc 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopClientFallbackFactory.java @@ -44,6 +44,11 @@ public R<List<ShopBalanceStatement>> getShopBalanceStatementList(ShopBalanceStatement shopBalanceStatement) { return R.fail(); } + + @Override + public void updateShop(Shop shop) { + R.fail("编辑门店失败:" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java new file mode 100644 index 0000000..76f91a9 --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopPointClientFallbackFactory.java @@ -0,0 +1,23 @@ +package com.ruoyi.other.api.factory; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.other.api.domain.ShopPoint; +import com.ruoyi.other.api.feignClient.ShopPointClient; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * @author zhibing.pu + * @Date 2024/12/26 15:58 + */ +public class ShopPointClientFallbackFactory implements FallbackFactory<ShopPointClient> { + @Override + public ShopPointClient create(Throwable cause) { + return new ShopPointClient(){ + + @Override + public void saveShopPoint(ShopPoint shopPoint) { + R.fail("保存门店积分流水失败:" + cause.getMessage()); + } + }; + } +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java new file mode 100644 index 0000000..351fcba --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java @@ -0,0 +1,24 @@ +package com.ruoyi.other.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.other.api.domain.ShopBalanceStatement; +import com.ruoyi.other.api.factory.ShopBalanceStatementClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @author zhibing.pu + * @Date 2024/12/26 15:40 + */ +@FeignClient(contextId = "ShopBalanceStatementClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = ShopBalanceStatementClientFallbackFactory.class) +public interface ShopBalanceStatementClient { + + + /** + * 保存门店余额流水 + * @param shopBalanceStatement + */ + @PostMapping("/shop-balance-statement/saveShopBalanceStatement") + void saveShopBalanceStatement(@RequestBody ShopBalanceStatement shopBalanceStatement); +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java index 3019063..62983d7 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopClient.java @@ -50,4 +50,11 @@ @PostMapping("/shop-balance-statement/getList") R<List<ShopBalanceStatement>> getShopBalanceStatementList(@RequestBody ShopBalanceStatement shopBalanceStatement); + + /** + * 编辑门店 + * @param shop + */ + @PostMapping("/shop-balance-statement/updateShop") + void updateShop(Shop shop); } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java new file mode 100644 index 0000000..5b8488c --- /dev/null +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopPointClient.java @@ -0,0 +1,26 @@ +package com.ruoyi.other.api.feignClient; + +import com.ruoyi.common.core.constant.ServiceNameConstants; +import com.ruoyi.other.api.domain.ShopPoint; +import com.ruoyi.other.api.factory.ShopPointClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * @author zhibing.pu + * @Date 2024/12/26 15:58 + */ +@FeignClient(contextId = "ShopPointClient", value = ServiceNameConstants.OTHER_SERVICE, fallbackFactory = ShopPointClientFallbackFactory.class) +public interface ShopPointClient { + + + + + /** + * 保存门店积分流水 + * @param shopPoint + */ + @PostMapping("/shop-point/saveShopPoint") + void saveShopPoint(@RequestBody ShopPoint shopPoint); +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 580196b..35f71c4 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/ruoyi-api/ruoyi-api-other/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -16,4 +16,6 @@ com.ruoyi.other.api.factory.PointSettingClientFallbackFactory com.ruoyi.other.api.factory.VipGoodClientFallbackFactory com.ruoyi.other.api.factory.VipSettingClientFallbackFactory -com.ruoyi.other.api.factory.RegionClientFallbackFactory \ No newline at end of file +com.ruoyi.other.api.factory.RegionClientFallbackFactory +com.ruoyi.other.api.factory.ShopBalanceStatementClientFallbackFactory +com.ruoyi.other.api.factory.ShopPointClientFallbackFactory \ No newline at end of file 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 deleted file mode 100644 index d85db04..0000000 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/task/AfterSalesTask.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.ruoyi.job.task; - -import com.ruoyi.common.core.domain.R; -import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; -import lombok.extern.log4j.Log4j2; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; - -import javax.annotation.Resource; -import java.util.Set; - -@Component("afterSalesTask") -@Log4j2 -public class AfterSalesTask { - @Resource - private RedisTemplate<String, String> redisTemplate; - @Resource - private RemoteOrderGoodsClient remoteOrderGoodsClient; - - /** - * 计算佣金(设置每分钟执行一次) - */ - public void afterSales() - { - long now = System.currentTimeMillis() / 1000; // 获取当前时间戳(秒) - // 从延迟队列中获取需要处理的订单 - Set<String> orderIds = redisTemplate.opsForZSet().rangeByScore("delay_queue:commission", 0, now); - if (orderIds != null && !orderIds.isEmpty()) { - R<Void> r = remoteOrderGoodsClient.calculationCommission(orderIds); - if (R.isError(r)) { - log.error("计算佣金失败,订单号:{},错误信息:{}", orderIds, r.getMsg()); - } - // 处理完后移除已处理的订单 - redisTemplate.opsForZSet().removeRangeByScore("delay_queue:commission", 0, now); - } - } - - /** - * 佣金补偿(每天执行一次) - * redis未配置持久化,为防止数据丢失,每天执行一次,将到期未处理的订单重新放入延迟队列中 - */ - public void afterSalesCompensation() - { - // 获取未处理的订单 - - } -} 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 0e80e78..95e4182 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 @@ -607,9 +607,8 @@ if (inviteUser.getVipId() > 3) { return inviteUser; }else { - getSuperiorLeader(inviteUserId); + return getSuperiorLeader(inviteUserId); } - return null; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java index 58a8425..4272bd3 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/CommissionController.java @@ -12,10 +12,6 @@ public class CommissionController { @Resource private CommissionService commissionService; - - @PostMapping("/calculationCommission") - public R<Void> calculationCommission(@RequestBody Set<String> orderIds){ - commissionService.calculationCommission(orderIds); - return R.ok(); - } + + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java index bffa467..25fc793 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java @@ -147,13 +147,6 @@ }) @GetMapping("/confirm/{orderId}") public R<Void> confirm(@PathVariable("orderId") Long orderId){ - boolean update = orderService.update(new LambdaUpdateWrapper<Order>() - .eq(Order::getId, orderId) - .eq(Order::getOrderStatus, OrderStatus.PENDING_RECEIPT.getCode()) - .set(Order::getOrderStatus, OrderStatus.COMPLETED.getCode())); - if(!update){ - return R.fail("订单状态异常"); - } R<BaseSetting> baseSettingR = baseSettingClient.getBaseSetting(5); if (R.isError(baseSettingR)) { return R.fail("售后设置获取失败"); @@ -165,7 +158,11 @@ String content = baseSetting.getContent(); JSONObject jsonObject = JSONObject.parseObject(content); Long days = jsonObject.getLong("days"); - commissionService.addToCommissionDelayQueue(orderId, LocalDateTime.now().plusDays(days)); + Order order = orderService.getById(orderId); + order.setAfterSaleTime(LocalDateTime.now().plusDays(days)); + order.setIsCommission(0); + order.setOrderStatus(OrderStatus.COMPLETED.getCode()); + orderService.updateById(order); return R.ok(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/enums/OrderStatus.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/enums/OrderStatus.java index c8cfe81..ce22a40 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/enums/OrderStatus.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/enums/OrderStatus.java @@ -4,13 +4,17 @@ @Getter public enum OrderStatus { + /** + * 1待发货2待收货3待使用4已完成5已取消6已退款7售后中8已评价 + */ PENDING_SHIPMENT(1, "待发货"), PENDING_RECEIPT(2, "待收货"), PENDING_USE(3, "待使用"), COMPLETED(4, "已完成"), CANCELLED(5, "已取消"), REFUNDED(6, "已退款"), - AFTER_SALE(7, "售后中"); + AFTER_SALE(7, "售后中"), + RATED(8, "已评价"); private final int code; private final String description; 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 07a13a0..b1ae674 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 @@ -7,7 +7,7 @@ public interface CommissionService { // 计算佣金 - void calculationCommission(Set<String> orderIds); + void calculationCommission(); - 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 b31cce9..6783958 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 @@ -2,15 +2,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient; +import com.ruoyi.account.api.feignClient.UserPointClient; import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.api.model.BalanceChangeRecord; +import com.ruoyi.account.api.model.UserPoint; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.CommissionService; import com.ruoyi.order.service.OrderGoodService; import com.ruoyi.order.service.OrderService; import com.ruoyi.other.api.domain.Shop; +import com.ruoyi.other.api.domain.ShopBalanceStatement; +import com.ruoyi.other.api.domain.ShopPoint; +import com.ruoyi.other.api.domain.Technician; +import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient; import com.ruoyi.other.api.feignClient.ShopClient; import com.ruoyi.order.model.Order; import com.ruoyi.order.model.OrderGood; +import com.ruoyi.other.api.feignClient.ShopPointClient; +import com.ruoyi.other.api.feignClient.TechnicianClient; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -35,100 +45,471 @@ @Resource private ShopClient shopClient; @Resource - private RedisTemplate<String, String> redisTemplate; + private BalanceChangeRecordClient balanceChangeRecordClient; + @Resource + private UserPointClient userPointClient; + @Resource + private ShopBalanceStatementClient shopBalanceStatementClient; + @Resource + private ShopPointClient shopPointClient; + @Resource + private TechnicianClient technicianClient; - /** - * 返佣延迟队列(redis有序集合) - * - * @param orderId 订单ID - * @param afterSalesDeadline 售后截止日期(计算日期) - */ - @Override - public void addToCommissionDelayQueue(Long orderId, LocalDateTime afterSalesDeadline) { - // 获取订单售后截止日期时间戳(秒) - long deadlineTimestamp = afterSalesDeadline.atZone(ZoneId.systemDefault()).toEpochSecond(); - redisTemplate.opsForZSet().add("delay_queue:commission", orderId.toString(), deadlineTimestamp); - } + @Override @Transactional(rollbackFor = Exception.class) - public void calculationCommission(Set<String> orderIds) { - List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() - .in(OrderGood::getOrderId, orderIds)); - - Map<Long, List<OrderGood>> ogMap = orderGoods.stream().collect(Collectors.groupingBy(OrderGood::getOrderId)); - - for (Map.Entry<Long, List<OrderGood>> entry : ogMap.entrySet()) { - Long k = entry.getKey(); - List<OrderGood> v = entry.getValue(); - Order order = orderService.getById(k); - if (order.getIsCommission() == 1) { + public void calculationCommission() { + List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getIsCommission, 0).isNotNull(Order::getAfterSaleTime) + .eq(Order::getDelFlag, 0).last(" and after_sale_time <= now()")); + List<Long> collect = list.stream().map(Order::getId).collect(Collectors.toList()); + if(collect.size() == 0){ + return; + } + + for (Order order : list) { + if(order.getPayMethod() == 3){ continue; } - order.setIsCommission(1); - orderService.updateById(order); - R<Shop> r = shopClient.getShopById(order.getShopId()); - if (!R.isSuccess(r)) { - throw new RuntimeException("获取门店信息失败"); - } - Shop shop = r.getData(); - if (shop == null) { - throw new RuntimeException("获取门店信息失败"); - } - - Long appUserId = order.getAppUserId(); - AppUser appUser = appUserClient.getAppUserById(appUserId); - if (appUser == null) { - 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) {// 累计分销金额 - - // 直推上级分佣金额 - Integer superiorType = og.getSuperiorType(); - if (superiorType == 1 && inviteUser != null){ - // 分佣金额 - BigDecimal superiorSubcommission = og.getSuperiorSubcommission(); - BigDecimal totalDistributionAmount = inviteUser.getTotalDistributionAmount(); - totalDistributionAmount = totalDistributionAmount.add(superiorSubcommission); - inviteUser.setTotalDistributionAmount(totalDistributionAmount); - - // 分佣积分 - Integer sharePoint = inviteUser.getSharePoint(); - 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; - superiorLeader.setSharePoint(sharePoint); - - appUserClient.editAppUserById(superiorLeader); + List<OrderGood> orderGoods = orderGoodService.list(new LambdaQueryWrapper<OrderGood>() + .eq(OrderGood::getGoodsId, order.getId())); + AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); + //直推上级分佣金额 + BigDecimal ztsj_price = BigDecimal.ZERO; + //直帮上级分佣金额 + BigDecimal zbsj_price = BigDecimal.ZERO; + //直推上级分佣积分 + Integer ztsj_point = 0; + //直帮上级分佣积分 + Integer zbsj_point = 0; + //核销门店分佣金额 + BigDecimal hxmd_price = BigDecimal.ZERO; + //核销门店分佣积分 + Integer hxmd_point = 0; + //技师分佣积分 + Integer js_point = 0; + //绑定门店分佣金额 + BigDecimal bdmd_price = BigDecimal.ZERO; + //绑定门店分佣积分 + Integer bdmd_point = 0; + //绑定门店上级门店分佣金额 + BigDecimal bdmdsj_price = BigDecimal.ZERO; + //绑定门店上级门店分佣积分 + Integer bdmdsj_point = 0; + for (OrderGood orderGood : orderGoods) { + //上级获得分佣金额(直推上级|直帮上级) + BigDecimal superiorSubcommission = orderGood.getSuperiorSubcommission(); + //上级获得分佣积分(直推上级|直帮上级) + Integer superiorRebatePoints = orderGood.getSuperiorRebatePoints(); + String[] split = orderGood.getSuperiorPriceType().split(","); + for (String s : split) { + //直推上级 + if("1".equals(s)){ + ztsj_price = ztsj_price.add(superiorSubcommission); + ztsj_point += superiorRebatePoints; } + //直帮上级 + if("2".equals(s)){ + zbsj_price = zbsj_price.add(superiorSubcommission); + zbsj_point += superiorRebatePoints; + } + } + + //核销门店获取服务费 + hxmd_price = hxmd_price.add(orderGood.getServuceShopCharges()); + //核销门店可获得积分 + hxmd_point += orderGood.getServuceShopPoints(); + //技师分佣金额 + if(order.getOrderType() == 1){ + js_point += orderGood.getTechnicianPoints(); + } + //绑定门店分佣金额 + bdmd_price = bdmd_price.add(orderGood.getBoundShopCharges()); + //绑定门店分佣积分 + bdmd_point += orderGood.getBoundShopPoints(); + //绑定门店上级门店分佣金额 + bdmdsj_price = bdmdsj_price.add(orderGood.getBoundShopSuperiorsCharges()); + //绑定门店上级门店分佣积分 + bdmdsj_point += orderGood.getBoundShopSuperiorsPoints(); } + //直推上级 + AppUser inviteUser = appUserClient.getAppUserById(appUser.getInviteUserId()); + if(null != inviteUser){ + BigDecimal balance = inviteUser.getBalance(); + Integer lavePoint = inviteUser.getLavePoint(); + if(ztsj_price.compareTo(BigDecimal.ZERO) > 0){ + inviteUser.setTotalDistributionAmount(inviteUser.getTotalDistributionAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + inviteUser.setBalance(inviteUser.getBalance().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + inviteUser.setWithdrawableAmount(inviteUser.getWithdrawableAmount().add(ztsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } + if(ztsj_point > 0){ + inviteUser.setSharePoint(inviteUser.getSharePoint() + ztsj_point); + inviteUser.setLavePoint(inviteUser.getLavePoint() + ztsj_point); + inviteUser.setTotalPoint(inviteUser.getTotalPoint() + ztsj_point); + } + appUserClient.editAppUserById(inviteUser); + //添加明细记录 + if(!inviteUser.getBalance().equals(balance)){ + BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); + balanceChangeRecord.setAppUserId(inviteUser.getId()); + balanceChangeRecord.setOrderId(order.getId()); + balanceChangeRecord.setChangeType(4); + balanceChangeRecord.setBeforeAmount(balance); + balanceChangeRecord.setChangeAmount(ztsj_price); + balanceChangeRecord.setAfterAmount(inviteUser.getBalance()); + balanceChangeRecord.setDelFlag(0); + balanceChangeRecord.setCreateTime(LocalDateTime.now()); + balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + } + //添加积分明细 + if(!inviteUser.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(2); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(ztsj_point); + userPoint.setBalance(inviteUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(inviteUser.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + } + //直帮上级 + AppUser superiorLeader = appUserClient.getSuperiorLeader(appUser.getId()).getData(); + if(null != superiorLeader){ + BigDecimal balance = superiorLeader.getBalance(); + Integer lavePoint = superiorLeader.getLavePoint(); + if(zbsj_price.compareTo(BigDecimal.ZERO) > 0){ + superiorLeader.setTotalDistributionAmount(superiorLeader.getTotalDistributionAmount().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + superiorLeader.setBalance(superiorLeader.getBalance().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + superiorLeader.setWithdrawableAmount(superiorLeader.getWithdrawableAmount().add(zbsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } + if(zbsj_point > 0){ + superiorLeader.setSharePoint(superiorLeader.getSharePoint() + zbsj_point); + superiorLeader.setLavePoint(superiorLeader.getLavePoint() + zbsj_point); + superiorLeader.setTotalPoint(superiorLeader.getTotalPoint() + zbsj_point); + } + appUserClient.editAppUserById(superiorLeader); + //添加明细记录 + if(!superiorLeader.getBalance().equals(balance)){ + BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); + balanceChangeRecord.setAppUserId(superiorLeader.getId()); + balanceChangeRecord.setOrderId(order.getId()); + balanceChangeRecord.setChangeType(4); + balanceChangeRecord.setBeforeAmount(balance); + balanceChangeRecord.setChangeAmount(zbsj_price); + balanceChangeRecord.setAfterAmount(superiorLeader.getBalance()); + balanceChangeRecord.setDelFlag(0); + balanceChangeRecord.setCreateTime(LocalDateTime.now()); + balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + } + //添加积分明细 + if(!superiorLeader.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(2); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(zbsj_point); + userPoint.setBalance(superiorLeader.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(superiorLeader.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + } + + //核销门店 + Shop shop = shopClient.getShopById(order.getShopId()).getData(); + AppUser shopAppUser = appUserClient.getAppUserById(shop.getAppUserId()); + if(null != shopAppUser){ + BigDecimal balance = shopAppUser.getBalance(); + BigDecimal shopBalance = shop.getBalance(); + Integer lavePoint = shopAppUser.getLavePoint(); + Integer shopLavePoint = shop.getLavePoint(); + if(hxmd_price.compareTo(BigDecimal.ZERO) > 0){ + shopAppUser.setTotalDistributionAmount(shopAppUser.getTotalDistributionAmount().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shopAppUser.setBalance(shopAppUser.getBalance().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shopAppUser.setWithdrawableAmount(shopAppUser.getWithdrawableAmount().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shopAppUser.setShopServiceFee(shopAppUser.getShopServiceFee().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + //门店返佣 + shop.setGiveawayAllMoney(shop.getGiveawayAllMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop.setServerGiveawayMoney(shop.getServerGiveawayMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop.setCanWithdrawMoney(shop.getCanWithdrawMoney().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop.setBalance(shop.getBalance().add(hxmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } + if(hxmd_point > 0){ + shopAppUser.setSharePoint(shopAppUser.getSharePoint() + hxmd_point); + shopAppUser.setLavePoint(shopAppUser.getLavePoint() + hxmd_point); + shopAppUser.setTotalPoint(shopAppUser.getTotalPoint() + hxmd_point); + //门店返佣 + shop.setShopAllPoint(shop.getShopAllPoint() + hxmd_point); + shop.setServerPoint(shop.getServerPoint() + hxmd_point); + shop.setLavePoint(shop.getLavePoint() + hxmd_point); + } + appUserClient.editAppUserById(shopAppUser); + shopClient.updateShop(shop); + //添加明细记录 + if(!shopAppUser.getBalance().equals(balance)){ + BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); + balanceChangeRecord.setAppUserId(shopAppUser.getId()); + balanceChangeRecord.setOrderId(order.getId()); + balanceChangeRecord.setChangeType(4); + balanceChangeRecord.setBeforeAmount(balance); + balanceChangeRecord.setChangeAmount(hxmd_price); + balanceChangeRecord.setAfterAmount(shopAppUser.getBalance()); + balanceChangeRecord.setDelFlag(0); + balanceChangeRecord.setCreateTime(LocalDateTime.now()); + balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + } + + if(!shop.getBalance().equals(shopBalance)){ + ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); + shopBalanceStatement.setShopId(shop.getId()); + shopBalanceStatement.setType(3); + shopBalanceStatement.setHistoricalBalance(shopBalance); + shopBalanceStatement.setVariableAmount(hxmd_price); + shopBalanceStatement.setBalance(shop.getBalance()); + shopBalanceStatement.setCreateTime(LocalDateTime.now()); + shopBalanceStatement.setCreateUserId(order.getAppUserId()); + shopBalanceStatement.setObjectId(order.getId()); + shopBalanceStatement.setExtension(order.getOrderNumber()); + shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement); + } + //添加积分明细 + if(!shopAppUser.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(9); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(hxmd_point); + userPoint.setBalance(shopAppUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(shopAppUser.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + + if(!shop.getLavePoint().equals(shopLavePoint)){ + ShopPoint shopPoint = new ShopPoint(); + shopPoint.setShopId(shop.getId()); + shopPoint.setType(4); + shopPoint.setHistoricalPoint(shopLavePoint); + shopPoint.setVariablePoint(hxmd_point); + shopPoint.setBalance(shop.getLavePoint()); + shopPoint.setCreateTime(LocalDateTime.now()); + shopPoint.setCreateUserId(order.getAppUserId()); + shopPoint.setObjectId(order.getId()); + shopPoint.setOrderNum(order.getOrderNumber()); + shopPointClient.saveShopPoint(shopPoint); + } + } + + //技师服务积分 + if(order.getOrderType() == 1){ + Technician technician = technicianClient.shopdetail(order.getTechnicianId()).getData(); + AppUser technicianAppUser = appUserClient.getAppUserById(technician.getAppUserId()); + Integer lavePoint = technicianAppUser.getLavePoint(); + if(js_point > 0){ + technicianAppUser.setLavePoint(technicianAppUser.getLavePoint() + js_point); + technicianAppUser.setTotalPoint(technicianAppUser.getTotalPoint() + js_point); + technicianAppUser.setTotalPerformancePoint(technicianAppUser.getTotalPerformancePoint() + js_point); + } + appUserClient.editAppUserById(technicianAppUser); + //添加积分明细 + if(!technicianAppUser.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(10); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(js_point); + userPoint.setBalance(technicianAppUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(technicianAppUser.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + } + + //绑定门店分佣 + Shop shop1 = shopClient.getShopById(appUser.getShopId()).getData(); + if(null != shop1){ + AppUser bdShopAppUser = appUserClient.getAppUserById(shop1.getAppUserId()); + if(null != bdShopAppUser){ + BigDecimal balance = bdShopAppUser.getBalance(); + BigDecimal shopBalance = shop1.getBalance(); + Integer lavePoint = bdShopAppUser.getLavePoint(); + Integer shopLavePoint = shop1.getLavePoint(); + if(bdmd_price.compareTo(BigDecimal.ZERO) > 0){ + bdShopAppUser.setTotalDistributionAmount(bdShopAppUser.getTotalDistributionAmount().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + bdShopAppUser.setBalance(bdShopAppUser.getBalance().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + bdShopAppUser.setWithdrawableAmount(bdShopAppUser.getWithdrawableAmount().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + bdShopAppUser.setShopCommission(bdShopAppUser.getShopCommission().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + //门店返佣 + shop1.setGiveawayAllMoney(shop1.getGiveawayAllMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop1.setGiveawayMoney(shop1.getGiveawayMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop1.setCanWithdrawMoney(shop1.getCanWithdrawMoney().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop1.setBalance(shop1.getBalance().add(bdmd_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } + if(bdmd_point > 0){ + bdShopAppUser.setSharePoint(bdShopAppUser.getSharePoint() + bdmd_point); + bdShopAppUser.setLavePoint(bdShopAppUser.getLavePoint() + bdmd_point); + bdShopAppUser.setTotalPoint(bdShopAppUser.getTotalPoint() + bdmd_point); + //门店返佣 + shop1.setShopAllPoint(shop1.getShopAllPoint() + bdmd_point); + shop1.setSharePoint(shop1.getSharePoint() + bdmd_point); + shop1.setLavePoint(shop1.getLavePoint() + bdmd_point); + } + appUserClient.editAppUserById(bdShopAppUser); + shopClient.updateShop(shop1); + //添加明细记录 + if(!bdShopAppUser.getBalance().equals(balance)){ + BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); + balanceChangeRecord.setAppUserId(bdShopAppUser.getId()); + balanceChangeRecord.setOrderId(order.getId()); + balanceChangeRecord.setChangeType(4); + balanceChangeRecord.setBeforeAmount(balance); + balanceChangeRecord.setChangeAmount(bdmd_price); + balanceChangeRecord.setAfterAmount(bdShopAppUser.getBalance()); + balanceChangeRecord.setDelFlag(0); + balanceChangeRecord.setCreateTime(LocalDateTime.now()); + balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + } + + if(!shop1.getBalance().equals(shopBalance)){ + ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); + shopBalanceStatement.setShopId(shop1.getId()); + shopBalanceStatement.setType(4); + shopBalanceStatement.setHistoricalBalance(shopBalance); + shopBalanceStatement.setVariableAmount(bdmd_price); + shopBalanceStatement.setBalance(shop1.getBalance()); + shopBalanceStatement.setCreateTime(LocalDateTime.now()); + shopBalanceStatement.setCreateUserId(order.getAppUserId()); + shopBalanceStatement.setObjectId(order.getId()); + shopBalanceStatement.setExtension(order.getOrderNumber()); + shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement); + } + //添加积分明细 + if(!bdShopAppUser.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(9); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(bdmd_point); + userPoint.setBalance(bdShopAppUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(bdShopAppUser.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + + if(!shop1.getLavePoint().equals(shopLavePoint)){ + ShopPoint shopPoint = new ShopPoint(); + shopPoint.setShopId(shop1.getId()); + shopPoint.setType(2); + shopPoint.setHistoricalPoint(shopLavePoint); + shopPoint.setVariablePoint(bdmd_point); + shopPoint.setBalance(shop1.getLavePoint()); + shopPoint.setCreateTime(LocalDateTime.now()); + shopPoint.setCreateUserId(order.getAppUserId()); + shopPoint.setObjectId(order.getId()); + shopPoint.setOrderNum(order.getOrderNumber()); + shopPointClient.saveShopPoint(shopPoint); + } + } + } + + //上级门店分佣 + Integer pid = shopClient.getShopById(order.getShopId()).getData().getPid(); + Shop shop2 = shopClient.getShopById(pid).getData(); + if(null != shop2){ + AppUser sjShopAppUser = appUserClient.getAppUserById(shop2.getAppUserId()); + if(null != sjShopAppUser){ + BigDecimal balance = sjShopAppUser.getBalance(); + BigDecimal shopBalance = shop2.getBalance(); + Integer lavePoint = sjShopAppUser.getLavePoint(); + Integer shopLavePoint = shop2.getLavePoint(); + if(bdmdsj_price.compareTo(BigDecimal.ZERO) > 0){ + sjShopAppUser.setTotalDistributionAmount(sjShopAppUser.getTotalDistributionAmount().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + sjShopAppUser.setBalance(sjShopAppUser.getBalance().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + sjShopAppUser.setWithdrawableAmount(sjShopAppUser.getWithdrawableAmount().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + //门店返佣 + shop2.setGiveawayAllMoney(shop2.getGiveawayAllMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop2.setLowerLevelGiveawayMoney(shop2.getLowerLevelGiveawayMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop2.setCanWithdrawMoney(shop2.getCanWithdrawMoney().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + shop2.setBalance(shop2.getBalance().add(bdmdsj_price).setScale(2, BigDecimal.ROUND_HALF_EVEN)); + } + if(bdmdsj_point > 0){ + sjShopAppUser.setSharePoint(sjShopAppUser.getSharePoint() + bdmdsj_point); + sjShopAppUser.setLavePoint(sjShopAppUser.getLavePoint() + bdmdsj_point); + sjShopAppUser.setTotalPoint(sjShopAppUser.getTotalPoint() + bdmdsj_point); + sjShopAppUser.setShopSharePoint(sjShopAppUser.getShopSharePoint() + bdmdsj_point); + //门店返佣 + shop2.setShopAllPoint(shop2.getShopAllPoint() + bdmdsj_point); + shop2.setSharePoint(shop2.getSharePoint() + bdmdsj_point); + shop2.setLavePoint(shop2.getLavePoint() + bdmdsj_point); + } + appUserClient.editAppUserById(sjShopAppUser); + shopClient.updateShop(shop2); + //添加明细记录 + if(!sjShopAppUser.getBalance().equals(balance)){ + BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); + balanceChangeRecord.setAppUserId(sjShopAppUser.getId()); + balanceChangeRecord.setOrderId(order.getId()); + balanceChangeRecord.setChangeType(4); + balanceChangeRecord.setBeforeAmount(balance); + balanceChangeRecord.setChangeAmount(bdmdsj_price); + balanceChangeRecord.setAfterAmount(sjShopAppUser.getBalance()); + balanceChangeRecord.setDelFlag(0); + balanceChangeRecord.setCreateTime(LocalDateTime.now()); + balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + } + + if(!shop2.getBalance().equals(shopBalance)){ + ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); + shopBalanceStatement.setShopId(shop2.getId()); + shopBalanceStatement.setType(2); + shopBalanceStatement.setHistoricalBalance(shopBalance); + shopBalanceStatement.setVariableAmount(bdmdsj_price); + shopBalanceStatement.setBalance(shop2.getBalance()); + shopBalanceStatement.setCreateTime(LocalDateTime.now()); + shopBalanceStatement.setCreateUserId(order.getAppUserId()); + shopBalanceStatement.setObjectId(order.getId()); + shopBalanceStatement.setExtension(order.getOrderNumber()); + shopBalanceStatementClient.saveShopBalanceStatement(shopBalanceStatement); + } + //添加积分明细 + if(!sjShopAppUser.getLavePoint().equals(lavePoint)){ + UserPoint userPoint = new UserPoint(); + userPoint.setType(14); + userPoint.setHistoricalPoint(lavePoint); + userPoint.setVariablePoint(bdmdsj_point); + userPoint.setBalance(sjShopAppUser.getLavePoint()); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(sjShopAppUser.getId()); + userPoint.setObjectId(order.getId()); + userPoint.setExtention(order.getOrderNumber()); + userPointClient.saveUserPoint(userPoint); + } + + if(!shop2.getLavePoint().equals(shopLavePoint)){ + ShopPoint shopPoint = new ShopPoint(); + shopPoint.setShopId(shop2.getId()); + shopPoint.setType(3); + shopPoint.setHistoricalPoint(shopLavePoint); + shopPoint.setVariablePoint(bdmdsj_point); + shopPoint.setBalance(shop2.getLavePoint()); + shopPoint.setCreateTime(LocalDateTime.now()); + shopPoint.setCreateUserId(order.getAppUserId()); + shopPoint.setObjectId(order.getId()); + shopPoint.setOrderNum(order.getOrderNumber()); + shopPointClient.saveShopPoint(shopPoint); + } + } + } + } + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java index 26c0e8b..7c77100 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java @@ -1,7 +1,10 @@ package com.ruoyi.order.util; +import com.ruoyi.order.service.CommissionService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; + +import javax.annotation.Resource; /** @@ -11,11 +14,12 @@ @Component public class TaskUtil { + @Resource + private CommissionService commissionService; -@Scheduled(cron = "0 0 0 * * ?") -//@Scheduled(fixedRate = 60000) + @Scheduled(fixedRate = 60000) public void taskMonth() { - + commissionService.calculationCommission(); } // 每天晚上23:59:59执行的定时任务 diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java index f2daa57..f703879 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java @@ -42,6 +42,13 @@ private TokenService tokenService; @Resource private ShopBalanceStatementMapper shopBalanceStatementMapper; + + @Resource + private ShopService shopService; + + + + /** * 门店分佣统计 @@ -69,8 +76,7 @@ } - @Resource - private ShopService shopService; + @GetMapping("/commissionStatistics/info") @ApiOperation(value = "门店余额明细上方数据", notes = "门店余额明细", tags = {"门店后台"}) public R<ShopBalanceDto> shopCommissionStatisticsinfo(){ @@ -131,6 +137,16 @@ public R<List<ShopBalanceStatement>> getList(@RequestBody ShopBalanceStatement shopBalanceStatement){ return R.ok(shopBalanceStatementMapper.selectShopBalanceStatementList(shopBalanceStatement)); } + + + /** + * 保存门店余额流水 + * @param shopBalanceStatement + */ + @PostMapping("/saveShopBalanceStatement") + public void saveShopBalanceStatement(@RequestBody ShopBalanceStatement shopBalanceStatement){ + shopBalanceStatementService.save(shopBalanceStatement); + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java index 1dffb31..6d89e84 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopController.java @@ -299,6 +299,15 @@ ShopStatistics shopStatistics = shopMapper.getShopStatistics(shopName); return R.ok(shopStatistics); } - + + + /** + * 编辑门店 + * @param shop + */ + @PostMapping("/updateShop") + public void updateShop(@RequestBody Shop shop){ + shopService.updateById(shop); + } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java index 084043b..7c58751 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopPointController.java @@ -11,9 +11,7 @@ import com.ruoyi.other.vo.ShopPointStatistics; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; @@ -88,6 +86,16 @@ util.exportExcel(response, shopPointIPage.getRecords(), "用户积分统计"); } } + + + /** + * 保存门店积分流水 + * @param shopPoint + */ + @PostMapping("/saveShopPoint") + public void saveShopPoint(@RequestBody ShopPoint shopPoint){ + shopPointService.save(shopPoint); + } } -- Gitblit v1.7.1