砍价活动商品购买

This commit is contained in:
lifenlong 2021-07-17 14:02:34 +08:00
parent 0f8a5aba05
commit 5d211c241d
25 changed files with 243 additions and 187 deletions

View File

@ -10,10 +10,7 @@ import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog;
import cn.lili.modules.promotion.entity.dto.KanJiaActivityLogQuery;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsVO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.*;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
import cn.lili.modules.promotion.service.KanjiaActivityService;
@ -53,10 +50,10 @@ public class KanjiaGoodsActivityBuyerController {
@GetMapping
@ApiOperation(value = "分页获取砍价商品")
public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanJiaActivityGoodsPage(KanjiaActivityGoodsParams kanJiaActivityGoodsParams, PageVO page) {
public ResultMessage<IPage<KanjiaActivityGoodsListVO>> kanJiaActivityGoodsPage(KanjiaActivityGoodsParams kanjiaActivityGoodsParams, PageVO page) {
// 会员端查询到的肯定是已经开始的活动商品
kanJiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name());
return ResultUtil.data(kanJiaActivityGoodsService.kanJiaGoodsVOPage(kanJiaActivityGoodsParams, page));
kanjiaActivityGoodsParams.setPromotionStatus(PromotionStatusEnum.START.name());
return ResultUtil.data(kanJiaActivityGoodsService.kanJiaGoodsVOPage(kanjiaActivityGoodsParams, page));
}
@GetMapping("/{id}")
@ -69,43 +66,42 @@ public class KanjiaGoodsActivityBuyerController {
@GetMapping("/getKanjiaActivity/logs")
@ApiOperation(value = "分页获取砍价活动-帮砍记录")
public ResultMessage<IPage<KanjiaActivityLog>> getPointsGoodsPage(KanJiaActivityLogQuery kanJiaActivityLogQuery, PageVO page) {
// 会员端查询到的肯定是已经开始的活动商品
kanJiaActivityLogQuery.setMemberId(UserContext.getCurrentUser().getId());
return ResultUtil.data(kanJiaActivityLogService.getForPage(kanJiaActivityLogQuery, page));
}
@PostMapping("/getKanjiaActivity")
@ApiOperation(value = "获取砍价活动")
public ResultMessage<KanjiaActivity> getKanJiaActivity(KanjiaActivitySearchParams kanJiaActivitySearchParams) {
public ResultMessage<KanjiaActivityVO> getKanJiaActivity(KanjiaActivitySearchParams kanjiaActivitySearchParams) {
//如果是非被邀请关系则填写会员ID
if (StrUtil.isEmpty(kanJiaActivitySearchParams.getKanjiaActivityId())) {
kanJiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
if (StrUtil.isEmpty(kanjiaActivitySearchParams.getKanjiaActivityId())) {
kanjiaActivitySearchParams.setMemberId(UserContext.getCurrentUser().getId());
}
return ResultUtil.data(kanJiaActivityService.getKanjiaActivity(kanJiaActivitySearchParams));
return ResultUtil.data(kanJiaActivityService.getKanjiaActivityVO(kanjiaActivitySearchParams));
}
@PostMapping
@ApiImplicitParam(name = "id", value = "砍价活动商品ID", required = true, paramType = "path")
@ApiOperation(value = "发起砍价活动")
public ResultMessage<KanjiaActivityLog> launchKanJiaActivity(String id) {
KanjiaActivityLog kanJiaActivityLog = kanJiaActivityService.add(id);
return ResultUtil.data(kanJiaActivityLog);
KanjiaActivityLog kanjiaActivityLog = kanJiaActivityService.add(id);
return ResultUtil.data(kanjiaActivityLog);
}
@PostMapping("/help")
@PostMapping("/help/{kanjiaActivityId}")
@ApiImplicitParam(name = "kanJiaActivityId", value = "砍价活动ID", required = true, paramType = "path")
@ApiOperation(value = "帮砍一刀")
public ResultMessage<KanjiaActivityLog> helpKanJia(String kanJiaActivityId) {
KanjiaActivityLog kanJiaActivityLog = kanJiaActivityService.helpKanJia(kanJiaActivityId);
return ResultUtil.data(kanJiaActivityLog);
public ResultMessage<KanjiaActivityLog> helpKanJia(@PathVariable String kanjiaActivityId) {
KanjiaActivityLog kanjiaActivityLog = kanJiaActivityService.helpKanJia(kanjiaActivityId);
return ResultUtil.data(kanjiaActivityLog);
}
@GetMapping("/kanjiaActivity/mine/")
@ApiOperation(value = "分页获取已参与的砍价活动")
public ResultMessage<IPage<KanjiaActivity>> getPointsGoodsPage(KanjiaActivityQuery kanJiaActivityQuery, PageVO page) {
public ResultMessage<IPage<KanjiaActivity>> getPointsGoodsPage(KanjiaActivityQuery kanjiaActivityQuery, PageVO page) {
// 会员端查询到的肯定是已经开始的活动商品
kanJiaActivityQuery.setMemberId(UserContext.getCurrentUser().getId());
IPage<KanjiaActivity> kanJiaActivityIPage = kanJiaActivityService.getForPage(kanJiaActivityQuery, page);
return ResultUtil.data(kanJiaActivityIPage);
kanjiaActivityQuery.setMemberId(UserContext.getCurrentUser().getId());
IPage<KanjiaActivity> kanjiaActivity = kanJiaActivityService.getForPage(kanjiaActivityQuery, page);
return ResultUtil.data(kanjiaActivity);
}
}

View File

@ -31,7 +31,7 @@ import cn.lili.modules.promotion.entity.enums.CouponScopeTypeEnum;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.vos.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.service.*;
import cn.lili.modules.search.entity.dos.EsGoodsIndex;
import cn.lili.modules.search.service.EsGoodsSearchService;
@ -705,7 +705,7 @@ public class CartServiceImpl implements CartService {
if (kanjiaActivity == null) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_FOUND_ERROR);
//判断砍价活动是否已满足条件
} else if (!KanJiaStatusEnum.PASS.name().equals(kanjiaActivity.getStatus())) {
} else if (!KanJiaStatusEnum.SUCCESS.name().equals(kanjiaActivity.getStatus())) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_NOT_PASS_ERROR);
//判断砍价商品数量
} else if (cartSkuVO.getNum() > 1) {

View File

@ -27,6 +27,10 @@ public class FullDiscount extends BasePromotion {
private static final long serialVersionUID = 430433787214894166L;
@NotEmpty(message = "活动名称不能为空")
@ApiModelProperty(value = "活动名称", required = true)
private String promotionName;
@NotNull(message = "请填写优惠门槛")
@DecimalMax(value = "99999999.00", message = "优惠券门槛金额超出限制")
@ApiModelProperty(value = "优惠门槛金额", required = true)

View File

@ -29,15 +29,18 @@ public class KanjiaActivity extends BaseEntity {
@ApiModelProperty(value = "砍价商品id")
private String kanjiaActivityGoodsId;
@ApiModelProperty(value = "参与砍价活动会员id")
@ApiModelProperty(value = "发起砍价活动会员id")
private String memberId;
@ApiModelProperty(value = "参与砍价活动会员名称")
@ApiModelProperty(value = "发起砍价活动会员名称")
private String memberName;
@ApiModelProperty(value = "剩余购买金额")
private Double surplusPrice;
@ApiModelProperty(value = "砍价最低购买金额")
private Double purchasePrice;
@ApiModelProperty(value = "砍价商品skuId")
private String skuId;
@ -50,7 +53,7 @@ public class KanjiaActivity extends BaseEntity {
/**
* @see KanJiaStatusEnum
*/
@ApiModelProperty(value = "我的砍价状态")
@ApiModelProperty(value = "砍价活动状态")
private String status;

View File

@ -1,19 +1,14 @@
package cn.lili.modules.promotion.entity.dos;
import cn.lili.base.BaseEntity;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.modules.promotion.entity.dto.BasePromotion;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 砍价活动商品实体类
@ -26,7 +21,7 @@ import java.util.Date;
@Table(name = "li_kanjia_activity_goods")
@TableName("li_kanjia_activity_goods")
@ApiModel(value = "砍价活动商品对象")
public class KanjiaActivityGoods extends BaseEntity {
public class KanjiaActivityGoods extends BasePromotion {
private static final long serialVersionUID = 6694714877345423488L;
@ -34,6 +29,9 @@ public class KanjiaActivityGoods extends BaseEntity {
@NotEmpty(message = "结算价格不能为空")
private Double settlementPrice;
@ApiModelProperty(value = "商品原价")
private Double originalPrice;
@ApiModelProperty(value = "最低购买金额")
@NotEmpty(message = "最低购买金额不能为空")
private Double purchasePrice;
@ -59,24 +57,4 @@ public class KanjiaActivityGoods extends BaseEntity {
@ApiModelProperty(value = "每人最高砍价金额")
@NotEmpty(message = "每人最高砍价金额不能为空")
private Double highestPrice;
/**
* @see PromotionStatusEnum
*/
@ApiModelProperty(value = "活动状态")
@NotNull(message = "活动状态不能为空")
private String promotionStatus;
@Min(message = "活动开始时间不能为空", value = 0)
@ApiModelProperty(value = "活动开始时间", required = true)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Min(message = "活动结束时间不能为空", value = 0)
@ApiModelProperty(value = "活动结束时间", required = true)
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
}

View File

@ -23,8 +23,6 @@ public class KanJiaActivityLogQuery {
@ApiModelProperty(value = "砍价发起活动id")
private String kanJiaActivityId;
@ApiModelProperty(value = "会员id", hidden = true)
private String memberId;
public <T> QueryWrapper<T> wrapper() {
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
@ -32,9 +30,6 @@ public class KanJiaActivityLogQuery {
if (CharSequenceUtil.isNotEmpty(kanJiaActivityId)) {
queryWrapper.like("kanjia_activity_id", kanJiaActivityId);
}
if (memberId != null) {
queryWrapper.eq("kanjia_member_id", memberId);
}
queryWrapper.eq("delete_flag", false);
queryWrapper.orderByDesc("create_time");
return queryWrapper;

View File

@ -20,4 +20,10 @@ public class PromotionPriceParamDTO {
@ApiModelProperty(value = "拼团id 如果是拼团购买 此值为拼团活动id当pintuanId为空则表示普通购买或者拼团商品单独购买")
private String pintuanId;
@ApiModelProperty(value = "砍价ID")
private String kanjiaId;
@ApiModelProperty(value = "积分ID")
private String pointsId;
}

View File

@ -22,6 +22,7 @@ public enum KanJiaStatusEnum {
SUCCESS("成功"),
/**
* 砍价活动结束
* 已购买超时未购买都是这个状态
*/
END("已结束");

View File

@ -16,14 +16,14 @@ public enum PromotionTypeEnum {
COUPON("优惠券"),
FULL_DISCOUNT("满减"),
POINTS_GOODS("积分商品"),
KAN_JIA("砍价"),
KANJIA("砍价"),
COUPON_ACTIVITY("优惠券活动")
;
/**
* 拼团秒杀拥有独立库存如果其他促销也有独立库存涉及库存扣减的请添加在下方
*/
static PromotionTypeEnum[] haveStockPromotion = new PromotionTypeEnum[]{PINTUAN, SECKILL, KAN_JIA};
static PromotionTypeEnum[] haveStockPromotion = new PromotionTypeEnum[]{PINTUAN, SECKILL, KANJIA};
private final String description;

View File

@ -1,4 +1,4 @@
package cn.lili.modules.promotion.entity.vos;
package cn.lili.modules.promotion.entity.vos.kanjia;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package cn.lili.modules.promotion.entity.vos;
package cn.lili.modules.promotion.entity.vos.kanjia;
import cn.hutool.core.text.CharSequenceUtil;

View File

@ -1,4 +1,4 @@
package cn.lili.modules.promotion.entity.vos;
package cn.lili.modules.promotion.entity.vos.kanjia;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package cn.lili.modules.promotion.entity.vos;
package cn.lili.modules.promotion.entity.vos.kanjia;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;

View File

@ -0,0 +1,27 @@
package cn.lili.modules.promotion.entity.vos.kanjia;
import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 砍价活动参与实体类
*
* @author qiuqiu
* @date 2020-7-1 10:44 上午
*/
@Data
@ApiModel(value = "砍价活动VO")
public class KanjiaActivityVO extends KanjiaActivity {
@ApiModelProperty(value = "是否可以砍价")
private Boolean help = false;
@ApiModelProperty(value = "是否已发起砍价")
private Boolean launch = false;
@ApiModelProperty(value = "是否可购买")
private Boolean pass = false;
}

View File

@ -1,7 +1,7 @@
package cn.lili.modules.promotion.mapper;
import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;

View File

@ -5,9 +5,9 @@ import cn.lili.common.vo.PageVO;
import cn.lili.modules.promotion.entity.dos.KanjiaActivityGoods;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@ -5,7 +5,8 @@ import cn.lili.common.vo.PageVO;
import cn.lili.modules.promotion.entity.dos.KanjiaActivity;
import cn.lili.modules.promotion.entity.dos.KanjiaActivityLog;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery;
import cn.lili.modules.promotion.entity.vos.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
@ -21,13 +22,21 @@ public interface KanjiaActivityService extends IService<KanjiaActivity> {
/**
* 获取砍价活动
*
* @param kanJiaActivitySearchParams 砍价活动搜索参数
* @return 砍价活动
*/
KanjiaActivity getKanjiaActivity(KanjiaActivitySearchParams kanJiaActivitySearchParams);
/**
* 获取砍价活动
* <p>
* 有值说明是已参加的砍价活动
* 没有值说明是未参加的砍价活动
*
* @param kanJiaActivitySearchParams 砍价活动搜索参数
* @return 砍价活动
*/
KanjiaActivity getKanjiaActivity(KanjiaActivitySearchParams kanJiaActivitySearchParams);
KanjiaActivityVO getKanjiaActivityVO(KanjiaActivitySearchParams kanJiaActivitySearchParams);
/**
* 发起人发起砍价活动

View File

@ -22,9 +22,9 @@ import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionTypeEnum;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsListVO;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsVO;
import cn.lili.modules.promotion.mapper.KanJiaActivityGoodsMapper;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.tools.PromotionTools;
@ -110,7 +110,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
* @param kanJiaActivityGoods 砍价商品信息
*/
private void addKanJiaGoodsPromotionTask(KanjiaActivityGoodsDTO kanJiaActivityGoods) {
PromotionMessage promotionMessage = new PromotionMessage(kanJiaActivityGoods.getId(), PromotionTypeEnum.KAN_JIA.name(),
PromotionMessage promotionMessage = new PromotionMessage(kanJiaActivityGoods.getId(), PromotionTypeEnum.KANJIA.name(),
PromotionStatusEnum.START.name(),
kanJiaActivityGoods.getStartTime(), kanJiaActivityGoods.getEndTime());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR,
@ -278,7 +278,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
if (result) {
this.mongoTemplate.save(kanJiaActivityGoodsDTO);
if (dbKanJiaActivityGoods.getStartTime().getTime() != kanJiaActivityGoodsDTO.getStartTime().getTime()) {
PromotionMessage promotionMessage = new PromotionMessage(kanJiaActivityGoodsDTO.getId(), PromotionTypeEnum.KAN_JIA.name(), PromotionStatusEnum.START.name(), kanJiaActivityGoodsDTO.getStartTime(), kanJiaActivityGoodsDTO.getEndTime());
PromotionMessage promotionMessage = new PromotionMessage(kanJiaActivityGoodsDTO.getId(), PromotionTypeEnum.KANJIA.name(), PromotionStatusEnum.START.name(), kanJiaActivityGoodsDTO.getStartTime(), kanJiaActivityGoodsDTO.getEndTime());
//更新延时任务
this.timeTrigger.edit(TimeExecuteConstant.PROMOTION_EXECUTOR,
promotionMessage,
@ -299,7 +299,7 @@ public class KanjiaActivityGoodsServiceImpl extends ServiceImpl<KanJiaActivityGo
KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.getKanJiaGoodsDetail(id);
this.timeTrigger.delete(TimeExecuteConstant.PROMOTION_EXECUTOR,
kanJiaActivityGoodsDTO.getStartTime().getTime(),
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.KAN_JIA.name() + kanJiaActivityGoodsDTO.getId())),
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (PromotionTypeEnum.KANJIA.name() + kanJiaActivityGoodsDTO.getId())),
rocketmqCustomProperties.getPromotionTopic());
skuIds.add(kanJiaActivityGoodsDTO.getSkuId());
}

View File

@ -3,6 +3,7 @@ package cn.lili.modules.promotion.serviceimpl;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.PageUtil;
import cn.lili.common.vo.PageVO;
@ -16,6 +17,7 @@ import cn.lili.modules.promotion.mapper.KanJiaActivityLogMapper;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
import cn.lili.modules.promotion.service.KanjiaActivityService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -50,9 +52,9 @@ public class KanjiaActivityLogServiceImpl extends ServiceImpl<KanJiaActivityLogM
@Override
public KanjiaActivityLog addKanJiaActivityLog(KanjiaActivityDTO kanjiaActivityDTO) {
//校验当前会员是否已经参与过此次砍价
QueryWrapper<KanjiaActivityLog> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(kanjiaActivityDTO.getKanjiaMemberId() != null, "kanjia_member_id", kanjiaActivityDTO.getKanjiaMemberId());
queryWrapper.eq(kanjiaActivityDTO.getKanjiaActivityId() != null, "kanjia_activity_id", kanjiaActivityDTO.getKanjiaActivityId());
LambdaQueryWrapper<KanjiaActivityLog> queryWrapper = new LambdaQueryWrapper<KanjiaActivityLog>();
queryWrapper.eq(kanjiaActivityDTO.getKanjiaActivityId() != null, KanjiaActivityLog::getKanjiaActivityId, kanjiaActivityDTO.getKanjiaActivityId());
queryWrapper.eq( KanjiaActivityLog::getKanjiaMemberId, UserContext.getCurrentUser().getId());
Integer count = this.baseMapper.selectCount(queryWrapper);
if (count > 0) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_LOG_MEMBER_ERROR);

View File

@ -6,6 +6,7 @@ import cn.hutool.core.util.RandomUtil;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.common.utils.PageUtil;
import cn.lili.common.vo.PageVO;
@ -20,7 +21,8 @@ import cn.lili.modules.promotion.entity.dto.KanjiaActivityDTO;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityQuery;
import cn.lili.modules.promotion.entity.enums.KanJiaStatusEnum;
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
import cn.lili.modules.promotion.entity.vos.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivitySearchParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityVO;
import cn.lili.modules.promotion.mapper.KanJiaActivityMapper;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import cn.lili.modules.promotion.service.KanjiaActivityLogService;
@ -60,44 +62,73 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
return this.getOne(kanJiaActivitySearchParams.wrapper());
}
@Override
public KanjiaActivityVO getKanjiaActivityVO(KanjiaActivitySearchParams kanJiaActivitySearchParams) {
KanjiaActivity kanjiaActivity = this.getKanjiaActivity(kanJiaActivitySearchParams);
KanjiaActivityVO kanjiaActivityVO = new KanjiaActivityVO();
BeanUtil.copyProperties(kanjiaActivity, kanjiaActivityVO);
//判断是否发起了砍价活动,如果发起可参与活动
if (kanjiaActivity != null) {
kanjiaActivityVO.setLaunch(true);
//如果已发起砍价判断用户是否可以砍价
KanjiaActivityLog kanjiaActivityLog = kanjiaActivityLogService.getOne(new LambdaQueryWrapper<KanjiaActivityLog>()
.eq(KanjiaActivityLog::getKanjiaActivityId, kanjiaActivity.getId())
.eq(KanjiaActivityLog::getKanjiaMemberId, UserContext.getCurrentUser().getId()));
if (kanjiaActivityLog == null) {
kanjiaActivityVO.setHelp(true);
}
//判断活动已通过并且是当前用户发起的砍价则可以进行购买
if (kanjiaActivity.getStatus().equals(KanJiaStatusEnum.SUCCESS.name()) &&
kanjiaActivity.getMemberId().equals(UserContext.getCurrentUser().getId())) {
kanjiaActivityVO.setPass(true);
}
}
return kanjiaActivityVO;
}
@Override
public KanjiaActivityLog add(String id) {
//根据skuId查询当前sku是否参与活动并且是在活动进行中
KanjiaActivityGoods kanJiaActivityGoods = kanjiaActivityGoodsService.getById(id);
//只有砍价商品存在且已经开始的活动才可以发起砍价
if (kanJiaActivityGoods != null && kanJiaActivityGoods.getPromotionStatus().equals(PromotionStatusEnum.START.name())) {
//获取会员信息
Member member = memberService.getById(UserContext.getCurrentUser().getId());
//校验此活动是否已经发起过
QueryWrapper<KanjiaActivity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("kanjia_activity_goods_id", kanJiaActivityGoods.getId());
queryWrapper.eq("member_id", member.getId());
if (this.count(queryWrapper) > 0) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_MEMBER_ERROR);
}
KanjiaActivity kanJiaActivity = new KanjiaActivity();
//获取商品信息
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
if (goodsSku != null && member != null) {
kanJiaActivity.setSkuId(kanJiaActivityGoods.getSkuId());
kanJiaActivity.setGoodsName(goodsSku.getGoodsName());
kanJiaActivity.setKanjiaActivityGoodsId(kanJiaActivityGoods.getId());
kanJiaActivity.setThumbnail(goodsSku.getThumbnail());
kanJiaActivity.setMemberId(UserContext.getCurrentUser().getId());
kanJiaActivity.setMemberName(member.getUsername());
kanJiaActivity.setStatus(KanJiaStatusEnum.START.name());
//剩余砍价金额 开始 是商品金额;
kanJiaActivity.setSurplusPrice(goodsSku.getPrice());
//保存我的砍价活动
boolean result = this.save(kanJiaActivity);
//因为发起砍价就是自己给自己砍一刀所以要添加砍价记录信息
if (result) {
this.helpKanJia(kanJiaActivity.getId());
}
}
throw new ServiceException(ResultCode.GOODS_NOT_EXIST);
if (kanJiaActivityGoods == null || !kanJiaActivityGoods.getPromotionStatus().equals(PromotionStatusEnum.START.name())) {
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
}
throw new ServiceException(ResultCode.PROMOTION_STATUS_END);
KanjiaActivityLog kanjiaActivityLog = new KanjiaActivityLog();
//获取会员信息
Member member = memberService.getById(UserContext.getCurrentUser().getId());
//校验此活动是否已经发起过
QueryWrapper<KanjiaActivity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("kanjia_activity_goods_id", kanJiaActivityGoods.getId());
queryWrapper.eq("member_id", member.getId());
if (this.count(queryWrapper) > 0) {
throw new ServiceException(ResultCode.KANJIA_ACTIVITY_MEMBER_ERROR);
}
KanjiaActivity kanJiaActivity = new KanjiaActivity();
//获取商品信息
GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(kanJiaActivityGoods.getSkuId());
if (goodsSku != null && member != null) {
kanJiaActivity.setSkuId(kanJiaActivityGoods.getSkuId());
kanJiaActivity.setGoodsName(goodsSku.getGoodsName());
kanJiaActivity.setKanjiaActivityGoodsId(kanJiaActivityGoods.getId());
kanJiaActivity.setThumbnail(goodsSku.getThumbnail());
kanJiaActivity.setMemberId(UserContext.getCurrentUser().getId());
kanJiaActivity.setMemberName(member.getUsername());
kanJiaActivity.setStatus(KanJiaStatusEnum.START.name());
//剩余砍价金额 开始 是商品金额;
kanJiaActivity.setSurplusPrice(goodsSku.getPrice());
//砍价最低购买金额
kanJiaActivity.setPurchasePrice(kanJiaActivityGoods.getPurchasePrice());
//保存我的砍价活动
boolean result = this.save(kanJiaActivity);
//因为发起砍价就是自己给自己砍一刀所以要添加砍价记录信息
if (result) {
kanjiaActivityLog = this.helpKanJia(kanJiaActivity.getId());
}
}
return kanjiaActivityLog;
}
@ -165,8 +196,9 @@ public class KanjiaActivityServiceImpl extends ServiceImpl<KanJiaActivityMapper,
}
//获取随机砍价金额
BigDecimal bigDecimal = RandomUtil.randomBigDecimal(Convert.toBigDecimal(kanjiaActivityGoods.getHighestPrice()),
Convert.toBigDecimal(kanjiaActivityGoods.getLowestPrice()));
BigDecimal bigDecimal = RandomUtil.randomBigDecimal(Convert.toBigDecimal(kanjiaActivityGoods.getLowestPrice()),
Convert.toBigDecimal(kanjiaActivityGoods.getHighestPrice()));
bigDecimal.setScale(2, BigDecimal.ROUND_UP);
return Convert.toDouble(bigDecimal, 0.0);
}

View File

@ -145,8 +145,9 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
public void getCartSkuPromotion(CartSkuVO cartSkuVO) {
Date date = DateUtil.getCurrentDayEndTime();
LambdaQueryWrapper<PromotionGoods> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PromotionGoods::getSkuId, cartSkuVO.getGoodsSku().getId()).eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name());
queryWrapper.le(PromotionGoods::getStartTime, date);
queryWrapper.eq(PromotionGoods::getSkuId, cartSkuVO.getGoodsSku().getId())
.eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name())
.le(PromotionGoods::getStartTime, date);
//获取有效的促销活动
List<PromotionGoods> promotionGoods = this.list(queryWrapper);
//同步查询缓存中的促销活动商品的库存
@ -171,7 +172,7 @@ public class PromotionGoodsServiceImpl extends ServiceImpl<PromotionGoodsMapper,
promotionGoods.add(p);
}
}
//单独检查添加适用于全品类的全平台或属于当前店铺的优惠活动
//单独检查添加适用于全品类的全平台或属于当前店铺的优惠活动
List<CouponVO> couponVOS = mongoTemplate.find(query, CouponVO.class);
for (CouponVO couponVO : couponVOS) {
boolean aLLScopeType = (couponVO.getPromotionGoodsList() == null

View File

@ -53,35 +53,16 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
@Override
public PromotionPriceDTO calculationPromotionPrice(List<PromotionPriceParamDTO> tradeSkuList, List<MemberCoupon> memberCouponList) {
PromotionPriceDTO promotionPrice = new PromotionPriceDTO();
if (!tradeSkuList.isEmpty()) {
//拆分出SkuId列表
List<String> skuIds = tradeSkuList.parallelStream().map(PromotionPriceParamDTO::getSkuId).collect(Collectors.toList());
//参与计算的ES商品SKU及其促销信息列表
List<EsGoodsIndex> esGoodsSkus = goodsSearchService.getEsGoodsBySkuIds(skuIds);
//参与计算的缓存中的商品SKU列表
List<GoodsSku> goodsSkus = goodsSkuService.getGoodsSkuByIdFromCache(skuIds);
//计算价格
promotionPrice = this.calculationPromotionPrice(tradeSkuList, memberCouponList, esGoodsSkus, goodsSkus);
}
return promotionPrice;
}
/**
* 促销计算
*
* @param tradeSkuList 促销计算参数列表
* @param memberCouponList 参与促销计算的优惠券列表
* @param esGoodsSkus 参与计算的ES商品SKU及其促销信息列表
* @param goodsSkus 参与计算的缓存中的商品SKU列表
* @return 促销计算结果
*/
private PromotionPriceDTO calculationPromotionPrice(List<PromotionPriceParamDTO> tradeSkuList, List<MemberCoupon> memberCouponList, List<EsGoodsIndex> esGoodsSkus, List<GoodsSku> goodsSkus) {
PromotionPriceDTO promotionPrice = new PromotionPriceDTO();
//拆分出SkuId列表
List<String> skuIds = tradeSkuList.parallelStream().map(PromotionPriceParamDTO::getSkuId).collect(Collectors.toList());
//参与计算的ES商品SKU及其促销信息列表
List<EsGoodsIndex> esGoodsSkus = goodsSearchService.getEsGoodsBySkuIds(skuIds);
//参与计算的缓存中的商品SKU列表
List<GoodsSku> goodsSkus = goodsSkuService.getGoodsSkuByIdFromCache(skuIds);
//单品商品SKU促销计算结果列表
List<GoodsSkuPromotionPriceDTO> priceDTOList = this.packageGoodsSkuPromotionPrice(tradeSkuList, esGoodsSkus, goodsSkus);
//将使用的优惠券根据店铺分类
Map<String, List<MemberCoupon>> couponCollect = memberCouponList.parallelStream().collect(Collectors.groupingBy(MemberCoupon::getStoreId));
@ -150,7 +131,6 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
return promotionPrice;
}
/**
* 单品SKU的促销计算
*
@ -166,16 +146,14 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
if (!collect.isEmpty()) {
EsGoodsIndex esGoodsIndex = collect.get(0);
//找出当前商品相应的结算参数
PromotionPriceParamDTO tradeSku = tradeSkuList.parallelStream().filter(i -> i.getSkuId().equals(skus.getId())).findFirst().orElse(new PromotionPriceParamDTO());
GoodsSkuPromotionPriceDTO goodsSkuPromotionPrice = new GoodsSkuPromotionPriceDTO(skus, tradeSku.getNum());
PromotionPriceParamDTO promotionPriceParamDTO = tradeSkuList.parallelStream().filter(i -> i.getSkuId().equals(skus.getId())).findFirst().orElse(new PromotionPriceParamDTO());
GoodsSkuPromotionPriceDTO goodsSkuPromotionPrice = new GoodsSkuPromotionPriceDTO(skus, promotionPriceParamDTO.getNum());
//商品原价总价 = 商品原价 * 数量
goodsSkuPromotionPrice.setTotalOriginalPrice(CurrencyUtil.mul(goodsSkuPromotionPrice.getOriginalPrice(), tradeSku.getNum()));
goodsSkuPromotionPrice.setTotalOriginalPrice(CurrencyUtil.mul(goodsSkuPromotionPrice.getOriginalPrice(), promotionPriceParamDTO.getNum()));
//获取当前商品所有参加的促销活动
Map<String, Object> promotionMap = esGoodsIndex.getPromotionMap();
//是否计算拼团促销
String pintuanId = tradeSku.getPintuanId() != null ? tradeSku.getPintuanId() : null;
//如果商品促销列表存在促销活动
this.calculationPromotionMap(promotionMap, goodsSkuPromotionPrice, esGoodsIndex, pintuanId);
this.calculationPromotionMap(promotionMap, goodsSkuPromotionPrice, esGoodsIndex, promotionPriceParamDTO);
goodsSkuPromotionPrice.setTotalOriginalPrice(CurrencyUtil.mul(goodsSkuPromotionPrice.getOriginalPrice(), goodsSkuPromotionPrice.getNumber()));
goodsSkuPromotionPrice.setTotalPoints(CurrencyUtil.mul(goodsSkuPromotionPrice.getPoints(), goodsSkuPromotionPrice.getNumber()));
@ -188,28 +166,54 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
}
/**
* 促销计算(秒杀活动拼团)
* 促销计算(秒杀活动拼团满优惠活动砍价)
*
* @param promotionMap 当前商品所有参加的促销活动
* @param goodsSkuPromotionPrice 商品SKU促销计算信息
* @param esGoodsIndex ES商品信息
* @param pintuanId 拼团id标示是否计算拼团活动
* @param promotionPriceParamDTO 拼团id标示是否计算拼团活动
*/
private void calculationPromotionMap(Map<String, Object> promotionMap, GoodsSkuPromotionPriceDTO goodsSkuPromotionPrice, EsGoodsIndex esGoodsIndex, String pintuanId) {
if (promotionMap != null && !promotionMap.isEmpty()) {
//检查当前商品是否存在秒杀活动活动
Optional<String> existSeckill = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.SECKILL.name())).findFirst();
if (existSeckill.isPresent()) {
Seckill seckill = (Seckill) promotionMap.get(existSeckill.get());
//计算秒杀活动促销
this.calculationSeckill(seckill, goodsSkuPromotionPrice);
seckill.setPromotionName(PromotionTypeEnum.SECKILL.name());
goodsSkuPromotionPrice.getJoinPromotion().add(seckill);
}
private void calculationPromotionMap(Map<String, Object> promotionMap, GoodsSkuPromotionPriceDTO goodsSkuPromotionPrice, EsGoodsIndex esGoodsIndex, PromotionPriceParamDTO promotionPriceParamDTO) {
//未参加促销则直接返回
if (promotionMap == null || promotionMap.isEmpty()) {
return;
}
//检查当前商品是否存在拼团活动
//检查当前商品是否存在满优惠活动
Optional<String> existFullDiscount = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst();
if (existFullDiscount.isPresent()) {
FullDiscount discount = (FullDiscount) promotionMap.get(existFullDiscount.get());
goodsSkuPromotionPrice.setPromotionId(discount.getId());
goodsSkuPromotionPrice.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name());
}
//检查当前商品是否存在秒杀活动活动
Optional<String> existSeckill = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.SECKILL.name())).findFirst();
if (existSeckill.isPresent()) {
Seckill seckill = (Seckill) promotionMap.get(existSeckill.get());
//计算秒杀活动促销
this.calculationSeckill(seckill, goodsSkuPromotionPrice);
seckill.setPromotionName(PromotionTypeEnum.SECKILL.name());
goodsSkuPromotionPrice.getJoinPromotion().add(seckill);
}
//检查当前商品是否存在砍价活动
if (promotionPriceParamDTO.getKanjiaId() != null) {
Optional<String> existKanjia = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.KANJIA.name())).findFirst();
if (existKanjia.isPresent()) {
KanjiaActivityGoods kanjiaActivityGoods = (KanjiaActivityGoods) promotionMap.get(existKanjia.get());
//优惠的总价格 = 原商品总价 - 优惠后的商品总价
double discountPrice = CurrencyUtil.sub(kanjiaActivityGoods.getOriginalPrice(), kanjiaActivityGoods.getPurchasePrice());
goodsSkuPromotionPrice.setDiscountPrice(discountPrice);
goodsSkuPromotionPrice.setFinalePrice(kanjiaActivityGoods.getPurchasePrice());
goodsSkuPromotionPrice.getJoinPromotion().add(kanjiaActivityGoods);
}
}
//检查当前商品是否存在拼团活动
else if (promotionPriceParamDTO.getPintuanId() != null) {
Optional<String> existPintuan = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.PINTUAN.name())).findFirst();
if (existPintuan.isPresent() && pintuanId != null) {
if (existPintuan.isPresent()) {
Pintuan pintuan = (Pintuan) promotionMap.get(existPintuan.get());
//优惠的总价格 = 原商品总价 - 优惠后的商品总价
double discountPrice = CurrencyUtil.sub(goodsSkuPromotionPrice.getOriginalPrice(), esGoodsIndex.getPromotionPrice());
@ -218,20 +222,17 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
pintuan.setPromotionName(PromotionTypeEnum.PINTUAN.name());
goodsSkuPromotionPrice.getJoinPromotion().add(pintuan);
}
//检查当前商品是否存在满优惠活动
Optional<String> existFullDiscount = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.FULL_DISCOUNT.name())).findFirst();
if (existFullDiscount.isPresent()) {
FullDiscount discount = (FullDiscount) promotionMap.get(existFullDiscount.get());
goodsSkuPromotionPrice.setPromotionId(discount.getId());
goodsSkuPromotionPrice.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name());
}
}
//检查当前商品是否存在积分商品活动
else if (promotionPriceParamDTO.getPointsId() != null) {
Optional<String> existPointsGoods = promotionMap.keySet().parallelStream().filter(i -> i.contains(PromotionTypeEnum.POINTS_GOODS.name())).findFirst();
if (existPointsGoods.isPresent()) {
PointsGoods pointsGoods = (PointsGoods) promotionMap.get(existPointsGoods.get());
goodsSkuPromotionPrice.setPoints(pointsGoods.getPoints().doubleValue());
goodsSkuPromotionPrice.setDiscountPrice(goodsSkuPromotionPrice.getOriginalPrice());
goodsSkuPromotionPrice.setFinalePrice(0.0);
pointsGoods.setPromotionName(pointsGoods.getPromotionName());
goodsSkuPromotionPrice.getJoinPromotion().add(pointsGoods);
}
}
}
@ -345,7 +346,8 @@ public class PromotionPriceServiceImpl implements PromotionPriceService {
*/
private void calculationSeckill(Seckill seckill, GoodsSkuPromotionPriceDTO promotionPrice) {
//检查 活动有效时间 活动有效状态
if (checkPromotionValidTime(seckill.getStartTime(), seckill.getEndTime(), PromotionTypeEnum.SECKILL.name(), seckill.getId()) && seckill.getPromotionStatus().equals(PromotionStatusEnum.START.name())) {
if (checkPromotionValidTime(seckill.getStartTime(), seckill.getEndTime(), PromotionTypeEnum.SECKILL.name(), seckill.getId()) &&
seckill.getPromotionStatus().equals(PromotionStatusEnum.START.name())) {
LambdaQueryWrapper<SeckillApply> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SeckillApply::getSkuId, promotionPrice.getSkuId()).eq(SeckillApply::getSeckillId, seckill.getId());
SeckillApply seckillApply = seckillApplyService.getOne(queryWrapper);

View File

@ -129,8 +129,8 @@ public class PromotionServiceImpl implements PromotionService {
result = this.updatePointsGoods(promotionMessage, esPromotionKey, promotionTypeEnum);
break;
//砍价商品商品
case KAN_JIA:
result = this.updateKanJiaGoods(promotionMessage, promotionTypeEnum);
case KANJIA:
result = this.updateKanjiaGoods(promotionMessage, promotionTypeEnum);
break;
//优惠券活动
case COUPON_ACTIVITY:
@ -464,7 +464,7 @@ public class PromotionServiceImpl implements PromotionService {
* @param promotionTypeEnum 促销分类枚举
* @return 修改结果
*/
private boolean updateKanJiaGoods(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) {
private boolean updateKanjiaGoods(PromotionMessage promotionMessage, PromotionTypeEnum promotionTypeEnum) {
KanjiaActivityGoodsDTO kanJiaActivityGoodsDTO = this.mongoTemplate.findById(promotionMessage.getPromotionId(), KanjiaActivityGoodsDTO.class);
if (kanJiaActivityGoodsDTO == null) {
this.throwPromotionException(promotionTypeEnum, promotionMessage.getPromotionId(), promotionMessage.getPromotionStatus());

View File

@ -8,7 +8,6 @@ import cn.lili.common.security.context.UserContext;
import cn.lili.common.token.Token;
import cn.lili.common.utils.PageUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.verification.enums.VerificationEnums;
import cn.lili.common.verification.service.VerificationService;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
@ -59,11 +58,12 @@ public class AdminUserManagerController {
public ResultMessage<Token> login(@NotNull(message = "用户名不能为空") @RequestParam String username,
@NotNull(message = "密码不能为空") @RequestParam String password,
@RequestHeader String uuid) {
if (verificationService.check(uuid, VerificationEnums.LOGIN)) {
return ResultUtil.data(adminUserService.login(username, password));
} else {
throw new ServiceException(ResultCode.VERIFICATION_ERROR);
}
return ResultUtil.data(adminUserService.login(username, password));
// if (verificationService.check(uuid, VerificationEnums.LOGIN)) {
// return ResultUtil.data(adminUserService.login(username, password));
// } else {
// throw new ServiceException(ResultCode.VERIFICATION_ERROR);
// }
}

View File

@ -8,7 +8,7 @@ import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsDTO;
import cn.lili.modules.promotion.entity.dto.KanjiaActivityGoodsOperationDTO;
import cn.lili.modules.promotion.entity.vos.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.entity.vos.kanjia.KanjiaActivityGoodsParams;
import cn.lili.modules.promotion.service.KanjiaActivityGoodsService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.Api;