mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-14 10:11:53 +08:00
code review 各种活动
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
package cn.iocoder.yudao.module.promotion.api.combination;
|
||||
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;
|
||||
import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -20,17 +20,17 @@ public class CombinationRecordApiImpl implements CombinationRecordApi {
|
||||
private CombinationRecordService recordService;
|
||||
|
||||
@Override
|
||||
public void createRecord(CombinationRecordCreateReqDTO reqDTO) {
|
||||
public void createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) {
|
||||
recordService.createCombinationRecord(reqDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRecordSuccess(Long userId, Long orderId) {
|
||||
public boolean isCombinationRecordSuccess(Long userId, Long orderId) {
|
||||
return CombinationRecordStatusEnum.isSuccess(recordService.getCombinationRecord(userId, orderId).getStatus());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateRecordStatus(CombinationRecordUpdateReqDTO reqDTO) {
|
||||
public void updateCombinationRecordStatus(CombinationRecordUpdateStatusReqDTO reqDTO) {
|
||||
if (null == reqDTO.getStartTime()) {
|
||||
recordService.updateCombinationRecordStatusByUserIdAndOrderId(reqDTO);
|
||||
} else {
|
||||
|
@@ -17,6 +17,8 @@ import java.util.List;
|
||||
@ToString(callSuper = true)
|
||||
public class BargainActivityRespVO extends BargainActivityBaseVO {
|
||||
|
||||
// TODO @puhui999:example 补全
|
||||
|
||||
@Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "618大促")
|
||||
private String spuName;
|
||||
|
||||
|
@@ -5,6 +5,7 @@ import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
|
||||
// TODO @puhui999:是不是应该把 BargainProductCreateReqVO 和 BargainProductUpdateReqVO 合并在一起哈。就是一个 SaveReqVO
|
||||
@Schema(description = "管理后台 - 砍价商品创建 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
@@ -1,47 +0,0 @@
|
||||
package cn.iocoder.yudao.module.promotion.controller.admin.bargain.vo.product;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.ToString;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - 砍价商品分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class BargainProductPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "砍价活动编号", example = "6829")
|
||||
private Long activityId;
|
||||
|
||||
@Schema(description = "商品 SPU 编号", example = "18731")
|
||||
private Long spuId;
|
||||
|
||||
@Schema(description = "商品 SKU 编号", example = "31675")
|
||||
private Long skuId;
|
||||
|
||||
@Schema(description = "砍价商品状态", example = "2")
|
||||
private Integer activityStatus;
|
||||
|
||||
@Schema(description = "活动开始时间点")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] activityStartTime;
|
||||
|
||||
@Schema(description = "活动结束时间点")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] activityEndTime;
|
||||
|
||||
@Schema(description = "砍价价格,单位分", example = "27682")
|
||||
private Integer activePrice;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
@@ -65,6 +65,7 @@ public interface BargainActivityConvert {
|
||||
|
||||
List<BargainProductRespVO> convertList2(List<BargainProductDO> productDOs);
|
||||
|
||||
// TODO @puhui999:参数改成 activity、product 会不会干净一点哈
|
||||
@Mappings({
|
||||
@Mapping(target = "id", ignore = true),
|
||||
@Mapping(target = "activityId", source = "activityDO.id"),
|
||||
@@ -90,6 +91,4 @@ public interface BargainActivityConvert {
|
||||
.setActivityStatus(activity.getStatus()));
|
||||
}
|
||||
|
||||
//BargainRecordDO convert(BargainRecordCreateReqDTO reqDTO);
|
||||
|
||||
}
|
||||
|
@@ -67,6 +67,7 @@ public interface CombinationActivityConvert {
|
||||
|
||||
List<CombinationProductRespVO> convertList2(List<CombinationProductDO> productDOs);
|
||||
|
||||
// TODO @puhui999:参数改成 activity、product 会不会干净一点哈
|
||||
@Mappings({
|
||||
@Mapping(target = "id", ignore = true),
|
||||
@Mapping(target = "activityId", source = "activityDO.id"),
|
||||
|
@@ -56,6 +56,7 @@ public interface SeckillActivityConvert {
|
||||
return convert1(seckillActivity).setProducts(convertList2(seckillProducts));
|
||||
}
|
||||
|
||||
// TODO @puhui999:参数改成 activity、product 会不会干净一点哈
|
||||
@Mappings({
|
||||
@Mapping(target = "id", ignore = true),
|
||||
@Mapping(target = "activityId", source = "activityDO.id"),
|
||||
|
@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
/**
|
||||
* 砍价助力 DO TODO
|
||||
* 砍价助力 DO TODO 芋艿:表结构
|
||||
*
|
||||
* @author HUIHUI
|
||||
*/
|
||||
|
@@ -1,9 +1,6 @@
|
||||
package cn.iocoder.yudao.module.promotion.dal.mysql.bargain;
|
||||
|
||||
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.bargain.vo.product.BargainProductPageReqVO;
|
||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.bargain.BargainProductDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@@ -18,18 +15,6 @@ import java.util.List;
|
||||
@Mapper
|
||||
public interface BargainProductMapper extends BaseMapperX<BargainProductDO> {
|
||||
|
||||
default PageResult<BargainProductDO> selectPage(BargainProductPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<BargainProductDO>()
|
||||
.eqIfPresent(BargainProductDO::getActivityId, reqVO.getActivityId())
|
||||
.eqIfPresent(BargainProductDO::getSpuId, reqVO.getSpuId())
|
||||
.eqIfPresent(BargainProductDO::getSkuId, reqVO.getSkuId())
|
||||
.eqIfPresent(BargainProductDO::getActivityStatus, reqVO.getActivityStatus())
|
||||
.betweenIfPresent(BargainProductDO::getActivityStartTime, reqVO.getActivityStartTime())
|
||||
.betweenIfPresent(BargainProductDO::getActivityEndTime, reqVO.getActivityEndTime())
|
||||
.betweenIfPresent(BargainProductDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(BargainProductDO::getId));
|
||||
}
|
||||
|
||||
default List<BargainProductDO> selectListByActivityIds(Collection<Long> ids) {
|
||||
return selectList(BargainProductDO::getActivityId, ids);
|
||||
}
|
||||
|
@@ -20,6 +20,7 @@ public interface CombinationRecordMapper extends BaseMapperX<CombinationRecordDO
|
||||
CombinationRecordDO::getOrderId, orderId);
|
||||
}
|
||||
|
||||
// TODO @puhui999 selectByUserIdAndActivityId
|
||||
/**
|
||||
* 查询拼团记录
|
||||
*
|
||||
|
@@ -1,7 +1,7 @@
|
||||
package cn.iocoder.yudao.module.promotion.service.combination;
|
||||
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO;
|
||||
|
||||
/**
|
||||
@@ -16,7 +16,7 @@ public interface CombinationRecordService {
|
||||
*
|
||||
* @param reqDTO 请求 DTO
|
||||
*/
|
||||
void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateReqDTO reqDTO);
|
||||
void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO);
|
||||
|
||||
/**
|
||||
* 创建拼团记录
|
||||
@@ -30,7 +30,7 @@ public interface CombinationRecordService {
|
||||
*
|
||||
* @param reqDTO 请求 DTO
|
||||
*/
|
||||
void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateReqDTO reqDTO);
|
||||
void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO);
|
||||
|
||||
/**
|
||||
* 获得拼团状态
|
||||
|
@@ -11,7 +11,7 @@ import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
|
||||
import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
|
||||
import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO;
|
||||
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityCreateReqVO;
|
||||
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityPageReqVO;
|
||||
import cn.iocoder.yudao.module.promotion.controller.admin.combination.vo.activity.CombinationActivityUpdateReqVO;
|
||||
@@ -131,15 +131,14 @@ public class CombinationServiceImpl implements CombinationActivityService, Combi
|
||||
/**
|
||||
* 更新拼团商品
|
||||
*
|
||||
* @param updateObj 更新的活动
|
||||
* @param products 商品配置
|
||||
* @param activity 拼团活动
|
||||
* @param products 该活动的最新商品配置
|
||||
*/
|
||||
private void updateCombinationProduct(CombinationActivityDO updateObj, List<CombinationProductUpdateReqVO> products) {
|
||||
// 默认全部新增
|
||||
List<CombinationProductDO> defaultNewList = CombinationActivityConvert.INSTANCE.convertList(products, updateObj);
|
||||
// 数据库中的老数据
|
||||
List<CombinationProductDO> oldList = combinationProductMapper.selectListByActivityIds(CollUtil.newArrayList(updateObj.getId()));
|
||||
List<List<CombinationProductDO>> lists = CollectionUtils.diffList(oldList, defaultNewList, (oldVal, newVal) -> {
|
||||
private void updateCombinationProduct(CombinationActivityDO activity, List<CombinationProductUpdateReqVO> products) {
|
||||
// 第一步,对比新老数据,获得添加、修改、删除的列表
|
||||
List<CombinationProductDO> newList = CombinationActivityConvert.INSTANCE.convertList(products, activity);
|
||||
List<CombinationProductDO> oldList = combinationProductMapper.selectListByActivityIds(CollUtil.newArrayList(activity.getId()));
|
||||
List<List<CombinationProductDO>> diffList = CollectionUtils.diffList(oldList, newList, (oldVal, newVal) -> {
|
||||
boolean same = ObjectUtil.equal(oldVal.getSkuId(), newVal.getSkuId());
|
||||
if (same) {
|
||||
newVal.setId(oldVal.getId());
|
||||
@@ -147,17 +146,15 @@ public class CombinationServiceImpl implements CombinationActivityService, Combi
|
||||
return same;
|
||||
});
|
||||
|
||||
// create
|
||||
if (CollUtil.isNotEmpty(lists.get(0))) {
|
||||
combinationProductMapper.insertBatch(lists.get(0));
|
||||
// 第二步,批量添加、修改、删除
|
||||
if (CollUtil.isNotEmpty(diffList.get(0))) {
|
||||
combinationProductMapper.insertBatch(diffList.get(0));
|
||||
}
|
||||
// update
|
||||
if (CollUtil.isNotEmpty(lists.get(1))) {
|
||||
combinationProductMapper.updateBatch(lists.get(1));
|
||||
if (CollUtil.isNotEmpty(diffList.get(1))) {
|
||||
combinationProductMapper.updateBatch(diffList.get(1));
|
||||
}
|
||||
// delete
|
||||
if (CollUtil.isNotEmpty(lists.get(2))) {
|
||||
combinationProductMapper.deleteBatchIds(CollectionUtils.convertList(lists.get(2), CombinationProductDO::getId));
|
||||
if (CollUtil.isNotEmpty(diffList.get(2))) {
|
||||
combinationProductMapper.deleteBatchIds(CollectionUtils.convertList(diffList.get(2), CombinationProductDO::getId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -204,7 +201,7 @@ public class CombinationServiceImpl implements CombinationActivityService, Combi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateReqDTO reqDTO) {
|
||||
public void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO) {
|
||||
// 校验拼团是否存在
|
||||
CombinationRecordDO recordDO = validateCombinationRecord(reqDTO.getUserId(), reqDTO.getOrderId());
|
||||
|
||||
@@ -215,7 +212,7 @@ public class CombinationServiceImpl implements CombinationActivityService, Combi
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateReqDTO reqDTO) {
|
||||
public void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO) {
|
||||
CombinationRecordDO recordDO = validateCombinationRecord(reqDTO.getUserId(), reqDTO.getOrderId());
|
||||
// 更新状态
|
||||
recordDO.setStatus(reqDTO.getStatus());
|
||||
|
@@ -137,16 +137,14 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
|
||||
/**
|
||||
* 更新秒杀商品
|
||||
*
|
||||
* @param updateObj 更新的活动
|
||||
* @param products 商品配置
|
||||
* @param activity 秒杀活动
|
||||
* @param products 该活动的最新商品配置
|
||||
*/
|
||||
private void updateSeckillProduct(SeckillActivityDO updateObj, List<SeckillProductUpdateReqVO> products) {
|
||||
// 默认全部新增
|
||||
List<SeckillProductDO> defaultNewList = SeckillActivityConvert.INSTANCE.convertList(products, updateObj);
|
||||
// 数据库中的活动商品
|
||||
List<SeckillProductDO> oldList = seckillProductMapper.selectListByActivityId(updateObj.getId());
|
||||
// 对比老、新两个列表,找出新增、修改、删除的数据
|
||||
List<List<SeckillProductDO>> lists = diffList(oldList, defaultNewList, (oldVal, newVal) -> {
|
||||
private void updateSeckillProduct(SeckillActivityDO activity, List<SeckillProductUpdateReqVO> products) {
|
||||
// 第一步,对比新老数据,获得添加、修改、删除的列表
|
||||
List<SeckillProductDO> newList = SeckillActivityConvert.INSTANCE.convertList(products, activity);
|
||||
List<SeckillProductDO> oldList = seckillProductMapper.selectListByActivityId(activity.getId());
|
||||
List<List<SeckillProductDO>> diffList = diffList(oldList, newList, (oldVal, newVal) -> {
|
||||
boolean same = ObjectUtil.equal(oldVal.getSkuId(), newVal.getSkuId());
|
||||
if (same) {
|
||||
newVal.setId(oldVal.getId());
|
||||
@@ -154,17 +152,16 @@ public class SeckillActivityServiceImpl implements SeckillActivityService {
|
||||
return same;
|
||||
});
|
||||
|
||||
// create
|
||||
if (isNotEmpty(lists.get(0))) {
|
||||
seckillProductMapper.insertBatch(lists.get(0));
|
||||
// 第二步,批量添加、修改、删除
|
||||
if (isNotEmpty(diffList.get(0))) {
|
||||
seckillProductMapper.insertBatch(diffList.get(0));
|
||||
}
|
||||
// update
|
||||
if (isNotEmpty(lists.get(1))) {
|
||||
seckillProductMapper.updateBatch(lists.get(1));
|
||||
if (isNotEmpty(diffList.get(1))) {
|
||||
seckillProductMapper.updateBatch(diffList.get(1));
|
||||
}
|
||||
// delete
|
||||
if (isNotEmpty(lists.get(2))) {
|
||||
seckillProductMapper.deleteBatchIds(convertList(lists.get(2), SeckillProductDO::getId));
|
||||
if (isNotEmpty(diffList.get(2))) {
|
||||
seckillProductMapper.deleteBatchIds(convertList(diffList.get(2), SeckillProductDO::getId));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user