进行中的满减活动可以关闭
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
package cn.lili.modules.promotion.service;
|
||||
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.promotion.entity.dos.FullDiscount;
|
||||
import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams;
|
||||
import cn.lili.modules.order.cart.entity.vo.FullDiscountVO;
|
||||
import cn.lili.modules.promotion.entity.dos.FullDiscount;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
@@ -17,14 +18,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface FullDiscountService extends IService<FullDiscount> {
|
||||
|
||||
/**
|
||||
* 当前满优惠活动
|
||||
*
|
||||
* @param storeId 商家编号
|
||||
* @return 满优惠活动信息
|
||||
*/
|
||||
FullDiscountVO currentPromotion(String storeId);
|
||||
|
||||
/**
|
||||
* 当前满优惠活动
|
||||
*
|
||||
@@ -53,8 +46,8 @@ public interface FullDiscountService extends IService<FullDiscount> {
|
||||
/**
|
||||
* 从mongo中分页获取满优惠列表
|
||||
*
|
||||
* @param searchParams 搜索参数
|
||||
* @param page 分页参数
|
||||
* @param searchParams 搜索参数
|
||||
* @param page 分页参数
|
||||
* @return 满优惠列表
|
||||
*/
|
||||
IPage<FullDiscountVO> getFullDiscountByPageFromMongo(FullDiscountSearchParams searchParams, PageVO page);
|
||||
@@ -84,4 +77,13 @@ public interface FullDiscountService extends IService<FullDiscount> {
|
||||
*/
|
||||
boolean deleteFullDiscount(String id);
|
||||
|
||||
/**
|
||||
* 更新满额活动状态
|
||||
*
|
||||
* @param id 优惠券编号
|
||||
* @param promotionStatus 促销状态
|
||||
* @return 更新结果
|
||||
*/
|
||||
boolean updateFullDiscountStatus(String id, PromotionStatusEnum promotionStatus);
|
||||
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
package cn.lili.modules.promotion.serviceimpl;
|
||||
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.trigger.util.DelayQueueTools;
|
||||
import cn.lili.common.trigger.enums.DelayTypeEnums;
|
||||
import cn.lili.common.trigger.message.PromotionMessage;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.trigger.enums.DelayTypeEnums;
|
||||
import cn.lili.common.trigger.interfaces.TimeTrigger;
|
||||
import cn.lili.common.trigger.message.PromotionMessage;
|
||||
import cn.lili.common.trigger.model.TimeExecuteConstant;
|
||||
import cn.lili.common.trigger.model.TimeTriggerMsg;
|
||||
import cn.lili.common.trigger.util.DelayQueueTools;
|
||||
import cn.lili.common.utils.DateUtil;
|
||||
import cn.lili.common.utils.PageUtil;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
@@ -77,13 +77,6 @@ public class FullDiscountServiceImpl extends ServiceImpl<FullDiscountMapper, Ful
|
||||
@Autowired
|
||||
private PromotionGoodsService promotionGoodsService;
|
||||
|
||||
@Override
|
||||
public FullDiscountVO currentPromotion(String storeId) {
|
||||
Query query = this.getMongoQuery();
|
||||
query.addCriteria(Criteria.where(SELLER_ID_COLUMN).is(storeId));
|
||||
return mongoTemplate.findOne(query, FullDiscountVO.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FullDiscountVO> currentPromotion(List<String> storeId) {
|
||||
Query query = this.getMongoQuery();
|
||||
@@ -203,6 +196,48 @@ public class FullDiscountServiceImpl extends ServiceImpl<FullDiscountMapper, Ful
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateFullDiscountStatus(String id, PromotionStatusEnum promotionStatus) {
|
||||
Query query = new Query();
|
||||
query.addCriteria(Criteria.where("id").is(id));
|
||||
List<FullDiscountVO> fullDiscountVOList = this.mongoTemplate.find(query, FullDiscountVO.class);
|
||||
|
||||
//判断满额活动是否为空
|
||||
if (fullDiscountVOList.isEmpty() || fullDiscountVOList == null) {
|
||||
throw new ServiceException(ResultCode.FULL_DISCOUNT_NOT_EXIST_ERROR);
|
||||
}
|
||||
FullDiscountVO fullDiscountVO = fullDiscountVOList.get(0);
|
||||
|
||||
//如果是开启活动则需要校验参数
|
||||
if (promotionStatus.equals(PromotionStatusEnum.START)) {
|
||||
//验证是否是有效参数
|
||||
PromotionTools.paramValid(fullDiscountVO.getStartTime().getTime(), fullDiscountVO.getEndTime().getTime(), fullDiscountVO.getNumber(), fullDiscountVO.getPromotionGoodsList());
|
||||
//当前时间段是否存在同类活动
|
||||
this.checkSameActiveExist(fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime(), fullDiscountVO.getStoreId(), null);
|
||||
//检查满减参数
|
||||
this.checkFullDiscount(fullDiscountVO);
|
||||
}
|
||||
|
||||
//填写活动状态
|
||||
fullDiscountVO.setPromotionStatus(promotionStatus.name());
|
||||
|
||||
//保存到MYSQL中
|
||||
this.updateById(fullDiscountVO);
|
||||
|
||||
//添加促销消息
|
||||
PromotionMessage promotionMessage = new PromotionMessage(fullDiscountVO.getId(), PromotionTypeEnum.FULL_DISCOUNT.name(),
|
||||
promotionStatus.name(),
|
||||
fullDiscountVO.getStartTime(), fullDiscountVO.getEndTime());
|
||||
//添加延时任务
|
||||
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.PROMOTION_EXECUTOR,
|
||||
fullDiscountVO.getStartTime().getTime(), promotionMessage,
|
||||
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.PROMOTION, (promotionMessage.getPromotionType() + promotionMessage.getPromotionId())),
|
||||
rocketmqCustomProperties.getPromotionTopic());
|
||||
//发送促销活动开始的延时任务
|
||||
this.timeTrigger.addDelay(timeTriggerMsg);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查满优惠活动是否存在
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user