Przeglądaj źródła

盲票组指定的经销商回显

cup 3 lat temu
rodzic
commit
551d2caeda

+ 1 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/TicketBoxMgrController.java

@@ -22,6 +22,7 @@ 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.LogUtil;
 import com.qs.mp.common.utils.RSAUtil;

+ 44 - 5
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelTicketController.java

@@ -1,20 +1,30 @@
 package com.qs.mp.web.controller.api.channel.mall;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.domain.vo.TicketBoxListVO;
 import com.qs.mp.admin.domain.param.TicketBoxParam;
 import com.qs.mp.admin.domain.vo.TicketBoxVO;
 import com.qs.mp.admin.service.ITicketAwardsPrizeService;
 import com.qs.mp.admin.service.ITicketBoxService;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.common.enums.TicketBoxSaleChannelTypeEnum;
 import com.qs.mp.common.enums.TicketBoxStatusEnum;
 import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.utils.SecurityUtils;
 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.List;
+import java.util.Objects;
+
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +50,9 @@ public class ChannelTicketController extends BaseApiController {
   @Autowired
   private MapperFacade mapperFacade;
 
+  @Autowired
+  private IChannelService channelService;
+
   /**
    * 盲票进货列表
    */
@@ -48,11 +61,37 @@ public class ChannelTicketController extends BaseApiController {
   public TableDataInfo list(@RequestBody TicketBoxParam param) {
     // TODO 根据标签过滤
     startPage();
-    List<TicketBox> ticketBoxes = ticketBoxService.list(
-        new LambdaQueryWrapper<TicketBox>().eq(TicketBox::getType, param.getType())
-            .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), TicketBox::getCategoryId, param.getCategoryId())
-            .eq(TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON)
-            .orderByDesc(TicketBox::getSortWeight));
+    Long channelId = SecurityUtils.getLoginUser().getChannelId();
+    Channel channel = channelService.getById(channelId);
+    List<Long> channelIds = new ArrayList<>();
+    if (StringUtils.isBlank(channel.getChannelNo())) {
+      String[] split = StringUtils.split(channel.getChannelNo(), ".");
+      for (String s : split) {
+        channelIds.add(Long.valueOf(s));
+      }
+    }
+    QueryWrapper<TicketBox> queryWrapper = new QueryWrapper<>();
+    queryWrapper.eq("t1.type",param.getType());
+    if (Objects.nonNull(param.getCategoryId()) && param.getCategoryId() != 0) {
+      queryWrapper.eq("t1.category_id",param.getCategoryId());
+    }
+    queryWrapper.eq("t1.status", TicketBoxStatusEnum.PUT_ON);
+    queryWrapper.orderByDesc("t1.sort_weight");
+
+    queryWrapper.nested(wrapper -> {
+      wrapper.eq("t1.sale_channel_type", TicketBoxSaleChannelTypeEnum.ALL.getValue());
+      if (channelIds.size() != 0) {
+        wrapper.or().in("t2.channel_id",channelIds);
+      }
+    });
+
+    List<TicketBox> ticketBoxes  = ticketBoxService.listBySaleChannel(queryWrapper);
+
+//    List<TicketBox> ticketBoxes = ticketBoxService.list(
+//        new LambdaQueryWrapper<TicketBox>().eq(TicketBox::getType, param.getType())
+//            .eq(null != param.getCategoryId() && 0 != param.getCategoryId(), TicketBox::getCategoryId, param.getCategoryId())
+//            .eq(TicketBox::getStatus, TicketBoxStatusEnum.PUT_ON)
+//            .orderByDesc(TicketBox::getSortWeight));
     List<TicketBoxListVO> ticketBoxListVOList = mapperFacade.mapAsList(ticketBoxes, TicketBoxListVO.class);
     TableDataInfo rspData = getDataTable(ticketBoxes);
     rspData.setRows(ticketBoxListVOList);

+ 29 - 0
mp-common/src/main/java/com/qs/mp/common/enums/TicketBoxSaleChannelTypeEnum.java

@@ -0,0 +1,29 @@
+package com.qs.mp.common.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+import lombok.AllArgsConstructor;
+
+/**
+ * 盲票销售渠道类型
+ *
+ * @author Cup
+ * @date 2022/5/6
+ */
+public enum TicketBoxSaleChannelTypeEnum implements IEnum<Integer> {
+
+    ALL(1, "所有渠道"),
+    PART(2, "部分渠道");
+
+    private int value;
+    private final String desc;
+
+    TicketBoxSaleChannelTypeEnum(int value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+}

+ 11 - 0
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketBoxMapper.java

@@ -1,7 +1,12 @@
 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.TicketBox;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +15,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface TicketBoxMapper extends BaseMapper<TicketBox> {
 
+    /**
+     * 根据条件查询盲票组列表
+     * @param queryWrapper
+     * @return
+     */
+    List<TicketBox> listBySaleChannel(@Param(Constants.WRAPPER) QueryWrapper<TicketBox> queryWrapper);
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/admin/service/ITicketBoxService.java

@@ -1,10 +1,13 @@
 package com.qs.mp.admin.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.TicketBox;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.admin.domain.param.TicketBoxCreateParam;
 import com.qs.mp.admin.domain.param.TicketBoxUpdateParam;
 
+import java.util.List;
+
 /**
  * <p>
  * 盲票组 服务类
@@ -40,4 +43,11 @@ public interface ITicketBoxService extends IService<TicketBox> {
      * @return
      */
   boolean updateTicketBox(TicketBoxUpdateParam param);
+
+  /**
+   * 根据条件查询盲票组列表
+   * @param queryWrapper
+   * @return
+   */
+  List<TicketBox> listBySaleChannel(QueryWrapper<TicketBox> queryWrapper);
 }

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

@@ -2,6 +2,7 @@ package com.qs.mp.admin.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,6 +14,8 @@ import com.qs.mp.admin.domain.param.TicketBoxCreateParam;
 import com.qs.mp.admin.domain.param.TicketBoxUpdateParam;
 import com.qs.mp.admin.mapper.TicketBoxMapper;
 import com.qs.mp.admin.service.*;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.service.IChannelService;
 import com.qs.mp.common.enums.*;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.pulsar.PulsarClientService;
@@ -90,6 +93,15 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
   @Autowired
   private ITicketBoxChannelService ticketBoxChannelService;
 
+  @Autowired
+  private IChannelService channelService;
+
+
+  @Override
+  public List<TicketBox> listBySaleChannel(QueryWrapper<TicketBox> queryWrapper) {
+    return getBaseMapper().listBySaleChannel(queryWrapper);
+  }
+
   @Override
   @Transactional(rollbackFor = Exception.class)
   public boolean updateTicketBox(TicketBoxUpdateParam param) {
@@ -116,6 +128,21 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       if (CollectionUtils.isEmpty(channelIdList)) {
         throw new ServiceException("渠道列表为空");
       }
+      // 校验嵌套问题
+      List<String> channelNoList = channelService.list(new LambdaQueryWrapper<Channel>()
+                      .in(Channel::getChannelId, channelIdList))
+              .stream().map(Channel::getChannelNo)
+              .collect(Collectors.toList());
+      for (int i = 0; i < channelNoList.size(); i++) {
+        for (int j = 0; j < channelNoList.size(); j++) {
+          if (i == j) {
+            continue;
+          }
+          if (channelNoList.get(i).contains(channelNoList.get(j))) {
+            throw new ServiceException("已选择更高级的渠道,不支持渠道相互嵌套!");
+          }
+        }
+      }
       List<TicketBoxChannel> ticketBoxChannelList = new ArrayList<>();
       for (Long channelId : channelIdList) {
         TicketBoxChannel ticketBoxChannel = new TicketBoxChannel();
@@ -230,6 +257,23 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       if (CollectionUtils.isEmpty(channelIdList)) {
         throw new ServiceException("渠道列表为空");
       }
+
+      // 校验嵌套问题
+      List<String> channelNoList = channelService.list(new LambdaQueryWrapper<Channel>()
+                                .in(Channel::getChannelId, channelIdList))
+                                .stream().map(Channel::getChannelNo)
+                                .collect(Collectors.toList());
+      for (int i = 0; i < channelNoList.size(); i++) {
+        for (int j = 0; j < channelNoList.size(); j++) {
+          if (i == j) {
+            continue;
+          }
+          if (channelNoList.get(i).contains(channelNoList.get(j))) {
+            throw new ServiceException("已选择更高级的渠道,不支持渠道相互嵌套!");
+          }
+        }
+      }
+
       List<TicketBoxChannel> ticketBoxChannelList = new ArrayList<>();
       for (Long channelId : channelIdList) {
         TicketBoxChannel ticketBoxChannel = new TicketBoxChannel();

+ 6 - 0
mp-service/src/main/resources/mapper/admin/TicketBoxMapper.xml

@@ -37,4 +37,10 @@
         box_id, box_no, title, pic_url, category_id, description, sale_point, type, quantity, sale_qty, pkg_sale_price, pkg_unit, pkg_qty, sale_pkg_qty, face_price, sale_price, sale_comm_rate, properties, sort_weight, on_time, off_time, manual_off, status, is_deleted, created_time, updated_time
     </sql>
 
+    <select id="listBySaleChannel" resultMap="BaseResultMap">
+        select t1.*
+        from mp_ticket_box t1
+        left join mp_ticket_box_channel t2 on t1.box_id = t2.box_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>