Selaa lähdekoodia

线下票停售

MrWang 1 vuosi sitten
vanhempi
commit
8afae8c596

+ 50 - 16
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -6,51 +6,38 @@ 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.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
 import com.qs.mp.admin.domain.*;
 import com.qs.mp.admin.domain.excel.TicketExcel;
 import com.qs.mp.admin.domain.param.*;
+import com.qs.mp.admin.domain.vo.TicketAwardsPrizeVO;
 import com.qs.mp.admin.domain.vo.TicketAwardsVO;
 import com.qs.mp.admin.domain.vo.TicketBoxVO;
 import com.qs.mp.admin.service.*;
 import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.channel.domain.param.ChannelParam;
-import com.qs.mp.channel.domain.vo.ChannelVO;
 import com.qs.mp.channel.service.IChannelService;
-import com.qs.mp.channel.service.IChannelUserRelService;
 import com.qs.mp.common.annotation.Log;
-import com.qs.mp.common.constant.UserConstants;
 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.exception.ServiceException;
 import com.qs.mp.common.pulsar.PulsarClientService;
 import com.qs.mp.common.utils.AESUtil;
-import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.RSAUtil;
-import com.qs.mp.system.domain.SysUser;
-import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.*;
-
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
-
 import ma.glasnost.orika.MapperFacade;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.pulsar.client.api.PulsarClientException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 
 /**
  * @auther zhongcp
@@ -123,7 +110,7 @@ public class TicketBoxMgrController extends BaseApiController {
         if (CollectionUtils.isNotEmpty(ticketBoxQueryParam.getExcludeBoxIds())) {
             queryWrapper.notIn("box_id", ticketBoxQueryParam.getExcludeBoxIds());
         }
-        queryWrapper.orderByAsc("FIELD(`status`, 'wait', 'doing', 'done', 'on', 'off')").orderByDesc("box_id");
+        queryWrapper.orderByAsc("FIELD(`status`, 'wait', 'doing', 'done', 'on', 'off','stop')").orderByDesc("box_id");
         List<TicketBox> list = ticketBoxService.list(queryWrapper);
         return getDataTable(list);
     }
@@ -466,5 +453,52 @@ public class TicketBoxMgrController extends BaseApiController {
 
     }
 
+    /**
+     * 查询单个盲票组绑定的红包奖项或者查询盲票组全部的红包奖项记录
+     * @param jsonObject
+     * @return
+     */
+    @PostMapping(value = "/redEnvelopeAward")
+    @PreAuthorize("@ss.hasPermi('business:awards:query')")
+    @ApiOperation("查询单个盲票组绑定的红包奖项或者查询盲票组全部的红包奖项记录")
+    @com.github.xiaoymin.knife4j.annotations.DynamicParameters(properties = {
+        @DynamicParameter(name = "boxId", value = "盲票组id", required = true, dataTypeClass = Long.class)
+    })
+    @ApiResponses(
+        @ApiResponse(code = 200, message = "查询成功", response = TicketBox.class)
+    )
+    public TableDataInfo redEnvelopeAward(@RequestBody JSONObject jsonObject) {
+        startPage();
+        String boxId = jsonObject.getString("boxId");
+        List<TicketAwardsPrizeVO> TicketAwardsPrizeVO = ticketAwardsPrizeService.listPrizeByBoxIdVO(boxId);
+        return getDataTable(TicketAwardsPrizeVO);
+    }
 
+    /**
+     * 线下盲票组停售
+     * @param
+     * @return
+     */
+    @Log(title = "线下盲票组停售", businessType = BusinessType.UPDATE)
+    @ApiOperation(value = "线下盲票组停售", notes = "线下盲票组停售")
+    @PostMapping("/stop")
+    @PreAuthorize("@ss.hasPermi('business:ticket:stop')")
+    public AjaxResult stop(@RequestBody TicketBox param) {
+        if(StringUtils.isBlank(param.getBoxId()) || param.getStatus() == null || param.getType() == null){
+            return AjaxResult.error("参数缺失");
+        }
+        TicketBox ticketBox = ticketBoxService.getById(param.getBoxId());
+        if(param.getStatus() == TicketBoxStatusEnum.PUT_ON && param.getType() == TicketTypeEnum.OFFLINE){
+            if(ticketBox.getStatus() == TicketBoxStatusEnum.PUT_ON && ticketBox.getType() == TicketTypeEnum.OFFLINE){
+                ticketBoxService.update(new LambdaUpdateWrapper<TicketBox>()
+                    .set(TicketBox::getStatus, TicketBoxStatusEnum.STOP)
+                    .eq(TicketBox::getBoxId, ticketBox.getBoxId()));
+            }else {
+                return AjaxResult.error("当前不是已上架的线下盲票,不能进行停售操作");
+            }
+        }else{
+            return AjaxResult.error("当前盲票状态及类型参数有误,不能进行停售操作");
+        }
+        return AjaxResult.success("操作成功");
+    }
 }

+ 5 - 0
mp-common/src/main/java/com/qs/mp/common/constant/Constants.java

@@ -168,4 +168,9 @@ public class Constants
      * 盲豆默认图片
      */
     public static final String MANGDOU_PIC = "md.png";
+
+    /**
+     * 红包默认图片
+     */
+    public static final String RED_ENVELOPE_PIC = "hb.png";
 }

+ 2 - 1
mp-common/src/main/java/com/qs/mp/common/enums/TicketBoxStatusEnum.java

@@ -18,7 +18,8 @@ public enum TicketBoxStatusEnum implements IEnum<String> {
   DOING("doing", "出票中"),
   DONE("done", "待上架"),
   PUT_ON("on", "已上架"),
-  PUT_OFF("off", "已下架");
+  PUT_OFF("off", "已下架"),
+  STOP("stop","已停售");
 
   private final String value;
   private final String desc;

+ 2 - 1
mp-common/src/main/java/com/qs/mp/common/enums/TicketPrizeTypeEnum.java

@@ -16,7 +16,8 @@ public enum TicketPrizeTypeEnum implements IEnum<String> {
   GOODS("goods", "商品"),
   COUPON("coupon", "优惠券"),
   COUPON_PKG("coupon_pkg", "优惠券包"),
-  COIN("coin", "盲豆");
+  COIN("coin", "盲豆"),
+  RED_ENVELOPE("red_pkg", "红包");
 
   private final String value;
   private final String desc;

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

@@ -28,4 +28,11 @@ public interface TicketAwardsPrizeMapper extends BaseMapper<TicketAwardsPrize> {
   List<TicketAwardsPrize> listByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<TicketAwardsPrize> queryWrapper);
 
   List<TicketBox> listTicketDetailRelGoodsId(@Param(Constants.WRAPPER) QueryWrapper<TicketBoxGoodsListVO> queryWrapper);
+
+  /**
+   * 根据商品id查询关联盲票详细信息
+   * @param goodsId
+   * @return
+   */
+  List<TicketBox> listTicketDetailByGoodId(String goodsId);
 }

+ 14 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketAwardsPrizeService.java

@@ -31,4 +31,18 @@ public interface ITicketAwardsPrizeService extends IService<TicketAwardsPrize> {
     List<TicketAwardsPrize> listByQueryWrapper(QueryWrapper<TicketAwardsPrize> queryWrapper);
 
   List<TicketBox> listTicketDetailRelGoods(QueryWrapper<TicketBoxGoodsListVO> queryWrapper);
+
+  /**
+   * 根据商品id查询关联盲票详细信息
+   * @param goodsId
+   * @return
+   */
+  List<TicketBox> listTicketDetailByGoodId(String goodsId);
+
+  /**
+   * 根据盲票组id查询盲票组红包奖项
+   * @param boxId
+   * @return
+   */
+  List<TicketAwardsPrizeVO> listPrizeByBoxIdVO(String boxId);
 }

+ 5 - 1
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -649,7 +649,11 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
                     awardsPrize.setTitle(couponPkg.getTitle());
                     awardsPrize.setValue(couponPkg.getFacePrice());
                     awardsPrize.setPicUrl(couponPkg.getPicUrl());
-                } else {
+                }else if(prizeParam.getPrizeType() == TicketPrizeTypeEnum.RED_ENVELOPE){
+                    awardsPrize.setTitle("红包");
+                    awardsPrize.setPicUrl(Constants.RED_ENVELOPE_PIC);
+                }
+                else {
                     awardsPrize.setTitle("盲豆");
                     awardsPrize.setPicUrl(Constants.MANGDOU_PIC);
                 }

+ 41 - 0
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketAwardsPrizeServiceImpl.java

@@ -13,6 +13,7 @@ import java.util.List;
 
 import com.qs.mp.common.enums.AwardsLabelEnum;
 import org.springframework.stereotype.Service;
+import org.apache.commons.lang3.StringUtils;
 
 /**
  * <p>
@@ -37,6 +38,11 @@ public class TicketAwardsPrizeServiceImpl extends ServiceImpl<TicketAwardsPrizeM
     return getBaseMapper().listTicketDetailRelGoodsId(queryWrapper);
   }
 
+  @Override
+  public List<TicketBox> listTicketDetailByGoodId(String goodsId) {
+    return getBaseMapper().listTicketDetailByGoodId(goodsId);
+  }
+
   @Override
   public List<TicketAwardsPrizeVO> listPrizeVO(Wrapper<TicketAwardsPrize> queryWrapper) {
     return getBaseMapper().listPrizeVO(queryWrapper);
@@ -65,4 +71,39 @@ public class TicketAwardsPrizeServiceImpl extends ServiceImpl<TicketAwardsPrizeM
             .orderByDesc("t2.sort_weight")
             .orderByDesc("t2.value"));
   }
+
+  @Override
+  public List<TicketAwardsPrizeVO> listPrizeByBoxIdVO(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(")");
+    if (StringUtils.isBlank(boxId)) {
+      //查询盲票组全部的红包记录
+      return listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
+//          .eq("t2.is_deleted", 0)
+          .eq("t2.prize_type","red_pkg")
+          .orderByAsc(sortField.toString())
+          .orderByAsc("t1.sort")
+          .orderByDesc("t2.sort_weight")
+          .orderByDesc("t2.value"));
+    }
+    //查询单个盲票组绑定的红包记录
+    return listPrizeVO(new QueryWrapper<TicketAwardsPrize>()
+        .eq("t1.box_id", boxId)
+        .eq("t2.is_deleted", 0)
+        .eq("t2.prize_type","red_pkg")
+        .orderByAsc(sortField.toString())
+        .orderByAsc("t1.sort")
+        .orderByDesc("t2.sort_weight")
+        .orderByDesc("t2.value"));
+  }
 }

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

@@ -282,6 +282,9 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
                         awardsPrize.setTitle(couponPkg.getTitle());
                         awardsPrize.setValue(couponPkg.getFacePrice());
                         awardsPrize.setPicUrl(couponPkg.getPicUrl());
+                    } else if(ticketAwardsPrizeParam.getPrizeType() == TicketPrizeTypeEnum.RED_ENVELOPE){
+                        awardsPrize.setTitle("红包");
+                        awardsPrize.setPicUrl(Constants.RED_ENVELOPE_PIC);
                     } else {
                         awardsPrize.setTitle("盲豆");
                         awardsPrize.setPicUrl(Constants.MANGDOU_PIC);
@@ -514,6 +517,9 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
                     awardsPrize.setTitle(couponPkg.getTitle());
                     awardsPrize.setValue(couponPkg.getFacePrice());
                     awardsPrize.setPicUrl(couponPkg.getPicUrl());
+                } else if(prizeParam.getPrizeType() == TicketPrizeTypeEnum.RED_ENVELOPE){
+                    awardsPrize.setTitle("红包");
+                    awardsPrize.setPicUrl(Constants.RED_ENVELOPE_PIC);
                 } else {
                     awardsPrize.setTitle("盲豆");
                     awardsPrize.setPicUrl(Constants.MANGDOU_PIC);

+ 12 - 0
mp-service/src/main/resources/mapper/admin/TicketAwardsPrizeMapper.xml

@@ -88,4 +88,16 @@
         from mp_ticket_box t1 left join mp_ticket_awards_prize t2 on t1.box_id = t2.box_id
         ${ew.customSqlSegment}
     </select>
+
+    <select id="listTicketDetailByGoodId" resultType="com.qs.mp.admin.domain.TicketBox">
+        select
+               box_id,title,status
+        from
+             mp_ticket_box
+        where
+              box_id in (
+                  select box_id from mp_ticket_box_goods where ref_id = #{goodsId} and is_deleted = 0
+                  )
+        and is_deleted = 0 order by FIELD(status,'on','wait', 'doing', 'done', 'off')
+    </select>
 </mapper>