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