Quellcode durchsuchen

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

Dev

See merge request quanshu/mp-server!471
zhong chunping vor 3 Jahren
Ursprung
Commit
9b00c864df

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

@@ -23,12 +23,14 @@ import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.*;
+import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.common.utils.LogUtil;
 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.TicketHitPrizeBarrageVO;
+import com.qs.mp.user.service.IUserExchangeOrderService;
 import com.qs.mp.user.service.IUserHitPrizeService;
 import com.qs.mp.user.service.IUserTicketOrderItemService;
 import com.qs.mp.utils.SecurityUtils;
@@ -36,10 +38,10 @@ import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.lang.reflect.Array;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.*;
 
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
@@ -83,6 +85,9 @@ public class UserTicketController extends BaseApiController {
   @Autowired
   private HostHolder hostHolder;
 
+  @Autowired
+  private IUserExchangeOrderService userExchangeOrderService;
+
   /**
    * 盲票进货列表
    */
@@ -265,6 +270,34 @@ public class UserTicketController extends BaseApiController {
     List<TicketHitPrizeBarrageVO> listOne = new ArrayList<>();
     List<TicketHitPrizeBarrageVO> listTwo = new ArrayList<>();
 
+    // 获取除当前用户外最近10条盲豆大于1000的商品兑换数据
+    QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper = new QueryWrapper<>();
+    queryWrapper.ge("t1.order_coin", 1000);
+    queryWrapper.notIn("t1.user_id", userId);
+    queryWrapper.orderByDesc("t1.created_time");
+    queryWrapper.last("limit 10");
+    List<TicketHitPrizeBarrageVO> exchangeList = userExchangeOrderService.listByWrapper(queryWrapper);
+
+    // 获取当前用户当天的商品兑换数据
+    LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN);
+    LocalDateTime endTime = LocalDateTime.now().withNano(0);
+    queryWrapper.clear();
+    queryWrapper.eq("t1.user_id", userId);
+    queryWrapper.between("t1.created_time", startTime, endTime);
+    List<TicketHitPrizeBarrageVO> userExchangeList = userExchangeOrderService.listByWrapper(queryWrapper);
+
+
+    if (CollectionUtils.isNotEmpty(userExchangeList)) {
+      exchangeList.addAll(userExchangeList);
+    }
+
+    for (TicketHitPrizeBarrageVO ticketHitPrizeBarrageVO : exchangeList) {
+      // 设置为兑换类型
+      ticketHitPrizeBarrageVO.setType(2);
+    }
+
+
+
     // 获取用户当天中奖的 2 条弹幕
     if (userId != 0L) {
       List<TicketHitPrizeBarrageVO> ticketHitPrizeBarrageVOList = userHitPrizeService.hitPrizeBarrageByUserId(userId);
@@ -275,6 +308,9 @@ public class UserTicketController extends BaseApiController {
             ticketHitPrizeBarrageVOList.get(i).setPrizeInfo(ticketHitPrizeBarrageVOList.get(i).getPrizeInfo() + ticketHitPrizeBarrageVOList.get(i).getValue() + "颗");
           }
 
+          // 设置类型为中奖
+          ticketHitPrizeBarrageVOList.get(i).setType(1);
+
           if (i % 2 == 0) {
             listOne.add(ticketHitPrizeBarrageVOList.get(i));
           }else {
@@ -286,6 +322,19 @@ public class UserTicketController extends BaseApiController {
     // 获取除该用户外,最近中奖的 40 条弹幕信息
     List<TicketHitPrizeBarrageVO> ticketHitPrizeBarrageVOList = userHitPrizeService.hitPrizeBarrage(userId);
 
+
+    for (TicketHitPrizeBarrageVO ticketHitPrizeBarrageVO : ticketHitPrizeBarrageVOList) {
+      // 设置为中奖类型
+      ticketHitPrizeBarrageVO.setType(1);
+    }
+
+    // 增加兑奖信息并且按时间排序
+    ticketHitPrizeBarrageVOList.addAll(exchangeList);
+
+    ticketHitPrizeBarrageVOList.sort(Comparator.comparing(TicketHitPrizeBarrageVO::getCreatedTime));
+
+
+
     // 获取除该用户外,近 6 个月,8 条高级中奖弹幕信息
     List<TicketHitPrizeBarrageVO> expensiveHitPrizeBarrageList = userHitPrizeService.expensiveHitPrizeBarrage(userId);
     int count = 0;
@@ -305,6 +354,8 @@ public class UserTicketController extends BaseApiController {
 
       // 插入大奖弹幕
       if (count != 0 && i % 5 == 0) {
+        // 设置类型为中奖
+        expensiveHitPrizeBarrageList.get(index).setType(1);
         if (index % 2 == 0) {
           listOne.add(expensiveHitPrizeBarrageList.get(index));
         }else {

+ 3 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderExcel.java

@@ -31,6 +31,9 @@ public class UserTicketOrderExcel {
     @Excel(name = "盲票类型")
     private String boxType;
 
+    @Excel(name = "购买数量")
+    private Integer ticketNum;
+
     @Excel(name = "盲票售价")
     private Integer salePrice;
 

+ 3 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserTicketOrderListVO.java

@@ -33,6 +33,9 @@ public class UserTicketOrderListVO {
     @ApiModelProperty("优惠金额")
     private Integer discountAmt;
 
+    @ApiModelProperty("盲票数量")
+    private Integer ticketNum;
+
     @ApiModelProperty("实付金额")
     private Integer payAmt;
 

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/TicketHitPrizeBarrageVO.java

@@ -9,6 +9,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import java.io.Serializable;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -36,5 +37,10 @@ public class TicketHitPrizeBarrageVO {
     @ApiModelProperty("奖品类型")
     private String prizeType;
 
+    @ApiModelProperty("弹幕类型 1中奖,2兑换")
+    private Integer type;
+
+    @ApiModelProperty("创建时间")
+    private Date createdTime;
 
 }

+ 12 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserExchangeOrderMapper.java

@@ -1,7 +1,13 @@
 package com.qs.mp.user.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.user.domain.UserExchangeOrder;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserExchangeOrderMapper extends BaseMapper<UserExchangeOrder> {
 
+    /**
+     * 根据条件获取用户兑奖列表
+     * @param queryWrapper
+     * @return
+     */
+    List<TicketHitPrizeBarrageVO> listByWrapper(@Param(Constants.WRAPPER) QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper);
 }

+ 11 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserExchangeOrderService.java

@@ -1,7 +1,11 @@
 package com.qs.mp.user.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.user.domain.UserExchangeOrder;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -21,4 +25,11 @@ public interface IUserExchangeOrderService extends IService<UserExchangeOrder> {
    * @return 余额不足返回false,其他抛异常
    */
   boolean exchange(Long userId, Long goodsId, Long skuId, int orderNum);
+
+  /**
+   * 根据条件获取用户兑奖记录列表
+   * @param queryWrapper
+   * @return
+   */
+  List<TicketHitPrizeBarrageVO> listByWrapper(QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper);
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qs.mp.user.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.GoodsSku;
@@ -15,6 +16,7 @@ import com.qs.mp.system.service.id.BizIdGenerator;
 import com.qs.mp.user.domain.UserCoin;
 import com.qs.mp.user.domain.UserExchangeOrder;
 import com.qs.mp.user.domain.UserPrizeStorage;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
 import com.qs.mp.user.mapper.UserExchangeOrderMapper;
 import com.qs.mp.user.service.IUserCoinService;
 import com.qs.mp.user.service.IUserExchangeOrderService;
@@ -53,6 +55,11 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
   @Autowired
   private BizIdGenerator bizIdGenerator;
 
+  @Override
+  public List<TicketHitPrizeBarrageVO> listByWrapper(QueryWrapper<TicketHitPrizeBarrageVO> queryWrapper) {
+    return getBaseMapper().listByWrapper(queryWrapper);
+  }
+
   @Override
   @Transactional
   public boolean exchange(Long userId, Long goodsId, Long skuId, int orderNum) {

+ 10 - 0
mp-service/src/main/resources/mapper/user/UserExchangeOrderMapper.xml

@@ -18,4 +18,14 @@
         order_id, user_id, goods_id, sku_id, order_coin, created_time, updated_time
     </sql>
 
+    <select id="listByWrapper" resultType="com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO">
+        select  t2.avatar,
+                t2.nick_name,
+                t1.created_time,
+               t3.title prizeInfo
+        from mp_user_exchange_order t1
+         left join sys_user t2 on t1.user_id = t2.user_id
+         left join mp_goods t3 on t1.goods_id = t3.goods_id
+         ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 8 - 5
mp-service/src/main/resources/mapper/user/UserHitPrizeMapper.xml

@@ -26,11 +26,12 @@
                 su.avatar avatar,
                 mtap.title prizeInfo,
                 mtap.value value,
-                mtap.prize_type prizeType
+                mtap.prize_type prizeType,
+                muhp.created_time
 
         FROM mp_user_hit_prize muhp
-                 LEFT JOIN mp_ticket_awards_prize mtap ON muhp.prize_id = mtap.prize_id
-                 LEFT JOIN sys_user su ON muhp.user_id = su.user_id
+         LEFT JOIN mp_ticket_awards_prize mtap ON muhp.prize_id = mtap.prize_id
+         LEFT JOIN sys_user su ON muhp.user_id = su.user_id
         WHERE muhp.prize_id != ''
         AND muhp.user_id != #{userId}
         AND ((mtap.prize_type = 'coin' AND mtap.value >= 100) OR mtap.prize_type='goods')
@@ -43,7 +44,8 @@
                 su.avatar avatar,
                 mtap.title prizeInfo,
                 mtap.value value,
-                mtap.prize_type prizeType
+                mtap.prize_type prizeType,
+                muhp.created_time
 
         FROM mp_user_hit_prize muhp
                  LEFT JOIN mp_ticket_awards_prize mtap ON muhp.prize_id = mtap.prize_id
@@ -61,7 +63,8 @@
                 su.avatar avatar,
                 mtap.title prizeInfo,
                 mtap.value value,
-                mtap.prize_type prizeType
+                mtap.prize_type prizeType,
+                muhp.created_time
         FROM mp_user_hit_prize muhp
                  LEFT JOIN mp_ticket_awards_prize mtap ON muhp.prize_id = mtap.prize_id
                  LEFT JOIN sys_user su ON muhp.user_id = su.user_id

+ 1 - 0
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -139,6 +139,7 @@
 				t1.sale_price,
 				t1.pay_amt,
 				t1.discount_amt,
+				t1.ticket_num,
 				t2.nick_name,
 				t2.phonenumber phone,
 				t3.type boxType