Sfoglia il codice sorgente

app端优惠券查询

liujunchi 3 anni fa
parent
commit
076ad2c605

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponIssueServiceImp.java

@@ -21,6 +21,7 @@ import com.yonge.toolset.base.exception.BizException;
 import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.time.ZoneId;
@@ -76,6 +77,7 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
     }
 
     @Override
+    @Transactional
     public Boolean withdrawCoupon(Long couponIssueId) {
         return this.lambdaUpdate()
                 .eq(CouponIssue::getId,couponIssueId)
@@ -84,8 +86,12 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
     }
 
     @Override
+    @Transactional
     public void issueCoupon(Long couponId, List<UserParam> userParam, Long issuer, String reason) {
         CouponInfo couponInfo = couponInfoService.queryCouponInfoById(couponId);
+        if (couponInfo.getInventory() < userParam.size()) {
+            throw new BizException("库存不足");
+        }
         // 判断优惠券类型 设置优惠券时间
         Long startTime = null;
         Long endTime = null;
@@ -120,6 +126,9 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
         }
         this.saveBatch(couponIssueList);
 
+        //  优惠券扣减库存
+        // couponInfoService.updateStock()
+
 
     }
 

+ 23 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/coupon/CouponIssueWrapper.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.enums.coupon.CouponTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -76,9 +77,31 @@ public class CouponIssueWrapper {
     @ApiModelProperty("发放人实名")
     private String issueRealName;
 
+    @ApiModelProperty("使用门槛")
+    private BigDecimal useLimit;
+
+    @ApiModelProperty("优惠金额")
+    private BigDecimal discountPrice;
+
     @ApiModelProperty("备注")
     private String remark;
 
+    public BigDecimal getUseLimit() {
+        return useLimit;
+    }
+
+    public void setUseLimit(BigDecimal useLimit) {
+        this.useLimit = useLimit;
+    }
+
+    public BigDecimal getDiscountPrice() {
+        return discountPrice;
+    }
+
+    public void setDiscountPrice(BigDecimal discountPrice) {
+        this.discountPrice = discountPrice;
+    }
+
     public CouponTypeEnum getCouponType() {
         return couponType;
     }

+ 3 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CouponIssueMapper.xml

@@ -45,7 +45,9 @@
             cou.name_ as couponName,
             cou.id_ as couponId,
             cou.coupon_type_ as couponType,
-            cou.category_ as couponCategory
+            cou.category_ as couponCategory,
+            cou.use_limit_ as useLimit,
+            cou.discount_price_ as discountPrice
         from coupon_issue ci
         left join sys_user su on ci.user_id_ = su.id_
         left join coupon_info cou on cou.id_ = ci.coupon_id_

+ 36 - 3
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/coupon/CouponInfoController.java

@@ -1,25 +1,44 @@
 package com.yonge.cooleshow.student.controller.coupon;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CouponIssueQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.CouponIssueService;
+import com.yonge.cooleshow.biz.dal.vo.coupon.CouponIssueWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.student.io.request.CouponInfoVO;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * 优惠券信息
  * Created by Eric.Shang on 2022/9/2.
  */
-@Controller
+@RestController
 @RequestMapping("/couponInfo")
 @Api(value = "优惠券信息", tags = "优惠券信息")
 public class CouponInfoController extends BaseController {
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private CouponIssueService couponIssueService;
+
     /**
      * 优惠券信息
      * @param request CouponInfoVO.RequestInfo
@@ -28,7 +47,21 @@ public class CouponInfoController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询优惠券分页", notes = "传入CouponInfoVO.PageRequest")
     public HttpResponseResult<PageInfo<CouponInfoVO.CouponPageInfo>> queryCouponPageInfo(@RequestBody CouponInfoVO.PageRequest request) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        request.setUserId(user.getId());
+        request.setClientType(ClientEnum.STUDENT.getCode());
+        IPage<CouponIssueWrapper> couponIssueWrapperIPage = couponIssueService.queryCouponIssueInfo(
+                PageUtil.getPage(request), CouponIssueQueryInfo.from(request.jsonString()));
+
+
+        // 数据转换
+        List<CouponInfoVO.CouponPageInfo> pageInfos = JSON.parseArray(JSON.toJSONString(couponIssueWrapperIPage.getRecords()),
+                                                                      CouponInfoVO.CouponPageInfo.class);
 
-        return null;
+        return succeed(PageUtil.getPageInfo(couponIssueWrapperIPage,pageInfos));
     }
 }

+ 8 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/io/request/CouponInfoVO.java

@@ -1,6 +1,9 @@
 package com.yonge.cooleshow.student.io.request;
 
 import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +29,9 @@ public class CouponInfoVO {
     @ApiModel(value = "优惠券信息分页请求", description = "优惠券信息分页")
     public static class PageRequest extends QueryInfo {
 
+        @ApiModelProperty(value = "用户id",hidden = true)
+        private Long userId;
+
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
         private String clientType;
 
@@ -53,7 +59,7 @@ public class CouponInfoVO {
         private Long id;
 
         @ApiModelProperty("优惠券名称")
-        private String name;
+        private String couponName;
 
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
         private String clientType;
@@ -74,7 +80,7 @@ public class CouponInfoVO {
         private Long couponId;
 
         @ApiModelProperty("使用状态: EXPIRED(已失效) USABLE(可使用) USED(已使用) ")
-        private String useState;
+        private CouponUseStateEnum useState;
 
         @ApiModelProperty("使用时间")
         private Long useTime;

+ 36 - 3
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/coupon/CouponInfoController.java

@@ -1,25 +1,44 @@
 package com.yonge.cooleshow.teacher.controller.coupon;
 
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CouponIssueQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.CouponIssueService;
+import com.yonge.cooleshow.biz.dal.vo.coupon.CouponIssueWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.teacher.io.request.CouponInfoVO;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * 优惠券信息
  * Created by Eric.Shang on 2022/9/2.
  */
-@Controller
+@RestController
 @RequestMapping("/couponInfo")
 @Api(value = "优惠券信息", tags = "优惠券信息")
 public class CouponInfoController extends BaseController {
 
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private CouponIssueService couponIssueService;
+
     /**
      * 优惠券信息
      * @param request CouponInfoVO.RequestInfo
@@ -28,7 +47,21 @@ public class CouponInfoController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询优惠券分页", notes = "传入CouponInfoVO.PageRequest")
     public HttpResponseResult<PageInfo<CouponInfoVO.CouponPageInfo>> queryCouponPageInfo(@RequestBody CouponInfoVO.PageRequest request) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+
+        request.setUserId(user.getId());
+        request.setClientType(ClientEnum.TEACHER.getCode());
+        IPage<CouponIssueWrapper> couponIssueWrapperIPage = couponIssueService.queryCouponIssueInfo(
+                PageUtil.getPage(request), CouponIssueQueryInfo.from(request.jsonString()));
+
+
+        // 数据转换
+        List<CouponInfoVO.CouponPageInfo> pageInfos = JSON.parseArray(JSON.toJSONString(couponIssueWrapperIPage.getRecords()),
+                                                                      CouponInfoVO.CouponPageInfo.class);
 
-        return null;
+        return succeed(PageUtil.getPageInfo(couponIssueWrapperIPage,pageInfos));
     }
 }

+ 6 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/io/request/CouponInfoVO.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.teacher.io.request;
 
 import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -26,6 +27,9 @@ public class CouponInfoVO {
     @ApiModel(value = "优惠券信息分页请求", description = "优惠券信息分页")
     public static class PageRequest extends QueryInfo {
 
+        @ApiModelProperty(value = "用户id",hidden = true)
+        private Long userId;
+
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
         private String clientType;
 
@@ -53,7 +57,7 @@ public class CouponInfoVO {
         private Long id;
 
         @ApiModelProperty("优惠券名称")
-        private String name;
+        private String couponName;
 
         @ApiModelProperty("客户端类型: TEACHER(老师端), STUDENT(学生端)")
         private String clientType;
@@ -74,7 +78,7 @@ public class CouponInfoVO {
         private Long couponId;
 
         @ApiModelProperty("使用状态: EXPIRED(已失效) USABLE(可使用) USED(已使用) ")
-        private String useState;
+        private CouponUseStateEnum useState;
 
         @ApiModelProperty("使用时间")
         private Long useTime;