Ver Fonte

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

Dev

See merge request quanshu/mp-server!683
jiang hao há 2 anos atrás
pai
commit
3e47d44195

+ 3 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java

@@ -126,6 +126,9 @@ public class ChannelOrderController extends BaseApiController {
    */
   @PostMapping("/order/list")
   @ApiOperation(value = "订单列表" , notes = "获取所有订单信息")
+  @ApiResponses(
+          @ApiResponse(code = 200, message = "成功", response = ChannelOrderVO.class)
+  )
   public TableDataInfo list(@RequestBody JSONObject param) {
     Long channelId = SecurityUtils.getLoginUser().getChannelId();
     Integer status = param.getInteger("status");

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

@@ -292,6 +292,13 @@ public class UserTicketController extends BaseApiController {
       return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1018);
     }
 
+    // 线上盲票不支持查看兑奖奖品
+    TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
+    if (TicketTypeEnum.ONLINE.equals(ticketBox.getType())) {
+      LogUtil.error(logger, "线上盲票不支持查看兑奖奖品。ticketId:{0}", ticket.getTicketId());
+      return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1000);
+    }
+
     List<TicketAwardsPrize> ticketAwardsPrizes = userHitPrizeService.listPrize(ticket, userId);
     JSONObject jsonObject = new JSONObject();
     jsonObject.put("prizeList", ticketAwardsPrizes);
@@ -304,6 +311,19 @@ public class UserTicketController extends BaseApiController {
   @ApiOperation("自动开奖")
   public AjaxResult autoCashPrize(@Validated @RequestBody TicketAutoCashPrizeParam param) {
     Long userId = SecurityUtils.getLoginUser().getUserId();
+    if (Objects.nonNull(param.getTicketId())) {
+      Ticket ticket = ticketService.getById(param.getTicketId());
+      UserTicketOrderItem userTicketOrderItem = userTicketOrderItemService.getOne(new LambdaQueryWrapper<UserTicketOrderItem>()
+              .eq(UserTicketOrderItem::getTicketId, param.getTicketId())
+              .eq(UserTicketOrderItem::getUserId, userId));
+      if (Objects.isNull(ticket) || Objects.isNull(userTicketOrderItem)) {
+        return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1018);
+      }
+      param.setBoxId(ticket.getBoxId());
+      param.setOrderId(userTicketOrderItem.getOrderId());
+      param.setIsTry(0);
+    }
+
     return AjaxResult.success(userHitPrizeService.autoCashPrize(userId, param));
   }
 
@@ -330,6 +350,13 @@ public class UserTicketController extends BaseApiController {
       return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1019);
     }
 
+    // 线上盲票不支持手动兑奖
+    TicketBox ticketBox = ticketBoxService.getById(ticket.getBoxId());
+    if (TicketTypeEnum.ONLINE.equals(ticketBox.getType())) {
+      LogUtil.error(logger, "线上盲票不支持手动兑奖。ticketId:{0}", ticket.getTicketId());
+      return AjaxResult.error(ErrorCodeEnum.ERROR_CODE_1000);
+    }
+
     // 兑奖
     String lockKey = RedisLockKey.build(RedisLockKey.USER_TICKET_CASH_LOCK, param.getPrizeId());
     if (!distributedLocker.tryLock(lockKey)) {

+ 54 - 0
mp-common/src/main/java/com/qs/mp/common/enums/AsyncTaskTypeEnum.java

@@ -0,0 +1,54 @@
+package com.qs.mp.common.enums;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.IEnum;
+import io.swagger.annotations.ApiModel;
+
+/**
+ * 异步任务类型枚举
+ * @author Cup
+ * @date 2022/6/7
+ */
+@ApiModel("异步任务类型枚举")
+public enum AsyncTaskTypeEnum implements IEnum<Integer> {
+    PRE_COMMISSION(1,"预付票分佣");
+
+    private Integer value;
+    private String desc;
+
+    AsyncTaskTypeEnum(Integer value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+
+    public static AsyncTaskTypeEnum getByValue(String value){
+        for (AsyncTaskTypeEnum asyncTaskTypeEnum : AsyncTaskTypeEnum.values()) {
+            if (asyncTaskTypeEnum.getValue().equals(value)) {
+                return asyncTaskTypeEnum;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 重写toString,单个转化成json
+     * @return
+     */
+    @Override
+    public String toString() {
+        JSONObject object = new JSONObject();
+        object.put("value",value);
+        object.put("desc", desc);
+        return object.toString();
+    }
+
+}

+ 8 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/TicketListVO.java

@@ -2,6 +2,10 @@ package com.qs.mp.admin.domain.vo;
 
 import java.util.List;
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -78,4 +82,8 @@ public class TicketListVO {
   @ApiModelProperty("奖品类型")
   private String prizeType;
 
+  @ApiModelProperty("盲票形式(线上或线下)")
+  @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+  private TicketTypeEnum type;
+
 }

+ 19 - 2
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelMyTicketVO.java

@@ -2,7 +2,9 @@ package com.qs.mp.channel.domain.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.qs.mp.common.enums.ChannelOrderTypeEnum;
 import com.qs.mp.common.enums.TicketPkgSaleStatusEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -50,11 +52,26 @@ public class ChannelMyTicketVO {
     @ApiModelProperty("面值")
     private Integer facePrice;
 
+    @ApiModelProperty("盲票类型")
+    private TicketTypeEnum ticketType;
+
+    @ApiModelProperty("是否预付票,0否,1是")
+    private Integer isPre;
 
     @ApiModelProperty("创建时间")
     private Date createdTime;
 
-
-
+    @ApiModelProperty("票包类型")
+    public ChannelOrderTypeEnum getType() {
+        if (this.isPre == 0){
+            return ChannelOrderTypeEnum.RETAIL;
+        } else {
+            if (TicketTypeEnum.OFFLINE.equals(this.ticketType)){
+                return ChannelOrderTypeEnum.OFFLINE_PRE;
+            }else {
+                return ChannelOrderTypeEnum.ONLINE_PRE;
+            }
+        }
+    }
 
 }

+ 81 - 0
mp-service/src/main/java/com/qs/mp/framework/domain/AsyncTask.java

@@ -0,0 +1,81 @@
+package com.qs.mp.framework.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableField;
+
+import java.io.Serializable;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @describe 异步任务表实体类
+ * @auther quanshu
+ * @create 2022-06-07 10:34:20
+ */
+@TableName("mp_async_task")
+@Data
+@ApiModel("异步任务表实体类")
+public class AsyncTask implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 异步任务id
+     */
+    @ApiModelProperty("异步任务id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 任务类型
+     */
+    @ApiModelProperty("任务类型")
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 业务id
+     */
+    @ApiModelProperty("业务id")
+    @TableField("biz_id")
+    private String bizId;
+
+    /**
+     * 操作次数
+     */
+    @ApiModelProperty("操作次数")
+    @TableField("operate_num")
+    private Integer operateNum;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty("创建时间")
+    @TableField("created_time")
+    private Date createdTime;
+
+    /**
+     * 更新时间
+     */
+    @ApiModelProperty("更新时间")
+    @TableField("updated_time")
+    private Date updatedTime;
+
+    /**
+     * 逻辑删除标识
+     */
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_deleted")
+    @TableLogic
+    private Integer isDeleted;
+
+
+}

+ 13 - 0
mp-service/src/main/java/com/qs/mp/framework/mapper/AsyncTaskMapper.java

@@ -0,0 +1,13 @@
+package com.qs.mp.framework.mapper;
+
+import com.qs.mp.framework.domain.AsyncTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @auther quanshu
+ * @create 2022-06-07 10:34:20
+ * @describe mapper类
+ */
+public interface AsyncTaskMapper extends BaseMapper<AsyncTask> {
+
+}

+ 16 - 0
mp-service/src/main/java/com/qs/mp/framework/service/IAsyncTaskService.java

@@ -0,0 +1,16 @@
+package com.qs.mp.framework.service;
+
+import com.qs.mp.framework.domain.AsyncTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-06-07
+ */
+public interface IAsyncTaskService extends IService<AsyncTask> {
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/framework/service/impl/AsyncTaskServiceImpl.java

@@ -0,0 +1,20 @@
+package com.qs.mp.framework.service.impl;
+
+import com.qs.mp.framework.domain.AsyncTask;
+import com.qs.mp.framework.mapper.AsyncTaskMapper;
+import com.qs.mp.framework.service.IAsyncTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author quanshu
+ * @since 2022-06-07
+ */
+@Service
+public class AsyncTaskServiceImpl extends ServiceImpl<AsyncTaskMapper, AsyncTask> implements IAsyncTaskService {
+
+}

+ 4 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/TicketAutoCashPrizeParam.java

@@ -16,6 +16,10 @@ import javax.validation.constraints.NotNull;
 @Data
 public class TicketAutoCashPrizeParam {
 
+    @ApiModelProperty("盲票id")
+    private String ticketId;
+
+
     @ApiModelProperty("盲票订单ID")
     private String orderId;
 

+ 1 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java

@@ -34,6 +34,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.Random;
 import java.util.stream.Collectors;
 

+ 1 - 1
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -431,7 +431,7 @@ public class UserTicketOrderServiceImpl extends
   }
 
   @Override
-  @Transactional
+  @Transactional(rollbackFor = Exception.class)
   public boolean commToChannel(String orderId) {
     UserTicketOrder ticketOrder = getById(orderId);
     Assert.isTrue(ticketOrder.getCommStatus() == CommStatusEnum.DOING,

+ 3 - 1
mp-service/src/main/resources/mapper/channel/ChannelOrderDetailMapper.xml

@@ -33,7 +33,9 @@
                t2.pkg_unit,
                t3.title,
                t3.pic_url,
-               t3.face_price
+               t3.face_price,
+                t2.is_pre,
+                t3.type ticketType
         FROM mp_channel_order_detail t1
          LEFT JOIN mp_ticket_package t2 ON t1.pkg_id = t2.pkg_id
          LEFT JOIN mp_ticket_box t3 ON t2.box_id = t3.box_id

+ 21 - 0
mp-service/src/main/resources/mapper/framework/AsyncTaskMapper.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.qs.mp.framework.mapper.AsyncTaskMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.qs.mp.framework.domain.AsyncTask">
+        <id column="id" property="id" />
+        <result column="type" property="type" />
+        <result column="biz_id" property="bizId" />
+        <result column="operate_num" property="operateNum" />
+        <result column="created_time" property="createdTime" />
+        <result column="updated_time" property="updatedTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, type, biz_id, operate_num, created_time, updated_time, is_deleted
+    </sql>
+
+</mapper>

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

@@ -35,6 +35,7 @@
                 t3.face_price,
                 t3.plain_lucky_num,
                 t3.`status`,
+                t4.type,
                 t6.title prizeInfo,
                 t6.`value`,
                 t6.prize_type