From f6c948f093a35f20e8fc94b5d0f893c5647c41b7 Mon Sep 17 00:00:00 2001
From: phpcjl <phpcjl@gmail.com>
Date: 星期二, 17 十二月 2024 14:57:47 +0800
Subject: [PATCH] 1

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java           |    6 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java    |   87 ++++++++++++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/BalanceChangeRecord.java               |   14 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java               |   19 ++-
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java              |   76 ---------------
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java                     |   17 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java          |    4 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java |   39 +++++++
 8 files changed, 168 insertions(+), 94 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 f3d999c..1b8ccc4 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
@@ -4,10 +4,12 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.math.BigDecimal;
@@ -61,4 +63,16 @@
     @ApiModelProperty("消费金额")
     private BigDecimal amount;
 
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime endTime;
+
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java
index 3ed2f97..7750928 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java
@@ -1,19 +1,26 @@
 package com.ruoyi.account.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
 import com.ruoyi.account.api.model.UserClickLog;
+import com.ruoyi.account.api.model.UserPoint;
 import com.ruoyi.account.dto.BalanceQuery;
 import com.ruoyi.account.dto.UserCancelQuery;
+import com.ruoyi.account.excel.UserPointEx;
 import com.ruoyi.account.service.BalanceChangeRecordService;
+import com.ruoyi.account.vo.CommissionStatistics;
+import com.ruoyi.account.vo.UserPointStatistics;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.poi.ExcelUtil;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-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;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @author zhibing.pu
@@ -45,6 +52,78 @@
 		return R.ok(balanceChangeRecordService.pageList(agentQuery));
 	}
 
+	/**
+	 * 用户分佣统计
+	 */
+	@GetMapping("/commissionStatistics")
+	@ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计")
+	public R<CommissionStatistics> commissionStatistics(UserPoint userPoint) {
+		userPoint.setType(2);
+		IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
+		UserPointStatistics statistics = userPointService.getStatistics(userPoint);
+		CommissionStatistics commissionStatistics = new CommissionStatistics();
+		commissionStatistics.setStatistics(statistics);
+		commissionStatistics.setUserPointPage(userPointPage);
+		return R.ok(commissionStatistics);
+	}
+
+	/**
+	 * 导出用户分佣统计
+	 */
+	@GetMapping("/commissionExport")
+	@ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计")
+	public void commissionExport(HttpServletResponse response, UserPoint userPoint) {
+		userPoint.setType(2);
+		IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint);
+		List<UserPoint> userPointList = userPointPage.getRecords();
+		List<UserPointEx> userPointExList = new ArrayList<>();
+		for (UserPoint point : userPointList) {
+			UserPointEx userPointEx = new UserPointEx();
+			userPointEx.setUserName(point.getUserName());
+			userPointEx.setPhone(point.getPhone());
+			userPointEx.setChangeTime(point.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			userPointEx.setChangeNum(point.getVariablePoint().toString());
+			Integer type = point.getType();
+			switch (type) {
+				case 1:
+					userPointEx.setType("消费积分");
+					break;
+				case 2:
+					userPointEx.setType("返佣积分");
+					break;
+				case 3:
+					userPointEx.setType("拉新人积分");
+					break;
+				case 4:
+					userPointEx.setType("兑换商品");
+					break;
+				case 5:
+					userPointEx.setType("门店业绩");
+					break;
+				case 6:
+					userPointEx.setType("门店返佣");
+					break;
+				case 7:
+					userPointEx.setType("技师业绩");
+					break;
+				case 8:
+					userPointEx.setType("转赠积分");
+					break;
+				case 9:
+					userPointEx.setType("做工积分");
+					break;
+				case 10:
+					userPointEx.setType("注册积分");
+					break;
+				default:
+					userPointEx.setType("未知积分");
+			}
+			userPointExList.add(userPointEx);
+		}
+		ExcelUtil<UserPointEx> util = new ExcelUtil<>(UserPointEx.class);
+		util.exportExcel(response, userPointExList, "用户分佣统计");
+	}
+
 	
 	
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
index 3b282f2..adff1d8 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java
@@ -4,10 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.model.UserPoint;
-import com.ruoyi.account.excel.UserPointEx;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.UserPointService;
-import com.ruoyi.account.vo.CommissionStatistics;
 import com.ruoyi.account.vo.UserPointDetailVO;
 import com.ruoyi.account.vo.UserPointStatistics;
 import com.ruoyi.account.vo.UserPointVO;
@@ -30,8 +28,6 @@
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.YearMonth;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -145,78 +141,6 @@
         List<UserPoint> userPointList = userPointPage.getRecords();
         ExcelUtil<UserPoint> util = new ExcelUtil<>(UserPoint.class);
         util.exportExcel(response, userPointList, "用户积分统计");
-    }
-
-    /**
-     * 用户分佣统计
-     */
-    @GetMapping("/commissionStatistics")
-    @ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计")
-    public R<CommissionStatistics> commissionStatistics(UserPoint userPoint) {
-        userPoint.setType(2);
-        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(userPoint.getPageNum(), userPoint.getPageSize()), userPoint);
-        UserPointStatistics statistics = userPointService.getStatistics(userPoint);
-        CommissionStatistics commissionStatistics = new CommissionStatistics();
-        commissionStatistics.setStatistics(statistics);
-        commissionStatistics.setUserPointPage(userPointPage);
-        return R.ok(commissionStatistics);
-    }
-
-    /**
-     * 导出用户分佣统计
-     */
-    @GetMapping("/commissionExport")
-    @ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计")
-    public void commissionExport(HttpServletResponse response, UserPoint userPoint) {
-        userPoint.setType(2);
-        IPage<UserPoint> userPointPage = userPointService.getUserPointPage(Page.of(1, Integer.MAX_VALUE), userPoint);
-        List<UserPoint> userPointList = userPointPage.getRecords();
-        List<UserPointEx> userPointExList = new ArrayList<>();
-        for (UserPoint point : userPointList) {
-            UserPointEx userPointEx = new UserPointEx();
-            userPointEx.setUserName(point.getUserName());
-            userPointEx.setPhone(point.getPhone());
-            userPointEx.setChangeTime(point.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
-            userPointEx.setChangeNum(point.getVariablePoint().toString());
-            Integer type = point.getType();
-            switch (type) {
-                case 1:
-                    userPointEx.setType("消费积分");
-                    break;
-                    case 2:
-                        userPointEx.setType("返佣积分");
-                        break;
-                    case 3:
-                        userPointEx.setType("拉新人积分");
-                        break;
-                    case 4:
-                        userPointEx.setType("兑换商品");
-                        break;
-                    case 5:
-                        userPointEx.setType("门店业绩");
-                        break;
-                    case 6:
-                        userPointEx.setType("门店返佣");
-                        break;
-                    case 7:
-                        userPointEx.setType("技师业绩");
-                        break;
-                    case 8:
-                        userPointEx.setType("转赠积分");
-                        break;
-                    case 9:
-                        userPointEx.setType("做工积分");
-                        break;
-                    case 10:
-                        userPointEx.setType("注册积分");
-                        break;
-                    default:
-                        userPointEx.setType("未知积分");
-            }
-            userPointExList.add(userPointEx);
-        }
-        ExcelUtil<UserPointEx> util = new ExcelUtil<>(UserPointEx.class);
-        util.exportExcel(response, userPointExList, "用户分佣统计");
     }
 
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java
index 4a8a9d3..a1cf54f 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java
@@ -1,10 +1,14 @@
 package com.ruoyi.account.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
 import com.ruoyi.account.dto.BalanceQuery;
+import com.ruoyi.account.vo.CommissionStatistics;
 
 public interface BalanceChangeRecordService extends IService<BalanceChangeRecord> {
     IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery);
+
+    CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord);
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
index 8291e71..828b2a5 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java
@@ -1,17 +1,32 @@
 package com.ruoyi.account.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.api.model.BalanceChangeRecord;
 import com.ruoyi.account.api.model.UserClickLog;
+import com.ruoyi.account.api.model.WithdrawalRequests;
 import com.ruoyi.account.dto.BalanceQuery;
 import com.ruoyi.account.mapper.BalanceChangeRecordMapper;
+import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.BalanceChangeRecordService;
+import com.ruoyi.account.vo.CommissionStatistics;
+import com.ruoyi.common.core.utils.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class BalanceChangeRecordServiceImpl extends ServiceImpl<BalanceChangeRecordMapper, BalanceChangeRecord> implements BalanceChangeRecordService {
+    @Resource
+    private AppUserService appUserService;
+
     @Override
     public IPage<BalanceChangeRecord> pageList(BalanceQuery agentQuery) {
         Page<BalanceChangeRecord> page = new Page<>();
@@ -20,4 +35,28 @@
         IPage<BalanceChangeRecord> shopIPage = this.baseMapper.pageList(page, agentQuery);
         return shopIPage;
     }
+
+    @Override
+    public CommissionStatistics commissionStatistics(Page<BalanceChangeRecord> page, BalanceChangeRecord balanceChangeRecord) {
+
+        List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>()
+                .like(StringUtils.isNotEmpty(balanceChangeRecord.getUserName()), AppUser::getName, balanceChangeRecord.getUserName())
+                .like(StringUtils.isNotEmpty(balanceChangeRecord.getUserPhone()), AppUser::getPhone, balanceChangeRecord.getUserPhone()));
+        if (CollectionUtils.isEmpty(appUserList)){
+            return new CommissionStatistics();
+        }
+
+        List<Long> appUserIds = appUserList.stream().map(AppUser::getId).collect(Collectors.toList());
+
+        BigDecimal totalCommission = appUserList.stream()
+                .map(AppUser::getTotalDistributionAmount)
+                .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+
+        Page<BalanceChangeRecord> changeRecordPage = page(page, new LambdaQueryWrapper<BalanceChangeRecord>()
+                .in(BalanceChangeRecord::getAppUserId, appUserIds)
+                .between(balanceChangeRecord.getStartTime() != null && balanceChangeRecord.getEndTime() != null,
+                        BalanceChangeRecord::getCreateTime, balanceChangeRecord.getStartTime(), balanceChangeRecord.getEndTime()));
+        return new CommissionStatistics(totalCommission, changeRecordPage);
+    }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
index 5751140..61c0ede 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java
@@ -218,10 +218,14 @@
         List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>()
                 .eq(AppUser::getPhone, userPoint.getPhone())
                 .like(AppUser::getName, userPoint.getUserName()));
+        if (appUserList.isEmpty()){
+            return page;
+        }
+
         List<Long> userIds = appUserList.stream().map(AppUser::getId).collect(Collectors.toList());
 
         Page<UserPoint> userPointPage = page(page, new LambdaQueryWrapper<UserPoint>()
-                .in(!CollectionUtils.isEmpty(userIds), UserPoint::getAppUserId, userIds)
+                .in(UserPoint::getAppUserId, userIds)
                 .eq(userPoint.getType() != null, UserPoint::getType, userPoint.getType())
                 .between( userPoint.getStartTime()!= null && userPoint.getEndTime() !=null,UserPoint::getCreateTime, userPoint.getStartTime(), userPoint.getEndTime())
                 .orderByDesc(UserPoint::getCreateTime));
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
index 720a03b..7233cd7 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
@@ -1,18 +1,27 @@
 package com.ruoyi.account.vo;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.ruoyi.account.api.model.UserPoint;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.api.model.BalanceChangeRecord;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.math.BigDecimal;
 
 @ApiModel(description = "用户分佣统计响应")
 @Data
 public class CommissionStatistics {
 
-    @ApiModelProperty(value = "统计数据", required = true)
-    private UserPointStatistics statistics;
+    @ApiModelProperty(value = "分佣总计")
+    private Integer totalCommission;
 
     @ApiModelProperty(value = "分页数据", required = true)
-    private IPage<UserPoint> userPointPage;
+    private IPage<BalanceChangeRecord> userPointPage;
+
+    public CommissionStatistics() {
+    }
+    public CommissionStatistics(BigDecimal totalCommission, Page<BalanceChangeRecord> changeRecordPage) {
+
+    }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
index 9e2354a..cfc5e09 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java
@@ -40,17 +40,18 @@
         String shopName = shopPoint.getShopName();
         String phone = shopPoint.getPhone();
         String shopLeaderName = shopPoint.getShopLeaderName();
-        if (StringUtils.isNotEmpty(shopName) || StringUtils.isNotEmpty(phone) || StringUtils.isNotEmpty(shopLeaderName)) {
-            List<Integer> shopIds = shopService.listObjs(new LambdaQueryWrapper<Shop>()
-                            .select(Shop::getId)
-                            .like(StringUtils.isNotEmpty(shopName), Shop::getName, shopName)
-                            .like(StringUtils.isNotEmpty(phone), Shop::getPhone, phone)
-                            .like(StringUtils.isNotEmpty(shopLeaderName), Shop::getShopManager, shopLeaderName))
-                    .stream().map(o -> (Integer) o).collect(Collectors.toList());
-
-            shopPoint.setShopIds(shopIds);
+        List<Integer> shopIds = shopService.listObjs(new LambdaQueryWrapper<Shop>()
+                        .select(Shop::getId)
+                        .like(StringUtils.isNotEmpty(shopName), Shop::getName, shopName)
+                        .like(StringUtils.isNotEmpty(phone), Shop::getPhone, phone)
+                        .like(StringUtils.isNotEmpty(shopLeaderName), Shop::getShopManager, shopLeaderName))
+                .stream().map(o -> (Integer) o).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(shopIds)) {
+            return new ShopPointStatistics();
         }
 
+        shopPoint.setShopIds(shopIds);
+
 
         ShopPointStatistics shopPointStatistics = new ShopPointStatistics();
         List<ShopPoint> latestChangeByType = shopPointMapper.findLatestChangeByType(shopPoint);

--
Gitblit v1.7.1