Commit ac55a9657c1eb4af98bfe625857fdbbf06fcf7ca

Authored by YunaiV
1 parent c66b4e7b

promotion:完善秒杀模块

Showing 24 changed files with 59 additions and 49 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillActivityController.java
... ... @@ -7,8 +7,8 @@ import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
7 7 import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
8 8 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.*;
9 9 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert;
10   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
11   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
  10 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
  11 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
12 12 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillActivityService;
13 13 import io.swagger.v3.oas.annotations.Operation;
14 14 import io.swagger.v3.oas.annotations.Parameter;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/SeckillConfigController.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.*;
7 7 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
8   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  8 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
9 9 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillConfigService;
10 10 import io.swagger.v3.oas.annotations.Operation;
11 11 import io.swagger.v3.oas.annotations.Parameter;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/activity/SeckillActivityRespVO.java
... ... @@ -15,15 +15,19 @@ import java.util.List;
15 15 @ToString(callSuper = true)
16 16 public class SeckillActivityRespVO extends SeckillActivityBaseVO {
17 17  
18   - @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促")
19   - private String spuName;
20   -
21   - @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.png")
22   - private String picUrl;
23   -
24 18 @Schema(description = "秒杀活动 id", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
25 19 private Long id;
26 20  
  21 + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 name 读取
  22 + example = "618大促")
  23 + private String spuName;
  24 + @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 picUrl 读取
  25 + example = "https://www.iocoder.cn/xx.png")
  26 + private String picUrl;
  27 + @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 marketPrice 读取
  28 + example = "50")
  29 + private Integer marketPrice;
  30 +
27 31 @Schema(description = "秒杀商品", requiredMode = Schema.RequiredMode.REQUIRED)
28 32 private List<SeckillProductRespVO> products;
29 33  
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigSimpleRespVO.java
... ... @@ -21,4 +21,10 @@ public class SeckillConfigSimpleRespVO {
21 21 @NotNull(message = "秒杀时段名称不能为空")
22 22 private String name;
23 23  
  24 + @Schema(description = "开始时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "09:00:00")
  25 + private String startTime;
  26 +
  27 + @Schema(description = "结束时间点", requiredMode = Schema.RequiredMode.REQUIRED, example = "16:00:00")
  28 + private String endTime;
  29 +
24 30 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/AppSeckillActivityController.java
... ... @@ -12,9 +12,9 @@ import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppS
12 12 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityPageReqVO;
13 13 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityRespVO;
14 14 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert;
15   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
16   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
17   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  15 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
  16 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
  17 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
18 18 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillActivityService;
19 19 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillConfigService;
20 20 import io.swagger.v3.oas.annotations.Operation;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/seckill/vo/activity/AppSeckillActivityRespVO.java
... ... @@ -16,13 +16,13 @@ public class AppSeckillActivityRespVO {
16 16 @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
17 17 private Long spuId;
18 18  
19   - @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
20   - // 从 SPU 的 picUrl 读取
  19 + @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 picUrl 读取
  20 + example = "https://www.iocoder.cn/xx.png")
21 21 private String picUrl;
22 22 @Schema(description = "单位名", requiredMode = Schema.RequiredMode.REQUIRED, example = "个")
23 23 private String unitName;
24   - @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50")
25   - // 从 SPU 的 marketPrice 读取
  24 + @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 marketPrice 读取
  25 + example = "50")
26 26 private Integer marketPrice;
27 27  
28 28 @Schema(description = "秒杀活动状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckillactivity/SeckillActivityConvert.java
... ... @@ -18,9 +18,9 @@ import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppS
18 18 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityNowRespVO;
19 19 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityRespVO;
20 20 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
21   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
22   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
23   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  21 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
  22 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
  23 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
24 24 import org.mapstruct.Mapper;
25 25 import org.mapstruct.Mapping;
26 26 import org.mapstruct.Mappings;
... ... @@ -61,7 +61,7 @@ public interface SeckillActivityConvert {
61 61 pageResult.getList().forEach(item -> {
62 62 item.setProducts(convertList2(seckillProducts));
63 63 MapUtils.findAndThen(spuMap, item.getSpuId(),
64   - spu -> item.setSpuName(spu.getName()).setPicUrl(spu.getPicUrl()));
  64 + spu -> item.setSpuName(spu.getName()).setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice()));
65 65 });
66 66 return pageResult;
67 67 }
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/seckill/seckillconfig/SeckillConfigConvert.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.Seck
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigSimpleRespVO;
7 7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
8 8 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.config.AppSeckillConfigRespVO;
9   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  9 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
10 10 import org.mapstruct.Mapper;
11 11 import org.mapstruct.factory.Mappers;
12 12  
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillactivity/SeckillActivityDO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillActivityDO.java
1   -package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity;
  1 +package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill;
2 2  
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillconfig/SeckillConfigDO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillConfigDO.java
1   -package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig;
  1 +package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill;
2 2  
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillactivity/SeckillProductDO.java renamed to yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/SeckillProductDO.java
1   -package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity;
  1 +package cn.iocoder.yudao.module.promotion.dal.dataobject.seckill;
2 2  
3 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 4 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
5 5 import cn.iocoder.yudao.framework.mybatis.core.type.LongListTypeHandler;
6   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
7 6 import com.baomidou.mybatisplus.annotation.KeySequence;
8 7 import com.baomidou.mybatisplus.annotation.TableField;
9 8 import com.baomidou.mybatisplus.annotation.TableId;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillActivityMapper.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
6 6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
7 7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityPageReqVO;
8 8 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityPageReqVO;
9   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
  9 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
10 10 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
11 11 import org.apache.ibatis.annotations.Mapper;
12 12  
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillactivity/SeckillProductMapper.java
1 1 package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
4   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
  4 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
5 5 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
6 6 import org.apache.ibatis.annotations.Mapper;
7 7  
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/seckill/seckillconfig/SeckillConfigMapper.java
... ... @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
7   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  7 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 import java.util.List;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityService.java
... ... @@ -5,8 +5,8 @@ import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.Se
5 5 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityPageReqVO;
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO;
7 7 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityPageReqVO;
8   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
9   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
  8 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
  9 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
10 10  
11 11 import javax.validation.Valid;
12 12 import java.util.Collection;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillActivityServiceImpl.java
... ... @@ -14,8 +14,8 @@ import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.Se
14 14 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.product.SeckillProductBaseVO;
15 15 import cn.iocoder.yudao.module.promotion.controller.app.seckill.vo.activity.AppSeckillActivityPageReqVO;
16 16 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillactivity.SeckillActivityConvert;
17   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
18   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillProductDO;
  17 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
  18 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillProductDO;
19 19 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper;
20 20 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillProductMapper;
21 21 import cn.iocoder.yudao.module.promotion.util.PromotionUtils;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillConfigService.java
... ... @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
5 5 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
7   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  7 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
8 8  
9 9 import javax.validation.Valid;
10 10 import java.util.Collection;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/SeckillConfigServiceImpl.java
... ... @@ -9,7 +9,7 @@ import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.Seck
9 9 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
10 10 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
11 11 import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
12   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  12 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
13 13 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
14 14 import org.springframework.stereotype.Service;
15 15 import org.springframework.validation.annotation.Validated;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/seckillactivity/SeckillActivityServiceImplTest.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
5 5 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityCreateReqVO;
6 6 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityPageReqVO;
7 7 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.activity.SeckillActivityUpdateReqVO;
8   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillactivity.SeckillActivityDO;
  8 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillActivityDO;
9 9 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillactivity.SeckillActivityMapper;
10 10 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillActivityServiceImpl;
11 11 import org.junit.jupiter.api.Disabled;
... ...
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/seckillconfig/SeckillConfigServiceImplTest.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.promotion.service.seckillconfig;
3 3 import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
4 4 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
5 5 import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
6   -import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
  6 +import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.SeckillConfigDO;
7 7 import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
8 8 import cn.iocoder.yudao.module.promotion.service.seckill.SeckillConfigServiceImpl;
9 9 import com.fasterxml.jackson.core.JsonProcessingException;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/brokerage/vo/user/BrokerageUserRespVO.java
... ... @@ -26,7 +26,7 @@ public class BrokerageUserRespVO extends BrokerageUserBaseVO {
26 26 @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
27 27 private String nickname;
28 28  
29   - // ========== 推广信息 ==========
  29 + // ========== 推广信息 ========== 注意:是包括 1 + 2 级的数据
30 30  
31 31 @Schema(description = "推广用户数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "20019")
32 32 private Integer brokerageUserCount;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/mysql/brokerage/BrokerageRecordMapper.java
... ... @@ -66,7 +66,7 @@ public interface BrokerageRecordMapper extends BaseMapperX&lt;BrokerageRecordDO&gt; {
66 66 .in(BrokerageRecordDO::getUserId, userIds)
67 67 .eq(BrokerageRecordDO::getBizId, bizType)
68 68 .eq(BrokerageRecordDO::getStatus, status)
69   - .groupBy(BrokerageRecordDO::getUserId));
  69 + .groupBy(BrokerageRecordDO::getUserId)); // 按照 userId 聚合
70 70 return BeanUtil.copyToList(list, UserBrokerageSummaryRespBO.class);
71 71 // selectJoinList有BUG,会与租户插件冲突:解析SQL时,发生异常 https://gitee.com/best_handsome/mybatis-plus-join/issues/I84GYW
72 72 // return selectJoinList(UserBrokerageSummaryBO.class, MPJWrappers.lambdaJoin(BrokerageRecordDO.class)
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/brokerage/BrokerageUserServiceImpl.java
... ... @@ -329,26 +329,27 @@ public class BrokerageUserServiceImpl implements BrokerageUserService {
329 329 if (bindUserId == null) {
330 330 return Collections.emptyList();
331 331 }
332   -
333 332 // 先查第 1 级
334 333 List<Long> bindUserIds = brokerageUserMapper.selectIdListByBindUserIdIn(Collections.singleton(bindUserId));
335 334 if (CollUtil.isEmpty(bindUserIds)) {
336 335 return Collections.emptyList();
337 336 }
338 337  
  338 + // 情况一:level 为空,查询所有级别
339 339 if (level == null) {
340   - // level 为空,再查第 2 级,并合并结果
  340 + // 再查第 2 级,并合并结果
341 341 bindUserIds.addAll(brokerageUserMapper.selectIdListByBindUserIdIn(bindUserIds));
342   - } else if (level == 2) {
343   - // 只查第 2 级
344   - bindUserIds = brokerageUserMapper.selectIdListByBindUserIdIn(bindUserIds);
345   - } else if (level == 1) {
346   - // 只查第 1 级
347 342 return bindUserIds;
348   - } else {
349   - throw exception(BROKERAGE_USER_LEVEL_NOT_SUPPORT);
350 343 }
351   - return bindUserIds;
  344 + // 情况二:level 为 1,只查询第 1 级
  345 + if (level == 1) {
  346 + return bindUserIds;
  347 + }
  348 + // 情况三:level 为 1,只查询第 2 级
  349 + if (level == 2) {
  350 + return brokerageUserMapper.selectIdListByBindUserIdIn(bindUserIds);
  351 + }
  352 + throw exception(BROKERAGE_USER_LEVEL_NOT_SUPPORT);
352 353 }
353 354  
354 355 }
... ...
yudao-server/src/main/resources/application-local.yaml
... ... @@ -9,7 +9,7 @@ spring:
9 9 exclude:
10 10 - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
11 11 - org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration # 排除积木报表带来的 MongoDB 的自动配置
12   -# - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
  12 + - org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration # 默认 local 环境,不开启 Quartz 的自动配置
13 13 - de.codecentric.boot.admin.server.config.AdminServerAutoConfiguration # 禁用 Spring Boot Admin 的 Server 的自动配置
14 14 - de.codecentric.boot.admin.server.ui.config.AdminServerUiAutoConfiguration # 禁用 Spring Boot Admin 的 Server UI 的自动配置
15 15 - de.codecentric.boot.admin.client.config.SpringBootAdminClientAutoConfiguration # 禁用 Spring Boot Admin 的 Client 的自动配置
... ...