Pārlūkot izejas kodu

奖品增加优惠

Eric 2 gadi atpakaļ
vecāks
revīzija
849d34e849

+ 1 - 0
cooleshow-common/src/main/java/com/yonge/cooleshow/common/enums/RewardTypeEnum.java

@@ -14,6 +14,7 @@ public enum RewardTypeEnum implements BaseEnum<String, RewardTypeEnum> {
     ACTUAL("实物"),
     VIP("小酷AI会员"),
     PIAMO_ROOM("琴房时长"),
+    COUPON("优惠券"),
     ;
 
     @EnumValue

+ 9 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRewardController.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.common.enums.RewardTypeEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
@@ -30,6 +31,7 @@ import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
 
 import java.util.List;
+import java.util.Optional;
 
 @RestController
 @RequestMapping("/activityReward")
@@ -94,6 +96,13 @@ public class ActivityRewardController extends BaseController {
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+
+        // 校验请求参数
+        if (RewardTypeEnum.COUPON == activityReward.getRewardType()
+                && Optional.ofNullable(activityReward.getCouponId()).orElse(0L) <= 0) {
+            return failed("无效的优惠券ID");
+        }
+
         return status(activityRewardService.submit(activityReward, user));
     }
 

+ 14 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityReward.java

@@ -41,7 +41,7 @@ public class ActivityReward implements Serializable {
     @TableField(value = "reward_name_")
     @NotBlank(message = "奖品名称不能为空")
     private String rewardName;
-    @ApiModelProperty("奖品类型:  ACTUAL 实物 VIP 小酷AI会员 PIAMO_ROOM 琴房时长 ")
+    @ApiModelProperty("奖品类型:  ACTUAL 实物 VIP 小酷AI会员 PIAMO_ROOM 琴房时长 COUPON(优惠券)")
     @TableField(value = "reward_type_")
     @NotNull(message = "奖品类型不能为空")
     private RewardTypeEnum rewardType;
@@ -87,7 +87,11 @@ public class ActivityReward implements Serializable {
     @TableField(value = "discount_price_")
     private BigDecimal discountPrice;
 
-    @ApiModelProperty("奖品分组 ")
+    @ApiModelProperty("优惠券ID")
+    @TableField(value = "coupon_id_")
+    private Long couponId;
+
+    @ApiModelProperty(value = "奖品分组 ", hidden = true)
     @TableField(exist = false)
     private String group;
 
@@ -226,4 +230,12 @@ public class ActivityReward implements Serializable {
     public void setGroup(String group) {
         this.group = group;
     }
+
+    public Long getCouponId() {
+        return couponId;
+    }
+
+    public void setCouponId(Long couponId) {
+        this.couponId = couponId;
+    }
 }

+ 34 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -5,40 +5,50 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao;
+import com.yonge.cooleshow.biz.dal.dao.ActivityRewardDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
+import com.yonge.cooleshow.biz.dal.entity.ActivityReward;
 import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock;
-import com.yonge.cooleshow.biz.dal.entity.*;
+import com.yonge.cooleshow.biz.dal.entity.PianoRoomChangeRecord;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
-import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
-import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanRewardService;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
+import com.yonge.cooleshow.biz.dal.service.ActivityRewardService;
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
+import com.yonge.cooleshow.biz.dal.service.PianoRoomChangeRecordService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo;
+import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.common.enums.RewardTypeEnum;
 import com.yonge.cooleshow.common.enums.UnitEnum;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.base.util.StringUtil;
 import com.yonge.toolset.payment.util.DistributedLock;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import org.apache.commons.collections.CollectionUtils;
 import org.redisson.RedissonMultiLock;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo;
-import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
-import com.yonge.cooleshow.biz.dal.dao.ActivityRewardDao;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 
@@ -81,7 +91,20 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
 
     @Override
     public IPage<ActivityRewardVo> selectPage(IPage<ActivityRewardVo> page, ActivityRewardSearch query) {
-        return page.setRecords(baseMapper.selectPage(page, query));
+
+        List<ActivityRewardVo> rewardInfos = baseMapper.selectPage(page, query);
+
+        // 优惠券奖品,查询优惠券名称
+        List<Long> couponIds = rewardInfos.stream()
+                .filter(x -> RewardTypeEnum.COUPON == x.getRewardType())
+                .filter(x -> Optional.ofNullable(x.getCouponId()).orElse(0L) > 0)
+                .map(ActivityReward::getCouponId).distinct().collect(Collectors.toList());
+
+        if (CollectionUtils.isNotEmpty(couponIds)) {
+
+        }
+
+        return page.setRecords(rewardInfos);
     }
 
     @Override

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRewardMapper.xml

@@ -8,6 +8,7 @@
         <result column="reward_name_" property="rewardName" />
         <result column="reward_type_" property="rewardType" />
         <result column="reward_describe_" property="rewardDescribe" />
+        <result column="coupon_id_" property="couponId" />
         <result column="img_url_" property="imgUrl" />
         <result column="stock_" property="stock" />
         <result column="num_" property="num" />
@@ -28,6 +29,7 @@
         , t.reward_name_ as rewardName
         , t.reward_type_ as rewardType
         , t.reward_describe_ as rewardDescribe
+        , t.coupon_id_ as couponId
         , t.img_url_ as imgUrl
         , t.stock_ as stock
         , t.num_ as num