Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

yonge 3 years ago
parent
commit
611d95f482

+ 2 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/coupon/CouponInfoController.java

@@ -116,7 +116,7 @@ public class CouponInfoController extends BaseController {
         }
 
         // 新增或更新信息
-        CouponInfo couponInfo = couponInfoService.saveOrUpdateCouponInfo(JSON.parseObject(info.jsonString(), CouponInfo.class));
+        CouponInfo couponInfo = couponInfoService.saveOrUpdateCouponInfo(JSON.parseObject(info.jsonString(), CouponInfo.class), false);
 
         return succeed(CouponInfoVO.CouponQueryInfo.from(JSON.toJSONString(couponInfo)));
     }
@@ -148,7 +148,7 @@ public class CouponInfoController extends BaseController {
                 .updateTime(DateTime.now().getMillis())
                 .build();
 
-        CouponInfo couponInfo = couponInfoService.saveOrUpdateCouponInfo(JSON.parseObject(info.jsonString(), CouponInfo.class));
+        CouponInfo couponInfo = couponInfoService.saveOrUpdateCouponInfo(JSON.parseObject(info.jsonString(), CouponInfo.class), true);
 
         // 校验状态更新结果
         return status(couponInfo.getStatus().intValue() == request.getStatus());

+ 1 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/AdminClient.java

@@ -131,6 +131,7 @@ public class AdminClient extends BaseController {
         CouponOrderVO.CouponUpdateRequest  request = new CouponOrderVO.CouponUpdateRequest();
         request.setOrderNo(orderNo);
         request.setReset(returnCoupon);
+        request.setUseType(CouponCategoryEnum.MALL);
         List<Long> collect = Arrays.stream(couponIssueId.split(","))
                                    .map(Long::valueOf)
                                    .collect(Collectors.toList());

+ 11 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponIssueVo.java

@@ -216,6 +216,17 @@ public class CouponIssueVo {
         @ApiModelProperty("用户手机号")
         private String phone;
 
+        @ApiModelProperty("使用类型")
+        private CouponCategoryEnum useType;
+
+        public CouponCategoryEnum getUseType() {
+            return useType;
+        }
+
+        public void setUseType(CouponCategoryEnum useType) {
+            this.useType = useType;
+        }
+
         public String getPhone() {
             return phone;
         }

+ 3 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/io/request/coupon/CouponOrderVO.java

@@ -140,6 +140,9 @@ public class CouponOrderVO {
         @ApiModelProperty("订单编号")
         private String orderNo;
 
+        @ApiModelProperty("使用类型")
+        private CouponCategoryEnum useType;
+
         public boolean invalidRequestParam() {
 
             if (Optional.ofNullable(getReset()).orElse(false)) {

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CouponIssue.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -53,6 +54,10 @@ public class CouponIssue implements Serializable {
     @TableField("use_time_")
     private Long useTime;
 
+    @ApiModelProperty("使用类型")
+    @TableField("use_type_")
+    private CouponCategoryEnum useType;
+
     @ApiModelProperty("订单编号")
     @TableField("order_no_")
     private String orderNo;

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MK.java

@@ -14,4 +14,6 @@ public interface MK {
     String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
     // 时区设置
     String TIME_ZONE = "GMT+8";
+    // 时间戳
+    String YYYYMMDD = "yyyyMMdd";
 }

+ 25 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/coupon/CouponCategoryEnum.java

@@ -72,4 +72,29 @@ public enum CouponCategoryEnum implements BaseEnum<String, CouponCategoryEnum> {
 
         return retlist;
     }
+
+    /**
+     * 商品对应优惠券类型
+     * @param goodsType 商品类型
+     * @return List<CouponCategoryEnum>
+     */
+    public static CouponCategoryEnum goodTypeTo(String goodsType) {
+
+
+        if (StringUtils.isNotEmpty(goodsType)) {
+
+            CouponCategoryEnum[] values = CouponCategoryEnum.values();
+
+            for (CouponCategoryEnum value : values) {
+
+                if (value.getGoodsType().equals(goodsType)) {
+
+                    return value;
+                }
+            }
+
+        }
+
+        return null;
+    }
 }

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CouponInfoService.java

@@ -1,8 +1,8 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.CouponInfo;
 import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
@@ -11,8 +11,6 @@ import com.yonge.cooleshow.biz.dal.vo.coupon.CouponInfoWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponInventoryWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper;
 
-import java.util.List;
-
 /**
  * <p>
  * 优惠券信息 服务类
@@ -41,9 +39,10 @@ public interface CouponInfoService extends IService<CouponInfo> {
     /**
      * 新增或更新优惠券信息
      * @param couponInfo CouponInfo
+     * @param stateUpdate 状态更新标识
      * @return CouponInfo
      */
-    CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo);
+    CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo, Boolean stateUpdate);
 
     /**
      * 优惠券库存量调整信息

+ 44 - 37
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CouponInfoServiceImp.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.entity.CouponInventory;
 import com.yonge.cooleshow.biz.dal.entity.CouponIssue;
 import com.yonge.cooleshow.biz.dal.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
+import com.yonge.cooleshow.biz.dal.enums.MK;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponInventoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponValidTypeEnum;
@@ -37,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -106,8 +106,7 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
         for (CouponInfoWrapper item : wrappers) {
 
             if (CouponValidTypeEnum.TIME_PERIOD == item.getValidType()
-                    && Optional.ofNullable(item.getEndTime()).orElse(0L) > 0
-                    && DateTime.now().getMillis() > item.getEndTime()) {
+                    && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(item.getEndTime()).toString(MK.YYYYMMDD))) {
 
                 updateIds.add(item.getId());
                 // 更新显示状态为禁用
@@ -159,11 +158,12 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
      * 新增或更新优惠券信息
      *
      * @param couponInfo CouponInfo
+     * @param stateUpdate 更新标识
      * @return CouponInfo
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo) {
+    public CouponInfo saveOrUpdateCouponInfo(CouponInfo couponInfo, Boolean stateUpdate) {
 
         if (Objects.isNull(couponInfo.getId())) {
 
@@ -191,40 +191,51 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
                 throw new BizException("无效的优惠券ID");
             }
 
-            // 优惠券已过期
-            if (CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
-                    && Optional.ofNullable(info.getEndTime()).orElse(0L) > 0
-                    && DateTime.now().getMillis() > info.getEndTime()) {
+            if (stateUpdate) {
 
-                throw new BizException("已过期优惠券不允许修改");
-            }
+                // 优惠券状态更新
+                if (EStatus.ENABLE.match(couponInfo.getStatus())
+                        && CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
+                        && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(info.getEndTime()).toString(MK.YYYYMMDD))) {
+                    throw new BizException("已过期优惠券不允许修改");
+                }
 
-            // 优惠券未过期,已发放不允许修复
-            List<Long> couponIds = Lists.newArrayList(couponInfo.getId());
-
-            int ret = 0;
-            // 查询优惠券发放人数
-            ret += getBaseMapper().selectCouponIssueStatInfo(couponIds,
-                            CouponInfoQuery.IssueStatQuery.builder()
-                                    .excludeUseState(Lists.newArrayList(CouponUseStateEnum.WITHDRAW)).build()).stream()
-                    .mapToInt(StatGroupWrapper::getTotal).sum();
-            if (ret > 0) {
-                throw new BizException("已发放优惠券不允许修改");
-            }
+            } else {
 
-            // 关联奖品数
-            ret += getBaseMapper().selectActivityCouponStatInfo(couponIds).stream()
-                    .mapToInt(StatGroupWrapper::getTotal).sum();
+                // 优惠券已过期
+                if (CouponValidTypeEnum.TIME_PERIOD == info.getValidType()
+                        && Integer.parseInt(DateTime.now().toString(MK.YYYYMMDD)) > Integer.parseInt(new DateTime(info.getEndTime()).toString(MK.YYYYMMDD))) {
 
-            if (ret > 0) {
-                throw new BizException("已关联奖品优惠券不允许修改");
-            }
+                    throw new BizException("已过期优惠券不允许修改");
+                }
+
+                // 优惠券未过期,已发放不允许修复
+                List<Long> couponIds = Lists.newArrayList(info.getId());
+
+                int ret = 0;
+                // 查询优惠券发放人数
+                ret += getBaseMapper().selectCouponIssueStatInfo(couponIds,
+                                CouponInfoQuery.IssueStatQuery.builder()
+                                        .excludeUseState(Lists.newArrayList(CouponUseStateEnum.WITHDRAW)).build()).stream()
+                        .mapToInt(StatGroupWrapper::getTotal).sum();
+                if (ret > 0) {
+                    throw new BizException("已发放优惠券不允许修改");
+                }
 
-            // 启用状态不允许修改
-            if (Objects.isNull(couponInfo.getStatus())
-                    && EStatus.ENABLE.match(info.getStatus())) {
+                // 关联奖品数
+                ret += getBaseMapper().selectActivityCouponStatInfo(couponIds).stream()
+                        .mapToInt(StatGroupWrapper::getTotal).sum();
+
+                if (ret > 0) {
+                    throw new BizException("已关联奖品优惠券不允许修改");
+                }
+
+                // 启用状态不允许修改
+                if (EStatus.ENABLE.match(info.getStatus())) {
+
+                    throw new BizException("已启用优惠券不允许修改");
+                }
 
-                throw new BizException("已启用优惠券不允许修改");
             }
 
             // 更新优惠券
@@ -270,11 +281,6 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
                 .couponInfos(Lists.newArrayList())
                 .build();
 
-        if (CollectionUtils.isEmpty(query.getIssueIds())) {
-            // 直接返回默认数据
-            return wrapper;
-        }
-
         // 查询用户订单优惠券信息
         List<CouponOrderWrapper.CouponInfo> couponInfos = getBaseMapper().selectUserOrderCouponInfo(userId, query);
 
@@ -338,6 +344,7 @@ public class CouponInfoServiceImp extends ServiceImpl<CouponInfoMapper, CouponIn
                                 .id(item.getIssueId())
                                 .useState(CouponUseStateEnum.USED)
                                 .useTime(DateTime.now().getMillis())
+                                .useType(wrapper.getUseType())
                                 .orderNo(wrapper.getOrderNo())
                         .build());
             }

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

@@ -404,6 +404,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         // 更新用户订单优惠券使用状态
         if (CollectionUtils.isNotEmpty(couponOrderWrapper.getCouponInfos())) {
 
+            couponOrderWrapper.useType(CouponCategoryEnum.goodTypeTo(orderReq.getOrderType().getCode()));
             couponInfoService.updateUserOrderCouponInfo(couponOrderWrapper.orderNo(orderReq.getOrderNo()));
         }
 

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo.coupon;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.SendTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
@@ -27,6 +28,8 @@ public class CouponIssueWrapper {
     @ApiModelProperty("优惠券id")
     private Long couponId;
 
+    @ApiModelProperty("使用类型")
+    private CouponCategoryEnum useType;
 
     @ApiModelProperty("优惠券名称")
     private String couponName;
@@ -92,6 +95,14 @@ public class CouponIssueWrapper {
     @ApiModelProperty("可用数量")
     private Long usable;
 
+    public CouponCategoryEnum getUseType() {
+        return useType;
+    }
+
+    public void setUseType(CouponCategoryEnum useType) {
+        this.useType = useType;
+    }
+
     public Long getUsable() {
         return usable;
     }

+ 12 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/coupon/CouponOrderWrapper.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.wrapper.coupon;
 
 import com.alibaba.fastjson.JSON;
+import com.yonge.cooleshow.biz.dal.enums.coupon.CouponCategoryEnum;
 import com.yonge.cooleshow.biz.dal.enums.coupon.CouponUseStateEnum;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -32,6 +33,9 @@ public class CouponOrderWrapper implements Serializable {
     // 订单编号
     private String orderNo;
 
+    // 使用方式
+    private CouponCategoryEnum useType;
+
     public String jsonString() {
 
         return JSON.toJSONString(this);
@@ -66,6 +70,12 @@ public class CouponOrderWrapper implements Serializable {
         return this;
     }
 
+    public CouponOrderWrapper useType(CouponCategoryEnum useType) {
+        this.useType = useType;
+        return this;
+    }
+
+
     /**
      * 用户优惠券信息
      */
@@ -118,6 +128,8 @@ public class CouponOrderWrapper implements Serializable {
         private Long useTime;
         // 订单编号
         private String orderNo;
+        // 使用方式
+        private CouponCategoryEnum useType;
 
         public String jsonString() {
             return JSON.toJSONString(this);

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

@@ -40,6 +40,7 @@
             ci.use_state_ as useState,
             ci.issuer_ as issuer,
             ci.remark_ as remark,
+            ci.use_type_ as useType,
             cou.name_ as couponName,
             cou.id_ as couponId,
             cou.coupon_type_ as couponType,