From dd491e38e50af7bfbd67f37c419ed133732b3747 Mon Sep 17 00:00:00 2001 From: lifenlong Date: Wed, 21 Jul 2021 15:13:50 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E4=B8=AD=E7=9A=84=E6=BB=A1?= =?UTF-8?q?=E5=87=8F=E6=B4=BB=E5=8A=A8=E5=8F=AF=E4=BB=A5=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/FullDiscountService.java | 26 +++++---- .../serviceimpl/FullDiscountServiceImpl.java | 55 +++++++++++++++---- .../FullDiscountManagerController.java | 23 ++++++-- .../FullDiscountStoreController.java | 20 ++++++- 4 files changed, 95 insertions(+), 29 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java b/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java index 03e3b3db..0184f2ab 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/FullDiscountService.java @@ -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 { - /** - * 当前满优惠活动 - * - * @param storeId 商家编号 - * @return 满优惠活动信息 - */ - FullDiscountVO currentPromotion(String storeId); - /** * 当前满优惠活动 * @@ -53,8 +46,8 @@ public interface FullDiscountService extends IService { /** * 从mongo中分页获取满优惠列表 * - * @param searchParams 搜索参数 - * @param page 分页参数 + * @param searchParams 搜索参数 + * @param page 分页参数 * @return 满优惠列表 */ IPage getFullDiscountByPageFromMongo(FullDiscountSearchParams searchParams, PageVO page); @@ -84,4 +77,13 @@ public interface FullDiscountService extends IService { */ boolean deleteFullDiscount(String id); + /** + * 更新满额活动状态 + * + * @param id 优惠券编号 + * @param promotionStatus 促销状态 + * @return 更新结果 + */ + boolean updateFullDiscountStatus(String id, PromotionStatusEnum promotionStatus); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java index b2b0a962..f45e4082 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java @@ -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 currentPromotion(List storeId) { Query query = this.getMongoQuery(); @@ -203,6 +196,48 @@ public class FullDiscountServiceImpl extends ServiceImpl 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; + } + /** * 检查满优惠活动是否存在 * diff --git a/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java b/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java index 8036f8e0..188e6193 100644 --- a/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java +++ b/manager-api/src/main/java/cn/lili/controller/promotion/FullDiscountManagerController.java @@ -1,19 +1,20 @@ package cn.lili.controller.promotion; +import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; +import cn.lili.modules.promotion.entity.enums.PromotionStatusEnum; import cn.lili.modules.promotion.entity.vos.FullDiscountSearchParams; import cn.lili.modules.promotion.service.FullDiscountService; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 管理端,满额活动接口 @@ -47,4 +48,16 @@ public class FullDiscountManagerController { return ResultUtil.data(fullDiscountService.getFullDiscount(id)); } + @ApiOperation(value = "修改满额活动状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "满额活动ID", required = true, paramType = "path"), + @ApiImplicitParam(name = "promotionStatus", value = "满额活动状态", required = true, paramType = "path") + }) + @PutMapping("/status/{id}/{promotionStatus}") + public ResultMessage updateCouponStatus(@PathVariable String id, @PathVariable String promotionStatus) { + if (fullDiscountService.updateFullDiscountStatus(id, PromotionStatusEnum.valueOf(promotionStatus))) { + return ResultUtil.success(ResultCode.SUCCESS); + } + return ResultUtil.error(ResultCode.ERROR); + } } diff --git a/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java b/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java index fafdb403..3e6644ed 100644 --- a/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/promotion/FullDiscountStoreController.java @@ -1,18 +1,20 @@ package cn.lili.controller.promotion; import cn.lili.common.enums.ResultCode; +import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; -import cn.lili.common.enums.ResultUtil; import cn.lili.common.vo.PageVO; import cn.lili.common.vo.ResultMessage; +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 cn.lili.modules.promotion.service.FullDiscountService; -import cn.lili.modules.order.cart.entity.vo.FullDiscountVO; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -75,4 +77,18 @@ public class FullDiscountStoreController { return ResultUtil.success(ResultCode.FULL_DISCOUNT_EDIT_DELETE); } + + @ApiOperation(value = "修改满额活动状态") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "满额活动ID", required = true, paramType = "path"), + @ApiImplicitParam(name = "promotionStatus", value = "满额活动状态", required = true, paramType = "path") + }) + @PutMapping("/status/{id}/{promotionStatus}") + public ResultMessage updateCouponStatus(@PathVariable String id, @PathVariable String promotionStatus) { + if (fullDiscountService.updateFullDiscountStatus(id, PromotionStatusEnum.valueOf(promotionStatus))) { + return ResultUtil.success(ResultCode.SUCCESS); + } + return ResultUtil.error(ResultCode.ERROR); + } + }