From 589c6dee0b129bb85f6c02d9733c095fe99b7aa5 Mon Sep 17 00:00:00 2001
From: jieyuu <645634619@qq.com>
Date: Wed, 7 Aug 2024 11:14:25 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E6=A8=A1=E5=9D=97?=
=?UTF-8?q?=E5=BC=80=E5=90=AF=E4=BA=8B=E5=8A=A1=20=E4=BC=98=E6=83=A0?=
=?UTF-8?q?=E5=88=B8=E8=AE=B0=E5=BD=95=E5=BC=80=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/net/jieyuu/CouponApplication.java | 2 +
.../controller/CouponRecordController.java | 38 ++++++++-
.../jieyuu/service/CouponRecordService.java | 33 ++++++++
.../service/impl/CouponRecordServiceImpl.java | 74 +++++++++++++++++
.../service/impl/CouponServiceImpl.java | 14 +---
.../java/net/jieyuu/vo/CouponRecordVO.java | 79 +++++++++++++++++++
.../src/main/java/net/jieyuu/vo/CouponVO.java | 2 -
7 files changed, 226 insertions(+), 16 deletions(-)
create mode 100644 xdclass-coupon-service/src/main/java/net/jieyuu/service/CouponRecordService.java
create mode 100644 xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponRecordServiceImpl.java
create mode 100644 xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponRecordVO.java
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/CouponApplication.java b/xdclass-coupon-service/src/main/java/net/jieyuu/CouponApplication.java
index d048e3d..c22754d 100644
--- a/xdclass-coupon-service/src/main/java/net/jieyuu/CouponApplication.java
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/CouponApplication.java
@@ -3,8 +3,10 @@ package net.jieyuu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication
+@EnableTransactionManagement
@MapperScan("net.jieyuu.mapper")
public class CouponApplication {
public static void main(String[] args) {
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/controller/CouponRecordController.java b/xdclass-coupon-service/src/main/java/net/jieyuu/controller/CouponRecordController.java
index db12e9f..de7be52 100644
--- a/xdclass-coupon-service/src/main/java/net/jieyuu/controller/CouponRecordController.java
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/controller/CouponRecordController.java
@@ -1,21 +1,51 @@
package net.jieyuu.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import net.jieyuu.enums.BizCodeEnum;
+import net.jieyuu.service.CouponRecordService;
+import net.jieyuu.utils.JsonData;
+import net.jieyuu.vo.CouponRecordVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
-import org.springframework.web.bind.annotation.RestController;
+import java.util.Map;
/**
*
- * 前端控制器
+ * 前端控制器
*
*
* @author jieyuu
* @since 2024-07-15
*/
@RestController
-@RequestMapping("/couponRecordDO")
+@RequestMapping("/api/coupon_record/v1")
public class CouponRecordController {
+ @Autowired
+ private CouponRecordService couponRecordService;
+
+ @ApiOperation(value = "个人优惠券分页")
+ @GetMapping("page")
+ public JsonData page(@ApiParam("当前页")
+ @RequestParam(value = "page", defaultValue = "1") int page,
+ @ApiParam("显示多少条")
+ @RequestParam(value = "size", defaultValue = "20") int size) {
+ Map pageResult = couponRecordService.page(page, size);
+ return JsonData.buildSuccess(pageResult);
+ }
+
+
+ @ApiOperation("获取优惠券详情")
+ @GetMapping("detail/{record_id}")
+ public JsonData getCouponRecordDetail(@ApiParam("记录id") @PathVariable("record_id") long recordId) {
+ CouponRecordVO couponRecordVO = couponRecordService.findById(recordId);
+
+ return couponRecordVO == null ? JsonData.buildResult(BizCodeEnum.COUPON_NO_EXITS) : JsonData.buildSuccess(couponRecordVO);
+ }
+
+
}
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/service/CouponRecordService.java b/xdclass-coupon-service/src/main/java/net/jieyuu/service/CouponRecordService.java
new file mode 100644
index 0000000..21b275f
--- /dev/null
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/service/CouponRecordService.java
@@ -0,0 +1,33 @@
+package net.jieyuu.service;
+
+import net.jieyuu.model.CouponRecordDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import net.jieyuu.vo.CouponRecordVO;
+
+import java.util.Map;
+
+/**
+ *
+ * 服务类
+ *
+ *
+ * @author jieyuu
+ * @since 2024-07-15
+ */
+public interface CouponRecordService extends IService {
+ /**
+ * 分页查询领券记录
+ * @param page
+ * @param size
+ * @return
+ */
+ public Mappage(int page, int size);
+
+ /**
+ * 根据id查询详情
+ * @param recordId
+ * @return
+ */
+ CouponRecordVO findById(long recordId);
+
+}
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponRecordServiceImpl.java b/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponRecordServiceImpl.java
new file mode 100644
index 0000000..65fccc1
--- /dev/null
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponRecordServiceImpl.java
@@ -0,0 +1,74 @@
+package net.jieyuu.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import net.jieyuu.interceptor.LoginInterceptor;
+import net.jieyuu.model.CouponRecordDO;
+import net.jieyuu.mapper.CouponRecordMapper;
+import net.jieyuu.model.LoginUser;
+import net.jieyuu.service.CouponRecordService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import net.jieyuu.vo.CouponRecordVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 服务实现类
+ *
+ *
+ * @author jieyuu
+ * @since 2024-07-15
+ */
+@Service
+public class CouponRecordServiceImpl extends ServiceImpl implements CouponRecordService {
+
+ @Autowired
+ private CouponRecordMapper couponRecordMapper;
+
+ @Override
+ public Map page(int page, int size) {
+ LoginUser loginUser = LoginInterceptor.threadLocal.get();
+
+ Page pageInfo = new Page<>(page, size);
+
+ IPage couponDOIPage = couponRecordMapper.selectPage(pageInfo, new QueryWrapper()
+ .eq("user_id", loginUser.getId())
+ .orderByDesc("create_time"));
+
+ Map pageMap = new HashMap<>(3);
+
+ pageMap.put("total_record", couponDOIPage.getTotal());
+ pageMap.put("total_page", couponDOIPage.getPages());
+ pageMap.put("current_data", couponDOIPage.getRecords().stream().map(obj -> beanProcess(obj)).collect(Collectors.toList()));
+
+ return pageMap;
+ }
+
+ @Override
+ public CouponRecordVO findById(long recordId) {
+ LoginUser loginUser = LoginInterceptor.threadLocal.get();
+ CouponRecordDO couponRecordDO = couponRecordMapper.selectOne(new QueryWrapper()
+ .eq("id", recordId)
+ .eq("user_id", loginUser.getId()));
+
+ if (couponRecordDO == null) {
+ return null;
+ }
+
+ return beanProcess(couponRecordDO);
+ }
+
+ private CouponRecordVO beanProcess(CouponRecordDO couponRecordDO) {
+ CouponRecordVO couponRecordVO = new CouponRecordVO();
+ BeanUtils.copyProperties(couponRecordDO, couponRecordVO);
+
+ return couponRecordVO;
+ }
+}
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponServiceImpl.java b/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponServiceImpl.java
index 321421f..2e2a764 100644
--- a/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponServiceImpl.java
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/service/impl/CouponServiceImpl.java
@@ -16,7 +16,6 @@ import net.jieyuu.mapper.CouponMapper;
import net.jieyuu.model.CouponRecordDO;
import net.jieyuu.model.LoginUser;
import net.jieyuu.service.CouponService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.jieyuu.utils.CommonUtil;
import net.jieyuu.utils.JsonData;
import net.jieyuu.vo.CouponVO;
@@ -24,16 +23,12 @@ import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Service;
-
-import java.time.Duration;
-import java.util.Arrays;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
-import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -46,6 +41,7 @@ import java.util.stream.Collectors;
*/
@Service
@Slf4j
+
public class CouponServiceImpl implements CouponService {
@Autowired
@@ -54,9 +50,6 @@ public class CouponServiceImpl implements CouponService {
@Autowired
private CouponRecordMapper couponRecordMapper;
- @Autowired
- private StringRedisTemplate redisTemplate;
-
@Autowired
private RedissonClient redissonClient;
@@ -90,6 +83,7 @@ public class CouponServiceImpl implements CouponService {
* @return
*/
@Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public JsonData addCoupon(long couponId, CouponCategoryEnum category) {
LoginUser loginUser = LoginInterceptor.threadLocal.get();
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponRecordVO.java b/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponRecordVO.java
new file mode 100644
index 0000000..44c7c8d
--- /dev/null
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponRecordVO.java
@@ -0,0 +1,79 @@
+package net.jieyuu.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+@Data
+public class CouponRecordVO implements Serializable {
+
+ private Long id;
+
+ /**
+ * 优惠券id
+ */
+ @JsonProperty("coupon_id")
+ private Long couponId;
+
+ /**
+ * 使用状态 可用 NEW,已使用USED,过期 EXPIRED;
+ */
+ @JsonProperty("use_state")
+ private String useState;
+
+ /**
+ * 用户id
+ */
+ @JsonProperty("user_id")
+ private Long userId;
+
+ /**
+ * 用户昵称
+ */
+ @JsonProperty("user_name")
+ private String userName;
+
+ /**
+ * 优惠券标题
+ */
+ @JsonProperty("coupon_title")
+ private String couponTitle;
+
+ /**
+ * 优惠券开始有效时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", locale = "zh", timezone = "GMT+8")
+ @JsonProperty("start_time")
+ private Date startTime;
+
+ /**
+ * 优惠券失效时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", locale = "zh", timezone = "GMT+8")
+ @JsonProperty("end_time")
+ private Date endTime;
+
+ /**
+ * 订单id
+ */
+ @JsonProperty("order_id")
+ private Long orderId;
+
+ /**
+ * 抵扣价格
+ */
+ private BigDecimal price;
+
+ /**
+ * 满多少才可以使用
+ */
+ @JsonProperty("condition_price")
+ private BigDecimal conditionPrice;
+
+
+}
diff --git a/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponVO.java b/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponVO.java
index 289c601..0249e56 100644
--- a/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponVO.java
+++ b/xdclass-coupon-service/src/main/java/net/jieyuu/vo/CouponVO.java
@@ -1,7 +1,5 @@
package net.jieyuu.vo;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;