Pārlūkot izejas kodu

拼团活动_订单管理,用户中奖信息

Chris-zy 1 gadu atpakaļ
vecāks
revīzija
7e13c1a456

+ 533 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GroupBuyingOrderMgrController.java

@@ -0,0 +1,533 @@
+package com.qs.mp.web.controller.api.admin;
+
+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.TicketPackage;
+import com.qs.mp.admin.domain.param.*;
+import com.qs.mp.admin.domain.vo.TicketPackageVO;
+import com.qs.mp.admin.service.ITicketPackageService;
+import com.qs.mp.channel.domain.ChannelOrder;
+import com.qs.mp.channel.domain.ChannelOrderDetail;
+import com.qs.mp.channel.domain.ChannelOrderItem;
+import com.qs.mp.channel.domain.excel.ChannelOrderExcel;
+import com.qs.mp.channel.domain.vo.ChannelOrderInfoVO;
+import com.qs.mp.channel.domain.vo.ChannelOrderItemVO;
+import com.qs.mp.channel.domain.vo.ChannelOrderVO;
+import com.qs.mp.channel.domain.vo.ChannelVO;
+import com.qs.mp.channel.service.IChannelOrderDetailService;
+import com.qs.mp.channel.service.IChannelOrderItemService;
+import com.qs.mp.channel.service.IChannelOrderService;
+import com.qs.mp.channel.service.IChannelService;
+import com.qs.mp.common.annotation.Log;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.common.domain.DeliveryCompany;
+import com.qs.mp.common.enums.*;
+import com.qs.mp.common.service.IDeliveryCompanyService;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.utils.ExcelUtil;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.AllArgsConstructor;
+import ma.glasnost.orika.MapperFacade;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * @ClassName GroupBuyingOrderMgrController
+ * @author yang.zhao
+ * @date 2023.9.21
+ * @time 21:33
+ * @Version 1.0
+ * @Description
+ */
+@RestController
+@RequestMapping("/api/v1/mp/admin/hitprize/order")
+@Api(tags = "拼团抽奖订单管理接口")
+@AllArgsConstructor
+public class GroupBuyingOrderMgrController extends BaseApiController {
+
+  @Autowired
+  private IChannelOrderService channelOrderService;
+
+  @Autowired
+  private IChannelOrderItemService channelOrderItemService;
+
+  @Autowired
+  private IChannelOrderDetailService channelOrderDetailService;
+
+  @Autowired
+  private IChannelService channelService;
+
+  @Autowired
+  private IDeliveryCompanyService deliveryCompanyService;
+
+  @Autowired
+  private ITicketPackageService ticketPackageService;
+
+  @Autowired
+  private MapperFacade mapperFacade;
+
+
+
+
+  /**
+   * 订单列表
+   */
+  /*@PostMapping("/list")
+  @ApiOperation(value = "订单列表" , notes = "获取所有订单信息")
+  @PreAuthorize("@ss.hasPermi('order:channel:list')")
+  @ApiResponses(
+		  @ApiResponse(code = 200, message = "success", response = ChannelOrderVO.class)
+  )
+  public TableDataInfo list(@RequestBody ChannelOrderQueryParam queryParam) {
+    startPage();
+    QueryWrapper<ChannelOrder> queryWrapper = new QueryWrapper<ChannelOrder>();
+    queryWrapper.eq(null != queryParam && null != queryParam.getChannelId(), "t1.channel_id" ,queryParam.getChannelId());
+    queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getOrderId()), "t1.order_id" ,queryParam.getOrderId());
+	queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), "t1.`status`" ,queryParam.getStatus());
+	queryWrapper.eq(null != queryParam && null != queryParam.getType(), "t1.`type`" ,queryParam.getType());
+	queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(),  "t1.created_time", queryParam.getStartTime());
+	queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+	queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t1.title", queryParam.getTitle());
+    queryWrapper.orderByDesc("t1.created_time").orderByDesc("t1.order_id");
+    List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
+    for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
+    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+   	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+
+   	    List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+        channelOrderVO.setItems(itemVOList);
+    }
+    return getDataTable(channelOrderVOList);
+  }*/
+
+
+	/**
+	 * 拼团活动中奖订单列表
+	 * @param params
+	 * @return
+	 */
+	/*@PostMapping("/list")
+	@ApiOperation(value = "拼团抽奖订单列表" , notes = "获取所有订单信息")
+	@PreAuthorize("@ss.hasPermi('order:hitprize:list')")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "success", response = ChannelOrderVO.class)
+	)
+	public TableDataInfo list(@RequestBody GroupBuyingHitPrizeParam groupBuyingHitPrizeParam) {
+		//活动名称
+		String title = "";
+		//奖品类型
+		String prizeType = "";
+		//奖品状态
+		Integer deliverGoodsStatus = null;
+		if (Objects.nonNull(params.get("title"))) title = params.get("title").toString();
+		if (Objects.nonNull(params.get("prizeType"))) prizeType = params.get("prizeType").toString();
+		if (Objects.nonNull(params.get("deliverGoodsStatus"))) deliverGoodsStatus = Integer.valueOf(params.get("deliverGoodsStatus").toString());
+		//开启分页
+		startPage();
+		//查询
+
+
+		QueryWrapper<ChannelOrder> queryWrapper = new QueryWrapper<ChannelOrder>();
+		queryWrapper.eq(null != queryParam && null != queryParam.getChannelId(), "t1.channel_id" ,queryParam.getChannelId());
+		queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getOrderId()), "t1.order_id" ,queryParam.getOrderId());
+		queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), "t1.`status`" ,queryParam.getStatus());
+		queryWrapper.eq(null != queryParam && null != queryParam.getType(), "t1.`type`" ,queryParam.getType());
+		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(),  "t1.created_time", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t1.title", queryParam.getTitle());
+		queryWrapper.orderByDesc("t1.created_time").orderByDesc("t1.order_id");
+		List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
+		for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
+			List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+					.eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+
+			List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+			channelOrderVO.setItems(itemVOList);
+		}
+		return getDataTable(channelOrderVOList);
+	}*/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  @PostMapping("/order/cancel")
+  @PreAuthorize("@ss.hasPermi('order:channel:ship')")
+  @ApiOperation("经销商订单取消")
+  public AjaxResult cancelOrder(@Validated @RequestBody ChannelOrderCancelParam param) {
+	  return AjaxResult.success(channelOrderService.cancelOrderByAdmin(param));
+  }
+
+  /**
+   * 订单详情
+   */
+  @PostMapping("/detail")
+  @ApiOperation(value = "订单详情" , notes = "在订单列表页面查看详情")
+  @PreAuthorize("@ss.hasPermi('order:channel:query')")
+  public AjaxResult query(@RequestBody ChannelOrder order) {
+    if(null == order || StringUtils.isBlank(order.getOrderId())) {
+    	return error(ErrorCodeEnum.ERROR_CODE_1001);
+    }
+    ChannelOrder channelOrder = channelOrderService.getById(order.getOrderId());
+    if(null == channelOrder || StringUtils.isBlank(channelOrder.getOrderId())) {
+    	return error(ErrorCodeEnum.ERROR_CODE_1001);
+    }
+    ChannelOrderInfoVO channelOrderInfoVO = mapperFacade.map(channelOrder, ChannelOrderInfoVO.class);
+
+    if(null != channelOrderInfoVO && null != channelOrderInfoVO.getChannelId()) {
+    	ChannelVO channel = channelService.getChannelVoById(channelOrderInfoVO.getChannelId());
+    	channelOrderInfoVO.setChannel(channel);
+    }
+    if(null != channelOrderInfoVO && null != channelOrderInfoVO.getDeliveryId()) {
+    	DeliveryCompany deliveryCompany = deliveryCompanyService.getById(channelOrderInfoVO.getDeliveryId());
+    	channelOrderInfoVO.setDeliveryCompany(deliveryCompany);
+    }
+    List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+	          .eq(ChannelOrderItem::getOrderId, channelOrderInfoVO.getOrderId()));
+
+	List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+	if(null != itemVOList && itemVOList.size() > 0) {
+		for(ChannelOrderItemVO itemVO : itemVOList) {
+			if(null != itemVO && StringUtils.isNotBlank(itemVO.getBoxId())
+					&& StringUtils.isNotBlank(itemVO.getOrderId())) {
+				LambdaQueryWrapper<ChannelOrderDetail> detailQueryWrapper = new LambdaQueryWrapper<ChannelOrderDetail>();
+				detailQueryWrapper.eq(ChannelOrderDetail::getOrderId, itemVO.getOrderId());
+				detailQueryWrapper.eq(ChannelOrderDetail::getBoxId, itemVO.getBoxId());
+				List<ChannelOrderDetail> detailList = channelOrderDetailService.list(detailQueryWrapper);
+				itemVO.setDetailList(detailList);
+			}
+		}
+	}
+	channelOrderInfoVO.setItems(itemVOList);
+    return AjaxResult.success(channelOrderInfoVO);
+  }
+
+
+  /**
+   * 订单发货
+   */
+  @Log(title = "经销商订单发货", businessType = BusinessType.UPDATE)
+  @PostMapping("/ship")
+  @ApiOperation(value = "订单发货" , notes = "在订单发货页面提交")
+  @ApiResponses(
+		  @ApiResponse(code = 200, message = "操作成功", response = AjaxResult.class)
+  )
+  @PreAuthorize("@ss.hasPermi('order:channel:ship')")
+  public AjaxResult ship(@RequestBody ChannelOrderShipParam shipParam) {
+		if(null == shipParam || StringUtils.isBlank(shipParam.getOrderId())) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+
+		ChannelOrder order  = channelOrderService.getById(shipParam.getOrderId());
+		if(null == order || StringUtils.isBlank(order.getOrderId())
+				|| null == order.getChannelId()) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+		Integer deliveryType = shipParam.getDeliveryType();
+	  if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+		  if (Objects.isNull(shipParam.getDeliveryId())) {
+			  return AjaxResult.error("快递公司不能为空");
+		  }
+		  if (StringUtils.isBlank(shipParam.getDeliveryFlowId())) {
+			  return AjaxResult.error("快递单号不能为空");
+		  }
+	  }
+
+		if(null != shipParam && null != shipParam.getPkgIds()
+				&& shipParam.getPkgIds().size() > 0) {
+			ChannelOrder channelOrder = new ChannelOrder();
+			channelOrder.setType(order.getType());
+
+			if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+				// 无需物流,设置发货时间为当前时间
+				channelOrder.setOrderId(shipParam.getOrderId());
+				channelOrder.setChannelId(order.getChannelId());
+				channelOrder.setDeliveryTime(new Date());
+
+			} else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+				// 快递发货,设置物流信息
+				channelOrder.setOrderId(shipParam.getOrderId());
+				channelOrder.setChannelId(order.getChannelId());
+				channelOrder.setDeliveryId(shipParam.getDeliveryId());
+				channelOrder.setDeliveryFlowId(shipParam.getDeliveryFlowId());
+				channelOrder.setDeliveryTime(new Date());
+			}
+			boolean rtn = channelOrderService.channelOrderShip(channelOrder, shipParam.getPkgIds());
+			return rtn ? AjaxResult.success() : AjaxResult.error("发货失败");
+		}
+		return AjaxResult.error("发货失败");
+  }
+
+	/**
+	 * 订单发货单号修改
+	 */
+	@Log(title = "经销商订单发货单号修改", businessType = BusinessType.UPDATE)
+	@PostMapping("/ship/update")
+	@ApiOperation(value = "订单发货单号修改" , notes = "在订单发货页面提交")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "操作成功", response = AjaxResult.class)
+	)
+	@PreAuthorize("@ss.hasPermi('order:channel:ship')")
+	public AjaxResult updateShipInfo(@RequestBody ChannelOrderShipParam shipParam) {
+		if(null == shipParam || StringUtils.isBlank(shipParam.getOrderId())) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+
+		ChannelOrder order  = channelOrderService.getById(shipParam.getOrderId());
+		if(null == order || StringUtils.isBlank(order.getOrderId())
+				|| null == order.getChannelId()) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+
+		Integer deliveryType = shipParam.getDeliveryType();
+		if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+			if (Objects.isNull(shipParam.getDeliveryId())) {
+				return AjaxResult.error("快递公司不能为空");
+			}
+			if (StringUtils.isBlank(shipParam.getDeliveryFlowId())) {
+				return AjaxResult.error("快递单号不能为空");
+			}
+		}
+
+
+		boolean rtn = false;
+		if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+			// 无需物流,设置单号为空,物流公司为空
+			rtn = channelOrderService.update(new LambdaUpdateWrapper<ChannelOrder>()
+					.set(ChannelOrder::getDeliveryId, null)
+					.set(ChannelOrder::getDeliveryFlowId, null)
+					.set(ChannelOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
+					.eq(ChannelOrder::getOrderId, shipParam.getOrderId()));
+
+		} else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+			// 快递发货,原逻辑
+			rtn = channelOrderService.update(new LambdaUpdateWrapper<ChannelOrder>()
+					.set(ChannelOrder::getDeliveryId, shipParam.getDeliveryId())
+					.set(ChannelOrder::getDeliveryFlowId, shipParam.getDeliveryFlowId())
+					.eq(ChannelOrder::getOrderId, shipParam.getOrderId()));
+		}
+
+
+		return rtn ? AjaxResult.success() : AjaxResult.error("修改失败");
+
+	}
+
+	@PostMapping("/item/list")
+	@ApiOperation(value = "获取经销商订单盲票组列表", notes = "")
+	public AjaxResult list(@RequestBody ChannelOrder order) {
+		List<ChannelOrderItemVO> list = new ArrayList<ChannelOrderItemVO>();
+		if (null != order && StringUtils.isNotBlank(order.getOrderId())) {
+			QueryWrapper<ChannelOrderItem> queryWrapper = new QueryWrapper<ChannelOrderItem>();
+			queryWrapper.eq("t1.order_id", order.getOrderId());
+			list = channelOrderItemService.listChannelOrderItemVO(queryWrapper);
+		}
+		return AjaxResult.success(list);
+	}
+
+	@PostMapping("/ticket/pkg/list")
+	@ApiOperation(value = "经销商订单发货筛选盲票包列表", notes = "")
+	public AjaxResult list(@RequestBody ChannelOrderPkgParam orderPkgParam) {
+		List<TicketPackageVO> list = new ArrayList<TicketPackageVO>();
+		QueryWrapper<TicketPackage> queryWrapper = new QueryWrapper<TicketPackage>();
+		queryWrapper.eq("t1.`status`", TicketPkgStatusEnum.FOR_SALE); // 筛选待售
+		if (null != orderPkgParam && StringUtils.isNotBlank(orderPkgParam.getPkgNo())) {
+			queryWrapper.like("t1.pkg_no", orderPkgParam.getPkgNo());
+		}
+		if (null != orderPkgParam && StringUtils.isNotBlank(orderPkgParam.getBoxId())) {
+			queryWrapper.eq("t1.box_id", orderPkgParam.getBoxId());
+			list = ticketPackageService.listTicketPackageVO(queryWrapper);
+		} else {
+			if (null != orderPkgParam && StringUtils.isNotBlank(orderPkgParam.getOrderId())) {
+				// 查询订单明细
+				List<ChannelOrderItem> itemList = channelOrderItemService
+						.list(new LambdaQueryWrapper<ChannelOrderItem>().eq(ChannelOrderItem::getOrderId,
+								orderPkgParam.getOrderId()));
+				if (null != itemList && itemList.size() > 0) {
+					List<String> boxIds = new ArrayList<String>();
+					for (ChannelOrderItem item : itemList) {
+						if (null != item && StringUtils.isNotBlank(item.getBoxId())) {
+							boxIds.add(item.getBoxId());
+						}
+					}
+					if (null != boxIds && boxIds.size() > 0) {
+						queryWrapper.in("t1.box_id", boxIds);
+						list = ticketPackageService.listTicketPackageVO(queryWrapper);
+					}
+				}
+			}
+		}
+		return AjaxResult.success(list);
+	}
+
+
+
+	@Log(title = "提货订单导出", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	@PreAuthorize("@ss.hasPermi('order:channel:export')")
+	public AjaxResult export(@RequestBody ChannelOrderQueryParam queryParam) {
+		Date startTime = queryParam.getStartTime();
+		Date endTime = queryParam.getEndTime();
+		if (startTime == null || endTime == null) {
+			return AjaxResult.error("导出数据必须设置日期范围");
+		}
+		if (DateUtils.diff(startTime, endTime) > 30) {
+			return AjaxResult.error("导出的数据不能超过31天");
+		}
+
+		List<ChannelOrderExcel> excelList = new ArrayList<ChannelOrderExcel>();
+		List<ChannelOrderVO> listAll = new ArrayList<ChannelOrderVO>();
+		// 首先查询要导出的数据总数
+		QueryWrapper<ChannelOrder> queryWrapper = new QueryWrapper<ChannelOrder>();
+	    queryWrapper.eq(null != queryParam && null != queryParam.getChannelId(), "t1.channel_id" ,queryParam.getChannelId());
+	    queryWrapper.eq(null != queryParam && StringUtils.isNotBlank(queryParam.getOrderId()), "t1.order_id" ,queryParam.getOrderId());
+		queryWrapper.eq(null != queryParam && null != queryParam.getStatus(), "t1.`status`" ,queryParam.getStatus());
+		queryWrapper.eq(null != queryParam && null != queryParam.getType(), "t1.`type`" ,queryParam.getType());
+		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(),  "t1.created_time", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t1.title", queryParam.getTitle());
+	    queryWrapper.orderByDesc("t1.created_time", "t1.order_id");
+
+	    int totalSize = channelOrderService.selectChannelOrderCount(queryWrapper);
+		if (totalSize == 0) {
+			return AjaxResult.error("没有符合条件的经销商订单");
+		}
+
+		int pageSize = 2000;
+		if (totalSize > pageSize) {
+			int totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
+			for (int i = 0; i < totalPage; i++) {
+				queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
+			    List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
+			    for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
+			    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+			     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+				  	List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+				  	if(null != itemVOList && itemVOList.size() > 0) {
+				  		for(ChannelOrderItemVO itemVO : itemVOList) {
+				  			if(null != itemVO && StringUtils.isNotBlank(itemVO.getBoxId())
+				  					&& StringUtils.isNotBlank(itemVO.getOrderId())) {
+				  				LambdaQueryWrapper<ChannelOrderDetail> detailQueryWrapper = new LambdaQueryWrapper<ChannelOrderDetail>();
+				  				detailQueryWrapper.eq(ChannelOrderDetail::getOrderId, itemVO.getOrderId());
+				  				detailQueryWrapper.eq(ChannelOrderDetail::getBoxId, itemVO.getBoxId());
+				  				List<ChannelOrderDetail> detailList = channelOrderDetailService.list(detailQueryWrapper);
+				  				itemVO.setDetailList(detailList);
+				  			}
+				  		}
+				  	}
+				  	channelOrderVO.setItems(itemVOList);
+			    }
+				if (null != channelOrderVOList && channelOrderVOList.size() > 0) {
+					listAll.addAll(channelOrderVOList);
+				}
+			}
+		} else {
+			listAll = channelOrderService.selectChannelOrderVoList(queryWrapper);
+		    for (ChannelOrderVO channelOrderVO : listAll) {
+		    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+		     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+			  	List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+			  	if(null != itemVOList && itemVOList.size() > 0) {
+			  		for(ChannelOrderItemVO itemVO : itemVOList) {
+			  			if(null != itemVO && StringUtils.isNotBlank(itemVO.getBoxId())
+			  					&& StringUtils.isNotBlank(itemVO.getOrderId())) {
+			  				LambdaQueryWrapper<ChannelOrderDetail> detailQueryWrapper = new LambdaQueryWrapper<ChannelOrderDetail>();
+			  				detailQueryWrapper.eq(ChannelOrderDetail::getOrderId, itemVO.getOrderId());
+			  				detailQueryWrapper.eq(ChannelOrderDetail::getBoxId, itemVO.getBoxId());
+			  				List<ChannelOrderDetail> detailList = channelOrderDetailService.list(detailQueryWrapper);
+			  				itemVO.setDetailList(detailList);
+			  			}
+			  		}
+			  	}
+			  	channelOrderVO.setItems(itemVOList);
+		    }
+		}
+
+		if (null != listAll && listAll.size() > 0) {
+			// listAll.sort(Comparator.comparing(UserDeliverOrderVO::getOrderId));
+			for (ChannelOrderVO channelOrder : listAll) {
+				if (null != channelOrder && StringUtils.isNotBlank(channelOrder.getOrderId())
+						&& StringUtils.isNotBlank(channelOrder.getReceiver())
+						&& StringUtils.isNotBlank(channelOrder.getTel())
+						&& StringUtils.isNotBlank(channelOrder.getProvince())
+						&& StringUtils.isNotBlank(channelOrder.getCity())
+						&& StringUtils.isNotBlank(channelOrder.getArea())
+						&& StringUtils.isNotBlank(channelOrder.getAddress()) && null != channelOrder.getItems()
+						&& channelOrder.getItems().size() > 0) {
+					for (ChannelOrderItemVO channelOrderItem : channelOrder.getItems()) {
+						if (null != channelOrderItem) {
+							ChannelOrderExcel channelOrderExcel = new ChannelOrderExcel();
+							channelOrderExcel.setTitle(channelOrderItem.getTitle());
+							channelOrderExcel.setOrderNum(channelOrderItem.getOrderNum());
+							if(null != channelOrderItem.getDetailList() && channelOrderItem.getDetailList().size() > 0) {
+								StringBuffer buff = new StringBuffer();
+								for(ChannelOrderDetail orderDetail: channelOrderItem.getDetailList()) {
+									if(null != orderDetail && StringUtils.isNotBlank(orderDetail.getStartSn())
+											&& StringUtils.isNotBlank(orderDetail.getEndSn())) {
+										buff.append("("+orderDetail.getStartSn()+"-"+orderDetail.getEndSn()+")");
+									}
+								}
+								channelOrderExcel.setSnRrange(buff.toString());
+							}
+							channelOrderExcel.setCreatedTime(channelOrder.getCreatedTime());
+							channelOrderExcel.setItemStatus(channelOrder.getStatus().getValue() > 1 ? "已发货" : "未发货");
+							channelOrderExcel.setOrderId(channelOrder.getOrderId());
+							channelOrderExcel.setMemo(channelOrder.getMemo());
+							channelOrderExcel.setStatus(channelOrder.getStatus().getDesc());
+							channelOrderExcel.setChannelName(channelOrder.getChannelName());
+							channelOrderExcel.setParentName(channelOrder.getParentName());
+							channelOrderExcel.setReceiver(channelOrder.getReceiver());
+							channelOrderExcel.setTel(channelOrder.getTel());
+							String address = channelOrder.getProvince() + channelOrder.getCity()
+									+ channelOrder.getArea() + channelOrder.getAddress();
+							channelOrderExcel.setAddress(address);
+							excelList.add(channelOrderExcel);
+						}
+					}
+				}
+			}
+		}
+		ExcelUtil<ChannelOrderExcel> util = new ExcelUtil<ChannelOrderExcel>(ChannelOrderExcel.class);
+		return util.exportExcel(excelList, "经销商盲票订单导出", false);
+	}
+}

+ 54 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/GroupBuyingHitPrizeParam.java

@@ -0,0 +1,54 @@
+package com.qs.mp.admin.domain.param;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author yang.zhao
+ */
+@ApiModel(value= "拼团活动中奖信息入参类")
+@Data
+public class GroupBuyingHitPrizeParam {
+
+    @ApiModelProperty(value = "中奖纪录ID",required = false)
+    private Long id;
+
+    @ApiModelProperty(value = "拼团活动ID",required = false)
+    private Long groupbuyingId;
+
+    @ApiModelProperty(value = "拼团ID",required = false)
+    private Long groupId;
+
+    @ApiModelProperty(value = "用户ID",required = false)
+    private Long userId;
+
+    @ApiModelProperty(value = "用户类型",required = false)
+    private String userType;
+
+    @ApiModelProperty(value = "奖项ID",required = false)
+    private Long awardsId;
+
+    @ApiModelProperty(value = "奖品ID",required = false)
+    private Long prizeId;
+
+    @ApiModelProperty(value = "奖品数",required = false)
+    private Integer prizeQuantity;
+
+    @ApiModelProperty(value = "奖品类型",required = false)
+    private String prizeType;
+
+    @ApiModelProperty(value = "发货状态,0:待发货,1:已完成",required = false)
+    private Integer deliverGoodsStatus;
+
+}

+ 77 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/GroupBuyingHitPrize.java

@@ -0,0 +1,77 @@
+package com.qs.mp.admin.domain.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.*;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @describe 拼团活动用户中奖信息实体类
+ * @auther yang.zhao
+ */
+@TableName("mp_groupbuying_hit_prize")
+@Data
+@ApiModel("拼团活动用户中奖信息实体类")
+public class GroupBuyingHitPrize implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("中奖纪录ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("拼团活动ID")
+    @TableField("groupbuying_id")
+    private Long groupbuyingId;
+
+    @ApiModelProperty("拼团ID")
+    @TableField("group_id")
+    private Long groupId;
+
+    @ApiModelProperty("用户ID")
+    @TableField("user_id")
+    private Long userId;
+
+    @ApiModelProperty("用户类型")
+    @TableField("user_type")
+    private String userType;
+
+    @ApiModelProperty("奖项ID")
+    @TableField("awards_id")
+    private Long awardsId;
+
+    @ApiModelProperty("奖品ID")
+    @TableField("prize_id")
+    private Long prizeId;
+
+    @ApiModelProperty("奖品数量")
+    @TableField("prize_quantity")
+    private Integer prizeQuantity;
+
+    @ApiModelProperty("奖品类型")
+    @TableField("prize_type")
+    private String prizeType;
+
+    @ApiModelProperty("发货状态,0:待发货,1:已完成")
+    @TableField("deliver_goods_status")
+    private Integer deliverGoodsStatus;
+
+    @ApiModelProperty("创建时间")
+    @TableField("create_time")
+    private Date createTime;
+
+    @ApiModelProperty("更新时间")
+    @TableField("update_time")
+    private Date updateTime;
+
+    @ApiModelProperty("逻辑删除标识")
+    @TableField("is_delete")
+    @TableLogic
+    private Integer isDelete;
+
+}