From 98d29a456ff0bc9db86e5cc4696fde2a8524b4f8 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期一, 13 一月 2025 22:34:18 +0800
Subject: [PATCH] 12.18

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/CommissionServiceImpl.java                    |    2 +
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java                  |    2 +
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/ShopBalanceStatementClientFallbackFactory.java |    6 +++
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java                            |    6 ++-
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                         |    2 +
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java                     |    3 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java           |    1 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java                       |    1 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java             |   10 +++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java                      |   67 +++++++++++++++++++++++++++++++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/ShopBalanceStatementClient.java            |    5 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java        |    1 
 12 files changed, 104 insertions(+), 2 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
index 15ee0ab..7dfd7e9 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java
@@ -31,6 +31,9 @@
     @ApiModelProperty("用户id")
     private Long appUserId;
 
+    @ApiModelProperty("vip等级id")
+    private Integer vipId;
+
     @ApiModelProperty("订单id")
     private Long orderId;
 
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
index 3b0ddec..82633b0 100644
--- 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
@@ -6,6 +6,7 @@
 import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient;
 import org.springframework.cloud.openfeign.FallbackFactory;
 
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 
@@ -27,6 +28,11 @@
 			public R<List<ShopBalanceStatement>> getShopBalanceStatementList(Collection<Integer> types, Long objectId) {
 				return R.fail("获取门店余额流水失败:" + cause.getMessage());
 			}
+
+			@Override
+			public R<List<ShopBalanceStatement>> getShopBalanceStatementList2(Integer type, LocalDateTime date) {
+				return R.fail();
+			}
 		};
 	}
 }
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
index 2460796..e2f2e57 100644
--- 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
@@ -9,6 +9,7 @@
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 
@@ -35,4 +36,8 @@
 	 */
 	@PostMapping("/shop-balance-statement/getShopBalanceStatementList")
 	R<List<ShopBalanceStatement>> getShopBalanceStatementList(@RequestParam("types") Collection<Integer> types, @RequestParam(value = "objectId",required = false) Long objectId);
+
+	@PostMapping("/shop-balance-statement/getShopBalanceStatementList2")
+	R<List<ShopBalanceStatement>> getShopBalanceStatementList2(@RequestParam("type") Integer type,
+															   @RequestParam(value = "date") LocalDateTime date);
 }
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 636afd9..5f38a7d 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
@@ -52,8 +52,10 @@
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import com.ruoyi.account.vo.*;
 import com.ruoyi.common.core.web.controller.BaseController;
@@ -106,6 +108,8 @@
     private ShopBalanceStatementClient shopBalanceStatementClient;
     @Resource
     private UserCancellationLogService userCancellationLogService;
+    @Resource
+    private BalanceChangeRecordService balanceChangeRecordService;
 
 
     @ResponseBody
@@ -835,6 +839,69 @@
         commissionDetail.setCommissionDateList(commissionDateList);
         return R.ok(commissionDetail);
     }
+
+
+    public R<CommissionDetail> commissionDetail2(CommissionDetail cd) {
+        if (cd.getStartTime() == null || cd.getEndTime() == null) {
+            return R.fail("请选择时间");
+        }
+        if (cd.getStartTime().isAfter(cd.getEndTime())) {
+            return R.fail("开始时间不能大于结束时间");
+        }
+
+
+        Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>();
+        getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> {
+            for (int i = 1; i < 8; i++){
+                List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>()
+                        .eq(BalanceChangeRecord::getCreateTime, date)
+                        .eq(BalanceChangeRecord::getChangeType,4)
+                        .eq(BalanceChangeRecord::getVipId, i));
+                BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                String dateKey = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
+                        .merge(i, reduce, BigDecimal::add);
+            }
+
+            for (int i = 1; i < 4; i++){
+                R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList2(i, date);
+                if (!CollectionUtils.isEmpty(r.getData())){
+                    List<ShopBalanceStatement> list = r.getData();
+                    BigDecimal reduce = list.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                    String dateKey = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    int type;
+                    if (i == 1){
+                        type = 8;
+                    }else if (i == 2){
+                        type = 9;
+                    }else {
+                        type = 10;
+                    }
+                    dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>())
+                            .merge(type, reduce, BigDecimal::add);
+                }
+            }
+        });
+        return null;
+    }
+
+
+    /**
+     * 获取指定时间段内每一天的列表
+     *
+     * @param startDate 开始日期时间
+     * @param endDate 结束日期时间
+     * @return 包含每天日期时间的列表
+     */
+    private static List<LocalDateTime> getDatesBetween(LocalDateTime startDate, LocalDateTime endDate) {
+        // 计算开始日期和结束日期之间的天数差(忽略时间部分)
+        long daysBetween = ChronoUnit.DAYS.between(startDate.toLocalDate(), endDate.toLocalDate());
+
+        // 使用Stream.iterate从开始日期开始迭代,每次增加一天,直到达到天数差+1
+        return Stream.iterate(startDate, date -> date.plus(1, ChronoUnit.DAYS))
+                .limit(daysBetween + 1)
+                .collect(Collectors.toList());
+    }
     
     
     /**
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
index 999eeff..75701a6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WalletController.java
@@ -187,6 +187,7 @@
             //流水
             BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
             balanceChangeRecord.setAppUserId(appUser.getId());
+            balanceChangeRecord.setVipId(appUser.getVipId());
             balanceChangeRecord.setOrderId(balanceChangeRecord.getId());
             balanceChangeRecord.setChangeType(1);
             balanceChangeRecord.setBeforeAmount(balance);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java
index 8039212..bea2770 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WithdrawalRequestsController.java
@@ -134,6 +134,7 @@
             //添加变动明细
             BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
             balanceChangeRecord.setAppUserId(appUser.getId());
+            balanceChangeRecord.setVipId(appUser.getVipId());
             balanceChangeRecord.setOrderId(withdrawal.getId());
             balanceChangeRecord.setChangeType(2);
             balanceChangeRecord.setBeforeAmount(balance);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java
index 74cbc9f..8c63510 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/WithdrawalRequestsServiceImpl.java
@@ -109,6 +109,7 @@
         //添加变动明细
         BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
         balanceChangeRecord.setAppUserId(appUser.getId());
+        balanceChangeRecord.setVipId(appUser.getVipId());
         balanceChangeRecord.setOrderId(withdrawalRequests.getId());
         balanceChangeRecord.setChangeType(2);
         balanceChangeRecord.setBeforeAmount(balance);
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 e023049..9bd0e61 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
@@ -287,8 +287,10 @@
 
         Long userid = tokenService.getLoginUser().getUserid();
         SysUser sysUser = sysUserClient.getSysUser(userid).getData();
-        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>().eq(sysUser.getRoleType() == 2, Order::getShopId, sysUser.getObjectId())
-                .between(Order::getCreateTime, LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))));
+        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>()
+                .eq(sysUser.getRoleType() == 2, Order::getShopId, sysUser.getObjectId())
+                .between(Order::getCreateTime, LocalDateTime.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), LocalDateTime.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+                .orderByAsc(Order::getCreateTime));
 
 
         Map<String, List<Order>> map = orderList.stream().collect(Collectors.groupingBy(item -> item.getCreateTime()
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 3a3a40b..9960d13 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
@@ -174,6 +174,7 @@
                     if(!inviteUser.getBalance().equals(balance)){
                         BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
                         balanceChangeRecord.setAppUserId(inviteUser.getId());
+                        balanceChangeRecord.setVipId(inviteUser.getVipId());
                         balanceChangeRecord.setOrderId(order.getId());
                         balanceChangeRecord.setChangeType(4);
                         balanceChangeRecord.setBeforeAmount(balance);
@@ -232,6 +233,7 @@
                 if(!superiorLeader.getBalance().equals(balance)){
                     BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
                     balanceChangeRecord.setAppUserId(superiorLeader.getId());
+                    balanceChangeRecord.setVipId(superiorLeader.getVipId());
                     balanceChangeRecord.setOrderId(order.getId());
                     balanceChangeRecord.setChangeType(4);
                     balanceChangeRecord.setBeforeAmount(balance);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 0c5b27d..4c347d4 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -449,6 +449,7 @@
             BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
             balanceChangeRecord.setOrderId(order.getId());
             balanceChangeRecord.setAppUserId(order.getAppUserId());
+            balanceChangeRecord.setVipId(appUser.getVipId());
             balanceChangeRecord.setChangeType(6);
             balanceChangeRecord.setBeforeAmount(balance);
             balanceChangeRecord.setChangeAmount(paymentAmount);
@@ -529,6 +530,7 @@
                     BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
                     balanceChangeRecord.setOrderId(order.getId());
                     balanceChangeRecord.setAppUserId(order.getAppUserId());
+                    balanceChangeRecord.setVipId(appUser.getVipId());
                     balanceChangeRecord.setChangeType(6);
                     balanceChangeRecord.setBeforeAmount(balance);
                     balanceChangeRecord.setChangeAmount(expressAmount);
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
index 8c1973d..d6f1b01 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -1239,6 +1239,7 @@
 			//构建余额明细变动记录
 			BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
 			balanceChangeRecord.setAppUserId(appUser.getId());
+			balanceChangeRecord.setVipId(appUser.getVipId());
 			balanceChangeRecord.setOrderId(order.getId());
 			balanceChangeRecord.setChangeType(5);
 			balanceChangeRecord.setBeforeAmount(balance.add(paymentMoney));
@@ -1362,6 +1363,7 @@
 					//构建余额明细变动记录
 					BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord();
 					balanceChangeRecord.setAppUserId(appUser.getId());
+					balanceChangeRecord.setVipId(appUser.getVipId());
 					balanceChangeRecord.setOrderId(order.getId());
 					balanceChangeRecord.setChangeType(5);
 					balanceChangeRecord.setBeforeAmount(balance.add(expressFee));
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 5e558ba..63a0b98 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
@@ -25,6 +25,7 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.Collection;
 import java.util.List;
 import java.util.List;
@@ -171,5 +172,14 @@
                 .in(types !=null && !types.isEmpty(),ShopBalanceStatement::getType, types));
         return R.ok(list);
     }
+
+    @PostMapping("/getShopBalanceStatementList2")
+    public R<List<ShopBalanceStatement>> getShopBalanceStatementList2(@RequestParam("type") Integer type,
+                                                                      @RequestParam(value = "date") LocalDateTime date){
+        List<ShopBalanceStatement> list = shopBalanceStatementService.list(new LambdaQueryWrapper<ShopBalanceStatement>()
+                .eq(ShopBalanceStatement::getType, type)
+                .in(ShopBalanceStatement::getCreateTime, date));
+        return R.ok(list);
+    }
 }
 

--
Gitblit v1.7.1