砍价活动商品购买
This commit is contained in:
parent
0f8a5aba05
commit
5d211c241d
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -22,6 +22,7 @@ public enum KanJiaStatusEnum {
|
||||
SUCCESS("成功"),
|
||||
/**
|
||||
* 砍价活动结束
|
||||
* 已购买、超时未购买都是这个状态
|
||||
*/
|
||||
END("已结束");
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
/**
|
||||
* 发起人发起砍价活动
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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());
|
||||
|
@ -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);
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user