pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/v2_sql.sql | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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> 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; } 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(); } 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); } 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); } 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); 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); 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") 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 * 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;