From ac70afa4e394626dc03d82def3df1db886bb7c2e Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期四, 12 九月 2024 14:43:59 +0800 Subject: [PATCH] 1.活动优惠券-管理端-类型是首页领取的活动优惠券,发布的时候将已经发布的设置为下架,只能留有一个已发布的优惠券 3.活动优惠券-小程序-新增首页弹窗优惠券-如果领取数量没有超过当前优惠券还可以再次领取,超过领取优惠券的话则不返回数据 --- src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | 10 +++ src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java | 3 + src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java | 8 ++ src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | 11 +++ src/main/v2_sql.sql | 33 +++++++++++ src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java | 19 +++++- pom.xml | 40 +++++++++++++ src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java | 4 + src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | 26 ++++++++ src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml | 25 ++++++++ 10 files changed, 175 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index c624d4f..d219e73 100644 --- a/pom.xml +++ b/pom.xml @@ -266,7 +266,45 @@ <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> - <version>3.15.6</version> + <version>3.15.6</version> <!-- 确保使用与你的 Spring Boot 版本兼容的 Redisson 版本 --> + </dependency> + + + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.3.1</version> + </dependency> + <dependency> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-runtime</artifactId> + <version>2.3.1</version> + </dependency> + + <!--代码生成器依赖--> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>${freemarker.version}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-generator</artifactId> + <version>${mybatis-plus.version}</version> + <scope>test</scope> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <optional>true</optional> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-validation</artifactId> </dependency> diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java index a309696..41f0e3d 100644 --- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java @@ -25,5 +25,8 @@ @ApiModelProperty(value = "优惠券状态(COUPON_STATUS)",hidden = true) private String status; + @ApiModelProperty(value = "领取人ID",hidden = true) + private String userId; + } diff --git a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java index b3132d2..f8b8327 100644 --- a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java +++ b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java @@ -61,4 +61,8 @@ List<CouponTemplateVO> getVipList(@Param("param") QueryCouponDTO dto); List<CouponTemplateVO> getCouponTemplateVipPage(Page page, @Param("param") QueryCouponDTO dto); + + CouponTemplateVO getHomeActivityEffectAlert(@Param("param") QueryActivityEffectCouponDTO dto); + + void expireHomeActivityCouponTemplate(); } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java index 4efcf6b..a416242 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java @@ -66,6 +66,14 @@ Integer getUserGainCouponRecordAmountById(String couponId,Long customerId); + /** + * + * @param couponId + * @param userId + * @return + */ + Integer getUserGainCouponRecordAmountByUserId(String couponId,String userId); + List<CouponRecordVO> getMineCouponRecordList(QueryMineCouponRecordDTO dto); /** @@ -110,4 +118,6 @@ * @return */ boolean checkUserCouponExists(String couponId, Long customId); + + } diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java index a1b7339..b33de57 100644 --- a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java +++ b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java @@ -92,4 +92,12 @@ List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto); void exchangeCoupon(ExchangeCouponDTO dto); + + /** + * 查询首页弹簧,且当前自己领取过的话则不用展示 + * @param dto + * @return + */ + CouponTemplateVO getHomeActivityEffectAlert(QueryActivityEffectCouponDTO dto); + } diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java index 3a788f3..a5138f9 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java @@ -395,6 +395,17 @@ } @Override + public Integer getUserGainCouponRecordAmountByUserId(String couponId, String userId) { + QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>(); + queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag()) + .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId) + .eq(null!=userId,CouponRecordDO::getUserId,userId) + ; + + return baseMapper.selectCount(queryWrapper); + } + + @Override public List<CouponRecordVO> getMineCouponRecordList(QueryMineCouponRecordDTO dto) { checkCouponExpired(dto); return couponRecordMapperCustom.getMineCouponRecordList(dto); diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java index 4c11832..1a264ea 100644 --- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java +++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java @@ -308,6 +308,15 @@ couponRecordService.saveBatch(couponUsageDOList); } } + + // 如果是活动优惠券且领取渠道是Home类型的,那么只能设置当前优惠券为激活状态,其他优惠券是激活状态的设置为下架状态 + if (StringUtils.isNotBlank(couponTemplateDO.getCategory()) && couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) + && StringUtils.isNotBlank(couponTemplateDO.getGetType()) && couponTemplateDO.getGetType().equals(CouponGetTypeEnum.HOME.getType()) + ) { + + couponTemplateMapperCustom.expireHomeActivityCouponTemplate(); + } + return baseMapper.updateById(couponTemplateDO) > 0; } @@ -452,6 +461,23 @@ } @Override + public CouponTemplateVO getHomeActivityEffectAlert(QueryActivityEffectCouponDTO dto) { + dto.setUserId(SecurityUtils.getUserId()); + final CouponTemplateVO homeActivityEffectAlert = couponTemplateMapperCustom.getHomeActivityEffectAlert(dto); + if(null!=homeActivityEffectAlert){ + // 查看当前已经领取了几张 + final Integer getCnt = couponRecordService.getUserGainCouponRecordAmountByUserId(homeActivityEffectAlert.getId(), SecurityUtils.getUserId()); + // 如果当前领取的数量小于限制领取的数量的时候,可以再次领取 + if(null!=homeActivityEffectAlert.getGetLimit() && null!=getCnt + && homeActivityEffectAlert.getGetLimit().compareTo(getCnt)>0){ + return homeActivityEffectAlert; + } + } + + return null; + } + + @Override public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) { return couponTemplateMapperCustom.getActivityEffectList(dto); diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java index 547b8af..fb33a94 100644 --- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java +++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java @@ -53,16 +53,29 @@ @Autowired CustomerMapper customerMapper; - @GetMapping("/home/list") +// @GetMapping("/home/list") +// @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框") +// public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> homeList(QueryActivityEffectCouponDTO dto) { +// // 活动优惠券 +// dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); +// // 已经发布 +// dto.setStatus(CouponStatusEnum.ACTIVE.getStatus()); +// // 首页弹窗 +// dto.setGetType(CouponGetTypeEnum.HOME.getType()); +// return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getActivityEffectList(dto), CouponTemplateAppVO.class)); +// } + + @GetMapping("/home/alert") @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框") - public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> homeList(QueryActivityEffectCouponDTO dto) { + public ResponseEntity<ReturnDataDTO<CouponTemplateVO>> homeAlert(QueryActivityEffectCouponDTO dto) { // 活动优惠券 dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus()); // 已经发布 dto.setStatus(CouponStatusEnum.ACTIVE.getStatus()); // 首页弹窗 dto.setGetType(CouponGetTypeEnum.HOME.getType()); - return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getActivityEffectList(dto), CouponTemplateAppVO.class)); + // 如果当前人员已经领取过的话,则不返回 + return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(couponTemplateService.getHomeActivityEffectAlert(dto), CouponTemplateAppVO.class)); } @GetMapping("/activy/list") diff --git a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml index 618568f..7ce2dbb 100644 --- a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml +++ b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml @@ -56,6 +56,9 @@ #{item} </foreach> </update> + <update id="expireHomeActivityCouponTemplate"> + update t_coupon_template set status='expired' where category='activity' and get_type='home' and status='active' + </update> <select id="getCouponTemplatePage" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO"> <include refid="QuerySql2"/> @@ -113,6 +116,28 @@ <select id="getCouponTemplateVipPage" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO"> <include refid="QuerySqlVip" /> </select> + <select id="getHomeActivityEffectAlert" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO"> + SELECT * + FROM t_coupon_template t + WHERE t.deleted = FALSE + + <if test="param.category != null and param.category != '' and param.category == 'activity' "> + AND t.get_start_date <= NOW() + AND NOW() <= t.get_end_date + </if> + + <if test="param.category != null and param.category != ''"> + AND t.category = #{param.category} + </if> + <if test="param.status != null and param.status != ''"> + AND t.status = #{param.status} + </if> + <if test="param.getType != null and param.getType != ''"> + AND t.get_type = #{param.getType} + </if> + ORDER BY t.create_time DESC + limit 1 + </select> <sql id="QueryPointSql"> select * diff --git a/src/main/v2_sql.sql b/src/main/v2_sql.sql new file mode 100644 index 0000000..815b293 --- /dev/null +++ b/src/main/v2_sql.sql @@ -0,0 +1,33 @@ +CREATE TABLE `flower`.`t_coupon_template` ( + `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '主键', + `coupon_code` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '优惠券代码(唯一)', + `coupon_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '优惠券名称', + `coupon_description` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '优惠券描述(使用规则)', + `coupon_amount` int(11) NULL DEFAULT NULL COMMENT '发放数量', + `coupon_discount_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '优惠券类型(COUPON_TYPE)满减和无门槛', + `coupon_discount_value` decimal(10, 2) NULL DEFAULT NULL COMMENT '优惠券面值 折扣值(百分比或金额)', + `min_order_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '使用条件,最小订单金额(可选)=》使用条件', + `max_discount_amount` decimal(10, 2) NULL DEFAULT NULL COMMENT '最大折扣金额(可选,仅对百分比折扣类型适用)', + `get_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '领取渠道(COUPON_GET_TYPE)首页弹窗、活动入口、领券中心', + `get_user_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '领取用户类型(COUPON_GET_USER_TYPE)全部用户,指定用户', + `get_start_date` datetime NULL DEFAULT NULL COMMENT '领取开始时间', + `get_end_date` datetime NULL DEFAULT NULL COMMENT '领取结束时间', + `get_limit` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '每人限领', + `usage_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '使用时间类型(COUPON_USAGE_TYPE)与领取时间一致、固定时间、领取后有效', + `usage_time_type` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '领取后有效类型(COUPON_USAGE_TIME_TYPE)天、小时、分钟', + `usage_time_num` int(11) NULL DEFAULT NULL COMMENT '领取后有效时间整数,比如90(天,小时,分钟)', + `usage_limit` int(11) NULL DEFAULT NULL COMMENT '使用次数限制', + `usage_per_user` int(11) NULL DEFAULT NULL COMMENT '每个用户的使用次数限制', + `usage_start_date` datetime NULL DEFAULT NULL COMMENT '使用开始时间', + `usage_end_date` datetime NULL DEFAULT NULL COMMENT '使用结束时间', + `status` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 'active' COMMENT '优惠券状态(COUPON_STATUS)', + `vip_flag` tinyint(4) NULL DEFAULT 0 COMMENT '会员标志', + `vip_grade` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '会员等级', + `create_by` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人', + `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '更新人', + `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` tinyint(4) NULL DEFAULT 0 COMMENT '删除标志', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `coupon_code`(`coupon_code`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; \ No newline at end of file -- Gitblit v1.9.3