From ce7f72ff0a44cb6e980b05a538a0339439248b99 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 17 十二月 2024 16:03:46 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java               |    6 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/UserPointServiceImpl.java           |   89 +++++---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopPointServiceImpl.java               |   19 +
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java                            |    8 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java                         |   20 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java                  |    6 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java     |    2 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java                         |    6 
 ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml                            |    4 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java                   |    4 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java                                |    4 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/UserPointController.java              |    3 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml                      |   25 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java                     |   27 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java                            |   20 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/BalanceChangeRecordServiceImpl.java |   39 +++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java        |   20 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java                            |    4 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml                                    |    4 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java                           |   38 +++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/BalanceChangeRecordService.java          |    4 
 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/dto/SetDto.java                                      |   15 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java                |    5 
 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java         |    3 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsVip.java                             |    4 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java               |   16 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java                      |   12 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java                   |   64 +++++
 30 files changed, 499 insertions(+), 73 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-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
index 408b550..e05c57d 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java
@@ -139,5 +139,9 @@
     @ApiModelProperty(value = "地区价格")
     private List<GoodsArea> goodsAreaList;
 
+    public String getIdStr() {
+        return String.valueOf(id);
+    }
+
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java
index 817c741..89d1a01 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsAppUser.java
@@ -38,5 +38,25 @@
     @TableField("app_user_id")
     private Long appUserId;
 
+    @TableField(exist = false)
+    @ApiModelProperty(value = "用户名称")
+    private String userName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "用户手机号")
+    private String phone;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "会员等级")
+    private String vipName;
+
+    @TableField(exist = false)
+    @ApiModelProperty(value = "会员id")
+    private Integer vipId;
+
+
+    public String getIdStr() {
+        return String.valueOf(id);
+    }
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java
index 9e951a6..7e97c84 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsArea.java
@@ -129,6 +129,10 @@
     @TableField("bound_shop_superiors_points")
     private Integer boundShopSuperiorsPoints;
 
+    @ApiModelProperty(value = "vip名子")
+    @TableField(exist = false)
+    private String vipName;
+
     @TableField(exist = false)
     private List<GoodsArea> goodsAreaList;
 
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java
index 61d6852..fe80f1a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsSeckill.java
@@ -70,7 +70,11 @@
 
     @ApiModelProperty(value = "获取返佣积分上级类型(1=直推上级,2=直帮上级)")
     @TableField("superior_type")
-    private Integer superiorType;
+    private String superiorType;
+
+    @ApiModelProperty(value = "获取分佣金额上级类型(1=直推上级,2=直帮上级)")
+    @TableField("superior_price_type")
+    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/GoodsShop.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java
index c4dfa02..2826f5a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/GoodsShop.java
@@ -38,5 +38,25 @@
     @TableField("shop_id")
     private Integer shopId;
 
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    private String shopName;
+
+    @ApiModelProperty(value = "店长名称")
+    @TableField(exist = false)
+    private String ownerName;
+
+    @ApiModelProperty(value = "联系电话")
+    @TableField(exist = false)
+    private String phone;
+
+    @ApiModelProperty(value = "门店地址")
+    @TableField(exist = false)
+    private String address;
+
+    public String getIdStr(){
+        return String.valueOf(id);
+    }
+
 
 }
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 4828120..98ccca5 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
@@ -104,5 +104,9 @@
     @TableField("bound_shop_superiors_points")
     private Integer boundShopSuperiorsPoints;
 
+    @ApiModelProperty(value = "vip名子")
+    @TableField(exist = false)
+    private String vipName;
+
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java
index d140ced..a749c31 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java
@@ -1,10 +1,12 @@
 package com.ruoyi.other.api.domain;
 
 import com.baomidou.mybatisplus.annotation.*;
+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.time.LocalDateTime;
@@ -53,10 +55,14 @@
 
     @ApiModelProperty(value = "活动开始日期")
     @TableField("start_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime startTime;
 
     @ApiModelProperty(value = "活动结束日期")
     @TableField("end_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime endTime;
 
     @ApiModelProperty(value = "是否上架:0否 1是")
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
index 84549eb..798c117 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -116,12 +116,14 @@
      * 角色类型 1=平台 2=公司 3=门店 4=修理厂
      */
     @ApiModelProperty(value = "角色类型 1=平台 2=门店")
+    @TableField("role_type")
     private Integer roleType;
 
     @Excel(name = "密码修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss", type = Type.EXPORT)
     private Date passWordUpdate;
 
     @ApiModelProperty(value = "对象ID")
+    @TableField("objectId")
     private Integer objectId;
 
     @ApiModelProperty(value = "备注")
@@ -401,7 +403,11 @@
     public void setForbiddenRemark(String forbiddenRemark) {
         this.forbiddenRemark = forbiddenRemark;
     }
-    
+
+    public List<String> getRoleNames() {
+        return roleNames;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
index 8f95678..746f018 100644
--- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
+++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -130,6 +130,9 @@
 		if (loginUser == null) {
 			throw new RuntimeException("令牌已过期,请重新登录!");
 		}
+		if(null == loginUser.getUserid()){
+			loginUser.setUserid(loginUser.getSysUser().getUserId());
+		}
 		return loginUser;
 	}
 	
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
index 341d908..3f9f7e9 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
@@ -230,7 +230,7 @@
     {
         SysDept info = deptMapper.selectDeptById(dept.getParentId());
         // 如果父节点不为正常状态,则不允许新增子节点
-        if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
+        if (null != info && !UserConstants.DEPT_NORMAL.equals(info.getStatus()))
         {
             throw new ServiceException("部门停用,不允许新增");
         }
@@ -347,7 +347,7 @@
         Iterator<SysDept> it = list.iterator();
         while (it.hasNext())
         {
-            SysDept n = (SysDept) it.next();
+            SysDept n = it.next();
             if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getDeptId().longValue())
             {
                 tlist.add(n);
@@ -361,6 +361,6 @@
      */
     private boolean hasChild(List<SysDept> list, SysDept t)
     {
-        return getChildList(list, t).size() > 0 ? true : false;
+        return getChildList(list, t).size() > 0;
     }
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 5909863..5c50770 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -11,6 +11,7 @@
 import com.ruoyi.common.datascope.annotation.DataScope;
 import com.ruoyi.common.security.service.TokenService;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.system.api.domain.SysDept;
 import com.ruoyi.system.api.domain.SysRole;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.query.ChangeUserQuery;
@@ -19,12 +20,10 @@
 import com.ruoyi.system.domain.SysUserRole;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.query.GetSysUserList;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserRoleService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -75,6 +74,10 @@
 	
 	@Resource
 	private TokenService tokenService;
+
+	@Lazy
+	@Resource
+	private ISysDeptService deptService;
 	
 	
 	/**
@@ -520,11 +523,16 @@
 			List<String> roleNames = new ArrayList<>();
 			for (SysUserRole sysUserRole : list1) {
 				SysRole sysRole = sysRoleService.selectRoleById(sysUserRole.getRoleId());
+				if(null == sysRole){
+					continue;
+				}
 				roleNames.add(sysRole.getRoleName());
 			}
 			Long[] roleIds = new Long[]{};
 			sysUser.setRoleIds(list1.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()).toArray(roleIds));
 			sysUser.setRoleNames(roleNames);
+            SysDept sysDept = deptService.selectDeptById(sysUser.getDeptId());
+            sysUser.setDept(sysDept);
 		}
 		return pageInfo.setRecords(list);
 	}
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..5c5a224 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 fcd824e..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
@@ -1,10 +1,8 @@
 package com.ruoyi.account.controller;
 
 
-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.ruoyi.account.api.model.AppUser;
 import com.ruoyi.account.api.model.UserPoint;
 import com.ruoyi.account.service.AppUserService;
 import com.ruoyi.account.service.UserPointService;
@@ -21,7 +19,6 @@
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.format.annotation.DateTimeFormat;
-import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java
new file mode 100644
index 0000000..7932861
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/UserPointEx.java
@@ -0,0 +1,38 @@
+package com.ruoyi.account.excel;
+
+import com.ruoyi.common.core.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class UserPointEx {
+
+    /**
+     * 用户名称
+     */
+    @Excel(name = "用户名称")
+    private String userName;
+
+    /**
+     * 联系电话
+     */
+    @Excel(name = "联系电话")
+    private String phone;
+
+    /**
+     * 变更类型
+     */
+    @Excel(name = "变更类型")
+    private String type;
+
+    /**
+     * 变更时间
+     */
+    @Excel(name = "变更时间")
+    private String changeTime;
+
+    /**
+     * 变更数量
+     */
+    @Excel(name = "变更数量")
+    private String changeNum;
+}
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 2e58044..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
@@ -163,56 +163,69 @@
 
     @Override
     public UserPointStatistics getStatistics(UserPoint userPoint) {
+        try {
+            if (StringUtils.isNotEmpty(userPoint.getUserName()) && StringUtils.isNotEmpty(userPoint.getPhone())) {
+                List<Long> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>()
+                                .select(AppUser::getId)
+                                .like(AppUser::getName, userPoint.getUserName())
+                                .like(AppUser::getPhone, userPoint.getPhone()))
+                        .stream()
+                        .map(appUserId -> (Long) appUserId)
+                        .collect(Collectors.toList());
+                userPoint.setUserIds(userIds);
+            }
 
-        if (StringUtils.isNotEmpty(userPoint.getUserName()) || StringUtils.isNotEmpty(userPoint.getPhone())) {
-            List<Long> userIds = appUserService.listObjs(new LambdaQueryWrapper<AppUser>()
-                            .select(AppUser::getId)
-                            .like(StringUtils.isNotEmpty(userPoint.getUserName()),AppUser::getName, userPoint.getUserName())
-                            .like(StringUtils.isNotEmpty(userPoint.getPhone()),AppUser::getPhone, userPoint.getPhone()))
-                    .stream()
-                    .map(appUserId -> (Long) appUserId)
-                    .collect(Collectors.toList());
-            userPoint.setUserIds(userIds);
+            List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint);
+
+            Map<Integer, Integer> userBalanceMap = userPointList.stream()
+                    .collect(Collectors.groupingBy(
+                            UserPoint::getType,
+                            Collectors.summingInt(UserPoint::getBalance)
+                    ));
+
+            int consumePoint = userBalanceMap.getOrDefault(PointChangeType.CONSUME.getCode(), 0);
+            int sharePoint = userBalanceMap.getOrDefault(PointChangeType.COMMISSION_RETURN.getCode(), 0);
+            int pullNewPoint = userBalanceMap.getOrDefault(PointChangeType.NEW_USER_REFERRAL.getCode(), 0);
+            int registerPoint = userBalanceMap.getOrDefault(PointChangeType.REGISTRATION.getCode(), 0);
+            int workPoint = userBalanceMap.getOrDefault(PointChangeType.WORK_PERFORMANCE.getCode(), 0);
+            int shopAchievementPoint = userBalanceMap.getOrDefault(PointChangeType.TECHNICIAN_PERFORMANCE.getCode(), 0);
+            int exchangeGoodsPoint = userBalanceMap.getOrDefault(PointChangeType.EXCHANGE_GOODS.getCode(), 0);
+            int storeAchievementPoint = userBalanceMap.getOrDefault(PointChangeType.STORE_PERFORMANCE.getCode(), 0);
+            int storeCommissionPoint = userBalanceMap.getOrDefault(PointChangeType.STORE_COMMISSION_RETURN.getCode(), 0);
+            int transferPoint = userBalanceMap.getOrDefault(PointChangeType.TRANSFER_POINTS.getCode(), 0);
+            int totalPoint = consumePoint + sharePoint + pullNewPoint + registerPoint + workPoint + shopAchievementPoint + exchangeGoodsPoint + storeAchievementPoint + storeCommissionPoint + transferPoint;
+
+            UserPointStatistics userPointStatistics = new UserPointStatistics();
+            userPointStatistics.setTotalPoint(totalPoint);
+            userPointStatistics.setConsumePoint(consumePoint);
+            userPointStatistics.setSharePoint(sharePoint);
+            userPointStatistics.setPullNewPoint(pullNewPoint);
+            userPointStatistics.setRegisterPoint(registerPoint);
+            userPointStatistics.setWorkPoint(workPoint);
+            userPointStatistics.setShopAchievementPoint(shopAchievementPoint);
+
+            return userPointStatistics;
+        } catch (Exception e) {
+            // 记录异常日志
+            log.error("获取用户点统计信息时出错", e);
+            throw new RuntimeException("获取用户点统计信息时出错", e);
         }
-
-        List<UserPoint> userPointList = userPointMapper.findLatestChangeByType(userPoint);
-        Map<Integer, Integer> userBalanceMap = userPointList.stream()
-                .collect(Collectors.toMap(UserPoint::getType, UserPoint::getBalance));
-
-
-        Integer consumePoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.CONSUME.getCode())).orElse(0);
-        Integer sharePoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.COMMISSION_RETURN.getCode())).orElse(0);
-        Integer pullNewPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.NEW_USER_REFERRAL.getCode())).orElse(0);
-        Integer registerPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.REGISTRATION.getCode())).orElse(0);
-        Integer workPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.WORK_PERFORMANCE.getCode())).orElse(0);
-        Integer shopAchievementPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.TECHNICIAN_PERFORMANCE.getCode())).orElse(0);
-        Integer exchangeGoodsPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.EXCHANGE_GOODS.getCode())).orElse(0);
-        Integer storeAchievementPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.STORE_PERFORMANCE.getCode())).orElse(0);
-        Integer storeCommissionPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.STORE_COMMISSION_RETURN.getCode())).orElse(0);
-        Integer transferPoint = Optional.ofNullable(userBalanceMap.get(PointChangeType.TRANSFER_POINTS.getCode())).orElse(0);
-        Integer totalPoint = consumePoint + sharePoint + pullNewPoint + registerPoint + workPoint + shopAchievementPoint + exchangeGoodsPoint + storeAchievementPoint + storeCommissionPoint + transferPoint;
-
-
-        UserPointStatistics userPointStatistics = new UserPointStatistics();
-        userPointStatistics.setTotalPoint(totalPoint);
-        userPointStatistics.setConsumePoint(consumePoint);
-        userPointStatistics.setSharePoint(sharePoint);
-        userPointStatistics.setPullNewPoint(pullNewPoint);
-        userPointStatistics.setRegisterPoint(registerPoint);
-        userPointStatistics.setWorkPoint(workPoint);
-        userPointStatistics.setShopAchievementPoint(shopAchievementPoint);
-        return userPointStatistics;
     }
+
 
     @Override
     public IPage<UserPoint> getUserPointPage(Page<UserPoint> page, UserPoint userPoint) {
         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
new file mode 100644
index 0000000..7233cd7
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
@@ -0,0 +1,27 @@
+package com.ruoyi.account.vo;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+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 = "分佣总计")
+    private Integer totalCommission;
+
+    @ApiModelProperty(value = "分页数据", required = true)
+    private IPage<BalanceChangeRecord> userPointPage;
+
+    public CommissionStatistics() {
+    }
+    public CommissionStatistics(BigDecimal totalCommission, Page<BalanceChangeRecord> changeRecordPage) {
+
+    }
+}
diff --git a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
index c045836..a0314df 100644
--- a/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
+++ b/ruoyi-service/ruoyi-account/src/main/resources/mapper/account/UserPointMapper.xml
@@ -47,7 +47,7 @@
                      create_time,
                      app_user_id,
                      object_id,
-                     ROW_NUMBER() OVER (PARTITION BY type ORDER BY create_time DESC) AS rn
+                     ROW_NUMBER() OVER (PARTITION BY `type`,app_user_id ORDER BY create_time DESC) AS rn
                  FROM
                      t_user_point
                  <where>
@@ -55,7 +55,7 @@
                              create_time BETWEEN #{startTime} AND #{endTime}
                          </if>
                          <if test="type != null">
-                             AND type = #{type}
+                             AND `type` = #{type}
                          </if>
                          <if test="userIds != null and userIds.size !=0">
                              AND app_user_id IN
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 f68a9d5..c6c54c3 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
@@ -250,7 +250,9 @@
         String content = baseSetting.getContent();
         JSONObject jsonObject = JSONObject.parseObject(content);
         Long days = jsonObject.getLong("days");
-        commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days));
+        if (days != null && days > 0){
+            commissionService.addToCommissionDelayQueue(order.getId(), LocalDateTime.now().plusDays(days));
+        }
     }
     
     
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
index 5c71417..2d86a41 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsController.java
@@ -78,6 +78,18 @@
     }
 
     /**
+     * 更新上/下架状态
+     */
+    @PutMapping("/manageGoodsStatus/{goodsId}/{status}")
+    @ApiOperation(value = "商品上/下架", tags = {"管理后台-商品管理"})
+    public R<Void> manageGoodsStatus(@PathVariable("goodsId") Long goodsId,
+                                     @PathVariable("status") Integer status){
+        goodsService.lambdaUpdate().eq(Goods::getId, goodsId).set(Goods::getStatus, status).update();
+        return R.ok();
+    }
+
+
+    /**
      * 后台商品删除
      */
     @DeleteMapping("/manageGoodsDelete/{goodsId}")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java
index 41dae65..07e9282 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java
@@ -3,6 +3,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.page.TableDataInfo;
@@ -10,12 +12,14 @@
 import com.ruoyi.other.api.domain.GoodsSeckill;
 import com.ruoyi.other.api.domain.SeckillActivityInfo;
 import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
+import com.ruoyi.other.mapper.SeckillActivityInfoMapper;
 import com.ruoyi.other.service.GoodsSeckillService;
 import com.ruoyi.other.service.SeckillActivityInfoService;
 import com.ruoyi.other.vo.SeckillActivityDetailVO;
 import com.ruoyi.other.vo.SeckillActivityVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -39,6 +43,9 @@
     
     @Resource
     private GoodsSeckillService goodsSeckillService;
+
+    @Resource
+    private SeckillActivityInfoMapper seckillActivityInfoMapper;
     
     
     
@@ -85,6 +92,19 @@
 
 
     /**
+     * 秒杀活动列表
+     */
+    @GetMapping("/manageList")
+    @ApiOperation(value = "秒杀活动列表",tags = {"小程序-商城-首页","后台管理-活动管理-秒杀活动"})
+    public R<IPage<SeckillActivityVO>> manageList(@ApiParam("页码") @RequestParam Integer pageNum,
+                                                 @ApiParam("每一页数据大小") Integer pageSize,
+                                                 Goods goods)
+    {
+        IPage<SeckillActivityVO> IPage = seckillActivityInfoMapper.querySeckillActivity(Page.of(pageNum, pageSize), goods);
+        return R.ok(IPage);
+    }
+
+    /**
      * 新增秒杀活动
      */
     @PostMapping("/save")
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java
new file mode 100644
index 0000000..abd1fbb
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/dto/SetDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.other.dto;
+
+import com.ruoyi.other.api.domain.VipSetting;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @date 2024/12/16 17:06
+ */
+@Data
+public class SetDto {
+   private List<VipSetting> vipSettingList;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java
index 91eb0a3..0317834 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/SeckillActivityInfoMapper.java
@@ -1,10 +1,13 @@
 package com.ruoyi.other.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.other.api.domain.Goods;
 import com.ruoyi.other.api.domain.SeckillActivityInfo;
 import com.ruoyi.other.vo.SeckillActivityDetailVO;
 import com.ruoyi.other.vo.SeckillActivityVO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,5 +23,7 @@
 
     List<SeckillActivityVO> listSeckillActivity(Goods goods);
 
+    IPage<SeckillActivityVO> querySeckillActivity(@Param("page") Page<SeckillActivityVO> page,@Param("goods") Goods goods);
+
     SeckillActivityDetailVO selectDetail(Integer seckillActivityId);
 }
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 b080dee..3ad615f 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
@@ -21,6 +21,7 @@
 import com.ruoyi.other.service.*;
 import com.ruoyi.other.vo.GoodsVO;
 import com.ruoyi.system.api.model.LoginUser;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -29,6 +30,7 @@
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -205,7 +207,6 @@
                     area.setProvinceCode(goodsArea.getProvinceCode());
                     area.setCityCode(goodsArea.getCityCode());
                     area.setDistrictsCode(goodsArea.getDistrictsCode());
-                    goodsAreaList1.add(area);
                 }
                 goodsAreaService.saveBatch(goodsAreaList1);
             }
@@ -241,7 +242,6 @@
                     area.setProvinceCode(goodsArea.getProvinceCode());
                     area.setCityCode(goodsArea.getCityCode());
                     area.setDistrictsCode(goodsArea.getDistrictsCode());
-                    goodsAreaList1.add(area);
                 }
                 goodsAreaService.updateBatchById(goodsAreaList1);
             }
@@ -251,19 +251,49 @@
     @Override
     public Goods getManageGoodsDetail(Long goodsId) {
         Goods goods = getById(goodsId);
+        if (goods == null){
+            return null;
+        }
         // 指定门店
         List<GoodsShop> goodsShops = goodsShopService.list(new LambdaQueryWrapper<GoodsShop>()
                 .eq(GoodsShop::getGoodsId, goodsId));
+
+        for (GoodsShop goodsShop : goodsShops) {
+            Shop shop = shopMapper.selectById(goodsShop.getShopId());
+            goodsShop.setShopName(shop.getName());
+            goodsShop.setOwnerName(shop.getShopManager());
+            goodsShop.setPhone(shop.getPhone());
+            goodsShop.setAddress(shop.getAddress());
+        }
         goods.setGoodsShopList(goodsShops);
 
         // 指定用户
         List<GoodsAppUser> goodsAppUserList = goodsAppUserService.list(new LambdaQueryWrapper<GoodsAppUser>()
                 .eq(GoodsAppUser::getGoodsId, goodsId));
+        List<Long> userIds = goodsAppUserList.stream().map(GoodsAppUser::getAppUserId).collect(Collectors.toList());
+        List<AppUser> appUsers = appUserClient.listByIds(userIds);
+        for (GoodsAppUser goodsAppUser : goodsAppUserList) {
+            appUsers.stream().filter(u -> u.getId().equals(goodsAppUser.getAppUserId())).findFirst().ifPresent( u -> {
+                goodsAppUser.setUserName(u.getName());
+                goodsAppUser.setPhone(u.getPhone());
+                VipSetting vipSetting = vipSettingService.getById(u.getVipId());
+                if (vipSetting != null){
+                    goodsAppUser.setVipName(vipSetting.getVipName());
+                    goodsAppUser.setVipId(u.getVipId());
+                }
+            });
+        }
+
         goods.setGoodsAppUserList(goodsAppUserList);
 
         // 会员价格
         List<GoodsVip> goodsVipList = goodsVipService.list(new LambdaQueryWrapper<GoodsVip>()
                 .eq(GoodsVip::getGoodsId, goodsId));
+        List<VipSetting> vipSettings = getVipSettings(goodsVipList.stream().map(GoodsVip::getVip));
+        goodsVipList.forEach(goodsArea -> vipSettings.stream()
+                .filter(vipSetting -> vipSetting.getId().equals(goodsArea.getVip()))
+                .findFirst().ifPresent( vipSetting -> goodsArea.setVipName(vipSetting.getVipName())));
+
         goods.setGoodsVipList(goodsVipList);
 
         // 特殊地区售价设置
@@ -276,12 +306,36 @@
 
         List<GoodsArea> goodsAreaList1 = new ArrayList<>();
         listMap.forEach((s, goodsAreas) -> {
-            GoodsArea goodsArea = goodsAreas.get(0);
-            goodsArea.setGoodsAreaList(goodsAreas);
-            goodsAreaList1.add(goodsArea);
+
+            List<VipSetting> vipSettings1 = getVipSettings(goodsAreas.stream().map(GoodsArea::getVip));
+            goodsAreas.forEach(goodsArea -> vipSettings1.stream()
+                    .filter(vipSetting -> vipSetting.getId().equals(goodsArea.getVip()))
+                    .findFirst().ifPresent( vipSetting -> goodsArea.setVipName(vipSetting.getVipName())));
+
+            GoodsArea goodsArea1 = getGoodsArea(goodsAreas);
+            goodsAreaList1.add(goodsArea1);
         });
 
         goods.setGoodsAreaList(goodsAreaList1);
         return goods;
     }
+
+    private List<VipSetting> getVipSettings(Stream<Integer> goodsVipList) {
+        List<Integer> vipIds = goodsVipList.collect(Collectors.toList());
+        return vipSettingService.listByIds(vipIds);
+    }
+
+    @NotNull
+    private static GoodsArea getGoodsArea(List<GoodsArea> goodsAreas) {
+        GoodsArea goodsArea = goodsAreas.get(0);
+        GoodsArea goodsArea1 = new GoodsArea();
+        goodsArea1.setProvinceCode(goodsArea.getProvinceCode());
+        goodsArea1.setCityCode(goodsArea.getCityCode());
+        goodsArea1.setDistrictsCode(goodsArea.getDistrictsCode());
+        goodsArea1.setProvince(goodsArea.getProvince());
+        goodsArea1.setCity(goodsArea.getCity());
+        goodsArea1.setDistricts(goodsArea.getDistricts());
+        goodsArea1.setGoodsAreaList(goodsAreas);
+        return goodsArea1;
+    }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
index 1a6cd12..ab1b18b 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/SeckillActivityInfoServiceImpl.java
@@ -46,7 +46,7 @@
 
     @Override
     public List<SeckillActivityVO> listSeckillActivity(Goods goods) {
-        LoginUser loginUserApplet = tokenService.getLoginUserApplet();
+        LoginUser loginUserApplet = tokenService.getLoginUser();
         AppUser appUser = appUserClient.getAppUserById(loginUserApplet.getUserid());
         goods.setVipId(appUser.getVipId());
         return seckillActivityInfoMapper.listSeckillActivity(goods);
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);
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
index da58bb9..303a37e 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/GoodsMapper.xml
@@ -33,7 +33,9 @@
             tg.shop_cost,
             tg.`status`,
             tg.purchase_limit,
-            tg.sale_num
+            tg.sale_num,
+            tg.cash_payment,
+            tg.point_payment
         FROM
             t_goods tg
                 LEFT JOIN t_goods_category tgc ON tg.goods_category_id = tgc.id
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
index 9420ce5..bf9639e 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml
@@ -46,4 +46,29 @@
                 LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id
         WHERE tsai.id = #{seckillActivityId} AND tsai.del_flag = 0
     </select>
+    <select id="querySeckillActivity" resultType="com.ruoyi.other.vo.SeckillActivityVO">
+        SELECT
+        tsai.id,
+        tg.`name`,
+        tg.introduction,
+        tg.home_page_picture,
+        tg.original_price,
+        tgs.selling_price,
+        tg.sale_num,
+        tsai.start_time
+        FROM
+        t_seckill_activity_info tsai
+        LEFT JOIN t_goods tg ON tsai.good_id = tg.id
+        LEFT JOIN t_goods_seckill tgs ON tgs.seckill_activity_info_id = tsai.id
+        WHERE tsai.end_time >= NOW() AND tsai.del_flag = 0
+        <if test="goods.name != null and goods.name != ''">
+            AND tg.`name` LIKE concat('%',#{goods.name},'%')
+        </if>
+        <if test="goods.goodsCategoryId != null">
+            AND tg.goods_category_id = #{goods.goodsCategoryId}
+        </if>
+        <if test="goods.vipId != null">
+            AND find_in_set(#{goods.vipId},tgs.vip) > 0
+        </if>
+    </select>
 </mapper>
\ No newline at end of file

--
Gitblit v1.7.1