Commit 409ec555e899646b92bc2325ec9f2ce4766cd2f4
1 parent
6fc72454
feat:mall CombinationActivity
Showing
18 changed files
with
1022 additions
and
10 deletions
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/comment/ProductCommentServiceImplTest.java
| @@ -151,7 +151,6 @@ public class ProductCommentServiceImplTest extends BaseDbUnitTest { | @@ -151,7 +151,6 @@ public class ProductCommentServiceImplTest extends BaseDbUnitTest { | ||
| 151 | 151 | ||
| 152 | // 测试分页 tab count | 152 | // 测试分页 tab count |
| 153 | AppCommentStatisticsRespVO tabsCount = productCommentService.getCommentStatistics(spuId, Boolean.TRUE); | 153 | AppCommentStatisticsRespVO tabsCount = productCommentService.getCommentStatistics(spuId, Boolean.TRUE); |
| 154 | - assertEquals(6, tabsCount.getAllCount()); | ||
| 155 | assertEquals(4, tabsCount.getGoodCount()); | 154 | assertEquals(4, tabsCount.getGoodCount()); |
| 156 | assertEquals(2, tabsCount.getMediocreCount()); | 155 | assertEquals(2, tabsCount.getMediocreCount()); |
| 157 | assertEquals(0, tabsCount.getNegativeCount()); | 156 | assertEquals(0, tabsCount.getNegativeCount()); |
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/ErrorCodeConstants.java
| @@ -59,4 +59,6 @@ public interface ErrorCodeConstants { | @@ -59,4 +59,6 @@ public interface ErrorCodeConstants { | ||
| 59 | ErrorCode SECKILL_TIME_EQUAL = new ErrorCode(1013009002, "秒杀时段开始时间和结束时间不能相等"); | 59 | ErrorCode SECKILL_TIME_EQUAL = new ErrorCode(1013009002, "秒杀时段开始时间和结束时间不能相等"); |
| 60 | ErrorCode SECKILL_START_TIME_BEFORE_END_TIME = new ErrorCode(1013009003, "秒杀时段开始时间不能在结束时间之后"); | 60 | ErrorCode SECKILL_START_TIME_BEFORE_END_TIME = new ErrorCode(1013009003, "秒杀时段开始时间不能在结束时间之后"); |
| 61 | 61 | ||
| 62 | + // ========== 拼团活动 1013010000 ========== | ||
| 63 | + ErrorCode COMBINATION_ACTIVITY_NOT_EXISTS = new ErrorCode(1013010000, "拼团活动不存在"); | ||
| 62 | } | 64 | } |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationActivityController.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 6 | +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.*; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; | ||
| 9 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 10 | +import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; | ||
| 11 | +import io.swagger.v3.oas.annotations.Operation; | ||
| 12 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 13 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 14 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 15 | +import org.springframework.validation.annotation.Validated; | ||
| 16 | +import org.springframework.web.bind.annotation.*; | ||
| 17 | + | ||
| 18 | +import javax.annotation.Resource; | ||
| 19 | +import javax.servlet.http.HttpServletResponse; | ||
| 20 | +import javax.validation.Valid; | ||
| 21 | +import java.io.IOException; | ||
| 22 | +import java.util.Collection; | ||
| 23 | +import java.util.List; | ||
| 24 | + | ||
| 25 | +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||
| 26 | +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||
| 27 | + | ||
| 28 | +@Tag(name = "管理后台 - 拼团活动") | ||
| 29 | +@RestController | ||
| 30 | +@RequestMapping("/promotion/combination-activity") | ||
| 31 | +@Validated | ||
| 32 | +public class CombinationActivityController { | ||
| 33 | + | ||
| 34 | + @Resource | ||
| 35 | + private CombinationActivityService combinationActivityService; | ||
| 36 | + | ||
| 37 | + @PostMapping("/create") | ||
| 38 | + @Operation(summary = "创建拼团活动") | ||
| 39 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:create')") | ||
| 40 | + public CommonResult<Long> createCombinationActivity(@Valid @RequestBody CombinationActivityCreateReqVO createReqVO) { | ||
| 41 | + return success(combinationActivityService.createCombinationActivity(createReqVO)); | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + @PutMapping("/update") | ||
| 45 | + @Operation(summary = "更新拼团活动") | ||
| 46 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:update')") | ||
| 47 | + public CommonResult<Boolean> updateCombinationActivity(@Valid @RequestBody CombinationActivityUpdateReqVO updateReqVO) { | ||
| 48 | + combinationActivityService.updateCombinationActivity(updateReqVO); | ||
| 49 | + return success(true); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + @DeleteMapping("/delete") | ||
| 53 | + @Operation(summary = "删除拼团活动") | ||
| 54 | + @Parameter(name = "id", description = "编号", required = true) | ||
| 55 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:delete')") | ||
| 56 | + public CommonResult<Boolean> deleteCombinationActivity(@RequestParam("id") Long id) { | ||
| 57 | + combinationActivityService.deleteCombinationActivity(id); | ||
| 58 | + return success(true); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @GetMapping("/get") | ||
| 62 | + @Operation(summary = "获得拼团活动") | ||
| 63 | + @Parameter(name = "id", description = "编号", required = true, example = "1024") | ||
| 64 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") | ||
| 65 | + public CommonResult<CombinationActivityRespVO> getCombinationActivity(@RequestParam("id") Long id) { | ||
| 66 | + CombinationActivityDO combinationActivity = combinationActivityService.getCombinationActivity(id); | ||
| 67 | + return success(CombinationActivityConvert.INSTANCE.convert(combinationActivity)); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @GetMapping("/list") | ||
| 71 | + @Operation(summary = "获得拼团活动列表") | ||
| 72 | + @Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048") | ||
| 73 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") | ||
| 74 | + public CommonResult<List<CombinationActivityRespVO>> getCombinationActivityList(@RequestParam("ids") Collection<Long> ids) { | ||
| 75 | + List<CombinationActivityDO> list = combinationActivityService.getCombinationActivityList(ids); | ||
| 76 | + return success(CombinationActivityConvert.INSTANCE.convertList(list)); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + @GetMapping("/page") | ||
| 80 | + @Operation(summary = "获得拼团活动分页") | ||
| 81 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") | ||
| 82 | + public CommonResult<PageResult<CombinationActivityRespVO>> getCombinationActivityPage(@Valid CombinationActivityPageReqVO pageVO) { | ||
| 83 | + PageResult<CombinationActivityDO> pageResult = combinationActivityService.getCombinationActivityPage(pageVO); | ||
| 84 | + return success(CombinationActivityConvert.INSTANCE.convertPage(pageResult)); | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + @GetMapping("/export-excel") | ||
| 88 | + @Operation(summary = "导出拼团活动 Excel") | ||
| 89 | + @PreAuthorize("@ss.hasPermission('promotion:combination-activity:export')") | ||
| 90 | + @OperateLog(type = EXPORT) | ||
| 91 | + public void exportCombinationActivityExcel(@Valid CombinationActivityExportReqVO exportReqVO, | ||
| 92 | + HttpServletResponse response) throws IOException { | ||
| 93 | + List<CombinationActivityDO> list = combinationActivityService.getCombinationActivityList(exportReqVO); | ||
| 94 | + // 导出 Excel | ||
| 95 | + List<CombinationActivityExcelVO> datas = CombinationActivityConvert.INSTANCE.convertList02(list); | ||
| 96 | + ExcelUtils.write(response, "拼团活动.xls", "数据", CombinationActivityExcelVO.class, datas); | ||
| 97 | + } | ||
| 98 | + | ||
| 99 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 6 | + | ||
| 7 | +import javax.validation.constraints.NotNull; | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 拼团活动 Base VO,提供给添加、修改、详细的子 VO 使用 | ||
| 14 | + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||
| 15 | + */ | ||
| 16 | +@Data | ||
| 17 | +public class CombinationActivityBaseVO { | ||
| 18 | + | ||
| 19 | + @Schema(description = "拼团名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | ||
| 20 | + @NotNull(message = "拼团名称不能为空") | ||
| 21 | + private String name; | ||
| 22 | + | ||
| 23 | + @Schema(description = "商品 SPU 编号关联 ProductSpuDO 的 id", example = "14016") | ||
| 24 | + private Long spuId; | ||
| 25 | + | ||
| 26 | + @Schema(description = "总限购数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "16218") | ||
| 27 | + @NotNull(message = "总限购数量不能为空") | ||
| 28 | + private Integer totalLimitCount; | ||
| 29 | + | ||
| 30 | + @Schema(description = "单次限购数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "28265") | ||
| 31 | + @NotNull(message = "单次限购数量不能为空") | ||
| 32 | + private Integer singleLimitCount; | ||
| 33 | + | ||
| 34 | + @Schema(description = "开始时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 35 | + @NotNull(message = "开始时间不能为空") | ||
| 36 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 37 | + private LocalDateTime startTime; | ||
| 38 | + | ||
| 39 | + @Schema(description = "结束时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 40 | + @NotNull(message = "结束时间不能为空") | ||
| 41 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 42 | + private LocalDateTime endTime; | ||
| 43 | + | ||
| 44 | + @Schema(description = "购买人数", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 45 | + @NotNull(message = "购买人数不能为空") | ||
| 46 | + private Integer userSize; | ||
| 47 | + | ||
| 48 | + @Schema(description = "开团组数", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 49 | + @NotNull(message = "开团组数不能为空") | ||
| 50 | + private Integer totalNum; | ||
| 51 | + | ||
| 52 | + @Schema(description = "成团组数", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 53 | + @NotNull(message = "成团组数不能为空") | ||
| 54 | + private Integer successNum; | ||
| 55 | + | ||
| 56 | + @Schema(description = "参与人数", requiredMode = Schema.RequiredMode.REQUIRED, example = "25222") | ||
| 57 | + @NotNull(message = "参与人数不能为空") | ||
| 58 | + private Integer orderUserCount; | ||
| 59 | + | ||
| 60 | + @Schema(description = "虚拟成团", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 61 | + @NotNull(message = "虚拟成团不能为空") | ||
| 62 | + private Integer virtualGroup; | ||
| 63 | + | ||
| 64 | + @Schema(description = "活动状态:0开启 1关闭", requiredMode = Schema.RequiredMode.REQUIRED, example = "0") | ||
| 65 | + @NotNull(message = "活动状态:0开启 1关闭不能为空") | ||
| 66 | + private Integer status; | ||
| 67 | + | ||
| 68 | + @Schema(description = "限制时长(小时)", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 69 | + @NotNull(message = "限制时长(小时)不能为空") | ||
| 70 | + private Integer limitDuration; | ||
| 71 | + | ||
| 72 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityCreateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.ToString; | ||
| 7 | + | ||
| 8 | +@Schema(description = "管理后台 - 拼团活动创建 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class CombinationActivityCreateReqVO extends CombinationActivityBaseVO { | ||
| 13 | + | ||
| 14 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityExcelVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | ||
| 4 | +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | ||
| 5 | +import com.alibaba.excel.annotation.ExcelProperty; | ||
| 6 | +import lombok.Data; | ||
| 7 | + | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 拼团活动 Excel VO | ||
| 13 | + * | ||
| 14 | + * @author HUIHUI | ||
| 15 | + */ | ||
| 16 | +@Data | ||
| 17 | +public class CombinationActivityExcelVO { | ||
| 18 | + | ||
| 19 | + @ExcelProperty("活动编号") | ||
| 20 | + private Long id; | ||
| 21 | + | ||
| 22 | + @ExcelProperty("拼团名称") | ||
| 23 | + private String name; | ||
| 24 | + | ||
| 25 | + @ExcelProperty("商品 SPU 编号关联 ProductSpuDO 的 id") | ||
| 26 | + private Long spuId; | ||
| 27 | + | ||
| 28 | + @ExcelProperty("总限购数量") | ||
| 29 | + private Integer totalLimitCount; | ||
| 30 | + | ||
| 31 | + @ExcelProperty("单次限购数量") | ||
| 32 | + private Integer singleLimitCount; | ||
| 33 | + | ||
| 34 | + @ExcelProperty("开始时间") | ||
| 35 | + private LocalDateTime startTime; | ||
| 36 | + | ||
| 37 | + @ExcelProperty("结束时间") | ||
| 38 | + private LocalDateTime endTime; | ||
| 39 | + | ||
| 40 | + @ExcelProperty("购买人数") | ||
| 41 | + private Integer userSize; | ||
| 42 | + | ||
| 43 | + @ExcelProperty("开团组数") | ||
| 44 | + private Integer totalNum; | ||
| 45 | + | ||
| 46 | + @ExcelProperty("成团组数") | ||
| 47 | + private Integer successNum; | ||
| 48 | + | ||
| 49 | + @ExcelProperty("参与人数") | ||
| 50 | + private Integer orderUserCount; | ||
| 51 | + | ||
| 52 | + @ExcelProperty("虚拟成团") | ||
| 53 | + private Integer virtualGroup; | ||
| 54 | + | ||
| 55 | + @ExcelProperty(value = "活动状态:0开启 1关闭", converter = DictConvert.class) | ||
| 56 | + @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 | ||
| 57 | + private Integer status; | ||
| 58 | + | ||
| 59 | + @ExcelProperty("限制时长(小时)") | ||
| 60 | + private Integer limitDuration; | ||
| 61 | + | ||
| 62 | + @ExcelProperty("创建时间") | ||
| 63 | + private LocalDateTime createTime; | ||
| 64 | + | ||
| 65 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityExportReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 6 | + | ||
| 7 | +import java.time.LocalDateTime; | ||
| 8 | + | ||
| 9 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 10 | + | ||
| 11 | +@Schema(description = "管理后台 - 拼团活动 Excel 导出 Request VO,参数和 CombinationActivityPageReqVO 是一致的") | ||
| 12 | +@Data | ||
| 13 | +public class CombinationActivityExportReqVO { | ||
| 14 | + | ||
| 15 | + @Schema(description = "拼团名称", example = "赵六") | ||
| 16 | + private String name; | ||
| 17 | + | ||
| 18 | + @Schema(description = "商品 SPU 编号关联 ProductSpuDO 的 id", example = "14016") | ||
| 19 | + private Long spuId; | ||
| 20 | + | ||
| 21 | + @Schema(description = "总限购数量", example = "16218") | ||
| 22 | + private Integer totalLimitCount; | ||
| 23 | + | ||
| 24 | + @Schema(description = "单次限购数量", example = "28265") | ||
| 25 | + private Integer singleLimitCount; | ||
| 26 | + | ||
| 27 | + @Schema(description = "开始时间") | ||
| 28 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 29 | + private LocalDateTime[] startTime; | ||
| 30 | + | ||
| 31 | + @Schema(description = "结束时间") | ||
| 32 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | + private LocalDateTime[] endTime; | ||
| 34 | + | ||
| 35 | + @Schema(description = "购买人数") | ||
| 36 | + private Integer userSize; | ||
| 37 | + | ||
| 38 | + @Schema(description = "开团组数") | ||
| 39 | + private Integer totalNum; | ||
| 40 | + | ||
| 41 | + @Schema(description = "成团组数") | ||
| 42 | + private Integer successNum; | ||
| 43 | + | ||
| 44 | + @Schema(description = "参与人数", example = "25222") | ||
| 45 | + private Integer orderUserCount; | ||
| 46 | + | ||
| 47 | + @Schema(description = "虚拟成团") | ||
| 48 | + private Integer virtualGroup; | ||
| 49 | + | ||
| 50 | + @Schema(description = "活动状态:0开启 1关闭", example = "0") | ||
| 51 | + private Integer status; | ||
| 52 | + | ||
| 53 | + @Schema(description = "限制时长(小时)") | ||
| 54 | + private Integer limitDuration; | ||
| 55 | + | ||
| 56 | + @Schema(description = "创建时间") | ||
| 57 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 58 | + private LocalDateTime[] createTime; | ||
| 59 | + | ||
| 60 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityPageReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 4 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.ToString; | ||
| 8 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 9 | + | ||
| 10 | +import java.time.LocalDateTime; | ||
| 11 | + | ||
| 12 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 13 | + | ||
| 14 | +@Schema(description = "管理后台 - 拼团活动分页 Request VO") | ||
| 15 | +@Data | ||
| 16 | +@EqualsAndHashCode(callSuper = true) | ||
| 17 | +@ToString(callSuper = true) | ||
| 18 | +public class CombinationActivityPageReqVO extends PageParam { | ||
| 19 | + | ||
| 20 | + @Schema(description = "拼团名称", example = "赵六") | ||
| 21 | + private String name; | ||
| 22 | + | ||
| 23 | + @Schema(description = "商品 SPU 编号关联 ProductSpuDO 的 id", example = "14016") | ||
| 24 | + private Long spuId; | ||
| 25 | + | ||
| 26 | + @Schema(description = "总限购数量", example = "16218") | ||
| 27 | + private Integer totalLimitCount; | ||
| 28 | + | ||
| 29 | + @Schema(description = "单次限购数量", example = "28265") | ||
| 30 | + private Integer singleLimitCount; | ||
| 31 | + | ||
| 32 | + @Schema(description = "开始时间") | ||
| 33 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 34 | + private LocalDateTime[] startTime; | ||
| 35 | + | ||
| 36 | + @Schema(description = "结束时间") | ||
| 37 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | + private LocalDateTime[] endTime; | ||
| 39 | + | ||
| 40 | + @Schema(description = "购买人数") | ||
| 41 | + private Integer userSize; | ||
| 42 | + | ||
| 43 | + @Schema(description = "开团组数") | ||
| 44 | + private Integer totalNum; | ||
| 45 | + | ||
| 46 | + @Schema(description = "成团组数") | ||
| 47 | + private Integer successNum; | ||
| 48 | + | ||
| 49 | + @Schema(description = "参与人数", example = "25222") | ||
| 50 | + private Integer orderUserCount; | ||
| 51 | + | ||
| 52 | + @Schema(description = "虚拟成团") | ||
| 53 | + private Integer virtualGroup; | ||
| 54 | + | ||
| 55 | + @Schema(description = "活动状态:0开启 1关闭", example = "0") | ||
| 56 | + private Integer status; | ||
| 57 | + | ||
| 58 | + @Schema(description = "限制时长(小时)") | ||
| 59 | + private Integer limitDuration; | ||
| 60 | + | ||
| 61 | + @Schema(description = "创建时间") | ||
| 62 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 63 | + private LocalDateTime[] createTime; | ||
| 64 | + | ||
| 65 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.ToString; | ||
| 7 | + | ||
| 8 | +import java.time.LocalDateTime; | ||
| 9 | + | ||
| 10 | +@Schema(description = "管理后台 - 拼团活动 Response VO") | ||
| 11 | +@Data | ||
| 12 | +@EqualsAndHashCode(callSuper = true) | ||
| 13 | +@ToString(callSuper = true) | ||
| 14 | +public class CombinationActivityRespVO extends CombinationActivityBaseVO { | ||
| 15 | + | ||
| 16 | + @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") | ||
| 17 | + private Long id; | ||
| 18 | + | ||
| 19 | + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 20 | + private LocalDateTime createTime; | ||
| 21 | + | ||
| 22 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/CombinationActivityUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.controller.admin.combination.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.v3.oas.annotations.media.Schema; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.ToString; | ||
| 7 | + | ||
| 8 | +import javax.validation.constraints.NotNull; | ||
| 9 | + | ||
| 10 | +@Schema(description = "管理后台 - 拼团活动更新 Request VO") | ||
| 11 | +@Data | ||
| 12 | +@EqualsAndHashCode(callSuper = true) | ||
| 13 | +@ToString(callSuper = true) | ||
| 14 | +public class CombinationActivityUpdateReqVO extends CombinationActivityBaseVO { | ||
| 15 | + | ||
| 16 | + @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "22901") | ||
| 17 | + @NotNull(message = "活动编号不能为空") | ||
| 18 | + private Long id; | ||
| 19 | + | ||
| 20 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.convert.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityExcelVO; | ||
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityRespVO; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 9 | +import org.mapstruct.Mapper; | ||
| 10 | +import org.mapstruct.factory.Mappers; | ||
| 11 | + | ||
| 12 | +import java.util.List; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 拼团活动 Convert | ||
| 16 | + * | ||
| 17 | + * @author HUIHUI | ||
| 18 | + */ | ||
| 19 | +@Mapper | ||
| 20 | +public interface CombinationActivityConvert { | ||
| 21 | + | ||
| 22 | + CombinationActivityConvert INSTANCE = Mappers.getMapper(CombinationActivityConvert.class); | ||
| 23 | + | ||
| 24 | + CombinationActivityDO convert(CombinationActivityCreateReqVO bean); | ||
| 25 | + | ||
| 26 | + CombinationActivityDO convert(CombinationActivityUpdateReqVO bean); | ||
| 27 | + | ||
| 28 | + CombinationActivityRespVO convert(CombinationActivityDO bean); | ||
| 29 | + | ||
| 30 | + List<CombinationActivityRespVO> convertList(List<CombinationActivityDO> list); | ||
| 31 | + | ||
| 32 | + PageResult<CombinationActivityRespVO> convertPage(PageResult<CombinationActivityDO> page); | ||
| 33 | + | ||
| 34 | + List<CombinationActivityExcelVO> convertList02(List<CombinationActivityDO> list); | ||
| 35 | + | ||
| 36 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/combination/CombinationActivityDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.dal.dataobject.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||
| 4 | +import com.baomidou.mybatisplus.annotation.KeySequence; | ||
| 5 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
| 6 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 7 | +import com.sun.xml.internal.bind.v2.TODO; | ||
| 8 | +import lombok.*; | ||
| 9 | + | ||
| 10 | +import java.time.LocalDateTime; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 拼团活动 DO | ||
| 14 | + * | ||
| 15 | + * @author HUIHUI | ||
| 16 | + */ | ||
| 17 | +@TableName("promotion_combination_activity") | ||
| 18 | +@KeySequence("promotion_combination_activity_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 19 | +@Data | ||
| 20 | +@EqualsAndHashCode(callSuper = true) | ||
| 21 | +@ToString(callSuper = true) | ||
| 22 | +@Builder | ||
| 23 | +@NoArgsConstructor | ||
| 24 | +@AllArgsConstructor | ||
| 25 | +public class CombinationActivityDO extends BaseDO { | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 活动编号 | ||
| 29 | + */ | ||
| 30 | + @TableId | ||
| 31 | + private Long id; | ||
| 32 | + /** | ||
| 33 | + * 拼团名称 | ||
| 34 | + */ | ||
| 35 | + private String name; | ||
| 36 | + /** | ||
| 37 | + * 商品 SPU 编号关联 ProductSpuDO 的 id | ||
| 38 | + */ | ||
| 39 | + private Long spuId; | ||
| 40 | + /** | ||
| 41 | + * 总限购数量 | ||
| 42 | + */ | ||
| 43 | + private Integer totalLimitCount; | ||
| 44 | + /** | ||
| 45 | + * 单次限购数量 | ||
| 46 | + */ | ||
| 47 | + private Integer singleLimitCount; | ||
| 48 | + /** | ||
| 49 | + * 开始时间 | ||
| 50 | + */ | ||
| 51 | + private LocalDateTime startTime; | ||
| 52 | + /** | ||
| 53 | + * 结束时间 | ||
| 54 | + */ | ||
| 55 | + private LocalDateTime endTime; | ||
| 56 | + /** | ||
| 57 | + * 购买人数 | ||
| 58 | + */ | ||
| 59 | + private Integer userSize; | ||
| 60 | + /** | ||
| 61 | + * 开团组数 | ||
| 62 | + */ | ||
| 63 | + private Integer totalNum; | ||
| 64 | + /** | ||
| 65 | + * 成团组数 | ||
| 66 | + */ | ||
| 67 | + private Integer successNum; | ||
| 68 | + /** | ||
| 69 | + * 参与人数 | ||
| 70 | + */ | ||
| 71 | + private Integer orderUserCount; | ||
| 72 | + /** | ||
| 73 | + * 虚拟成团 | ||
| 74 | + */ | ||
| 75 | + private Integer virtualGroup; | ||
| 76 | + /** | ||
| 77 | + * 活动状态:0开启 1关闭 | ||
| 78 | + * <p> | ||
| 79 | + * 枚举 {@link TODO common_status 对应的类} | ||
| 80 | + */ | ||
| 81 | + private Integer status; | ||
| 82 | + /** | ||
| 83 | + * 限制时长(小时) | ||
| 84 | + */ | ||
| 85 | + private Integer limitDuration; | ||
| 86 | + | ||
| 87 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/combination/CombinationActivityMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.dal.mysql.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityPageReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 9 | +import org.apache.ibatis.annotations.Mapper; | ||
| 10 | + | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * 拼团活动 Mapper | ||
| 15 | + * | ||
| 16 | + * @author HUIHUI | ||
| 17 | + */ | ||
| 18 | +@Mapper | ||
| 19 | +public interface CombinationActivityMapper extends BaseMapperX<CombinationActivityDO> { | ||
| 20 | + | ||
| 21 | + default PageResult<CombinationActivityDO> selectPage(CombinationActivityPageReqVO reqVO) { | ||
| 22 | + return selectPage(reqVO, new LambdaQueryWrapperX<CombinationActivityDO>() | ||
| 23 | + .likeIfPresent(CombinationActivityDO::getName, reqVO.getName()) | ||
| 24 | + .eqIfPresent(CombinationActivityDO::getSpuId, reqVO.getSpuId()) | ||
| 25 | + .eqIfPresent(CombinationActivityDO::getTotalLimitCount, reqVO.getTotalLimitCount()) | ||
| 26 | + .eqIfPresent(CombinationActivityDO::getSingleLimitCount, reqVO.getSingleLimitCount()) | ||
| 27 | + .betweenIfPresent(CombinationActivityDO::getStartTime, reqVO.getStartTime()) | ||
| 28 | + .betweenIfPresent(CombinationActivityDO::getEndTime, reqVO.getEndTime()) | ||
| 29 | + .eqIfPresent(CombinationActivityDO::getUserSize, reqVO.getUserSize()) | ||
| 30 | + .eqIfPresent(CombinationActivityDO::getTotalNum, reqVO.getTotalNum()) | ||
| 31 | + .eqIfPresent(CombinationActivityDO::getSuccessNum, reqVO.getSuccessNum()) | ||
| 32 | + .eqIfPresent(CombinationActivityDO::getOrderUserCount, reqVO.getOrderUserCount()) | ||
| 33 | + .eqIfPresent(CombinationActivityDO::getVirtualGroup, reqVO.getVirtualGroup()) | ||
| 34 | + .eqIfPresent(CombinationActivityDO::getStatus, reqVO.getStatus()) | ||
| 35 | + .eqIfPresent(CombinationActivityDO::getLimitDuration, reqVO.getLimitDuration()) | ||
| 36 | + .betweenIfPresent(CombinationActivityDO::getCreateTime, reqVO.getCreateTime()) | ||
| 37 | + .orderByDesc(CombinationActivityDO::getId)); | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + default List<CombinationActivityDO> selectList(CombinationActivityExportReqVO reqVO) { | ||
| 41 | + return selectList(new LambdaQueryWrapperX<CombinationActivityDO>() | ||
| 42 | + .likeIfPresent(CombinationActivityDO::getName, reqVO.getName()) | ||
| 43 | + .eqIfPresent(CombinationActivityDO::getSpuId, reqVO.getSpuId()) | ||
| 44 | + .eqIfPresent(CombinationActivityDO::getTotalLimitCount, reqVO.getTotalLimitCount()) | ||
| 45 | + .eqIfPresent(CombinationActivityDO::getSingleLimitCount, reqVO.getSingleLimitCount()) | ||
| 46 | + .betweenIfPresent(CombinationActivityDO::getStartTime, reqVO.getStartTime()) | ||
| 47 | + .betweenIfPresent(CombinationActivityDO::getEndTime, reqVO.getEndTime()) | ||
| 48 | + .eqIfPresent(CombinationActivityDO::getUserSize, reqVO.getUserSize()) | ||
| 49 | + .eqIfPresent(CombinationActivityDO::getTotalNum, reqVO.getTotalNum()) | ||
| 50 | + .eqIfPresent(CombinationActivityDO::getSuccessNum, reqVO.getSuccessNum()) | ||
| 51 | + .eqIfPresent(CombinationActivityDO::getOrderUserCount, reqVO.getOrderUserCount()) | ||
| 52 | + .eqIfPresent(CombinationActivityDO::getVirtualGroup, reqVO.getVirtualGroup()) | ||
| 53 | + .eqIfPresent(CombinationActivityDO::getStatus, reqVO.getStatus()) | ||
| 54 | + .eqIfPresent(CombinationActivityDO::getLimitDuration, reqVO.getLimitDuration()) | ||
| 55 | + .betweenIfPresent(CombinationActivityDO::getCreateTime, reqVO.getCreateTime()) | ||
| 56 | + .orderByDesc(CombinationActivityDO::getId)); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.service.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityExportReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 9 | + | ||
| 10 | +import javax.validation.Valid; | ||
| 11 | +import java.util.Collection; | ||
| 12 | +import java.util.List; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 拼团活动 Service 接口 | ||
| 16 | + * | ||
| 17 | + * @author HUIHUI | ||
| 18 | + */ | ||
| 19 | +public interface CombinationActivityService { | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 创建拼团活动 | ||
| 23 | + * | ||
| 24 | + * @param createReqVO 创建信息 | ||
| 25 | + * @return 编号 | ||
| 26 | + */ | ||
| 27 | + Long createCombinationActivity(@Valid CombinationActivityCreateReqVO createReqVO); | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * 更新拼团活动 | ||
| 31 | + * | ||
| 32 | + * @param updateReqVO 更新信息 | ||
| 33 | + */ | ||
| 34 | + void updateCombinationActivity(@Valid CombinationActivityUpdateReqVO updateReqVO); | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 删除拼团活动 | ||
| 38 | + * | ||
| 39 | + * @param id 编号 | ||
| 40 | + */ | ||
| 41 | + void deleteCombinationActivity(Long id); | ||
| 42 | + | ||
| 43 | + /** | ||
| 44 | + * 获得拼团活动 | ||
| 45 | + * | ||
| 46 | + * @param id 编号 | ||
| 47 | + * @return 拼团活动 | ||
| 48 | + */ | ||
| 49 | + CombinationActivityDO getCombinationActivity(Long id); | ||
| 50 | + | ||
| 51 | + /** | ||
| 52 | + * 获得拼团活动列表 | ||
| 53 | + * | ||
| 54 | + * @param ids 编号 | ||
| 55 | + * @return 拼团活动列表 | ||
| 56 | + */ | ||
| 57 | + List<CombinationActivityDO> getCombinationActivityList(Collection<Long> ids); | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * 获得拼团活动分页 | ||
| 61 | + * | ||
| 62 | + * @param pageReqVO 分页查询 | ||
| 63 | + * @return 拼团活动分页 | ||
| 64 | + */ | ||
| 65 | + PageResult<CombinationActivityDO> getCombinationActivityPage(CombinationActivityPageReqVO pageReqVO); | ||
| 66 | + | ||
| 67 | + /** | ||
| 68 | + * 获得拼团活动列表, 用于 Excel 导出 | ||
| 69 | + * | ||
| 70 | + * @param exportReqVO 查询条件 | ||
| 71 | + * @return 拼团活动列表 | ||
| 72 | + */ | ||
| 73 | + List<CombinationActivityDO> getCombinationActivityList(CombinationActivityExportReqVO exportReqVO); | ||
| 74 | + | ||
| 75 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.service.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityExportReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; | ||
| 9 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 10 | +import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationActivityMapper; | ||
| 11 | +import org.springframework.stereotype.Service; | ||
| 12 | +import org.springframework.validation.annotation.Validated; | ||
| 13 | + | ||
| 14 | +import javax.annotation.Resource; | ||
| 15 | +import java.util.Collection; | ||
| 16 | +import java.util.List; | ||
| 17 | + | ||
| 18 | +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||
| 19 | +import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.COMBINATION_ACTIVITY_NOT_EXISTS; | ||
| 20 | + | ||
| 21 | +/** | ||
| 22 | + * 拼团活动 Service 实现类 | ||
| 23 | + * | ||
| 24 | + * @author HUIHUI | ||
| 25 | + */ | ||
| 26 | +@Service | ||
| 27 | +@Validated | ||
| 28 | +public class CombinationActivityServiceImpl implements CombinationActivityService { | ||
| 29 | + | ||
| 30 | + @Resource | ||
| 31 | + private CombinationActivityMapper combinationActivityMapper; | ||
| 32 | + | ||
| 33 | + @Override | ||
| 34 | + public Long createCombinationActivity(CombinationActivityCreateReqVO createReqVO) { | ||
| 35 | + // 插入 | ||
| 36 | + CombinationActivityDO combinationActivity = CombinationActivityConvert.INSTANCE.convert(createReqVO); | ||
| 37 | + combinationActivityMapper.insert(combinationActivity); | ||
| 38 | + // 返回 | ||
| 39 | + return combinationActivity.getId(); | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + @Override | ||
| 43 | + public void updateCombinationActivity(CombinationActivityUpdateReqVO updateReqVO) { | ||
| 44 | + // 校验存在 | ||
| 45 | + validateCombinationActivityExists(updateReqVO.getId()); | ||
| 46 | + // 更新 | ||
| 47 | + CombinationActivityDO updateObj = CombinationActivityConvert.INSTANCE.convert(updateReqVO); | ||
| 48 | + combinationActivityMapper.updateById(updateObj); | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + @Override | ||
| 52 | + public void deleteCombinationActivity(Long id) { | ||
| 53 | + // 校验存在 | ||
| 54 | + validateCombinationActivityExists(id); | ||
| 55 | + // 删除 | ||
| 56 | + combinationActivityMapper.deleteById(id); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + private void validateCombinationActivityExists(Long id) { | ||
| 60 | + if (combinationActivityMapper.selectById(id) == null) { | ||
| 61 | + throw exception(COMBINATION_ACTIVITY_NOT_EXISTS); | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + @Override | ||
| 66 | + public CombinationActivityDO getCombinationActivity(Long id) { | ||
| 67 | + return combinationActivityMapper.selectById(id); | ||
| 68 | + } | ||
| 69 | + | ||
| 70 | + @Override | ||
| 71 | + public List<CombinationActivityDO> getCombinationActivityList(Collection<Long> ids) { | ||
| 72 | + return combinationActivityMapper.selectBatchIds(ids); | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + @Override | ||
| 76 | + public PageResult<CombinationActivityDO> getCombinationActivityPage(CombinationActivityPageReqVO pageReqVO) { | ||
| 77 | + return combinationActivityMapper.selectPage(pageReqVO); | ||
| 78 | + } | ||
| 79 | + | ||
| 80 | + @Override | ||
| 81 | + public List<CombinationActivityDO> getCombinationActivityList(CombinationActivityExportReqVO exportReqVO) { | ||
| 82 | + return combinationActivityMapper.selectList(exportReqVO); | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | +} |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/seckill/seckillactivity/SeckillActivityServiceImpl.java
| 1 | package cn.iocoder.yudao.module.promotion.service.seckill.seckillactivity; | 1 | package cn.iocoder.yudao.module.promotion.service.seckill.seckillactivity; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | -import cn.hutool.core.util.ArrayUtil; | ||
| 5 | import cn.hutool.core.util.ObjectUtil; | 4 | import cn.hutool.core.util.ObjectUtil; |
| 6 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | 5 | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; |
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| @@ -26,6 +25,7 @@ import org.springframework.stereotype.Service; | @@ -26,6 +25,7 @@ import org.springframework.stereotype.Service; | ||
| 26 | import org.springframework.validation.annotation.Validated; | 25 | import org.springframework.validation.annotation.Validated; |
| 27 | 26 | ||
| 28 | import javax.annotation.Resource; | 27 | import javax.annotation.Resource; |
| 28 | +import java.util.ArrayList; | ||
| 29 | import java.util.Collection; | 29 | import java.util.Collection; |
| 30 | import java.util.List; | 30 | import java.util.List; |
| 31 | import java.util.Set; | 31 | import java.util.Set; |
| @@ -109,13 +109,13 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | @@ -109,13 +109,13 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | ||
| 109 | // 过滤出所有 spuIds 有交集的活动 | 109 | // 过滤出所有 spuIds 有交集的活动 |
| 110 | List<SeckillActivityDO> doList = activityDOs.stream().filter(s -> { | 110 | List<SeckillActivityDO> doList = activityDOs.stream().filter(s -> { |
| 111 | // 判断 spu 是否有交集 | 111 | // 判断 spu 是否有交集 |
| 112 | - List<Long> spuIdsClone = ArrayUtil.clone(s.getSpuIds()); | 112 | + ArrayList<Long> spuIdsClone = CollUtil.newArrayList(s.getSpuIds()); |
| 113 | spuIdsClone.retainAll(spuIds); | 113 | spuIdsClone.retainAll(spuIds); |
| 114 | if (CollUtil.isEmpty(spuIdsClone)) { | 114 | if (CollUtil.isEmpty(spuIdsClone)) { |
| 115 | return false; | 115 | return false; |
| 116 | } | 116 | } |
| 117 | // 判断秒杀时段是否有交集 | 117 | // 判断秒杀时段是否有交集 |
| 118 | - List<Long> configIdsClone = ArrayUtil.clone(s.getConfigIds()); | 118 | + List<Long> configIdsClone = CollUtil.newArrayList(s.getConfigIds()); |
| 119 | configIdsClone.retainAll(configIds); | 119 | configIdsClone.retainAll(configIds); |
| 120 | return CollUtil.isNotEmpty(configIdsClone); | 120 | return CollUtil.isNotEmpty(configIdsClone); |
| 121 | }).collect(Collectors.toList()); | 121 | }).collect(Collectors.toList()); |
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImplTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.promotion.service.combination; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | ||
| 5 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityCreateReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityPageReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.CombinationActivityUpdateReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||
| 10 | +import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationActivityMapper; | ||
| 11 | +import org.junit.jupiter.api.Disabled; | ||
| 12 | +import org.junit.jupiter.api.Test; | ||
| 13 | +import org.springframework.context.annotation.Import; | ||
| 14 | + | ||
| 15 | +import javax.annotation.Resource; | ||
| 16 | +import java.util.List; | ||
| 17 | + | ||
| 18 | +import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildBetweenTime; | ||
| 19 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | ||
| 20 | +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | ||
| 21 | +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | ||
| 22 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | ||
| 23 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | ||
| 24 | +import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.COMBINATION_ACTIVITY_NOT_EXISTS; | ||
| 25 | +import static org.junit.jupiter.api.Assertions.*; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | + * {@link CombinationActivityServiceImpl} 的单元测试类 | ||
| 29 | + * | ||
| 30 | + * @author HUIHUI | ||
| 31 | + */ | ||
| 32 | +@Import(CombinationActivityServiceImpl.class) | ||
| 33 | +public class CombinationActivityServiceImplTest extends BaseDbUnitTest { | ||
| 34 | + | ||
| 35 | + @Resource | ||
| 36 | + private CombinationActivityServiceImpl combinationActivityService; | ||
| 37 | + | ||
| 38 | + @Resource | ||
| 39 | + private CombinationActivityMapper combinationActivityMapper; | ||
| 40 | + | ||
| 41 | + @Test | ||
| 42 | + public void testCreateCombinationActivity_success() { | ||
| 43 | + // 准备参数 | ||
| 44 | + CombinationActivityCreateReqVO reqVO = randomPojo(CombinationActivityCreateReqVO.class); | ||
| 45 | + | ||
| 46 | + // 调用 | ||
| 47 | + Long combinationActivityId = combinationActivityService.createCombinationActivity(reqVO); | ||
| 48 | + // 断言 | ||
| 49 | + assertNotNull(combinationActivityId); | ||
| 50 | + // 校验记录的属性是否正确 | ||
| 51 | + CombinationActivityDO combinationActivity = combinationActivityMapper.selectById(combinationActivityId); | ||
| 52 | + assertPojoEquals(reqVO, combinationActivity); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @Test | ||
| 56 | + public void testUpdateCombinationActivity_success() { | ||
| 57 | + // mock 数据 | ||
| 58 | + CombinationActivityDO dbCombinationActivity = randomPojo(CombinationActivityDO.class); | ||
| 59 | + combinationActivityMapper.insert(dbCombinationActivity);// @Sql: 先插入出一条存在的数据 | ||
| 60 | + // 准备参数 | ||
| 61 | + CombinationActivityUpdateReqVO reqVO = randomPojo(CombinationActivityUpdateReqVO.class, o -> { | ||
| 62 | + o.setId(dbCombinationActivity.getId()); // 设置更新的 ID | ||
| 63 | + }); | ||
| 64 | + | ||
| 65 | + // 调用 | ||
| 66 | + combinationActivityService.updateCombinationActivity(reqVO); | ||
| 67 | + // 校验是否更新正确 | ||
| 68 | + CombinationActivityDO combinationActivity = combinationActivityMapper.selectById(reqVO.getId()); // 获取最新的 | ||
| 69 | + assertPojoEquals(reqVO, combinationActivity); | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + @Test | ||
| 73 | + public void testUpdateCombinationActivity_notExists() { | ||
| 74 | + // 准备参数 | ||
| 75 | + CombinationActivityUpdateReqVO reqVO = randomPojo(CombinationActivityUpdateReqVO.class); | ||
| 76 | + | ||
| 77 | + // 调用, 并断言异常 | ||
| 78 | + assertServiceException(() -> combinationActivityService.updateCombinationActivity(reqVO), COMBINATION_ACTIVITY_NOT_EXISTS); | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + @Test | ||
| 82 | + public void testDeleteCombinationActivity_success() { | ||
| 83 | + // mock 数据 | ||
| 84 | + CombinationActivityDO dbCombinationActivity = randomPojo(CombinationActivityDO.class); | ||
| 85 | + combinationActivityMapper.insert(dbCombinationActivity);// @Sql: 先插入出一条存在的数据 | ||
| 86 | + // 准备参数 | ||
| 87 | + Long id = dbCombinationActivity.getId(); | ||
| 88 | + | ||
| 89 | + // 调用 | ||
| 90 | + combinationActivityService.deleteCombinationActivity(id); | ||
| 91 | + // 校验数据不存在了 | ||
| 92 | + assertNull(combinationActivityMapper.selectById(id)); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + @Test | ||
| 96 | + public void testDeleteCombinationActivity_notExists() { | ||
| 97 | + // 准备参数 | ||
| 98 | + Long id = randomLongId(); | ||
| 99 | + | ||
| 100 | + // 调用, 并断言异常 | ||
| 101 | + assertServiceException(() -> combinationActivityService.deleteCombinationActivity(id), COMBINATION_ACTIVITY_NOT_EXISTS); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + @Test | ||
| 105 | + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | ||
| 106 | + public void testGetCombinationActivityPage() { | ||
| 107 | + // mock 数据 | ||
| 108 | + CombinationActivityDO dbCombinationActivity = randomPojo(CombinationActivityDO.class, o -> { // 等会查询到 | ||
| 109 | + o.setName(null); | ||
| 110 | + o.setSpuId(null); | ||
| 111 | + o.setTotalLimitCount(null); | ||
| 112 | + o.setSingleLimitCount(null); | ||
| 113 | + o.setStartTime(null); | ||
| 114 | + o.setEndTime(null); | ||
| 115 | + o.setUserSize(null); | ||
| 116 | + o.setTotalNum(null); | ||
| 117 | + o.setSuccessNum(null); | ||
| 118 | + o.setOrderUserCount(null); | ||
| 119 | + o.setVirtualGroup(null); | ||
| 120 | + o.setStatus(null); | ||
| 121 | + o.setLimitDuration(null); | ||
| 122 | + o.setCreateTime(null); | ||
| 123 | + }); | ||
| 124 | + combinationActivityMapper.insert(dbCombinationActivity); | ||
| 125 | + // 测试 name 不匹配 | ||
| 126 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setName(null))); | ||
| 127 | + // 测试 spuId 不匹配 | ||
| 128 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSpuId(null))); | ||
| 129 | + // 测试 totalLimitCount 不匹配 | ||
| 130 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setTotalLimitCount(null))); | ||
| 131 | + // 测试 singleLimitCount 不匹配 | ||
| 132 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSingleLimitCount(null))); | ||
| 133 | + // 测试 startTime 不匹配 | ||
| 134 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setStartTime(null))); | ||
| 135 | + // 测试 endTime 不匹配 | ||
| 136 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setEndTime(null))); | ||
| 137 | + // 测试 userSize 不匹配 | ||
| 138 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setUserSize(null))); | ||
| 139 | + // 测试 totalNum 不匹配 | ||
| 140 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setTotalNum(null))); | ||
| 141 | + // 测试 successNum 不匹配 | ||
| 142 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSuccessNum(null))); | ||
| 143 | + // 测试 orderUserCount 不匹配 | ||
| 144 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setOrderUserCount(null))); | ||
| 145 | + // 测试 virtualGroup 不匹配 | ||
| 146 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setVirtualGroup(null))); | ||
| 147 | + // 测试 status 不匹配 | ||
| 148 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setStatus(null))); | ||
| 149 | + // 测试 limitDuration 不匹配 | ||
| 150 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setLimitDuration(null))); | ||
| 151 | + // 测试 createTime 不匹配 | ||
| 152 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setCreateTime(null))); | ||
| 153 | + // 准备参数 | ||
| 154 | + CombinationActivityPageReqVO reqVO = new CombinationActivityPageReqVO(); | ||
| 155 | + reqVO.setName(null); | ||
| 156 | + reqVO.setSpuId(null); | ||
| 157 | + reqVO.setTotalLimitCount(null); | ||
| 158 | + reqVO.setSingleLimitCount(null); | ||
| 159 | + reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 160 | + reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 161 | + reqVO.setUserSize(null); | ||
| 162 | + reqVO.setTotalNum(null); | ||
| 163 | + reqVO.setSuccessNum(null); | ||
| 164 | + reqVO.setOrderUserCount(null); | ||
| 165 | + reqVO.setVirtualGroup(null); | ||
| 166 | + reqVO.setStatus(null); | ||
| 167 | + reqVO.setLimitDuration(null); | ||
| 168 | + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 169 | + | ||
| 170 | + // 调用 | ||
| 171 | + PageResult<CombinationActivityDO> pageResult = combinationActivityService.getCombinationActivityPage(reqVO); | ||
| 172 | + // 断言 | ||
| 173 | + assertEquals(1, pageResult.getTotal()); | ||
| 174 | + assertEquals(1, pageResult.getList().size()); | ||
| 175 | + assertPojoEquals(dbCombinationActivity, pageResult.getList().get(0)); | ||
| 176 | + } | ||
| 177 | + | ||
| 178 | + @Test | ||
| 179 | + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | ||
| 180 | + public void testGetCombinationActivityList() { | ||
| 181 | + // mock 数据 | ||
| 182 | + CombinationActivityDO dbCombinationActivity = randomPojo(CombinationActivityDO.class, o -> { // 等会查询到 | ||
| 183 | + o.setName(null); | ||
| 184 | + o.setSpuId(null); | ||
| 185 | + o.setTotalLimitCount(null); | ||
| 186 | + o.setSingleLimitCount(null); | ||
| 187 | + o.setStartTime(null); | ||
| 188 | + o.setEndTime(null); | ||
| 189 | + o.setUserSize(null); | ||
| 190 | + o.setTotalNum(null); | ||
| 191 | + o.setSuccessNum(null); | ||
| 192 | + o.setOrderUserCount(null); | ||
| 193 | + o.setVirtualGroup(null); | ||
| 194 | + o.setStatus(null); | ||
| 195 | + o.setLimitDuration(null); | ||
| 196 | + o.setCreateTime(null); | ||
| 197 | + }); | ||
| 198 | + combinationActivityMapper.insert(dbCombinationActivity); | ||
| 199 | + // 测试 name 不匹配 | ||
| 200 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setName(null))); | ||
| 201 | + // 测试 spuId 不匹配 | ||
| 202 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSpuId(null))); | ||
| 203 | + // 测试 totalLimitCount 不匹配 | ||
| 204 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setTotalLimitCount(null))); | ||
| 205 | + // 测试 singleLimitCount 不匹配 | ||
| 206 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSingleLimitCount(null))); | ||
| 207 | + // 测试 startTime 不匹配 | ||
| 208 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setStartTime(null))); | ||
| 209 | + // 测试 endTime 不匹配 | ||
| 210 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setEndTime(null))); | ||
| 211 | + // 测试 userSize 不匹配 | ||
| 212 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setUserSize(null))); | ||
| 213 | + // 测试 totalNum 不匹配 | ||
| 214 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setTotalNum(null))); | ||
| 215 | + // 测试 successNum 不匹配 | ||
| 216 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setSuccessNum(null))); | ||
| 217 | + // 测试 orderUserCount 不匹配 | ||
| 218 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setOrderUserCount(null))); | ||
| 219 | + // 测试 virtualGroup 不匹配 | ||
| 220 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setVirtualGroup(null))); | ||
| 221 | + // 测试 status 不匹配 | ||
| 222 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setStatus(null))); | ||
| 223 | + // 测试 limitDuration 不匹配 | ||
| 224 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setLimitDuration(null))); | ||
| 225 | + // 测试 createTime 不匹配 | ||
| 226 | + combinationActivityMapper.insert(cloneIgnoreId(dbCombinationActivity, o -> o.setCreateTime(null))); | ||
| 227 | + // 准备参数 | ||
| 228 | + CombinationActivityExportReqVO reqVO = new CombinationActivityExportReqVO(); | ||
| 229 | + reqVO.setName(null); | ||
| 230 | + reqVO.setSpuId(null); | ||
| 231 | + reqVO.setTotalLimitCount(null); | ||
| 232 | + reqVO.setSingleLimitCount(null); | ||
| 233 | + reqVO.setStartTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 234 | + reqVO.setEndTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 235 | + reqVO.setUserSize(null); | ||
| 236 | + reqVO.setTotalNum(null); | ||
| 237 | + reqVO.setSuccessNum(null); | ||
| 238 | + reqVO.setOrderUserCount(null); | ||
| 239 | + reqVO.setVirtualGroup(null); | ||
| 240 | + reqVO.setStatus(null); | ||
| 241 | + reqVO.setLimitDuration(null); | ||
| 242 | + reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); | ||
| 243 | + | ||
| 244 | + // 调用 | ||
| 245 | + List<CombinationActivityDO> list = combinationActivityService.getCombinationActivityList(reqVO); | ||
| 246 | + // 断言 | ||
| 247 | + assertEquals(1, list.size()); | ||
| 248 | + assertPojoEquals(dbCombinationActivity, list.get(0)); | ||
| 249 | + } | ||
| 250 | + | ||
| 251 | +} |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java
| @@ -115,7 +115,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | @@ -115,7 +115,8 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | ||
| 115 | when(productSpuApi.getSpuList(eq(asSet(11L, 21L)))).thenReturn(Arrays.asList(spu01, spu02)); | 115 | when(productSpuApi.getSpuList(eq(asSet(11L, 21L)))).thenReturn(Arrays.asList(spu01, spu02)); |
| 116 | // mock 方法(用户收件地址的校验) | 116 | // mock 方法(用户收件地址的校验) |
| 117 | AddressRespDTO addressRespDTO = new AddressRespDTO().setId(10L).setUserId(userId).setName("芋艿") | 117 | AddressRespDTO addressRespDTO = new AddressRespDTO().setId(10L).setUserId(userId).setName("芋艿") |
| 118 | - .setMobile("15601691300").setAreaId(3306).setPostCode("85757").setDetailAddress("土豆村"); | 118 | + //.setMobile("15601691300").setAreaId(3306).setPostCode("85757").setDetailAddress("土豆村"); |
| 119 | + .setMobile("15601691300").setAreaId(3306).setDetailAddress("土豆村"); | ||
| 119 | when(addressApi.getAddress(eq(10L), eq(userId))).thenReturn(addressRespDTO); | 120 | when(addressApi.getAddress(eq(10L), eq(userId))).thenReturn(addressRespDTO); |
| 120 | // mock 方法(价格计算) | 121 | // mock 方法(价格计算) |
| 121 | PriceCalculateRespDTO.OrderItem priceOrderItem01 = new PriceCalculateRespDTO.OrderItem() | 122 | PriceCalculateRespDTO.OrderItem priceOrderItem01 = new PriceCalculateRespDTO.OrderItem() |
| @@ -150,12 +151,12 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | @@ -150,12 +151,12 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | ||
| 150 | }))).thenReturn(1000L); | 151 | }))).thenReturn(1000L); |
| 151 | 152 | ||
| 152 | // 调用方法 | 153 | // 调用方法 |
| 153 | - Long tradeOrderId = tradeOrderService.createOrder(userId, userIp, reqVO); | 154 | + TradeOrderDO order = tradeOrderService.createOrder(userId, userIp, reqVO); |
| 154 | // 断言 TradeOrderDO 订单 | 155 | // 断言 TradeOrderDO 订单 |
| 155 | List<TradeOrderDO> tradeOrderDOs = tradeOrderMapper.selectList(); | 156 | List<TradeOrderDO> tradeOrderDOs = tradeOrderMapper.selectList(); |
| 156 | assertEquals(tradeOrderDOs.size(), 1); | 157 | assertEquals(tradeOrderDOs.size(), 1); |
| 157 | TradeOrderDO tradeOrderDO = tradeOrderDOs.get(0); | 158 | TradeOrderDO tradeOrderDO = tradeOrderDOs.get(0); |
| 158 | - assertEquals(tradeOrderDO.getId(), tradeOrderId); | 159 | + assertEquals(tradeOrderDO.getId(), order.getId()); |
| 159 | assertNotNull(tradeOrderDO.getNo()); | 160 | assertNotNull(tradeOrderDO.getNo()); |
| 160 | assertEquals(tradeOrderDO.getType(), TradeOrderTypeEnum.NORMAL.getType()); | 161 | assertEquals(tradeOrderDO.getType(), TradeOrderTypeEnum.NORMAL.getType()); |
| 161 | assertEquals(tradeOrderDO.getTerminal(), TerminalEnum.H5.getTerminal()); | 162 | assertEquals(tradeOrderDO.getTerminal(), TerminalEnum.H5.getTerminal()); |
| @@ -195,7 +196,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | @@ -195,7 +196,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | ||
| 195 | TradeOrderItemDO tradeOrderItemDO01 = tradeOrderItemDOs.get(0); | 196 | TradeOrderItemDO tradeOrderItemDO01 = tradeOrderItemDOs.get(0); |
| 196 | assertNotNull(tradeOrderItemDO01.getId()); | 197 | assertNotNull(tradeOrderItemDO01.getId()); |
| 197 | assertEquals(tradeOrderItemDO01.getUserId(), userId); | 198 | assertEquals(tradeOrderItemDO01.getUserId(), userId); |
| 198 | - assertEquals(tradeOrderItemDO01.getOrderId(), tradeOrderId); | 199 | + assertEquals(tradeOrderItemDO01.getOrderId(), order.getId()); |
| 199 | assertEquals(tradeOrderItemDO01.getSpuId(), 11L); | 200 | assertEquals(tradeOrderItemDO01.getSpuId(), 11L); |
| 200 | assertEquals(tradeOrderItemDO01.getSkuId(), 1L); | 201 | assertEquals(tradeOrderItemDO01.getSkuId(), 1L); |
| 201 | assertEquals(tradeOrderItemDO01.getProperties().size(), 1); | 202 | assertEquals(tradeOrderItemDO01.getProperties().size(), 1); |
| @@ -213,7 +214,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | @@ -213,7 +214,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | ||
| 213 | TradeOrderItemDO tradeOrderItemDO02 = tradeOrderItemDOs.get(1); | 214 | TradeOrderItemDO tradeOrderItemDO02 = tradeOrderItemDOs.get(1); |
| 214 | assertNotNull(tradeOrderItemDO02.getId()); | 215 | assertNotNull(tradeOrderItemDO02.getId()); |
| 215 | assertEquals(tradeOrderItemDO02.getUserId(), userId); | 216 | assertEquals(tradeOrderItemDO02.getUserId(), userId); |
| 216 | - assertEquals(tradeOrderItemDO02.getOrderId(), tradeOrderId); | 217 | + assertEquals(tradeOrderItemDO02.getOrderId(), order.getId()); |
| 217 | assertEquals(tradeOrderItemDO02.getSpuId(), 21L); | 218 | assertEquals(tradeOrderItemDO02.getSpuId(), 21L); |
| 218 | assertEquals(tradeOrderItemDO02.getSkuId(), 2L); | 219 | assertEquals(tradeOrderItemDO02.getSkuId(), 2L); |
| 219 | assertEquals(tradeOrderItemDO02.getProperties().size(), 1); | 220 | assertEquals(tradeOrderItemDO02.getProperties().size(), 1); |
| @@ -239,7 +240,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | @@ -239,7 +240,7 @@ public class TradeOrderServiceTest extends BaseDbUnitTest { | ||
| 239 | verify(couponApi).useCoupon(argThat(reqDTO -> { | 240 | verify(couponApi).useCoupon(argThat(reqDTO -> { |
| 240 | assertEquals(reqDTO.getId(), reqVO.getCouponId()); | 241 | assertEquals(reqDTO.getId(), reqVO.getCouponId()); |
| 241 | assertEquals(reqDTO.getUserId(), userId); | 242 | assertEquals(reqDTO.getUserId(), userId); |
| 242 | - assertEquals(reqDTO.getOrderId(), tradeOrderId); | 243 | + assertEquals(reqDTO.getOrderId(), order.getId()); |
| 243 | return true; | 244 | return true; |
| 244 | })); | 245 | })); |
| 245 | } | 246 | } |