From f6e2f4ba4093e401475398e1bd3f7c2e8165b3cb Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 18 十二月 2024 10:30:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java            |    6 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/SeckillActivityInfo.java               |    3 
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml                  |   33 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/Goods.java                             |    6 
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java              |   23 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsBargainPriceService.java             |   21 +
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/SeckillActivityInfoMapper.xml                   |   39 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java                  |    5 
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java                        |   16 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java               |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/SeckillActivityInfoController.java     |   20 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopBalanceStatementService.java          |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java    |   81 +++++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/BalanceChangeRecordEX.java              |   22 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopBalanceStatementController.java    |   42 +++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java |   49 +++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopWithdraw.java                      |    4 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java       |   28 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopCommissionStatisticsVO.java                |   40 ++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java            |   60 ++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/AddGoodsBargainPriceVo.java                    |   21 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/BalanceChangeRecordController.java |  127 +++-----
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/GoodsBargainPriceInfo.java                     |   25 +
 ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopPointMapper.xml                             |    2 
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java                |  116 ++++---
 25 files changed, 658 insertions(+), 137 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
index 1824fcd..5479c1b 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/AppUser.java
@@ -171,6 +171,22 @@
     @TableField("total_distribution_amount")
     private BigDecimal totalDistributionAmount;
 
+    @ApiModelProperty(value = "拉新人积分总数")
+    @TableField("total_invite_point")
+    private Integer totalInvitePoint;
+
+    @ApiModelProperty(value = "注册积分总数")
+    @TableField("total_register_point")
+    private Integer totalRegisterPoint;
+
+    @ApiModelProperty(value = "做工积分总数")
+    @TableField("total_work_point")
+    private Integer totalWorkPoint;
+
+    @ApiModelProperty(value = "业绩积分总数")
+    @TableField("total_performance_point")
+    private Integer totalPerformancePoint;
+
 
     @ApiModelProperty(value = "剩余积分")
     @TableField("lave_point")
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 e05c57d..45e60a1 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,6 +139,12 @@
     @ApiModelProperty(value = "地区价格")
     private List<GoodsArea> goodsAreaList;
 
+    @TableField(exist = false)
+    private String categoryName;
+
+    @TableField(exist = false)
+    private Integer showStatus;
+
     public String getIdStr() {
         return String.valueOf(id);
     }
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 a749c31..18c6b4a 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
@@ -73,5 +73,8 @@
     @TableField(exist = false)
     private List<GoodsSeckill> goodsSeckills;
 
+    @TableField(exist = false)
+    private Goods goods;
+
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
index 2e8da40..526c5c4 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopBalanceStatement.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ruoyi.common.core.annotation.Excel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -36,8 +37,9 @@
     @TableField("shop_id")
     private Integer shopId;
 
-    @ApiModelProperty(value = "变动类型(1=返佣,2=提现)")
+    @ApiModelProperty(value = "变动类型(1=门店分佣,2=下级门店分佣,3=门店服务费)")
     @TableField("type")
+    @Excel(name = "变更类型",readConverterExp = "1=门店分佣,2=下级门店分佣,3=门店服务费")
     private Integer type;
 
     @ApiModelProperty(value = "历史余额")
@@ -48,8 +50,14 @@
     @TableField("variable_amount")
     private BigDecimal variableAmount;
 
+    @ApiModelProperty(value = "变动后余额")
+    @TableField("balance")
+    @Excel(name = "变更后数量")
+    private BigDecimal balance;
+
     @ApiModelProperty(value = "变动时间")
     @TableField("create_time")
+    @Excel(name = "变更时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
 
     @ApiModelProperty(value = "变动用户id")
@@ -60,5 +68,18 @@
     @TableField("object_id")
     private Long objectId;
 
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    @Excel(name = "门店名称")
+    private String shopName;
 
+    @ApiModelProperty(value = "店长名称")
+    @TableField(exist = false)
+    @Excel(name = "店长名称")
+    private String shopManagerName;
+
+    @ApiModelProperty(value = "联系电话")
+    @TableField(exist = false)
+    @Excel(name = "联系电话")
+    private String phone;
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopWithdraw.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopWithdraw.java
index 4f31bf8..3807f84 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopWithdraw.java
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/domain/ShopWithdraw.java
@@ -78,5 +78,9 @@
     @TableField("create_user_id")
     private Long createUserId;
 
+    @ApiModelProperty(value = "门店名称")
+    @TableField(exist = false)
+    private String shopName;
+
 
 }
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 5c5a224..e43b425 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
@@ -3,17 +3,14 @@
 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.excel.BalanceChangeRecordEX;
 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 io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -52,77 +49,63 @@
 		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("/commissionStatistics")
+	@ApiOperation(value = "用户分佣统计", tags = "管理后台-财务统计-用户分佣统计")
+	public R<CommissionStatistics> commissionStatistics(@ApiParam("页码") @RequestParam Integer pageNum,
+														@ApiParam("每一页数据大小") Integer pageSize,
+														BalanceChangeRecord balanceChangeRecord) {
+		CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(pageNum, pageSize), balanceChangeRecord);
+		return R.ok(commissionStatistics1);
+	}
 //
 //	/**
 //	 * 导出用户分佣统计
 //	 */
-//	@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, "用户分佣统计");
-//	}
+	@GetMapping("/commissionExport")
+	@ApiOperation(value = "用户分佣统计导出", tags = "管理后台-财务统计-用户分佣统计")
+	public void commissionExport(HttpServletResponse response, BalanceChangeRecord balanceChangeRecord) {
+		CommissionStatistics commissionStatistics1 = balanceChangeRecordService.commissionStatistics(Page.of(1, Integer.MAX_VALUE), balanceChangeRecord);
+		IPage<BalanceChangeRecord> userPointPage = commissionStatistics1.getUserPointPage();
+		List<BalanceChangeRecord> userPointList = userPointPage.getRecords();
+		List<BalanceChangeRecordEX> userPointExList = new ArrayList<>();
+		for (BalanceChangeRecord balanceChangeRecord1 : userPointList) {
+			BalanceChangeRecordEX balanceChangeRecordEX = new BalanceChangeRecordEX();
+			balanceChangeRecordEX.setUserName(balanceChangeRecord1.getUserName());
+			balanceChangeRecordEX.setPhone(balanceChangeRecord1.getUserPhone());
+			balanceChangeRecordEX.setChangeTime(balanceChangeRecord1.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+			balanceChangeRecordEX.setChangeNum(balanceChangeRecord1.getAfterAmount().toString());
+			Integer type = balanceChangeRecord1.getChangeType();
+			// 类型:1充值2提现3红包4分佣5商城购物6订单取消回退
+			switch (type) {
+				case 1:
+					balanceChangeRecordEX.setType("充值");
+					break;
+				case 2:
+					balanceChangeRecordEX.setType("提现");
+					break;
+				case 3:
+					balanceChangeRecordEX.setType("红包");
+					break;
+				case 4:
+					balanceChangeRecordEX.setType("分佣");
+					break;
+				case 5:
+					balanceChangeRecordEX.setType("商城购物");
+					break;
+				case 6:
+					balanceChangeRecordEX.setType("订单取消回退");
+					break;
+				default:
+					balanceChangeRecordEX.setType("未知积分");
+			}
+			userPointExList.add(balanceChangeRecordEX);
+		}
+		ExcelUtil<BalanceChangeRecordEX> util = new ExcelUtil<>(BalanceChangeRecordEX.class);
+		util.exportExcel(response, userPointExList, "用户分佣统计");
+	}
 
 	
 	
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/BalanceChangeRecordEX.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/BalanceChangeRecordEX.java
new file mode 100644
index 0000000..a81fee3
--- /dev/null
+++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/excel/BalanceChangeRecordEX.java
@@ -0,0 +1,22 @@
+package com.ruoyi.account.excel;
+
+import com.ruoyi.common.core.annotation.Excel;
+import lombok.Data;
+
+@Data
+public class BalanceChangeRecordEX {
+    @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/vo/CommissionStatistics.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/vo/CommissionStatistics.java
index 7233cd7..24f543e 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
@@ -14,7 +14,7 @@
 public class CommissionStatistics {
 
     @ApiModelProperty(value = "分佣总计")
-    private Integer totalCommission;
+    private BigDecimal totalCommission;
 
     @ApiModelProperty(value = "分页数据", required = true)
     private IPage<BalanceChangeRecord> userPointPage;
@@ -22,6 +22,7 @@
     public CommissionStatistics() {
     }
     public CommissionStatistics(BigDecimal totalCommission, Page<BalanceChangeRecord> changeRecordPage) {
-
+        this.totalCommission = totalCommission;
+        this.userPointPage = changeRecordPage;
     }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
index 12d044e..952197d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsBargainPriceController.java
@@ -13,12 +13,12 @@
 import com.ruoyi.other.api.domain.*;
 import com.ruoyi.other.api.vo.GetGoodsBargainPrice;
 import com.ruoyi.other.service.*;
+import com.ruoyi.other.vo.AddGoodsBargainPriceVo;
+import com.ruoyi.other.vo.GoodsBargainPriceInfo;
 import com.ruoyi.other.vo.ShopGoodsList;
 import com.ruoyi.other.vo.ShopGoodsListVo;
 import com.ruoyi.system.api.model.LoginUser;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import io.swagger.models.auth.In;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
@@ -197,11 +197,29 @@
 
         return R.ok(page);
     }
-
-
     
     
     
     
+    @ResponseBody
+    @GetMapping("/getGoodsBargainPriceInfo/{id}")
+    @ApiOperation(value = "获取商品特殊售价详情", tags = {"门店后台-商品管理"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "商品id", name = "id", required = true, dataType = "int"),
+    })
+    public R<GoodsBargainPriceInfo> getGoodsBargainPriceInfo(@PathVariable("id") Integer id){
+        GoodsBargainPriceInfo goodsBargainPriceInfo = goodsBargainPriceService.getGoodsBargainPriceInfo(id);
+        return R.ok(goodsBargainPriceInfo);
+    }
+    
+    
+    
+    
+    @ResponseBody
+    @GetMapping("/addGoodsBargainPrice/{id}")
+    @ApiOperation(value = "保存商品特殊售价", tags = {"门店后台-商品管理"})
+    public R addGoodsBargainPrice(@RequestBody AddGoodsBargainPriceVo vo){
+        return goodsBargainPriceService.addGoodsBargainPrice(vo);
+    }
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java
index 00f0857..b435e5c 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/GoodsShopController.java
@@ -72,7 +72,7 @@
 	}
 	
 	
-	
+
 	
 }
 
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 07e9282..50b09d0 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
@@ -14,6 +14,7 @@
 import com.ruoyi.other.api.vo.GetSeckillActivityInfo;
 import com.ruoyi.other.mapper.SeckillActivityInfoMapper;
 import com.ruoyi.other.service.GoodsSeckillService;
+import com.ruoyi.other.service.GoodsService;
 import com.ruoyi.other.service.SeckillActivityInfoService;
 import com.ruoyi.other.vo.SeckillActivityDetailVO;
 import com.ruoyi.other.vo.SeckillActivityVO;
@@ -23,6 +24,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.time.LocalDateTime;
 import java.time.ZoneOffset;
 import java.util.List;
 
@@ -46,6 +48,9 @@
 
     @Resource
     private SeckillActivityInfoMapper seckillActivityInfoMapper;
+
+    @Resource
+    private GoodsService goodsService;
     
     
     
@@ -101,6 +106,18 @@
                                                  Goods goods)
     {
         IPage<SeckillActivityVO> IPage = seckillActivityInfoMapper.querySeckillActivity(Page.of(pageNum, pageSize), goods);
+        for (SeckillActivityVO record : IPage.getRecords()) {
+            LocalDateTime startTime = record.getStartTime();
+            LocalDateTime now = LocalDateTime.now();
+            LocalDateTime endTime = record.getEndTime();
+            if (endTime.isBefore(now)){
+                record.setStatus(3); //已结束
+            }else if (startTime.isBefore(now)){
+                record.setStatus(2); // 已开始
+            }else {
+                record.setStatus(1); // 未开始
+            }
+        }
         return R.ok(IPage);
     }
 
@@ -148,6 +165,9 @@
         List<GoodsSeckill> goodsSeckills = goodsSeckillService.list(new LambdaQueryWrapper<GoodsSeckill>()
                 .eq(GoodsSeckill::getSeckillActivityInfoId, id));
         seckillActivityInfo.setGoodsSeckills(goodsSeckills);
+        Integer goodId = seckillActivityInfo.getGoodId();
+        Goods goods = goodsService.getById(goodId);
+        seckillActivityInfo.setGoods(goods);
         return R.ok(seckillActivityInfo);
     }
 
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 9ee1f9e..d03e6f8 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
@@ -1,8 +1,23 @@
 package com.ruoyi.other.controller;
 
 
+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.utils.poi.ExcelUtil;
+import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.service.ShopBalanceStatementService;
+import com.ruoyi.other.vo.ShopCommissionStatisticsVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * <p>
@@ -14,7 +29,34 @@
  */
 @RestController
 @RequestMapping("/shop-balance-statement")
+@Api(tags = "管理后台-财务统计-门店分佣统计")
 public class ShopBalanceStatementController {
+    @Resource
+    private ShopBalanceStatementService shopBalanceStatementService;
+
+    /**
+     * 门店分佣统计
+     */
+    @GetMapping("/commissionStatistics")
+    @ApiOperation("门店分佣统计")
+    public R<ShopCommissionStatisticsVO> shopCommissionStatistics(@ApiParam("页码") @RequestParam Integer pageNum,
+                                                                  @ApiParam("每一页数据大小") Integer pageSize,
+                                                                  ShopBalanceStatement shopBalanceStatement){
+        ShopCommissionStatisticsVO shopCommissionStatisticsVO = shopBalanceStatementService.shopCommissionStatistics(Page.of(pageNum, pageSize), shopBalanceStatement);
+        return R.ok(shopCommissionStatisticsVO);
+    }
+
+    /**
+     * 导出门店分佣统计
+     */
+    @GetMapping("/export")
+    @ApiOperation("导出门店分佣统计")
+    public void export(HttpServletResponse response , ShopBalanceStatement shopBalanceStatement){
+        ShopCommissionStatisticsVO shopCommissionStatisticsVO = shopBalanceStatementService.shopCommissionStatistics(Page.of(1, Integer.MAX_VALUE), shopBalanceStatement);
+        IPage<ShopBalanceStatement> statementIPage = shopCommissionStatisticsVO.getStatementIPage();
+        ExcelUtil<ShopBalanceStatement> util = new ExcelUtil<>(ShopBalanceStatement.class);
+        util.exportExcel(response, statementIPage.getRecords(), "用户积分统计");
+    }
 
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
index 1c04ba7..4bdf64d 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
@@ -1,8 +1,26 @@
 package com.ruoyi.other.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.common.core.domain.R;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.ShopWithdraw;
+import com.ruoyi.other.service.ShopService;
+import com.ruoyi.other.service.ShopWithdrawService;
+import com.ruoyi.system.api.model.LoginUser;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -14,7 +32,49 @@
  */
 @RestController
 @RequestMapping("/shop-withdraw")
+@Api(tags = {"管理后台-门店管理-提现管理"})
 public class ShopWithdrawController {
 
+    @Resource
+    private ShopWithdrawService shopWithdrawService;
+    @Resource
+    private ShopService shopService;
+    @Resource
+    private TokenService tokenService;
+
+    /**
+     * 提现申请列表
+     */
+    @GetMapping("/list")
+    @ApiOperation("提现申请列表")
+    public R<IPage<ShopWithdraw>> list(@ApiParam("页码") @RequestParam Integer pageNum,
+                         @ApiParam("每一页数据大小") Integer pageSize,
+                         ShopWithdraw shopWithdraw) {
+
+        Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
+                .like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), ShopWithdraw::getShopName, shopWithdraw.getShopName()));
+        page.getRecords().forEach(item-> item.setShopName(shopService.getById(item.getShopId()).getName()));
+        return R.ok(page);
+    }
+
+    /**
+     * 审核
+     */
+    @RequestMapping("/audit")
+    @ApiOperation("审核")
+    public R<Void> audit(ShopWithdraw shopWithdraw) {
+        LoginUser loginUser = tokenService.getLoginUser();
+        ShopWithdraw shopWithdraw1 = shopWithdrawService.getById(shopWithdraw.getId());
+        shopWithdraw1.setAuditStatus(shopWithdraw.getAuditStatus());
+        shopWithdraw1.setAuditUserId(loginUser.getUserid());
+        shopWithdraw1.setAuditTime(LocalDateTime.now());
+        shopWithdraw1.setAuditMsg(shopWithdraw.getAuditMsg());
+        shopWithdrawService.updateById(shopWithdraw1);
+        return R.ok();
+    }
+
+
+
+
 }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
index 3363860..4b0e3c4 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/mapper/ShopBalanceStatementMapper.java
@@ -1,7 +1,11 @@
 package com.ruoyi.other.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +16,5 @@
  * @since 2024-11-20
  */
 public interface ShopBalanceStatementMapper extends BaseMapper<ShopBalanceStatement> {
-
+    List<ShopBalanceStatement> findLatestChangeByType(ShopBalanceStatement shopBalanceStatement);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsBargainPriceService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsBargainPriceService.java
index b6a4b60..42d2b33 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsBargainPriceService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/GoodsBargainPriceService.java
@@ -1,7 +1,12 @@
 package com.ruoyi.other.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.other.api.domain.GoodsBargainPrice;
+import com.ruoyi.other.vo.AddGoodsBargainPriceVo;
+import com.ruoyi.other.vo.GoodsBargainPriceInfo;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
 
 /**
  * <p>
@@ -12,5 +17,21 @@
  * @since 2024-11-20
  */
 public interface GoodsBargainPriceService extends IService<GoodsBargainPrice> {
+	
+	
+	/**
+	 * 获取商品特殊售价明细
+	 * @param id
+	 * @return
+	 */
+	GoodsBargainPriceInfo getGoodsBargainPriceInfo(Integer id);
+	
+	
+	/**
+	 * 提交特殊售价申请
+	 * @param vo
+	 * @return
+	 */
+	R addGoodsBargainPrice(AddGoodsBargainPriceVo vo);
 
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopBalanceStatementService.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopBalanceStatementService.java
index 5328644..ff95d38 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopBalanceStatementService.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/ShopBalanceStatementService.java
@@ -1,7 +1,9 @@
 package com.ruoyi.other.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import com.ruoyi.other.vo.ShopCommissionStatisticsVO;
 
 /**
  * <p>
@@ -12,5 +14,5 @@
  * @since 2024-11-20
  */
 public interface ShopBalanceStatementService extends IService<ShopBalanceStatement> {
-
+    ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement);
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java
index bf7bf04..362f771 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsBargainPriceServiceImpl.java
@@ -1,10 +1,23 @@
 package com.ruoyi.other.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.security.service.TokenService;
+import com.ruoyi.other.api.domain.GoodsBargainPriceDetail;
 import com.ruoyi.other.mapper.GoodsBargainPriceMapper;
 import com.ruoyi.other.api.domain.GoodsBargainPrice;
+import com.ruoyi.other.service.GoodsBargainPriceDetailService;
 import com.ruoyi.other.service.GoodsBargainPriceService;
+import com.ruoyi.other.vo.AddGoodsBargainPriceVo;
+import com.ruoyi.other.vo.GoodsBargainPriceInfo;
+import com.ruoyi.system.api.domain.SysUser;
+import com.ruoyi.system.api.feignClient.SysUserClient;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * <p>
@@ -16,5 +29,71 @@
  */
 @Service
 public class GoodsBargainPriceServiceImpl extends ServiceImpl<GoodsBargainPriceMapper, GoodsBargainPrice> implements GoodsBargainPriceService {
-
+	
+	@Resource
+	private TokenService tokenService;
+	
+	@Resource
+	private SysUserClient sysUserClient;
+	
+	@Resource
+	private GoodsBargainPriceDetailService goodsBargainPriceDetailService;
+	
+	
+	
+	
+	/**
+	 * 获取商品特殊售价明细
+	 * @param id
+	 * @return
+	 */
+	@Override
+	public GoodsBargainPriceInfo getGoodsBargainPriceInfo(Integer id) {
+		Long userid = tokenService.getLoginUser().getUserid();
+		SysUser sysUser = sysUserClient.getSysUser(userid).getData();
+		GoodsBargainPrice bargainPrice = this.getOne(new LambdaQueryWrapper<GoodsBargainPrice>().eq(GoodsBargainPrice::getShopId, sysUser.getObjectId())
+				.eq(GoodsBargainPrice::getGoodsId, id).eq(GoodsBargainPrice::getDelFlag, 0).last(" order by create_time desc limit 0, 1"));
+		if(null == bargainPrice){
+			return null;
+		}
+		List<GoodsBargainPriceDetail> list = goodsBargainPriceDetailService.list(new LambdaQueryWrapper<GoodsBargainPriceDetail>().eq(GoodsBargainPriceDetail::getGoodsBargainPriceId, bargainPrice.getId()));
+		GoodsBargainPriceInfo info = new GoodsBargainPriceInfo();
+		info.setId(bargainPrice.getId().toString());
+		info.setList(list);
+		info.setAuditMsg(bargainPrice.getAuditMsg());
+		info.setAuditStatus(bargainPrice.getAuditStatus());
+		return info;
+	}
+	
+	
+	/**
+	 * 提交特殊售价申请
+	 * @param vo
+	 * @return
+	 */
+	@Override
+	public R addGoodsBargainPrice(AddGoodsBargainPriceVo vo) {
+		Long userid = tokenService.getLoginUser().getUserid();
+		SysUser sysUser = sysUserClient.getSysUser(userid).getData();
+		GoodsBargainPrice bargainPrice = this.getOne(new LambdaQueryWrapper<GoodsBargainPrice>().eq(GoodsBargainPrice::getShopId, sysUser.getObjectId())
+				.eq(GoodsBargainPrice::getGoodsId, vo.getGoodsId()).eq(GoodsBargainPrice::getDelFlag, 0).last(" order by create_time desc limit 0, 1"));
+		if(null != bargainPrice && 1 == bargainPrice.getAuditStatus()){
+			return R.fail("特价申请正在审核中");
+		}
+		bargainPrice = new GoodsBargainPrice();
+		bargainPrice.setShopId(sysUser.getObjectId());
+		bargainPrice.setGoodsId(vo.getGoodsId());
+		bargainPrice.setAuditStatus(1);
+		bargainPrice.setDelFlag(0);
+		bargainPrice.setCreateTime(LocalDateTime.now());
+		bargainPrice.setCreateUserId(userid);
+		this.updateById(bargainPrice);
+		//添加明细
+		List<GoodsBargainPriceDetail> list = vo.getList();
+		for (GoodsBargainPriceDetail goodsBargainPriceDetail : list) {
+			goodsBargainPriceDetail.setGoodsBargainPriceId(bargainPrice.getId());
+		}
+		goodsBargainPriceDetailService.saveBatch(list);
+		return R.ok();
+	}
 }
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 3ad615f..a45c0d6 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
@@ -28,7 +28,10 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -169,38 +172,55 @@
             if (CollectionUtils.isEmpty(goodsShopList)){
                 throw new NullPointerException("请选择指定门店");
             }
-            for (GoodsShop goodsShop : goodsShopList) {
-                goodsShop.setGoodsId(goods.getId());
-                goodsShop.setId(null);
-            }
-            goodsShopService.saveBatch(goodsShopList);
+            saveGoodsShopList(goodsShopList, goods.getId());
         }
 
         // 指定用户
         List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
         if (!CollectionUtils.isEmpty(goodsAppUserList)){
-            for (GoodsAppUser goodsAppUser : goodsAppUserList) {
-                goodsAppUser.setId(null );
-                goodsAppUser.setGoodsId(goods.getId());
-            }
-            goodsAppUserService.saveBatch(goodsAppUserList);
+            saveGoodsAppUserList(goodsAppUserList, goods.getId());
         }
 
         // 会员价格配置
         List<GoodsVip> goodsVipList = goods.getGoodsVipList();
-        for (GoodsVip goodsVip : goodsVipList) {
-            goodsVip.setId(null);
-            goodsVip.setGoodsId(goods.getId());
-        }
-        goodsVipService.saveBatch(goodsVipList);
+        saveGoodsVipList(goodsVipList, goods.getId());
 
         // 特殊地区售价设置
         List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
         if (!CollectionUtils.isEmpty(goodsAreaList)){
+            saveGoodsAreaList(goodsAreaList, goods.getId());
+        }
+
+    }
+
+    @Override
+    public void updateManageGoods(Goods goods) {
+        goodsMapper.updateById(goods);
+        // 指定门店
+        List<GoodsShop> goodsShopList = goods.getGoodsShopList();
+        saveGoodsShopList(goodsShopList, goods.getId());
+
+        // 指定用户
+        List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
+        saveGoodsAppUserList(goodsAppUserList, goods.getId());
+
+        // 会员价格配置
+        List<GoodsVip> goodsVipList = goods.getGoodsVipList();
+        saveGoodsVipList(goodsVipList, goods.getId());
+
+        // 特殊地区售价设置
+        List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
+        saveGoodsAreaList(goodsAreaList, goods.getId());
+    }
+
+    private void saveGoodsAreaList(List<GoodsArea> goodsAreaList, Integer id) {
+        goodsAreaService.remove(new LambdaQueryWrapper<GoodsArea>()
+                .eq(GoodsArea::getGoodsId, id));
+        if (!CollectionUtils.isEmpty(goodsAreaList)){
             for (GoodsArea goodsArea : goodsAreaList) {
                 List<GoodsArea> goodsAreaList1 = goodsArea.getGoodsAreaList();
                 for (GoodsArea area : goodsAreaList1) {
-                    area.setGoodsId(goods.getId());
+                    area.setGoodsId(id);
                     area.setProvince(goodsArea.getProvince());
                     area.setCity(goodsArea.getCity());
                     area.setDistricts(goodsArea.getDistricts());
@@ -211,41 +231,40 @@
                 goodsAreaService.saveBatch(goodsAreaList1);
             }
         }
-
     }
 
-    @Override
-    public void updateManageGoods(Goods goods) {
-        goodsMapper.updateById(goods);
-        // 指定门店
-        List<GoodsShop> goodsShopList = goods.getGoodsShopList();
-        goodsShopService.updateBatchById(goodsShopList);
+    private void saveGoodsVipList(List<GoodsVip> goodsVipList, Integer id) {
+        goodsVipService.remove(new LambdaQueryWrapper<GoodsVip>()
+                .eq(GoodsVip::getGoodsId, id));
+        goodsVipList.forEach(item -> {
+            item.setId(null);
+            item.setGoodsId(id);
+        });
+        goodsVipService.saveBatch(goodsVipList);
+    }
 
-        // 指定用户
-        List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
-        goodsAppUserService.updateBatchById(goodsAppUserList);
-
-        // 会员价格配置
-        List<GoodsVip> goodsVipList = goods.getGoodsVipList();
-        goodsVipService.updateBatchById(goodsVipList);
-
-        // 特殊地区售价设置
-        List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
-        if (!CollectionUtils.isEmpty(goodsAreaList)){
-            for (GoodsArea goodsArea : goodsAreaList) {
-                List<GoodsArea> goodsAreaList1 = goodsArea.getGoodsAreaList();
-                for (GoodsArea area : goodsAreaList1) {
-                    area.setGoodsId(goods.getId());
-                    area.setProvince(goodsArea.getProvince());
-                    area.setCity(goodsArea.getCity());
-                    area.setDistricts(goodsArea.getDistricts());
-                    area.setProvinceCode(goodsArea.getProvinceCode());
-                    area.setCityCode(goodsArea.getCityCode());
-                    area.setDistrictsCode(goodsArea.getDistrictsCode());
-                }
-                goodsAreaService.updateBatchById(goodsAreaList1);
+    private void saveGoodsAppUserList(List<GoodsAppUser> goodsAppUserList, Integer id) {
+        goodsAppUserService.remove(new LambdaQueryWrapper<GoodsAppUser>()
+                .eq(GoodsAppUser::getGoodsId, id));
+        if (!CollectionUtils.isEmpty(goodsAppUserList)){
+            for (GoodsAppUser goodsAppUser : goodsAppUserList) {
+                goodsAppUser.setId(null );
+                goodsAppUser.setGoodsId(id);
             }
         }
+        goodsAppUserService.saveBatch(goodsAppUserList);
+    }
+
+    private void saveGoodsShopList(List<GoodsShop> goodsShopList, Integer goodsId) {
+        goodsShopService.remove(new LambdaQueryWrapper<GoodsShop>()
+                .eq(GoodsShop::getGoodsId, goodsId));
+        if (!CollectionUtils.isEmpty(goodsShopList)){
+            for (GoodsShop goodsShop : goodsShopList) {
+                goodsShop.setGoodsId(goodsId);
+                goodsShop.setId(null);
+            }
+        }
+        goodsShopService.saveBatch(goodsShopList);
     }
 
     @Override
@@ -322,6 +341,9 @@
 
     private List<VipSetting> getVipSettings(Stream<Integer> goodsVipList) {
         List<Integer> vipIds = goodsVipList.collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(vipIds)){
+            return new ArrayList<>();
+        }
         return vipSettingService.listByIds(vipIds);
     }
 
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
index 74bf2d2..5e53178 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/ShopBalanceStatementServiceImpl.java
@@ -1,10 +1,19 @@
 package com.ruoyi.other.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.other.api.domain.Shop;
 import com.ruoyi.other.mapper.ShopBalanceStatementMapper;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
 import com.ruoyi.other.service.ShopBalanceStatementService;
+import com.ruoyi.other.service.ShopService;
+import com.ruoyi.other.vo.ShopCommissionStatisticsVO;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -16,5 +25,45 @@
  */
 @Service
 public class ShopBalanceStatementServiceImpl extends ServiceImpl<ShopBalanceStatementMapper, ShopBalanceStatement> implements ShopBalanceStatementService {
+    @Resource
+    private ShopBalanceStatementMapper shopBalanceStatementMapper;
+    @Resource
+    private ShopService shopService;
 
+
+    @Override
+    public ShopCommissionStatisticsVO shopCommissionStatistics(IPage<ShopBalanceStatement> page, ShopBalanceStatement shopBalanceStatement) {
+        List<ShopBalanceStatement> latestChangeByType = shopBalanceStatementMapper.findLatestChangeByType(shopBalanceStatement);
+        ShopCommissionStatisticsVO shopCommissionStatisticsVO = new ShopCommissionStatisticsVO();
+        for (ShopBalanceStatement sp : latestChangeByType) {
+            switch (sp.getType()) {
+                case 1:
+                    shopCommissionStatisticsVO.setTotalCommission(sp.getBalance());
+                    break;
+                case 2:
+                    shopCommissionStatisticsVO.setTotalSubordinateCommission(sp.getBalance());
+                    break;
+                case 3:
+                    shopCommissionStatisticsVO.setTotalServiceCharge(sp.getBalance());
+                    break;
+           }
+        }
+        shopCommissionStatisticsVO.setTotalAmount(shopCommissionStatisticsVO.getTotalCommission()
+                .add(shopCommissionStatisticsVO.getTotalSubordinateCommission())
+                .add(shopCommissionStatisticsVO.getTotalServiceCharge()));
+
+        IPage<ShopBalanceStatement> statementIPage = page(page, new LambdaQueryWrapper<ShopBalanceStatement>());
+        List<ShopBalanceStatement> records = statementIPage.getRecords();
+        List<Integer> shopIds = records.stream().map(ShopBalanceStatement::getShopId).collect(Collectors.toList());
+        List<Shop> shopList = shopService.listByIds(shopIds);
+        records.forEach(st -> {
+            shopList.stream().filter(shop -> shop.getId().equals(st.getShopId())).findFirst().ifPresent(shop -> {
+                st.setShopName(shop.getName());
+                st.setShopManagerName(shop.getShopManager());
+                st.setPhone(shop.getPhone());
+            });
+        });
+        shopCommissionStatisticsVO.setStatementIPage(statementIPage);
+        return shopCommissionStatisticsVO;
+    }
 }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/AddGoodsBargainPriceVo.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/AddGoodsBargainPriceVo.java
new file mode 100644
index 0000000..8e79255
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/AddGoodsBargainPriceVo.java
@@ -0,0 +1,21 @@
+package com.ruoyi.other.vo;
+
+import com.ruoyi.other.api.domain.GoodsBargainPriceDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/17 16:28
+ */
+@Data
+@ApiModel
+public class AddGoodsBargainPriceVo {
+	@ApiModelProperty("商品id")
+	private Integer goodsId;
+	@ApiModelProperty("特殊售价")
+	private List<GoodsBargainPriceDetail> list;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/GoodsBargainPriceInfo.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/GoodsBargainPriceInfo.java
new file mode 100644
index 0000000..6b13165
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/GoodsBargainPriceInfo.java
@@ -0,0 +1,25 @@
+package com.ruoyi.other.vo;
+
+import com.ruoyi.other.api.domain.GoodsBargainPriceDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/12/17 16:14
+ */
+@Data
+@ApiModel
+public class GoodsBargainPriceInfo {
+	@ApiModelProperty("数据id")
+	private String id;
+	@ApiModelProperty("审核状态(0=待审核,1=审核通过,2=审核失败)")
+	private Integer auditStatus;
+	@ApiModelProperty("审核意见")
+	private String auditMsg;
+	@ApiModelProperty("特殊售价")
+	private List<GoodsBargainPriceDetail> list;
+}
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopCommissionStatisticsVO.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopCommissionStatisticsVO.java
new file mode 100644
index 0000000..38fa003
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/vo/ShopCommissionStatisticsVO.java
@@ -0,0 +1,40 @@
+package com.ruoyi.other.vo;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.ruoyi.other.api.domain.ShopBalanceStatement;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("门店分佣统计")
+public class ShopCommissionStatisticsVO {
+    /**
+     * 总金额
+     */
+    @ApiModelProperty(value = "总金额")
+    private BigDecimal totalAmount;
+
+    /**
+     * 分佣总金额
+     */
+    @ApiModelProperty(value = "分佣总金额")
+    private BigDecimal totalCommission;
+
+    /**
+     * 服务费总计
+     */
+    @ApiModelProperty(value = "服务费总计")
+    private BigDecimal totalServiceCharge;
+
+    /**
+     * 下级门店分佣总金额
+     */
+    @ApiModelProperty(value = "下级门店分佣总金额")
+    private BigDecimal totalSubordinateCommission;
+
+    private IPage<ShopBalanceStatement> statementIPage;
+}
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 bf9639e..c37a330 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
@@ -49,24 +49,53 @@
     <select id="querySeckillActivity" resultType="com.ruoyi.other.vo.SeckillActivityVO">
         SELECT
         tsai.id,
-        tg.`name`,
+        tg.`name` goodsName,
         tg.introduction,
+        tgc.`name` goodsCategoryName,
+        tg.operating_cost,
+        tg.shop_cost,
+        tg.purchase_limit maxNum,
         tg.home_page_picture,
         tg.original_price,
-        tgs.selling_price,
         tg.sale_num,
-        tsai.start_time
+        tg.`type` goodsType,
+        tsai.start_time,
+        tsai.end_time,
+        tsai.is_shelves showStatus
         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
+        LEFT JOIN t_goods_category tgc ON tgc.id = tg.goods_category_id
+        WHERE 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.categoryName != null and goods.categoryName != ''">
+            AND tgc.name = #{goods.categoryName}
+        </if>
+        <if test="goods.showStatus != null">
+            AND tsai.is_shelves = #{goods.showStatus}
+        </if>
+
+        <if test="goods.type != null">
+            AND tg.type = #{goods.type}
+        </if>
+
+        <if test="goods.status != null and goods.status ==1">
+            AND tsai.start_time <![CDATA[>]]> NOW()
+        </if>
+
+        <if test="goods.status != null and goods.status ==2">
+            AND tsai.start_time <![CDATA[<=]]> NOW() AND tsai.end_time <![CDATA[>]]> NOW()
+        </if>
+
+        <if test="goods.status != null and goods.status ==3">
+            AND tsai.end_time <![CDATA[<]]> NOW()
+        </if>
+
         <if test="goods.vipId != null">
             AND find_in_set(#{goods.vipId},tgs.vip) > 0
         </if>
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml
new file mode 100644
index 0000000..3def01d
--- /dev/null
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopBalanceStatementMapper.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.other.mapper.ShopBalanceStatementMapper">
+
+    <select id="findLatestChangeByType" resultType="com.ruoyi.other.api.domain.ShopBalanceStatement">
+        SELECT
+            id,
+            shop_id,
+            type,
+            historical_balance,
+            variable_amount,
+            balance,
+            create_time,
+            create_user_id,
+            object_id
+        FROM
+            (
+                SELECT
+                    id,
+                    shop_id,
+                    type,
+                    historical_balance,
+                    variable_amount,
+                    balance,
+                    create_time,
+                    create_user_id,
+                    object_id,
+                    ROW_NUMBER() OVER ( PARTITION BY type, create_user_id ORDER BY create_time DESC ) AS rn
+                FROM
+                    t_shop_balance_statement
+            ) AS subquery
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopPointMapper.xml b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopPointMapper.xml
index 51e5f7e..6828ee3 100644
--- a/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopPointMapper.xml
+++ b/ruoyi-service/ruoyi-other/src/main/resources/mapper/other/ShopPointMapper.xml
@@ -23,7 +23,7 @@
                     create_time,
                     create_user_id,
                     object_id,
-                    ROW_NUMBER() OVER ( PARTITION BY type ORDER BY create_time DESC ) AS rn
+                    ROW_NUMBER() OVER ( PARTITION BY type,create_user_id ORDER BY create_time DESC ) AS rn
                 FROM
                     t_shop_point
 

--
Gitblit v1.7.1