fix:seckillTime => seckillConfig
parent
217a31a123
commit
32cca12cd2
@ -0,0 +1,87 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigRespVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig.SeckillConfigService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理后台 - 秒杀时段相关接口
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
@Tag(name = "管理后台 - 秒杀时段")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/promotion/seckill-config")
|
||||||
|
@Validated
|
||||||
|
public class SeckillConfigController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SeckillConfigService seckillConfigService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建秒杀时段")
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:create')")
|
||||||
|
public CommonResult<Long> createSeckillConfig(@Valid @RequestBody SeckillConfigCreateReqVO createReqVO) {
|
||||||
|
return success(seckillConfigService.createSeckillConfig(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新秒杀时段")
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:update')")
|
||||||
|
public CommonResult<Boolean> updateSeckillConfig(@Valid @RequestBody SeckillConfigUpdateReqVO updateReqVO) {
|
||||||
|
seckillConfigService.updateSeckillConfig(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除秒杀时段")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:delete')")
|
||||||
|
public CommonResult<Boolean> deleteSeckillConfig(@RequestParam("id") Long id) {
|
||||||
|
seckillConfigService.deleteSeckillConfig(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得秒杀时段")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
|
||||||
|
public CommonResult<SeckillConfigRespVO> getSeckillConfig(@RequestParam("id") Long id) {
|
||||||
|
SeckillConfigDO seckillConfig = seckillConfigService.getSeckillConfig(id);
|
||||||
|
return success(SeckillConfigConvert.INSTANCE.convert(seckillConfig));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得所有秒杀时段列表")
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
|
||||||
|
public CommonResult<List<SeckillConfigRespVO>> getSeckillConfigList() {
|
||||||
|
List<SeckillConfigDO> list = seckillConfigService.getSeckillConfigList();
|
||||||
|
return success(SeckillConfigConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得秒杀活动分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('promotion:seckill-config:query')")
|
||||||
|
public CommonResult<PageResult<SeckillConfigRespVO>> getSeckillActivityPage(@Valid SeckillConfigPageReqVO pageVO) {
|
||||||
|
PageResult<SeckillConfigDO> pageResult = seckillConfigService.getSeckillConfigPage(pageVO);
|
||||||
|
return success(SeckillConfigConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,72 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.controller.admin.seckill;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeRespVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime.SeckillTimeConvert;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.service.seckill.seckilltime.SeckillTimeService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import javax.validation.Valid;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 秒杀时段")
|
|
||||||
@RestController
|
|
||||||
@RequestMapping("/promotion/seckill-time")
|
|
||||||
@Validated
|
|
||||||
public class SeckillTimeController {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SeckillTimeService seckillTimeService;
|
|
||||||
|
|
||||||
@PostMapping("/create")
|
|
||||||
@Operation(summary = "创建秒杀时段")
|
|
||||||
@PreAuthorize("@ss.hasPermission('promotion:seckill-time:create')")
|
|
||||||
public CommonResult<Long> createSeckillTime(@Valid @RequestBody SeckillTimeCreateReqVO createReqVO) {
|
|
||||||
return success(seckillTimeService.createSeckillTime(createReqVO));
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/update")
|
|
||||||
@Operation(summary = "更新秒杀时段")
|
|
||||||
@PreAuthorize("@ss.hasPermission('promotion:seckill-time:update')")
|
|
||||||
public CommonResult<Boolean> updateSeckillTime(@Valid @RequestBody SeckillTimeUpdateReqVO updateReqVO) {
|
|
||||||
seckillTimeService.updateSeckillTime(updateReqVO);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@DeleteMapping("/delete")
|
|
||||||
@Operation(summary = "删除秒杀时段")
|
|
||||||
@Parameter(name = "id", description = "编号", required = true)
|
|
||||||
@PreAuthorize("@ss.hasPermission('promotion:seckill-time:delete')")
|
|
||||||
public CommonResult<Boolean> deleteSeckillTime(@RequestParam("id") Long id) {
|
|
||||||
seckillTimeService.deleteSeckillTime(id);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/get")
|
|
||||||
@Operation(summary = "获得秒杀时段")
|
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
|
||||||
@PreAuthorize("@ss.hasPermission('promotion:seckill-time:query')")
|
|
||||||
public CommonResult<SeckillTimeRespVO> getSeckillTime(@RequestParam("id") Long id) {
|
|
||||||
SeckillTimeDO seckillTime = seckillTimeService.getSeckillTime(id);
|
|
||||||
return success(SeckillTimeConvert.INSTANCE.convert(seckillTime));
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/list")
|
|
||||||
@Operation(summary = "获得所有秒杀时段列表")
|
|
||||||
@PreAuthorize("@ss.hasPermission('promotion:seckill-time:query')")
|
|
||||||
public CommonResult<List<SeckillTimeRespVO>> getSeckillTimeList() {
|
|
||||||
List<SeckillTimeDO> list = seckillTimeService.getSeckillTimeList();
|
|
||||||
return success(SeckillTimeConvert.INSTANCE.convertList(list));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
9
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeCreateReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigCreateReqVO.java
9
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeCreateReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigCreateReqVO.java
@ -1,14 +1,19 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
|
package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理后台 秒杀时段创建 Request VO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
@Schema(description = "管理后台 - 秒杀时段创建 Request VO")
|
@Schema(description = "管理后台 - 秒杀时段创建 Request VO")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class SeckillTimeCreateReqVO extends SeckillTimeBaseVO {
|
public class SeckillConfigCreateReqVO extends SeckillConfigBaseVO {
|
||||||
|
|
||||||
}
|
}
|
||||||
16
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimePageReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigPageReqVO.java
16
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimePageReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigPageReqVO.java
15
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeRespVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigRespVO.java
15
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeRespVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigRespVO.java
@ -1,25 +1,34 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time;
|
package cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 管理后台 - 秒杀时段 Response VO
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
@Schema(description = "管理后台 - 秒杀时段 Response VO")
|
@Schema(description = "管理后台 - 秒杀时段 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class SeckillTimeRespVO extends SeckillTimeBaseVO {
|
public class SeckillConfigRespVO extends SeckillConfigBaseVO {
|
||||||
|
|
||||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@Schema(description = "秒杀活动数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "秒杀活动数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
|
||||||
private Integer seckillActivityCount;
|
private Integer seckillActivityCount;
|
||||||
|
|
||||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
9
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeUpdateReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigUpdateReqVO.java
9
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/time/SeckillTimeUpdateReqVO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/seckill/vo/config/SeckillConfigUpdateReqVO.java
@ -0,0 +1,35 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigRespVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.Mapping;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 秒杀时段 Convert
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface SeckillConfigConvert {
|
||||||
|
|
||||||
|
SeckillConfigConvert INSTANCE = Mappers.getMapper(SeckillConfigConvert.class);
|
||||||
|
|
||||||
|
SeckillConfigDO convert(SeckillConfigCreateReqVO bean);
|
||||||
|
|
||||||
|
SeckillConfigDO convert(SeckillConfigUpdateReqVO bean);
|
||||||
|
|
||||||
|
@Mapping(target = "s")
|
||||||
|
SeckillConfigRespVO convert(SeckillConfigDO bean);
|
||||||
|
|
||||||
|
List<SeckillConfigRespVO> convertList(List<SeckillConfigDO> list);
|
||||||
|
|
||||||
|
PageResult<SeckillConfigRespVO> convertPage(PageResult<SeckillConfigDO> page);
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,34 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime;
|
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeRespVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
|
|
||||||
import org.mapstruct.Mapper;
|
|
||||||
import org.mapstruct.factory.Mappers;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀时段 Convert
|
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
@Mapper
|
|
||||||
public interface SeckillTimeConvert {
|
|
||||||
|
|
||||||
SeckillTimeConvert INSTANCE = Mappers.getMapper(SeckillTimeConvert.class);
|
|
||||||
|
|
||||||
SeckillTimeDO convert(SeckillTimeCreateReqVO bean);
|
|
||||||
|
|
||||||
SeckillTimeDO convert(SeckillTimeUpdateReqVO bean);
|
|
||||||
|
|
||||||
SeckillTimeRespVO convert(SeckillTimeDO bean);
|
|
||||||
|
|
||||||
List<SeckillTimeRespVO> convertList(List<SeckillTimeDO> list);
|
|
||||||
|
|
||||||
PageResult<SeckillTimeRespVO> convertPage(PageResult<SeckillTimeDO> page);
|
|
||||||
|
|
||||||
}
|
|
||||||
19
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckilltime/SeckillTimeDO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillconfig/SeckillConfigDO.java
19
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckilltime/SeckillTimeDO.java → yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/seckill/seckillconfig/SeckillConfigDO.java
@ -0,0 +1,45 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface SeckillConfigMapper extends BaseMapperX<SeckillConfigDO> {
|
||||||
|
|
||||||
|
default List<SeckillConfigDO> selectListByTime(LocalTime time) {
|
||||||
|
return selectList(SeckillConfigDO::getStartTime, SeckillConfigDO::getEndTime, time);
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<SeckillConfigDO> selectListByTime(LocalTime startTime, LocalTime endTime) {
|
||||||
|
return selectList(new LambdaQueryWrapper<SeckillConfigDO>()
|
||||||
|
.ge(SeckillConfigDO::getStartTime, startTime)
|
||||||
|
.le(SeckillConfigDO::getEndTime, endTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
default void updateActivityCount(Collection<Long> ids, String type, Integer count) {
|
||||||
|
new LambdaUpdateChainWrapper<>(this)
|
||||||
|
.in(SeckillConfigDO::getId, ids)
|
||||||
|
.setSql("`seckill_activity_count` = `seckill_activity_count` " + type + count)
|
||||||
|
.update();
|
||||||
|
}
|
||||||
|
|
||||||
|
default PageResult<SeckillConfigDO> selectPage(SeckillConfigPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<SeckillConfigDO>()
|
||||||
|
.likeIfPresent(SeckillConfigDO::getName, reqVO.getName())
|
||||||
|
.betweenIfPresent(SeckillConfigDO::getStartTime, reqVO.getStartTime())
|
||||||
|
.betweenIfPresent(SeckillConfigDO::getEndTime, reqVO.getEndTime())
|
||||||
|
.eqIfPresent(SeckillConfigDO::getStatus, reqVO.getStatus())
|
||||||
|
.orderByDesc(SeckillConfigDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,32 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
||||||
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
|
||||||
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Mapper
|
|
||||||
public interface SeckillTimeMapper extends BaseMapperX<SeckillTimeDO> {
|
|
||||||
|
|
||||||
default List<SeckillTimeDO> selectListByTime(LocalTime time) {
|
|
||||||
return selectList(SeckillTimeDO::getStartTime, SeckillTimeDO::getEndTime, time);
|
|
||||||
}
|
|
||||||
|
|
||||||
default List<SeckillTimeDO> selectListByTime(LocalTime startTime, LocalTime endTime) {
|
|
||||||
return selectList(new LambdaQueryWrapper<SeckillTimeDO>()
|
|
||||||
.ge(SeckillTimeDO::getStartTime, startTime)
|
|
||||||
.le(SeckillTimeDO::getEndTime, endTime));
|
|
||||||
}
|
|
||||||
|
|
||||||
default void updateActivityCount(Collection<Long> ids, String type, Integer count) {
|
|
||||||
new LambdaUpdateChainWrapper<>(this)
|
|
||||||
.in(SeckillTimeDO::getId, ids)
|
|
||||||
.setSql("`seckill_activity_count` = `seckill_activity_count` " + type + count)
|
|
||||||
.update();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -0,0 +1,131 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.convert.seckill.seckillconfig.SeckillConfigConvert;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_CONFLICTS;
|
||||||
|
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_NOT_EXISTS;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 秒杀时段 Service 实现类
|
||||||
|
*
|
||||||
|
* @author halfninety
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class SeckillConfigServiceImpl implements SeckillConfigService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SeckillConfigMapper seckillConfigMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createSeckillConfig(SeckillConfigCreateReqVO createReqVO) {
|
||||||
|
// 校验时间段是否冲突
|
||||||
|
validateSeckillConfigConflict(null, createReqVO.getStartTime(), createReqVO.getEndTime());
|
||||||
|
// 插入
|
||||||
|
SeckillConfigDO seckillConfig = SeckillConfigConvert.INSTANCE.convert(createReqVO);
|
||||||
|
seckillConfigMapper.insert(seckillConfig);
|
||||||
|
// 返回
|
||||||
|
return seckillConfig.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateSeckillConfig(SeckillConfigUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
this.validateSeckillConfigExists(updateReqVO.getId());
|
||||||
|
// 校验时间段是否冲突
|
||||||
|
validateSeckillConfigConflict(updateReqVO.getId(), updateReqVO.getStartTime(), updateReqVO.getEndTime());
|
||||||
|
// 更新
|
||||||
|
SeckillConfigDO updateObj = SeckillConfigConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
seckillConfigMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteSeckillConfig(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
this.validateSeckillConfigExists(id);
|
||||||
|
// 删除
|
||||||
|
seckillConfigMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateSeckillConfigExists(Long id) {
|
||||||
|
if (seckillConfigMapper.selectById(id) == null) {
|
||||||
|
throw exception(SECKILL_TIME_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验时间是否存在冲突
|
||||||
|
*
|
||||||
|
* @param startTime 开始时间
|
||||||
|
* @param endTime 结束时间
|
||||||
|
*/
|
||||||
|
private void validateSeckillConfigConflict(Long id, LocalTime startTime, LocalTime endTime) {
|
||||||
|
//查询开始时间,结束时间,是否在别人的时间段内
|
||||||
|
List<SeckillConfigDO> startTimeList = seckillConfigMapper.selectListByTime(startTime);
|
||||||
|
List<SeckillConfigDO> endTimeList = seckillConfigMapper.selectListByTime(endTime);
|
||||||
|
//查询自己时间段内是否有时间段
|
||||||
|
List<SeckillConfigDO> startEndTimeList = seckillConfigMapper.selectListByTime(startTime, endTime);
|
||||||
|
if (id != null) {
|
||||||
|
//移除自己
|
||||||
|
startTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
|
||||||
|
endTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
|
||||||
|
startEndTimeList.removeIf(seckillConfig -> Objects.equals(seckillConfig.getId(), id));
|
||||||
|
}
|
||||||
|
if (CollUtil.isNotEmpty(startTimeList) || CollUtil.isNotEmpty(endTimeList)
|
||||||
|
|| CollUtil.isNotEmpty(startEndTimeList)) {
|
||||||
|
throw exception(SECKILL_TIME_CONFLICTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SeckillConfigDO getSeckillConfig(Long id) {
|
||||||
|
return seckillConfigMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SeckillConfigDO> getSeckillConfigList() {
|
||||||
|
return seckillConfigMapper.selectList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void validateSeckillConfigExists(Collection<Long> timeIds) {
|
||||||
|
if (CollUtil.isEmpty(timeIds)) {
|
||||||
|
throw exception(SECKILL_TIME_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
if (seckillConfigMapper.selectBatchIds(timeIds).size() != timeIds.size()) {
|
||||||
|
throw exception(SECKILL_TIME_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void seckillActivityCountIncr(Collection<Long> ids) {
|
||||||
|
seckillConfigMapper.updateActivityCount(ids, "+", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void seckillActivityCountDecr(Collection<Long> ids) {
|
||||||
|
seckillConfigMapper.updateActivityCount(ids, "-", 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<SeckillConfigDO> getSeckillConfigPage(SeckillConfigPageReqVO pageVO) {
|
||||||
|
return seckillConfigMapper.selectPage(pageVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,124 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.service.seckill.seckilltime;
|
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.convert.seckill.seckilltime.SeckillTimeConvert;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime.SeckillTimeMapper;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_CONFLICTS;
|
|
||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_NOT_EXISTS;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 秒杀时段 Service 实现类
|
|
||||||
*
|
|
||||||
* @author halfninety
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@Validated
|
|
||||||
public class SeckillTimeServiceImpl implements SeckillTimeService {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SeckillTimeMapper seckillTimeMapper;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long createSeckillTime(SeckillTimeCreateReqVO createReqVO) {
|
|
||||||
// 校验时间段是否冲突
|
|
||||||
validateSeckillTimeConflict(null, createReqVO.getStartTime(), createReqVO.getEndTime());
|
|
||||||
// 插入
|
|
||||||
SeckillTimeDO seckillTime = SeckillTimeConvert.INSTANCE.convert(createReqVO);
|
|
||||||
seckillTimeMapper.insert(seckillTime);
|
|
||||||
// 返回
|
|
||||||
return seckillTime.getId();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void updateSeckillTime(SeckillTimeUpdateReqVO updateReqVO) {
|
|
||||||
// 校验存在
|
|
||||||
this.validateSeckillTimeExists(updateReqVO.getId());
|
|
||||||
// 校验时间段是否冲突
|
|
||||||
validateSeckillTimeConflict(updateReqVO.getId(), updateReqVO.getStartTime(), updateReqVO.getEndTime());
|
|
||||||
// 更新
|
|
||||||
SeckillTimeDO updateObj = SeckillTimeConvert.INSTANCE.convert(updateReqVO);
|
|
||||||
seckillTimeMapper.updateById(updateObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void deleteSeckillTime(Long id) {
|
|
||||||
// 校验存在
|
|
||||||
this.validateSeckillTimeExists(id);
|
|
||||||
// 删除
|
|
||||||
seckillTimeMapper.deleteById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void validateSeckillTimeExists(Long id) {
|
|
||||||
if (seckillTimeMapper.selectById(id) == null) {
|
|
||||||
throw exception(SECKILL_TIME_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 校验时间是否存在冲突
|
|
||||||
*
|
|
||||||
* @param startTime 开始时间
|
|
||||||
* @param endTime 结束时间
|
|
||||||
*/
|
|
||||||
private void validateSeckillTimeConflict(Long id, LocalTime startTime, LocalTime endTime) {
|
|
||||||
//查询开始时间,结束时间,是否在别人的时间段内
|
|
||||||
List<SeckillTimeDO> startTimeList = seckillTimeMapper.selectListByTime(startTime);
|
|
||||||
List<SeckillTimeDO> endTimeList = seckillTimeMapper.selectListByTime(endTime);
|
|
||||||
//查询自己时间段内是否有时间段
|
|
||||||
List<SeckillTimeDO> startEndTimeList = seckillTimeMapper.selectListByTime(startTime, endTime);
|
|
||||||
if (id != null) {
|
|
||||||
//移除自己
|
|
||||||
startTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
|
|
||||||
endTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
|
|
||||||
startEndTimeList.removeIf(seckillTime -> Objects.equals(seckillTime.getId(), id));
|
|
||||||
}
|
|
||||||
if (CollUtil.isNotEmpty(startTimeList) || CollUtil.isNotEmpty(endTimeList)
|
|
||||||
|| CollUtil.isNotEmpty(startEndTimeList)) {
|
|
||||||
throw exception(SECKILL_TIME_CONFLICTS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SeckillTimeDO getSeckillTime(Long id) {
|
|
||||||
return seckillTimeMapper.selectById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<SeckillTimeDO> getSeckillTimeList() {
|
|
||||||
return seckillTimeMapper.selectList();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void validateSeckillTimeExists(Collection<Long> timeIds) {
|
|
||||||
if (CollUtil.isEmpty(timeIds)) {
|
|
||||||
throw exception(SECKILL_TIME_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
if (seckillTimeMapper.selectBatchIds(timeIds).size() != timeIds.size()) {
|
|
||||||
throw exception(SECKILL_TIME_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sekillActivityCountIncr(Collection<Long> ids) {
|
|
||||||
seckillTimeMapper.updateActivityCount(ids, "+", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sekillActivityCountDecr(Collection<Long> ids) {
|
|
||||||
seckillTimeMapper.updateActivityCount(ids, "-", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -0,0 +1,190 @@
|
|||||||
|
package cn.iocoder.yudao.module.promotion.service.seckillconfig;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigCreateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.config.SeckillConfigUpdateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckillconfig.SeckillConfigDO;
|
||||||
|
import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckillconfig.SeckillConfigMapper;
|
||||||
|
import cn.iocoder.yudao.module.promotion.service.seckill.seckillconfig.SeckillConfigServiceImpl;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId;
|
||||||
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo;
|
||||||
|
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.SECKILL_TIME_NOT_EXISTS;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link SeckillConfigServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 芋道源码
|
||||||
|
*/
|
||||||
|
@Import(SeckillConfigServiceImpl.class)
|
||||||
|
@Disabled // TODO 芋艿:未来开启
|
||||||
|
public class SeckillConfigServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SeckillConfigServiceImpl SeckillConfigService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SeckillConfigMapper seckillConfigMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ObjectMapper objectMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testJacksonSerializ() {
|
||||||
|
|
||||||
|
// 准备参数
|
||||||
|
SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class);
|
||||||
|
// ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
try {
|
||||||
|
String string = objectMapper.writeValueAsString(reqVO);
|
||||||
|
System.out.println(string);
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateSeckillConfig_success() {
|
||||||
|
// 准备参数
|
||||||
|
SeckillConfigCreateReqVO reqVO = randomPojo(SeckillConfigCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long SeckillConfigId = SeckillConfigService.createSeckillConfig(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(SeckillConfigId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(SeckillConfigId);
|
||||||
|
assertPojoEquals(reqVO, SeckillConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSeckillConfig_success() {
|
||||||
|
// mock 数据
|
||||||
|
SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class);
|
||||||
|
seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbSeckillConfig.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
SeckillConfigService.updateSeckillConfig(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
SeckillConfigDO SeckillConfig = seckillConfigMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, SeckillConfig);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateSeckillConfig_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
SeckillConfigUpdateReqVO reqVO = randomPojo(SeckillConfigUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> SeckillConfigService.updateSeckillConfig(reqVO), SECKILL_TIME_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSeckillConfig_success() {
|
||||||
|
// mock 数据
|
||||||
|
SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class);
|
||||||
|
seckillConfigMapper.insert(dbSeckillConfig);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbSeckillConfig.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
SeckillConfigService.deleteSeckillConfig(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(seckillConfigMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteSeckillConfig_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> SeckillConfigService.deleteSeckillConfig(id), SECKILL_TIME_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSeckillConfigPage() {
|
||||||
|
// mock 数据
|
||||||
|
// SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到
|
||||||
|
// o.setName(null);
|
||||||
|
// o.setStartTime(null);
|
||||||
|
// o.setEndTime(null);
|
||||||
|
// o.setCreateTime(null);
|
||||||
|
// });
|
||||||
|
// seckillConfigMapper.insert(dbSeckillConfig);
|
||||||
|
// // 测试 name 不匹配
|
||||||
|
// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null)));
|
||||||
|
// // 测试 startTime 不匹配
|
||||||
|
// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null)));
|
||||||
|
// // 测试 endTime 不匹配
|
||||||
|
// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null)));
|
||||||
|
// // 测试 createTime 不匹配
|
||||||
|
// seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null)));
|
||||||
|
// // 准备参数
|
||||||
|
// SeckillConfigPageReqVO reqVO = new SeckillConfigPageReqVO();
|
||||||
|
// reqVO.setName(null);
|
||||||
|
//// reqVO.setStartTime((new LocalTime()));
|
||||||
|
//// reqVO.setEndTime((new LocalTime[]{}));
|
||||||
|
//// reqVO.setCreateTime((new Date[]{}));
|
||||||
|
//
|
||||||
|
// // 调用
|
||||||
|
// PageResult<SeckillConfigDO> pageResult = SeckillConfigService.getSeckillConfigPage(reqVO);
|
||||||
|
// // 断言
|
||||||
|
// assertEquals(1, pageResult.getTotal());
|
||||||
|
// assertEquals(1, pageResult.getList().size());
|
||||||
|
// assertPojoEquals(dbSeckillConfig, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetSeckillConfigList() {
|
||||||
|
// mock 数据
|
||||||
|
SeckillConfigDO dbSeckillConfig = randomPojo(SeckillConfigDO.class, o -> { // 等会查询到
|
||||||
|
o.setName(null);
|
||||||
|
o.setStartTime(null);
|
||||||
|
o.setEndTime(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
seckillConfigMapper.insert(dbSeckillConfig);
|
||||||
|
// 测试 name 不匹配
|
||||||
|
seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setName(null)));
|
||||||
|
// 测试 startTime 不匹配
|
||||||
|
seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setStartTime(null)));
|
||||||
|
// 测试 endTime 不匹配
|
||||||
|
seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setEndTime(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
seckillConfigMapper.insert(cloneIgnoreId(dbSeckillConfig, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
// SeckillConfigExportReqVO reqVO = new SeckillConfigExportReqVO();
|
||||||
|
// reqVO.setName(null);
|
||||||
|
// reqVO.setStartTime((new LocalTime[]{}));
|
||||||
|
// reqVO.setEndTime((new LocalTime[]{}));
|
||||||
|
// reqVO.setCreateTime((new Date[]{}));
|
||||||
|
//
|
||||||
|
// // 调用
|
||||||
|
// List<SeckillConfigDO> list = SeckillConfigService.getSeckillConfigList(reqVO);
|
||||||
|
// // 断言
|
||||||
|
// assertEquals(1, list.size());
|
||||||
|
// assertPojoEquals(dbSeckillConfig, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,190 +0,0 @@
|
|||||||
package cn.iocoder.yudao.module.promotion.service.seckilltime;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeCreateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.controller.admin.seckill.vo.time.SeckillTimeUpdateReqVO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.service.seckill.seckilltime.SeckillTimeServiceImpl;
|
|
||||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.seckill.seckilltime.SeckillTimeDO;
|
|
||||||
import cn.iocoder.yudao.module.promotion.dal.mysql.seckill.seckilltime.SeckillTimeMapper;
|
|
||||||
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
|
|
||||||
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*;
|
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
|
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link SeckillTimeServiceImpl} 的单元测试类
|
|
||||||
*
|
|
||||||
* @author 芋道源码
|
|
||||||
*/
|
|
||||||
@Import(SeckillTimeServiceImpl.class)
|
|
||||||
@Disabled // TODO 芋艿:未来开启
|
|
||||||
public class SeckillTimeServiceImplTest extends BaseDbUnitTest {
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SeckillTimeServiceImpl seckillTimeService;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private SeckillTimeMapper seckillTimeMapper;
|
|
||||||
|
|
||||||
@Resource
|
|
||||||
private ObjectMapper objectMapper;
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testJacksonSerializ(){
|
|
||||||
|
|
||||||
// 准备参数
|
|
||||||
SeckillTimeCreateReqVO reqVO = randomPojo(SeckillTimeCreateReqVO.class);
|
|
||||||
// ObjectMapper objectMapper = new ObjectMapper();
|
|
||||||
try {
|
|
||||||
String string = objectMapper.writeValueAsString(reqVO);
|
|
||||||
System.out.println(string);
|
|
||||||
} catch (JsonProcessingException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCreateSeckillTime_success() {
|
|
||||||
// 准备参数
|
|
||||||
SeckillTimeCreateReqVO reqVO = randomPojo(SeckillTimeCreateReqVO.class);
|
|
||||||
|
|
||||||
// 调用
|
|
||||||
Long seckillTimeId = seckillTimeService.createSeckillTime(reqVO);
|
|
||||||
// 断言
|
|
||||||
assertNotNull(seckillTimeId);
|
|
||||||
// 校验记录的属性是否正确
|
|
||||||
SeckillTimeDO seckillTime = seckillTimeMapper.selectById(seckillTimeId);
|
|
||||||
assertPojoEquals(reqVO, seckillTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testUpdateSeckillTime_success() {
|
|
||||||
// mock 数据
|
|
||||||
SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class);
|
|
||||||
seckillTimeMapper.insert(dbSeckillTime);// @Sql: 先插入出一条存在的数据
|
|
||||||
// 准备参数
|
|
||||||
SeckillTimeUpdateReqVO reqVO = randomPojo(SeckillTimeUpdateReqVO.class, o -> {
|
|
||||||
o.setId(dbSeckillTime.getId()); // 设置更新的 ID
|
|
||||||
});
|
|
||||||
|
|
||||||
// 调用
|
|
||||||
seckillTimeService.updateSeckillTime(reqVO);
|
|
||||||
// 校验是否更新正确
|
|
||||||
SeckillTimeDO seckillTime = seckillTimeMapper.selectById(reqVO.getId()); // 获取最新的
|
|
||||||
assertPojoEquals(reqVO, seckillTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testUpdateSeckillTime_notExists() {
|
|
||||||
// 准备参数
|
|
||||||
SeckillTimeUpdateReqVO reqVO = randomPojo(SeckillTimeUpdateReqVO.class);
|
|
||||||
|
|
||||||
// 调用, 并断言异常
|
|
||||||
assertServiceException(() -> seckillTimeService.updateSeckillTime(reqVO), SECKILL_TIME_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDeleteSeckillTime_success() {
|
|
||||||
// mock 数据
|
|
||||||
SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class);
|
|
||||||
seckillTimeMapper.insert(dbSeckillTime);// @Sql: 先插入出一条存在的数据
|
|
||||||
// 准备参数
|
|
||||||
Long id = dbSeckillTime.getId();
|
|
||||||
|
|
||||||
// 调用
|
|
||||||
seckillTimeService.deleteSeckillTime(id);
|
|
||||||
// 校验数据不存在了
|
|
||||||
assertNull(seckillTimeMapper.selectById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testDeleteSeckillTime_notExists() {
|
|
||||||
// 准备参数
|
|
||||||
Long id = randomLongId();
|
|
||||||
|
|
||||||
// 调用, 并断言异常
|
|
||||||
assertServiceException(() -> seckillTimeService.deleteSeckillTime(id), SECKILL_TIME_NOT_EXISTS);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
|
||||||
public void testGetSeckillTimePage() {
|
|
||||||
// mock 数据
|
|
||||||
// SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class, o -> { // 等会查询到
|
|
||||||
// o.setName(null);
|
|
||||||
// o.setStartTime(null);
|
|
||||||
// o.setEndTime(null);
|
|
||||||
// o.setCreateTime(null);
|
|
||||||
// });
|
|
||||||
// seckillTimeMapper.insert(dbSeckillTime);
|
|
||||||
// // 测试 name 不匹配
|
|
||||||
// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setName(null)));
|
|
||||||
// // 测试 startTime 不匹配
|
|
||||||
// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setStartTime(null)));
|
|
||||||
// // 测试 endTime 不匹配
|
|
||||||
// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setEndTime(null)));
|
|
||||||
// // 测试 createTime 不匹配
|
|
||||||
// seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setCreateTime(null)));
|
|
||||||
// // 准备参数
|
|
||||||
// SeckillTimePageReqVO reqVO = new SeckillTimePageReqVO();
|
|
||||||
// reqVO.setName(null);
|
|
||||||
//// reqVO.setStartTime((new LocalTime()));
|
|
||||||
//// reqVO.setEndTime((new LocalTime[]{}));
|
|
||||||
//// reqVO.setCreateTime((new Date[]{}));
|
|
||||||
//
|
|
||||||
// // 调用
|
|
||||||
// PageResult<SeckillTimeDO> pageResult = seckillTimeService.getSeckillTimePage(reqVO);
|
|
||||||
// // 断言
|
|
||||||
// assertEquals(1, pageResult.getTotal());
|
|
||||||
// assertEquals(1, pageResult.getList().size());
|
|
||||||
// assertPojoEquals(dbSeckillTime, pageResult.getList().get(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
|
||||||
public void testGetSeckillTimeList() {
|
|
||||||
// mock 数据
|
|
||||||
SeckillTimeDO dbSeckillTime = randomPojo(SeckillTimeDO.class, o -> { // 等会查询到
|
|
||||||
o.setName(null);
|
|
||||||
o.setStartTime(null);
|
|
||||||
o.setEndTime(null);
|
|
||||||
o.setCreateTime(null);
|
|
||||||
});
|
|
||||||
seckillTimeMapper.insert(dbSeckillTime);
|
|
||||||
// 测试 name 不匹配
|
|
||||||
seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setName(null)));
|
|
||||||
// 测试 startTime 不匹配
|
|
||||||
seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setStartTime(null)));
|
|
||||||
// 测试 endTime 不匹配
|
|
||||||
seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setEndTime(null)));
|
|
||||||
// 测试 createTime 不匹配
|
|
||||||
seckillTimeMapper.insert(cloneIgnoreId(dbSeckillTime, o -> o.setCreateTime(null)));
|
|
||||||
// 准备参数
|
|
||||||
// SeckillTimeExportReqVO reqVO = new SeckillTimeExportReqVO();
|
|
||||||
// reqVO.setName(null);
|
|
||||||
// reqVO.setStartTime((new LocalTime[]{}));
|
|
||||||
// reqVO.setEndTime((new LocalTime[]{}));
|
|
||||||
// reqVO.setCreateTime((new Date[]{}));
|
|
||||||
//
|
|
||||||
// // 调用
|
|
||||||
// List<SeckillTimeDO> list = seckillTimeService.getSeckillTimeList(reqVO);
|
|
||||||
// // 断言
|
|
||||||
// assertEquals(1, list.size());
|
|
||||||
// assertPojoEquals(dbSeckillTime, list.get(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,6 +1,14 @@
|
|||||||
DELETE FROM "market_activity";
|
DELETE
|
||||||
DELETE FROM "promotion_coupon_template";
|
FROM "market_activity";
|
||||||
DELETE FROM "promotion_coupon";
|
DELETE
|
||||||
DELETE FROM "promotion_reward_activity";
|
FROM "promotion_coupon_template";
|
||||||
DELETE FROM "promotion_discount_activity";
|
DELETE
|
||||||
DELETE FROM "promotion_discount_product";
|
FROM "promotion_coupon";
|
||||||
|
DELETE
|
||||||
|
FROM "promotion_reward_activity";
|
||||||
|
DELETE
|
||||||
|
FROM "promotion_discount_activity";
|
||||||
|
DELETE
|
||||||
|
FROM "promotion_discount_product";
|
||||||
|
DELETE
|
||||||
|
FROM "promotion_seckill_config";
|
||||||
|
|||||||
Loading…
Reference in New Issue