Sfoglia il codice sorgente

Merge branch 'dev' into 'mp-server-test'

盲票详情

See merge request quanshu/mp-server!560
jiang hao 2 anni fa
parent
commit
edb5c56313

+ 31 - 13
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java

@@ -6,20 +6,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
 import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
-import com.qs.mp.admin.domain.Ticket;
-import com.qs.mp.admin.domain.TicketAwardsPrize;
-import com.qs.mp.admin.domain.TicketBox;
-import com.qs.mp.admin.domain.TicketPackage;
+import com.qs.mp.admin.domain.*;
 import com.qs.mp.admin.domain.param.TicketBoxParam;
 import com.qs.mp.admin.domain.param.TicketParam;
-import com.qs.mp.admin.domain.vo.TicketBoxListVO;
-import com.qs.mp.admin.domain.vo.TicketBoxVO;
-import com.qs.mp.admin.domain.vo.TicketListVO;
-import com.qs.mp.admin.domain.vo.TicketVO;
-import com.qs.mp.admin.service.ITicketAwardsPrizeService;
-import com.qs.mp.admin.service.ITicketBoxService;
-import com.qs.mp.admin.service.ITicketPackageService;
-import com.qs.mp.admin.service.ITicketService;
+import com.qs.mp.admin.domain.vo.*;
+import com.qs.mp.admin.service.*;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.*;
@@ -29,6 +20,7 @@ import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.framework.security.handle.HostHolder;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserTicketOrderItem;
+import com.qs.mp.user.domain.vo.TicketAwardsLabelVO;
 import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
 import com.qs.mp.user.service.IUserExchangeOrderService;
 import com.qs.mp.user.service.IUserHitPrizeService;
@@ -39,6 +31,8 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
 import java.lang.reflect.Array;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.*;
@@ -88,6 +82,9 @@ public class UserTicketController extends BaseApiController {
   @Autowired
   private IUserExchangeOrderService userExchangeOrderService;
 
+  @Autowired
+  private ITicketAwardsService ticketAwardsService;
+
   /**
    * 盲票进货列表
    */
@@ -125,7 +122,28 @@ public class UserTicketController extends BaseApiController {
     }
     TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
     TicketBoxVO ticketBoxVO = mapperFacade.map(ticketBox, TicketBoxVO.class);
-    ticketBoxVO.setPrizeList(ticketAwardsPrizeService.listPrizeVO(ticketBox.getBoxId()));
+    // 设置奖项标签信息
+    List<TicketAwardsLabelVO> ticketAwardsLabelVOS = new ArrayList<>();
+    for (AwardsLabelEnum awardsLabelEnum : AwardsLabelEnum.values()) {
+      TicketAwardsLabelVO ticketAwardsLabelVO = new TicketAwardsLabelVO();
+      ticketAwardsLabelVO.setLabelTitle(awardsLabelEnum.getValue());
+      ticketAwardsLabelVO.setPicUrl(awardsLabelEnum.getPicUrl());
+      Integer quantity = ticketBox.getQuantity();
+      QueryWrapper<TicketAwards> queryWrapper = new QueryWrapper<>();
+      queryWrapper.eq("awards_label",awardsLabelEnum.getValue());
+      queryWrapper.eq("box_id",ticketBox.getBoxId());
+      Integer num = ticketAwardsService.groupSumQuantityByQueryWrapper(queryWrapper);
+      if (Objects.isNull(num) || num == 0) {
+        continue;
+      }
+      ticketAwardsLabelVO.setHitRate(new BigDecimal(num).divide(new BigDecimal(quantity),1,RoundingMode.HALF_UP));
+
+      ticketAwardsLabelVOS.add(ticketAwardsLabelVO);
+    }
+    ticketBoxVO.setTicketAwardsLabelList(ticketAwardsLabelVOS);
+
+    List<TicketAwardsPrizeVO> ticketAwardsPrizeVOS = ticketAwardsPrizeService.listPrizeVO(ticketBox.getBoxId());
+    ticketBoxVO.setPrizeList(ticketAwardsPrizeVOS);
     return AjaxResult.success(ticketBoxVO);
   }
 

+ 45 - 0
mp-common/src/main/java/com/qs/mp/common/enums/AwardsLabelEnum.java

@@ -0,0 +1,45 @@
+package com.qs.mp.common.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 奖级标签枚举类
+ *
+ * @author Cup
+ * @date 2022/5/23
+ */
+@ApiModel("奖级标签枚举类")
+public enum AwardsLabelEnum implements IEnum<String> {
+
+    LABEL_ONE("传说", "69/EJ3KAQ9MWJB8V6X879IK"),
+    LABEL_TWO("史诗", "11/EJ2V0Y45X768X93TH6IM"),
+    LABEL_THREE("稀有", "188/EJ2V0Y45X768X93TH6IM"),
+    LABEL_FOUR("尊贵", "89/EJ2V0Y45X768X93TH6IM");
+
+    private final String value;
+    private final String picUrl;
+
+    AwardsLabelEnum(String value, String picUrl) {
+        this.value = value;
+        this.picUrl = picUrl;
+    }
+
+    public String getPicUrl() {
+        return picUrl;
+    }
+
+    @Override
+    public String getValue() {
+        return this.value;
+    }
+
+    public static AwardsLabelEnum getByValue(String value){
+        for (AwardsLabelEnum awardsLabelEnum : AwardsLabelEnum.values()) {
+            if (awardsLabelEnum.getValue().equals(value)) {
+                return awardsLabelEnum;
+            }
+        }
+        return null;
+    }
+}

+ 16 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/vo/TicketAwardsPrizeVO.java

@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.Objects;
 
+import com.qs.mp.common.enums.AwardsLabelEnum;
 import com.qs.mp.common.enums.CouponDiscountTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -40,6 +42,12 @@ public class TicketAwardsPrizeVO {
   @ApiModelProperty("奖项名")
   private String name;
 
+  @ApiModelProperty("奖级标签")
+  private String awardsLabel;
+
+  @ApiModelProperty("奖级标签图片")
+  private String awardsLabelPicUrl;
+
   /**
    * 奖项顺序
    */
@@ -110,7 +118,14 @@ public class TicketAwardsPrizeVO {
   /**
    * 排序权重
    */
+  @ApiModelProperty("排序权重")
   private Integer sortWeight;
 
-
+  public String getAwardsLabelPicUrl() {
+    AwardsLabelEnum awardsLabelEnum = AwardsLabelEnum.getByValue(this.awardsLabel);
+    if (Objects.nonNull(awardsLabelEnum)) {
+      return awardsLabelEnum.getPicUrl();
+    }
+    return "";
+  }
 }

+ 4 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/TicketBoxVO.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.vo.ChannelVO;
+import com.qs.mp.user.domain.vo.TicketAwardsLabelVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,6 +22,9 @@ public class TicketBoxVO extends TicketBox {
   @ApiModelProperty("经销商信息")
   List<Channel> channelList;
 
+  @ApiModelProperty("奖级标签信息列表")
+  List<TicketAwardsLabelVO> ticketAwardsLabelList;
+
   // 奖品列表(小程序端显示)
   @ApiModelProperty("奖品列表(小程序端显示)")
   List<TicketAwardsPrizeVO> prizeList;

+ 9 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketAwardsMapper.java

@@ -1,7 +1,10 @@
 package com.qs.mp.admin.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.TicketAwards;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @auther quanshu
@@ -10,4 +13,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TicketAwardsMapper extends BaseMapper<TicketAwards> {
 
+    /**
+     * 根据条件分组获取奖品总数
+     * @param queryWrapper
+     * @return
+     */
+    Integer groupSumQuantityByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<TicketAwards> queryWrapper);
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketAwardsService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.admin.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.TicketAwards;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ITicketAwardsService extends IService<TicketAwards> {
 
+    /**
+     * 更具条件分组获取奖品总数
+     * @param queryWrapper
+     * @return
+     */
+    Integer groupSumQuantityByQueryWrapper(QueryWrapper<TicketAwards> queryWrapper);
 }

+ 20 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketAwardsPrizeServiceImpl.java

@@ -8,6 +8,8 @@ import com.qs.mp.admin.mapper.TicketAwardsPrizeMapper;
 import com.qs.mp.admin.service.ITicketAwardsPrizeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import java.util.List;
+
+import com.qs.mp.common.enums.AwardsLabelEnum;
 import org.springframework.stereotype.Service;
 
 /**
@@ -29,7 +31,24 @@ public class TicketAwardsPrizeServiceImpl extends ServiceImpl<TicketAwardsPrizeM
 
   @Override
   public List<TicketAwardsPrizeVO> listPrizeVO(String boxId) {
+    StringBuilder sortField = new StringBuilder("FIELD(t1.awards_label,'");
+    int i = 0;
+    for (AwardsLabelEnum awardsLabelEnum : AwardsLabelEnum.values()) {
+      i++;
+      if (i == AwardsLabelEnum.values().length) {
+        sortField.append(awardsLabelEnum.getValue()).append("'");
+      }else {
+        sortField.append(awardsLabelEnum.getValue()).append("','");
+      }
+
+    }
+    sortField.append(")");
+
     return listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
-        .eq("t1.box_id", boxId).eq("t2.is_deleted", 0).orderByAsc("t1.sort").orderByDesc("t2.sort_weight").orderByDesc("t2.value"));
+            .eq("t1.box_id", boxId)
+            .eq("t2.is_deleted", 0)
+            .orderByAsc(sortField.toString())
+            .orderByDesc("t2.sort_weight")
+            .orderByDesc("t2.value"));
   }
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketAwardsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qs.mp.admin.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.TicketAwards;
 import com.qs.mp.admin.mapper.TicketAwardsMapper;
 import com.qs.mp.admin.service.ITicketAwardsService;
@@ -18,4 +19,9 @@ import org.springframework.stereotype.Service;
 public class TicketAwardsServiceImpl extends ServiceImpl<TicketAwardsMapper, TicketAwards> implements
     ITicketAwardsService {
 
+
+    @Override
+    public Integer groupSumQuantityByQueryWrapper(QueryWrapper<TicketAwards> queryWrapper) {
+        return this.baseMapper.groupSumQuantityByQueryWrapper(queryWrapper);
+    }
 }

+ 8 - 3
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -161,6 +161,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       throw new ServiceException("奖级数量与原来不同");
     }
 
+    List<TicketAwards> ticketAwardsList = new ArrayList<>();
     // 更新奖品信息
     for (TicketAwardsParam ticketAwardsParam : param.getAwardsList()) {
        if (CollectionUtils.isEmpty(ticketAwardsParam.getPrizeList())) {
@@ -174,9 +175,12 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
           throw new ServiceException("奖品总数值不相同");
         }
       }
+      TicketAwards ticketAwards = new TicketAwards();
+      ticketAwards.setAwardsId(ticketAwardsParam.getAwardsId());
+      ticketAwards.setAwardsLabel(ticketAwardsParam.getAwardsLabel());
+      ticketAwardsList.add(ticketAwards);
 
-
-       List<TicketAwardsPrize> ticketAwardsPrizeList = new ArrayList<>();
+      List<TicketAwardsPrize> ticketAwardsPrizeList = new ArrayList<>();
       List<String> prizeIdList = ticketAwardsParam.getPrizeList().stream().map(ticketAwardsPrizeParam -> {
         // 奖品id为空则封装要新增的奖品
         if (StringUtils.isBlank(ticketAwardsPrizeParam.getPrizeId())) {
@@ -288,7 +292,8 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       }
 
     }
-
+    //更新奖级信息
+    ticketAwardsService.updateBatchById(ticketAwardsList);
     return true;
   }
 

+ 26 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/TicketAwardsLabelVO.java

@@ -0,0 +1,26 @@
+package com.qs.mp.user.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 奖级标签出参类
+ * @author Cup
+ * @date 2022/5/23
+ */
+@ApiModel("奖级标签出参类")
+@Data
+public class TicketAwardsLabelVO {
+
+    @ApiModelProperty("奖级标签名")
+    private String labelTitle;
+
+    @ApiModelProperty("标签图片")
+    private String picUrl;
+
+    @ApiModelProperty("中奖概率")
+    private BigDecimal hitRate;
+}

+ 5 - 0
mp-service/src/main/resources/mapper/admin/TicketAwardsMapper.xml

@@ -20,4 +20,9 @@
         awards_id, box_id, name, sort, quantity, memo, cashed_qty, created_time, updated_time
     </sql>
 
+    <select id="groupSumQuantityByQueryWrapper" resultType="int">
+        select sum(quantity)
+        from mp_ticket_awards
+        ${ew.customSqlSegment}
+    </select>
 </mapper>