Эх сурвалжийг харах

Merge branch 'dev' of 113.31.163.91:quanshu/mp-server into dev

chunping 3 жил өмнө
parent
commit
64a4a04d90
28 өөрчлөгдсөн 768 нэмэгдсэн , 193 устгасан
  1. 0 4
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelMgrController.java
  2. 134 2
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java
  3. 57 57
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/IndexMgrController.java
  4. 58 20
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java
  5. 82 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelController.java
  6. 5 2
      mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/mall/ChannelOrderController.java
  7. 55 4
      mp-admin/src/main/java/com/qs/mp/web/controller/api/user/UserTicketController.java
  8. 4 0
      mp-common/src/main/java/com/qs/mp/common/enums/ChannelOrderStatusEnum.java
  9. 2 2
      mp-service/src/main/java/com/qs/mp/admin/mapper/TicketMapper.java
  10. 2 2
      mp-service/src/main/java/com/qs/mp/admin/service/ITicketService.java
  11. 4 4
      mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java
  12. 66 0
      mp-service/src/main/java/com/qs/mp/channel/domain/excel/ChannelOrderExcel.java
  13. 1 1
      mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelOrderVO.java
  14. 1 3
      mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java
  15. 9 0
      mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelOrderMapper.java
  16. 9 0
      mp-service/src/main/java/com/qs/mp/channel/service/IChannelOrderService.java
  17. 7 0
      mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java
  18. 32 0
      mp-service/src/main/java/com/qs/mp/user/domain/vo/TicketHitPrizeBarrageVO.java
  19. 20 0
      mp-service/src/main/java/com/qs/mp/user/mapper/UserHitPrizeMapper.java
  20. 15 0
      mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java
  21. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IUserHitPrizeService.java
  22. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java
  23. 95 80
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java
  24. 13 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java
  25. 2 6
      mp-service/src/main/resources/mapper/admin/TicketMapper.xml
  26. 11 1
      mp-service/src/main/resources/mapper/channel/ChannelOrderMapper.xml
  27. 26 0
      mp-service/src/main/resources/mapper/user/UserHitPrizeMapper.xml
  28. 26 5
      mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

+ 0 - 4
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelMgrController.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.channel.domain.ChannelOrder;
 import com.qs.mp.channel.domain.param.ChannelParam;
 import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
 import com.qs.mp.channel.domain.vo.ChannelVO;
@@ -18,7 +17,6 @@ import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.BusinessType;
 import com.qs.mp.common.enums.ChannelRoleEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
-import com.qs.mp.system.domain.SysUser;
 import com.qs.mp.system.service.ISysUserService;
 import com.qs.mp.user.service.IUserTicketOrderService;
 import com.qs.mp.web.controller.common.BaseApiController;
@@ -28,13 +26,11 @@ import ma.glasnost.orika.MapperFacade;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;

+ 134 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java

@@ -7,12 +7,14 @@ import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.param.ChannelOrderPkgParam;
 import com.qs.mp.admin.domain.param.ChannelOrderQueryParam;
 import com.qs.mp.admin.domain.param.ChannelOrderShipParam;
+import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
 import com.qs.mp.admin.domain.vo.TicketPackageVO;
 import com.qs.mp.admin.service.ITicketPackageService;
 import com.qs.mp.channel.domain.Channel;
 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;
@@ -29,6 +31,12 @@ import com.qs.mp.common.enums.BusinessType;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.service.IDeliveryCompanyService;
+import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.domain.UserDeliverOrderItem;
+import com.qs.mp.user.domain.excel.DeliverOrderExcel;
+import com.qs.mp.user.domain.vo.UserDeliverOrderItemVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
+import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -93,8 +101,11 @@ public class ChannelOrderMgrController extends BaseApiController {
     queryWrapper.orderByDesc("t1.order_id");
     List<ChannelOrderVO> channelOrderVOList = channelOrderService.selectChannelOrderVoList(queryWrapper);
     for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
-      channelOrderVO.setItems(channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
-          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId())));
+    	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);
   }
@@ -249,4 +260,125 @@ public class ChannelOrderMgrController extends BaseApiController {
 		}
 		return AjaxResult.success(list);
 	}
+	
+	
+	
+	@Log(title = "提货订单导出", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	@PreAuthorize("@ss.hasPermi('order:channel:export')")
+	public AjaxResult export(@RequestBody ChannelOrderQueryParam queryParam) {
+
+		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.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.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.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);
+	}
 }

+ 57 - 57
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/IndexMgrController.java

@@ -62,14 +62,14 @@ public class IndexMgrController extends BaseApiController {
 		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.gt("t1.`status`", 0);
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//			}
+//		}
 	
 		list = userTicketOrderService.selectIndexPayAmtList(queryWrapper);
 		return  AjaxResult.success(getPayAmtList(list, queryParam));
@@ -185,14 +185,14 @@ public class IndexMgrController extends BaseApiController {
 		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.gt("t1.`status`", 0);
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//			}
+//		}
 	
 		list = userTicketOrderService.selectIndexPayUserCntList(queryWrapper);
 		return  AjaxResult.success(getPayUserList(list, queryParam));
@@ -333,14 +333,14 @@ public class IndexMgrController extends BaseApiController {
 		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.eq("t1.`level`", 0);
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//			}
+//		}
 	
 		list = channelService.selectIndexSiteIncreaseList(queryWrapper);
 		return  AjaxResult.success(getSiteIncreaseList(list, queryParam));
@@ -468,17 +468,17 @@ public class IndexMgrController extends BaseApiController {
 		siteQueryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
 		siteQueryWrapper.eq("t1.`level`", 0);
 		
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-				
-				siteQueryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//				
+//				siteQueryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//			}
+//		}
 	
 		list = userTicketOrderService.selectIndexDailyInfoList(queryWrapper);
 	
@@ -562,19 +562,19 @@ public class IndexMgrController extends BaseApiController {
 		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
 		List<IndexVO> list = new ArrayList<IndexVO>();
 		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
-		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getStartTime());
-		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getEndTime());
+		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.gt("t1.`status`", 0);
 		
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-				
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//				
+//			}
+//		}
 	
 		list = userTicketOrderService.selectIndexTicketBoxTop(queryWrapper);
 		List<Map<String,Object>> mapList = new ArrayList<>();
@@ -605,19 +605,19 @@ public class IndexMgrController extends BaseApiController {
 		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
 		List<IndexVO> list = new ArrayList<IndexVO>();
 		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
-		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getStartTime());
-		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "DATE_FORMAT(t1.created_time, '%Y-%m-%d')", queryParam.getEndTime());
+		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.gt("t1.`status`", 0);
 		
-		Long channelId = SecurityUtils.getLoginUser().getChannelId();
-		if(null != channelId && 0 != channelId) {
-			Channel channel = channelService.getById(channelId);
-			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
-				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
-						.or().eq("t2.channel_no", channel.getChannelNo()));
-				
-			}
-		}
+//		Long channelId = SecurityUtils.getLoginUser().getChannelId();
+//		if(null != channelId && 0 != channelId) {
+//			Channel channel = channelService.getById(channelId);
+//			if(null!=channel && StringUtils.isNotBlank(channel.getChannelNo())) {
+//				queryWrapper.and(wrapper -> wrapper.likeRight("t2.channel_no", channel.getChannelNo())
+//						.or().eq("t2.channel_no", channel.getChannelNo()));
+//				
+//			}
+//		}
 	
 		list = userTicketOrderService.selectIndexTicketSiteTop(queryWrapper);
 		List<Map<String,Object>> mapList = new ArrayList<>();

+ 58 - 20
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java

@@ -89,7 +89,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	@PostMapping("/list")
 	@PreAuthorize("@ss.hasPermi('business:salesite:list')")
-	public TableDataInfo listChannel(@RequestBody Channel channel) {
+	public TableDataInfo listSite(@RequestBody Channel channel) {
 		List<ChannelVO> list = new ArrayList<ChannelVO>();
 		startPage();
 		QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
@@ -113,11 +113,17 @@ public class SaleSiteMgrController extends BaseApiController {
  				}
 			}
 		}
-		List<TicketCntVO>  cntList = new ArrayList<TicketCntVO>();
+		List<TicketCntVO>  qtyCntList = new ArrayList<TicketCntVO>();
+		List<TicketCntVO>  saleCntList = new ArrayList<TicketCntVO>();
 		if(null != channelIds && channelIds.size() > 0) {
-			QueryWrapper<ChannelOrderDetail> ticketCntQueryWrapper = new QueryWrapper<ChannelOrderDetail>();
-			ticketCntQueryWrapper.in("t1.channel_id", channelIds);
-			cntList = ticketService.listTicketCnt(ticketCntQueryWrapper);
+			QueryWrapper<ChannelOrderDetail> ticketQtyCntQueryWrapper = new QueryWrapper<ChannelOrderDetail>();
+			ticketQtyCntQueryWrapper.in("t1.channel_id", channelIds);
+			qtyCntList = ticketService.listTicketQtyCnt(ticketQtyCntQueryWrapper);
+			
+	    	QueryWrapper<UserTicketOrder> ticketSaleCntQueryWrapper = new QueryWrapper<UserTicketOrder>();
+	    	ticketSaleCntQueryWrapper.in("t1.channel_id", channelIds);
+	    	ticketSaleCntQueryWrapper.eq("t1.`status`", 1);
+	    	saleCntList = userTicketOrderService.listTicketSaleCnt(ticketSaleCntQueryWrapper);
 		}
 		
 		if(null != list && list.size() > 0) {
@@ -134,14 +140,21 @@ public class SaleSiteMgrController extends BaseApiController {
 					// channelVO.setSysUser(sysUser);
 					channelVO.setParentsName(getParentsName(channelVO.getChannelNo()));
 					// 统计盲票库存, 销量
-					if(null != cntList && cntList.size() > 0) {
-						List<TicketCntVO> voList =  cntList.stream().filter(item  -> item.getChannelId().equals(channelVO.getChannelId()))
+					if(null != qtyCntList && qtyCntList.size() > 0) {
+						List<TicketCntVO> voList =  qtyCntList.stream().filter(item  -> item.getChannelId().equals(channelVO.getChannelId()))
 				                .collect(Collectors.toList());
 						if(null != voList && voList.size() > 0) {
-							TicketCntVO ticketCnt =  voList.get(0);
-							channelVO.setOffLineQtyCnt(null != ticketCnt?ticketCnt.getOffLineQtyCnt():0);
-							channelVO.setOffLineSaleCnt(null != ticketCnt?ticketCnt.getOffLineSaleCnt():0);
-							channelVO.setOnLineSaleCnt(null != ticketCnt?ticketCnt.getOnLineSaleCnt():0);
+							TicketCntVO ticketQtyCnt =  voList.get(0);
+							channelVO.setOffLineQtyCnt(null != ticketQtyCnt?ticketQtyCnt.getOffLineQtyCnt():0);
+						}
+					}
+					if(null != saleCntList && saleCntList.size() > 0) {
+						List<TicketCntVO> voList =  saleCntList.stream().filter(item  -> item.getChannelId().equals(channelVO.getChannelId()))
+				                .collect(Collectors.toList());
+						if(null != voList && voList.size() > 0) {
+							TicketCntVO ticketSaleCnt =  voList.get(0);
+							channelVO.setOffLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOffLineSaleCnt():0);
+							channelVO.setOnLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOnLineSaleCnt():0);
 						}
 					}
  				}
@@ -181,6 +194,21 @@ public class SaleSiteMgrController extends BaseApiController {
 		return "";
 	}
 
+	/**
+	 * 查询所有渠道列表
+	 *
+	 * @return
+	 */
+	@PostMapping("/listAll")
+	// @PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	public AjaxResult listAllSite() {
+		List<Channel> list = new ArrayList<Channel>();
+		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();
+		queryWrapper.eq(Channel::getLevel, 0);
+		queryWrapper.orderByDesc(Channel::getChannelId);
+		list = channelService.list(queryWrapper);
+		return AjaxResult.success(list);
+	}
 
 	/**
 	 * 新增经销商信息
@@ -191,7 +219,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "新增经销商信息", notes = "经销商端新增经销商")
 	@PostMapping("/create")
 	@PreAuthorize("@ss.hasPermi('business:salesite:add')")
-	public AjaxResult channelCreate(@Validated @RequestBody SaleSiteParam channelParam) {
+	public AjaxResult siteCreate(@Validated @RequestBody SaleSiteParam channelParam) {
 		if (channelParam.getChannelId() != null && channelParam.getChannelId() != 0) {
 			return AjaxResult.error("该经销商已存在");
 		}
@@ -246,7 +274,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "编辑经销商信息", notes = "经销商端编辑经销商")
 	@PostMapping("/update")
 	@PreAuthorize("@ss.hasPermi('business:salesite:edit')")
-	public AjaxResult channelUpdate(@Validated @RequestBody ChannelParam channelParam) {
+	public AjaxResult siteUpdate(@Validated @RequestBody ChannelParam channelParam) {
 		if (null == channelParam || null == channelParam.getChannelId()) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
@@ -309,7 +337,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "停用、启用经销商信息", notes = "经销商管理编辑经销商")
 	@PostMapping("/status")
 	@PreAuthorize("@ss.hasPermi('business:salesite:edit')")
-	public AjaxResult channelStatus(@RequestBody JSONObject jsonObject) {
+	public AjaxResult siteStatus(@RequestBody JSONObject jsonObject) {
 		String channelId = jsonObject.containsKey("channelId")?jsonObject.get("channelId").toString():"";
 		String status = jsonObject.containsKey("status")?jsonObject.get("status").toString():"";
 		if (null == jsonObject || StringUtils.isBlank(channelId)
@@ -341,7 +369,7 @@ public class SaleSiteMgrController extends BaseApiController {
 	@ApiOperation(value = "查询经销商详情信息", notes = "经销商管理编辑子经销商查询经销商详情")
 	@PostMapping("/detail")
 	@PreAuthorize("@ss.hasPermi('business:salesite:query')")
-	public AjaxResult getChannelDetail(@RequestBody JSONObject jsonObject) {
+	public AjaxResult getSiteDetail(@RequestBody JSONObject jsonObject) {
 		String channelId = (null != jsonObject && jsonObject.containsKey("channelId"))?jsonObject.getString("channelId"):"";
 		if (StringUtils.isBlank(channelId)) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
@@ -360,16 +388,26 @@ public class SaleSiteMgrController extends BaseApiController {
 		}
 	    // 查询经销商销售额、佣金收入、订单数等
 	    ChannelOperDataVO channelOperDataVO = channelService.getChannelTotalOperData(channelVO.getChannelNo());
-		// LambdaQueryWrapper<ChannelOrder> queryWrapper = new LambdaQueryWrapper<ChannelOrder>();
-		// queryWrapper.eq(ChannelOrder::getChannelId, channelId);
-//		int orderCnt = channelOrderService.count(queryWrapper);
-//		channelOperDataVO.setOrderCnt(orderCnt);
 		
 		// 盲票销售张数
 		int ticketSaleCnt = userTicketOrderService.getSaleSiteTotalTicketNumCnt(channelVO.getChannelId());
 		channelOperDataVO.setTicketSaleCnt(ticketSaleCnt);
-		
 	    channelVO.setOperData(channelOperDataVO);
+	    
+        if(null != channelVO && null != channelVO.getChannelId()) {
+	    	LambdaQueryWrapper<ChannelUserRel> userCntQueryWrapper = new LambdaQueryWrapper<ChannelUserRel>();
+			userCntQueryWrapper.eq(ChannelUserRel::getChannelId, channelVO.getChannelId());
+			int userCnt = channelUserRelService.count(userCntQueryWrapper);
+			channelVO.setUserCnt(userCnt);
+	    	
+	    	int ticketQtyCnt = ticketService.getTicketQtyCnt(channelVO.getChannelId());
+	    	channelVO.setOffLineQtyCnt(ticketQtyCnt);
+	    	
+	    	TicketCntVO ticketCnt = userTicketOrderService.getTicketSaleCnt(channelVO.getChannelId());
+			channelVO.setOffLineSaleCnt(null != ticketCnt?ticketCnt.getOffLineSaleCnt():0);
+			channelVO.setOnLineSaleCnt(null != ticketCnt?ticketCnt.getOnLineSaleCnt():0);
+	    }
+	    
 		return AjaxResult.success(channelVO);
 	}
 

+ 82 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelController.java

@@ -3,8 +3,12 @@ package com.qs.mp.web.controller.api.channel;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
+import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.ChannelCommission;
+import com.qs.mp.channel.domain.ChannelOrderDetail;
+import com.qs.mp.channel.domain.ChannelUserRel;
 import com.qs.mp.channel.domain.param.ChannelParam;
 import com.qs.mp.channel.domain.param.SiteQueryParam;
 import com.qs.mp.channel.domain.param.VerifyParam;
@@ -23,6 +27,8 @@ import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.exception.ServiceException;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.system.service.ISysUserService;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.service.IUserTicketOrderService;
 import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
@@ -36,6 +42,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -70,6 +77,12 @@ public class ChannelController extends BaseApiController {
 
     @Autowired
     private ISysUserService userService;
+    
+	@Autowired
+	private IUserTicketOrderService userTicketOrderService;
+    
+	@Autowired
+	private ITicketService ticketService;
 
 	@Autowired
 	private MapperFacade mapperFacade;
@@ -341,6 +354,60 @@ public class ChannelController extends BaseApiController {
 				queryWrapper.eq("t1.certify_status", siteParam.getCertifyStatus());
 			}
 			list = channelService.selectChannelVoList(queryWrapper);
+			
+			List<Long> channelIds = new ArrayList<Long>();
+			if(null != list && list.size() > 0) {
+				for(ChannelVO channelVO : list) {
+					if(null != channelVO && null != channelVO.getChannelId()
+							&& StringUtils.isNotBlank(channelVO.getChannelNo())) {
+						channelIds.add(channelVO.getChannelId());
+	 				}
+				}
+			}
+			List<TicketCntVO>  qtyCntList = new ArrayList<TicketCntVO>();
+			List<TicketCntVO>  saleCntList = new ArrayList<TicketCntVO>();
+			if(null != channelIds && channelIds.size() > 0) {
+				QueryWrapper<ChannelOrderDetail> ticketQtyCntQueryWrapper = new QueryWrapper<ChannelOrderDetail>();
+				ticketQtyCntQueryWrapper.in("t1.channel_id", channelIds);
+				qtyCntList = ticketService.listTicketQtyCnt(ticketQtyCntQueryWrapper);
+				
+		    	QueryWrapper<UserTicketOrder> ticketSaleCntQueryWrapper = new QueryWrapper<UserTicketOrder>();
+		    	ticketSaleCntQueryWrapper.in("t1.channel_id", channelIds);
+		    	ticketSaleCntQueryWrapper.eq("t1.`status`", 1);
+		    	saleCntList = userTicketOrderService.listTicketSaleCnt(ticketSaleCntQueryWrapper);
+			}
+			
+			if(null != list && list.size() > 0) {
+				for(ChannelVO channelVO : list) {
+					if(null != channelVO && null != channelVO.getChannelId()
+							&& StringUtils.isNotBlank(channelVO.getChannelNo())) {
+						// int siteCnt = channelService.getChannelSiteCnt(channelVO.getChannelNo());
+						LambdaQueryWrapper<ChannelUserRel> userCntQueryWrapper = new LambdaQueryWrapper<ChannelUserRel>();
+						userCntQueryWrapper.eq(ChannelUserRel::getChannelId, channelVO.getChannelId());
+						int userCnt = channelUserRelService.count(userCntQueryWrapper);
+						channelVO.setUserCnt(userCnt);
+						// 统计盲票库存, 销量
+						if(null != qtyCntList && qtyCntList.size() > 0) {
+							List<TicketCntVO> voList =  qtyCntList.stream().filter(item  -> item.getChannelId().equals(channelVO.getChannelId()))
+					                .collect(Collectors.toList());
+							if(null != voList && voList.size() > 0) {
+								TicketCntVO ticketQtyCnt =  voList.get(0);
+								channelVO.setOffLineQtyCnt(null != ticketQtyCnt?ticketQtyCnt.getOffLineQtyCnt():0);
+							}
+						}
+						if(null != saleCntList && saleCntList.size() > 0) {
+							List<TicketCntVO> voList =  saleCntList.stream().filter(item  -> item.getChannelId().equals(channelVO.getChannelId()))
+					                .collect(Collectors.toList());
+							if(null != voList && voList.size() > 0) {
+								TicketCntVO ticketSaleCnt =  voList.get(0);
+								channelVO.setOffLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOffLineSaleCnt():0);
+								channelVO.setOnLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOnLineSaleCnt():0);
+							}
+						}
+	 				}
+				}
+			}
+			
 		}
 		return getDataTable(list);
 	}
@@ -369,6 +436,21 @@ public class ChannelController extends BaseApiController {
 	    // 查询今日的销售额、佣金收入、新增用户数
 	    ChannelOperDataVO channelOperDataVO = channelService.getChannelOperData(channelVO.getChannelNo(), 1);
 	    channelVO.setOperData(channelOperDataVO);
+	    if(null != channelVO && null != channelVO.getChannelId()) {
+	    	
+	    	LambdaQueryWrapper<ChannelUserRel> userCntQueryWrapper = new LambdaQueryWrapper<ChannelUserRel>();
+			userCntQueryWrapper.eq(ChannelUserRel::getChannelId, channelVO.getChannelId());
+			int userCnt = channelUserRelService.count(userCntQueryWrapper);
+			channelVO.setUserCnt(userCnt);
+	    	
+	    	int ticketQtyCnt = ticketService.getTicketQtyCnt(channelVO.getChannelId());
+	    	channelVO.setOffLineQtyCnt(ticketQtyCnt);
+	    	
+	    	TicketCntVO ticketSaleCnt = userTicketOrderService.getTicketSaleCnt(channelVO.getChannelId());
+			channelVO.setOffLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOffLineSaleCnt():0);
+			channelVO.setOnLineSaleCnt(null != ticketSaleCnt?ticketSaleCnt.getOnLineSaleCnt():0);
+	    }
+	   
 		return AjaxResult.success(channelVO);
 	}
 

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

@@ -115,8 +115,11 @@ public class ChannelOrderController extends BaseApiController {
             .orderByDesc(ChannelOrder::getCreatedTime));
     List<ChannelOrderVO> channelOrderVOList = mapperFacade.mapAsList(channelOrders, ChannelOrderVO.class);
     for (ChannelOrderVO channelOrderVO : channelOrderVOList) {
-      channelOrderVO.setItems(channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
-          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId())));
+    	List<ChannelOrderItem> itemList = channelOrderItemService.list(new LambdaQueryWrapper<ChannelOrderItem>()
+     	          .eq(ChannelOrderItem::getOrderId, channelOrderVO.getOrderId()));
+
+     	 List<ChannelOrderItemVO> itemVOList = mapperFacade.mapAsList(itemList, ChannelOrderItemVO.class);
+         channelOrderVO.setItems(itemVOList);
     }
     TableDataInfo rspData = getDataTable(channelOrders);
     rspData.setRows(channelOrderVOList);

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

@@ -3,6 +3,7 @@ package com.qs.mp.web.controller.api.user;
 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.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.TicketBox;
@@ -25,21 +26,25 @@ import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
 import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.common.utils.StringUtils;
+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.IUserHitPrizeService;
 import com.qs.mp.user.service.IUserTicketOrderItemService;
 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.HashMap;
 import java.util.List;
+import java.util.Map;
+
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
 import org.springframework.beans.factory.annotation.Autowired;
-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 org.springframework.web.bind.annotation.*;
 
 
 @RestController
@@ -231,4 +236,50 @@ public class UserTicketController extends BaseApiController {
     return AjaxResult.success();
   }
 
+  @GetMapping("/ticket/hitPrizeBarrage")
+  @ApiOperation(value = "中奖弹幕", notes = "获取最近中奖的 20-22 条信息")
+  public AjaxResult hitPrizeBarrage() {
+
+    // 获取用户 id
+    Long userId = SecurityUtils.getLoginUser().getUserId();
+
+    // 弹幕列表
+    List<TicketHitPrizeBarrageVO> listOne = new ArrayList<>();
+    List<TicketHitPrizeBarrageVO> listTwo = new ArrayList<>();
+
+    // 获取用户当天中奖的 2 条弹幕
+    if (userId != null) {
+      List<TicketHitPrizeBarrageVO> ticketHitPrizeBarrageVOList = userHitPrizeService.hitPrizeBarrageByUserId(userId);
+      if (CollectionUtils.isNotEmpty(ticketHitPrizeBarrageVOList)) {
+        for (int i = 0; i < ticketHitPrizeBarrageVOList.size(); i++) {
+          if (i % 2 == 0) {
+            listOne.add(ticketHitPrizeBarrageVOList.get(i));
+          }else {
+            listTwo.add(ticketHitPrizeBarrageVOList.get(i));
+          }
+        }
+      }
+    }
+    // 获取除该用户外,最近中奖的 20 条弹幕信息
+    List<TicketHitPrizeBarrageVO> ticketHitPrizeBarrageVOList = userHitPrizeService.hitPrizeBarrage(userId);
+
+    for (int i = 0; i < ticketHitPrizeBarrageVOList.size(); i++) {
+      if (i % 2 == 0) {
+        listOne.add(ticketHitPrizeBarrageVOList.get(i));
+      }else {
+        listTwo.add(ticketHitPrizeBarrageVOList.get(i));
+      }
+    }
+    Map<String,List<TicketHitPrizeBarrageVO>> ticketHitPrizeBarrageMap = new HashMap<>();
+    ticketHitPrizeBarrageMap.put("listOne",listOne);
+    ticketHitPrizeBarrageMap.put("listTwo",listTwo);
+
+    return AjaxResult.success(ticketHitPrizeBarrageMap);
+  }
+
+
+
+
+
+
 }

+ 4 - 0
mp-common/src/main/java/com/qs/mp/common/enums/ChannelOrderStatusEnum.java

@@ -30,6 +30,10 @@ public enum ChannelOrderStatusEnum implements IEnum<Integer> {
   public Integer getValue() {
     return value;
   }
+  
+  public String getDesc() {
+	return desc;
+  }
 
   /**
    * 重写toString,单个转化成json

+ 2 - 2
mp-service/src/main/java/com/qs/mp/admin/mapper/TicketMapper.java

@@ -25,12 +25,12 @@ public interface TicketMapper extends BaseMapper<Ticket> {
    * @param channelId
    * @return
    */
-  TicketCntVO getTicketCnt(@Param("channelId") Long channelId);
+  int getTicketQtyCnt(@Param("channelId") Long channelId);
   
   /**
    * 查询统计数据
    * @param queryWrapper
    * @return
    */
-  List<TicketCntVO> listTicketCnt(@Param(Constants.WRAPPER) Wrapper<ChannelOrderDetail> queryWrapper);
+  List<TicketCntVO> listTicketQtyCnt(@Param(Constants.WRAPPER) Wrapper<ChannelOrderDetail> queryWrapper);
 }

+ 2 - 2
mp-service/src/main/java/com/qs/mp/admin/service/ITicketService.java

@@ -49,12 +49,12 @@ public interface ITicketService extends IService<Ticket> {
    * @param channelId
    * @return
    */
-  TicketCntVO getTicketCnt(Long channelId);
+  int getTicketQtyCnt(Long channelId);
   
   /**
    * 查询统计数据
    * @param queryWrapper
    * @return
    */
-  List<TicketCntVO> listTicketCnt(Wrapper<ChannelOrderDetail> queryWrapper);
+  List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper);
 }

+ 4 - 4
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketServiceImpl.java

@@ -80,13 +80,13 @@ public class TicketServiceImpl extends ServiceImpl<TicketMapper, Ticket> impleme
 	}
 
 	@Override
-	public TicketCntVO getTicketCnt(Long channelId) {
-		return getBaseMapper().getTicketCnt(channelId);
+	public int getTicketQtyCnt(Long channelId) {
+		return getBaseMapper().getTicketQtyCnt(channelId);
 	}
 
 	@Override
-	public List<TicketCntVO> listTicketCnt(Wrapper<ChannelOrderDetail> queryWrapper) {
-		return getBaseMapper().listTicketCnt(queryWrapper);
+	public List<TicketCntVO> listTicketQtyCnt(Wrapper<ChannelOrderDetail> queryWrapper) {
+		return getBaseMapper().listTicketQtyCnt(queryWrapper);
 	}
 	
 }

+ 66 - 0
mp-service/src/main/java/com/qs/mp/channel/domain/excel/ChannelOrderExcel.java

@@ -0,0 +1,66 @@
+package com.qs.mp.channel.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @author zhongcp
+ * @Date 2022/3/3
+ */
+@Data
+public class ChannelOrderExcel {
+
+	@Excel(name = "盲票组名称")
+	private String title;
+
+	@Excel(name = "盲票包数量")
+	private Integer orderNum;
+
+	@Excel(name = "盲票序列号范围")
+	private String snRrange;
+
+	@Excel(name = "下单时间")
+	private Date createdTime;
+	
+	/**
+	 * 订单状态 >=1 已发货
+	 */
+	@Excel(name = "发货状态")
+	private String itemStatus;
+	
+
+	@Excel(name = "订单编号")
+	private String orderId;
+	
+	/**
+	 * 订单状态
+	 */
+	@Excel(name = "订单状态")
+	private String status;
+	
+	@Excel(name = "经销商名称")
+	private String channelName;
+	
+	@Excel(name = "经销商上级渠道名称")
+	private String parentName;  // 上级渠道名称
+
+	/**
+	 * 收货人
+	 */
+	@Excel(name = "收货人")
+	private String receiver;
+
+	/**
+	 * 收货人电话
+	 */
+	@Excel(name = "联系电话")
+	private String tel;
+
+	/**
+	 * (省-市-区-详细地址)
+	 */
+	@Excel(name = "收货地址")
+	private String address;
+
+}

+ 1 - 1
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelOrderVO.java

@@ -12,7 +12,7 @@ import lombok.Data;
 @Data
 public class ChannelOrderVO extends ChannelOrder {
 
-  private List<ChannelOrderItem> items;
+  private List<ChannelOrderItemVO> items;
 
   private String channelName;  // 经销商名称
   

+ 1 - 3
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java

@@ -1,8 +1,6 @@
 package com.qs.mp.channel.domain.vo;
 
 import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.system.domain.SysUser;
-
 import lombok.Data;
 
 /**
@@ -12,7 +10,7 @@ import lombok.Data;
 @Data
 public class ChannelVO extends Channel {
   long siteCnt;   // 经销网点数
-  long userCnt;   // 经销用户数
+  long userCnt;   // 用户数
   
   String parentName; // 上级渠道名称
   

+ 9 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelOrderMapper.java

@@ -26,4 +26,13 @@ public interface ChannelOrderMapper extends BaseMapper<ChannelOrder> {
 	 * @return
 	 */
 	public List<ChannelOrderVO> selectChannelOrderVoList(@Param(Constants.WRAPPER) Wrapper<ChannelOrder> wrapper);
+	
+	
+	/**
+	 * 查询满足筛选条件的经销商订单数量
+	 *
+	 * @param wrapper
+	 * @return
+	 */
+	int selectChannelOrderCount(@Param(Constants.WRAPPER) Wrapper<ChannelOrder> wrapper);
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelOrderService.java

@@ -65,4 +65,13 @@ public interface IChannelOrderService extends IService<ChannelOrder> {
 	 */
 	public List<ChannelOrderVO> selectChannelOrderVoList(Wrapper<ChannelOrder> wrapper);
 	
+	
+	/**
+	 * 查询满足筛选条件的经销商订单数量
+	 *
+	 * @param wrapper
+	 * @return
+	 */
+	int selectChannelOrderCount(Wrapper<ChannelOrder> wrapper);
+	
 }

+ 7 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -282,4 +282,11 @@ public class ChannelOrderServiceImpl extends
 	public List<ChannelOrderVO> selectChannelOrderVoList(Wrapper<ChannelOrder> wrapper) {
 		return getBaseMapper().selectChannelOrderVoList(wrapper);
 	}
+
+	@Override
+	public int selectChannelOrderCount(Wrapper<ChannelOrder> wrapper) {
+		return getBaseMapper().selectChannelOrderCount(wrapper);
+	}
+	
+	
 }

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

@@ -0,0 +1,32 @@
+package com.qs.mp.user.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.user.domain.UserDeliverOrderItem;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+/**
+ * 盲票中奖弹幕 VO
+ *
+ * @author Cup
+ * @date 2022/4/13
+ */
+@ApiModel("盲票中奖弹幕 VO")
+@Data
+public class TicketHitPrizeBarrageVO {
+
+    @ApiModelProperty("用户名")
+    private String nickName;
+
+    @ApiModelProperty("用户头像")
+    private String avatar;
+
+    @ApiModelProperty("奖品信息")
+    private String prizeInfo;
+
+
+}

+ 20 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserHitPrizeMapper.java

@@ -2,6 +2,11 @@ package com.qs.mp.user.mapper;
 
 import com.qs.mp.user.domain.UserHitPrize;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +15,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserHitPrizeMapper extends BaseMapper<UserHitPrize> {
 
+    /**
+     * 获取除该用户外的近 20 条中奖弹幕
+     *
+     * @param userId 用户 id
+     * @return
+     */
+    List<TicketHitPrizeBarrageVO> selectTicketHitPrizeBarrageNotByUserId(@Param("userId") Long userId);
+
+    /**
+     * 获取用户当天中奖的 2 条弹幕
+     *
+     * @param userId
+     * @return
+     */
+    List<TicketHitPrizeBarrageVO> selectTicketHitPrizeBarrageByUserId(@Param("userId") Long userId, @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
 }

+ 15 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java

@@ -1,6 +1,7 @@
 package com.qs.mp.user.mapper;
 
 import com.qs.mp.admin.domain.vo.IndexVO;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
 
@@ -68,4 +69,18 @@ public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 	   */
 	  int getSaleSiteTotalTicketNumCnt(@Param("channelId") Long channelId);
 	  
+	  /**
+	    * 统计经销商盲票销量,线下和线上
+	    * @param channelId
+	    * @return
+	    */
+	   TicketCntVO getTicketSaleCnt(@Param("channelId") Long channelId);
+	   
+	   /**
+	    * 查询统计经销商盲票销量数据,线下和线上
+	    * @param queryWrapper
+	    * @return
+	    */
+	   List<TicketCntVO> listTicketSaleCnt(@Param(Constants.WRAPPER) Wrapper<UserTicketOrder> queryWrapper);
+	  
 }

+ 16 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserHitPrizeService.java

@@ -5,6 +5,8 @@ import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.vo.TicketAwardsPrizeVO;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
+
 import java.util.List;
 
 /**
@@ -30,4 +32,18 @@ public interface IUserHitPrizeService extends IService<UserHitPrize> {
    * @return
    */
   void cashPrize(Ticket ticket, Long userId, String awardsId, String prizeId);
+
+  /**
+   * 获取除该用户外的近 20 条中奖弹幕
+   * @param userId  用户 id
+   * @return
+   */
+  List<TicketHitPrizeBarrageVO> hitPrizeBarrage(Long userId);
+
+  /**
+   * 获取用户当天中奖的 2 条弹幕
+   * @param userId  用户 id
+   * @return
+   */
+  List<TicketHitPrizeBarrageVO> hitPrizeBarrageByUserId(Long userId);
 }

+ 16 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java

@@ -1,6 +1,8 @@
 package com.qs.mp.user.service;
 
 import com.qs.mp.admin.domain.vo.IndexVO;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
+import com.qs.mp.channel.domain.ChannelOrderDetail;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
@@ -112,5 +114,19 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
   * @return
    */
    int getSaleSiteTotalTicketNumCnt(Long channelId);
+   
+   /**
+    * 统计经销商盲票销量线下和线上
+    * @param channelId
+    * @return
+    */
+   TicketCntVO getTicketSaleCnt(Long channelId);
+   
+   /**
+    * 查询统计经销商盲票销量数据线下和线上
+    * @param queryWrapper
+    * @return
+    */
+   List<TicketCntVO> listTicketSaleCnt(Wrapper<UserTicketOrder> queryWrapper);
   
 }

+ 95 - 80
mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java

@@ -28,6 +28,7 @@ import com.qs.mp.user.domain.UserCouponChannel;
 import com.qs.mp.user.domain.UserHitPrize;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.qs.mp.user.domain.UserTicketOrderItem;
+import com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO;
 import com.qs.mp.user.mapper.UserHitPrizeMapper;
 import com.qs.mp.user.service.IUserCoinService;
 import com.qs.mp.user.service.IUserCouponChannelService;
@@ -36,9 +37,13 @@ import com.qs.mp.user.service.IUserHitPrizeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.user.service.IUserPrizeStorageService;
 import com.qs.mp.user.service.IUserTicketOrderItemService;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+
 import org.codehaus.janino.IClass.IField;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,102 +64,112 @@ import org.springframework.util.CollectionUtils;
 @Service
 public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, UserHitPrize> implements IUserHitPrizeService {
 
-  protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
 
-  @Autowired
-  private IUserTicketOrderItemService userTicketOrderItemService;
+    @Autowired
+    private IUserTicketOrderItemService userTicketOrderItemService;
 
-  @Autowired
-  private ITicketAwardsPrizeService ticketAwardsPrizeService;
+    @Autowired
+    private ITicketAwardsPrizeService ticketAwardsPrizeService;
 
-  @Autowired
-  private IUserPrizeStorageService userPrizeStorageService;
+    @Autowired
+    private IUserPrizeStorageService userPrizeStorageService;
 
-  @Autowired
-  private IUserCoinService userCoinService;
+    @Autowired
+    private IUserCoinService userCoinService;
 
-  @Autowired
-  private ICouponService couponService;
+    @Autowired
+    private ICouponService couponService;
 
-  @Autowired
-  private ITicketAwardsService ticketAwardsService;
+    @Autowired
+    private ITicketAwardsService ticketAwardsService;
 
-  @Autowired
-  private ITicketService ticketService;
+    @Autowired
+    private ITicketService ticketService;
 
-  @Autowired
-  private BizIdGenerator bizIdGenerator;
+    @Autowired
+    private BizIdGenerator bizIdGenerator;
 
-  @Override
-  public List<TicketAwardsPrize> listPrize(Ticket ticket, Long userId) {
-    UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
-    UserTicketOrderItem orderItem = userTicketOrderItemService.queryFinishedOrderItem(userId, ticket.getTicketId());
-    if (null == orderItem) {
-      LogUtil.error(logger, "查询盲票的奖品信息,盲票订单不存在。ticketId:{0}, userId:{1}",
-          new Object[]{ticket.getTicketId(), userId});
-      throw new ServiceException("盲票订单不存在");
-    }
+    @Override
+    public List<TicketAwardsPrize> listPrize(Ticket ticket, Long userId) {
+        UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
+        UserTicketOrderItem orderItem = userTicketOrderItemService.queryFinishedOrderItem(userId, ticket.getTicketId());
+        if (null == orderItem) {
+            LogUtil.error(logger, "查询盲票的奖品信息,盲票订单不存在。ticketId:{0}, userId:{1}",
+                    new Object[]{ticket.getTicketId(), userId});
+            throw new ServiceException("盲票订单不存在");
+        }
 
-    if (null == userHitPrize) {
-      List<TicketDrawNumDTO> drawNumDTOList = JSONObject.parseArray(ticket.getDrawNum(), TicketDrawNumDTO.class);
-      for (TicketDrawNumDTO ticketDrawNumDTO : drawNumDTOList) {
-        if (ticketDrawNumDTO.getNum() == ticket.getPlainLuckyNum()) {
-          userHitPrize = new UserHitPrize();
-          userHitPrize.setId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
-          userHitPrize.setUserId(userId);
-          userHitPrize.setOrderId(orderItem.getOrderId());
-          userHitPrize.setOrderItemId(orderItem.getItemId());
-          userHitPrize.setTicketId(ticket.getTicketId());
-          TicketAwards ticketAwards = ticketAwardsService.getOne(new LambdaQueryWrapper<TicketAwards>()
-              .eq(TicketAwards::getBoxId, ticket.getBoxId()).eq(TicketAwards::getName, ticketDrawNumDTO.getName()));
-          userHitPrize.setAwardsId(ticketAwards.getAwardsId());
-          // 奖品ID等用户选择后填入
+        if (null == userHitPrize) {
+            List<TicketDrawNumDTO> drawNumDTOList = JSONObject.parseArray(ticket.getDrawNum(), TicketDrawNumDTO.class);
+            for (TicketDrawNumDTO ticketDrawNumDTO : drawNumDTOList) {
+                if (ticketDrawNumDTO.getNum() == ticket.getPlainLuckyNum()) {
+                    userHitPrize = new UserHitPrize();
+                    userHitPrize.setId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
+                    userHitPrize.setUserId(userId);
+                    userHitPrize.setOrderId(orderItem.getOrderId());
+                    userHitPrize.setOrderItemId(orderItem.getItemId());
+                    userHitPrize.setTicketId(ticket.getTicketId());
+                    TicketAwards ticketAwards = ticketAwardsService.getOne(new LambdaQueryWrapper<TicketAwards>()
+                            .eq(TicketAwards::getBoxId, ticket.getBoxId()).eq(TicketAwards::getName, ticketDrawNumDTO.getName()));
+                    userHitPrize.setAwardsId(ticketAwards.getAwardsId());
+                    // 奖品ID等用户选择后填入
 //          userHitPrize.setPrizeId();
-          save(userHitPrize);
+                    save(userHitPrize);
+                }
+            }
         }
-      }
-    }
-    List<TicketAwardsPrize> awardsPrizes = ticketAwardsPrizeService.list(new LambdaQueryWrapper<TicketAwardsPrize>()
-        .eq(TicketAwardsPrize::getAwardsId, userHitPrize.getAwardsId()).orderByDesc(TicketAwardsPrize::getRemainQty));
-    return awardsPrizes;
-  }
-
-  @Override
-  @Transactional
-  public void cashPrize(Ticket ticket, Long userId, String awardsId, String prizeId) {
-    // 更新奖品已兑奖数量
-    TicketAwardsPrize ticketAwardsPrize = ticketAwardsPrizeService.getById(prizeId);
-    if (ticketAwardsPrize.getRemainQty() <= 0) {
-      throw new ServiceException("奖品已兑完,请重新选择");
-    }
-    // 乐观锁
-    ticketAwardsPrizeService.update(new LambdaUpdateWrapper<TicketAwardsPrize>().set(TicketAwardsPrize::getCashedQty, ticketAwardsPrize.getCashedQty() + 1)
-        .set(TicketAwardsPrize::getRemainQty, ticketAwardsPrize.getRemainQty() - 1)
-        .eq(TicketAwardsPrize::getPrizeId, prizeId).eq(TicketAwardsPrize::getCashedQty, ticketAwardsPrize.getCashedQty()));
-
-    // 保存奖品到中奖记录中
-    UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
-    if (StringUtils.isNotBlank(userHitPrize.getPrizeId())) {
-      throw new ServiceException("盲票已兑奖");
-    }
-    userHitPrize.setPrizeId(prizeId);
-    updateById(userHitPrize);
-
-    // 放入仓库
-    if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COIN) {
-      userCoinService.produce(userId, ticketAwardsPrize.getValue(), userHitPrize.getId());
-    } else if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COUPON) {
-      couponService.distribute(ticket, userId, ticketAwardsPrize.getRefId());
-    } else {
-      userPrizeStorageService.takeInStorage(userId, ticketAwardsPrize, PrizeStorageInTypeEnum.TICKET_CASHED, userHitPrize.getId());
+        List<TicketAwardsPrize> awardsPrizes = ticketAwardsPrizeService.list(new LambdaQueryWrapper<TicketAwardsPrize>()
+                .eq(TicketAwardsPrize::getAwardsId, userHitPrize.getAwardsId()).orderByDesc(TicketAwardsPrize::getRemainQty));
+        return awardsPrizes;
     }
 
-    boolean rtn = ticketService.update(new LambdaUpdateWrapper<Ticket>().set(Ticket::getStatus, TicketStatusEnum.CASHED)
-        .eq(Ticket::getTicketId, ticket.getTicketId()).eq(Ticket::getStatus, TicketStatusEnum.ACTIVATED));
-    Assert.isTrue(rtn, "兑奖后更新盲票状态失败。ticketId:" + ticket.getTicketId());
-  }
+    @Override
+    @Transactional
+    public void cashPrize(Ticket ticket, Long userId, String awardsId, String prizeId) {
+        // 更新奖品已兑奖数量
+        TicketAwardsPrize ticketAwardsPrize = ticketAwardsPrizeService.getById(prizeId);
+        if (ticketAwardsPrize.getRemainQty() <= 0) {
+            throw new ServiceException("奖品已兑完,请重新选择");
+        }
+        // 乐观锁
+        ticketAwardsPrizeService.update(new LambdaUpdateWrapper<TicketAwardsPrize>().set(TicketAwardsPrize::getCashedQty, ticketAwardsPrize.getCashedQty() + 1)
+                .set(TicketAwardsPrize::getRemainQty, ticketAwardsPrize.getRemainQty() - 1)
+                .eq(TicketAwardsPrize::getPrizeId, prizeId).eq(TicketAwardsPrize::getCashedQty, ticketAwardsPrize.getCashedQty()));
+
+        // 保存奖品到中奖记录中
+        UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
+        if (StringUtils.isNotBlank(userHitPrize.getPrizeId())) {
+            throw new ServiceException("盲票已兑奖");
+        }
+        userHitPrize.setPrizeId(prizeId);
+        updateById(userHitPrize);
+
+        // 放入仓库
+        if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COIN) {
+            userCoinService.produce(userId, ticketAwardsPrize.getValue(), userHitPrize.getId());
+        } else if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COUPON) {
+            couponService.distribute(ticket, userId, ticketAwardsPrize.getRefId());
+        } else {
+            userPrizeStorageService.takeInStorage(userId, ticketAwardsPrize, PrizeStorageInTypeEnum.TICKET_CASHED, userHitPrize.getId());
+        }
 
+        boolean rtn = ticketService.update(new LambdaUpdateWrapper<Ticket>().set(Ticket::getStatus, TicketStatusEnum.CASHED)
+                .eq(Ticket::getTicketId, ticket.getTicketId()).eq(Ticket::getStatus, TicketStatusEnum.ACTIVATED));
+        Assert.isTrue(rtn, "兑奖后更新盲票状态失败。ticketId:" + ticket.getTicketId());
+    }
 
 
+    @Override
+    public List<TicketHitPrizeBarrageVO> hitPrizeBarrage(Long userId) {
+        return this.getBaseMapper().selectTicketHitPrizeBarrageNotByUserId(userId);
+    }
+
+    @Override
+    public List<TicketHitPrizeBarrageVO> hitPrizeBarrageByUserId(Long userId) {
+        LocalDateTime startTime = LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN);
+        LocalDateTime endTime = LocalDateTime.now().withNano(0);
+        return this.getBaseMapper().selectTicketHitPrizeBarrageByUserId(userId, startTime, endTime);
+    }
 
 }

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

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.domain.vo.IndexVO;
+import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.service.ITicketBoxService;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
@@ -507,4 +508,16 @@ public class UserTicketOrderServiceImpl extends
 	public int getSaleSiteTotalTicketNumCnt(Long channelId) {
 		return getBaseMapper().getSaleSiteTotalTicketNumCnt(channelId);
 	}
+
+	@Override
+	public TicketCntVO getTicketSaleCnt(Long channelId) {
+		return getBaseMapper().getTicketSaleCnt(channelId);
+	}
+
+	@Override
+	public List<TicketCntVO> listTicketSaleCnt(Wrapper<UserTicketOrder> queryWrapper) {
+		return getBaseMapper().listTicketSaleCnt(queryWrapper);
+	}
+	
+	
 }

+ 2 - 6
mp-service/src/main/resources/mapper/admin/TicketMapper.xml

@@ -44,10 +44,8 @@
 
     </select>
     
-    <select id="getTicketCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
+    <select id="getTicketQtyCnt" resultType="integer">
        select
-		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'online') THEN 1 ELSE 0 END ) AS onLineSaleCnt,
-		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineSaleCnt,
 		 SUM( CASE WHEN (t2.`status` = 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineQtyCnt
 		from mp_channel_order_detail t1
 		left join mp_ticket t2 on t1.pkg_id = t2.pkg_id
@@ -55,11 +53,9 @@
 		where t1.channel_id = #{channelId};
     </select>
     
-     <select id="listTicketCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
+     <select id="listTicketQtyCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
        select
          t1.channel_id channelId,
-		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'online') THEN 1 ELSE 0 END ) AS onLineSaleCnt,
-		 SUM( CASE WHEN (t2.`status` != 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineSaleCnt,
 		 SUM( CASE WHEN (t2.`status` = 1 and t3.type = 'offline') THEN 1 ELSE 0 END ) AS offLineQtyCnt
 		from mp_channel_order_detail t1
 		left join mp_ticket t2 on t1.pkg_id = t2.pkg_id

+ 11 - 1
mp-service/src/main/resources/mapper/channel/ChannelOrderMapper.xml

@@ -32,7 +32,7 @@
         order_id, channel_id, title, order_amt, discount_amt, freight_amt, pay_amt, status, pkg_num, memo, receiver, tel, province, city, area, address, delivery_id, delivery_flow_id, delivery_time, created_time, updated_time
     </sql>
     
-    <!-- 查询用户提货订单列表 -->
+    <!-- 查询经销商订单列表 -->
     <select id="selectChannelOrderVoList" resultType="com.qs.mp.channel.domain.vo.ChannelOrderVO">
 		select DISTINCT t1.* , t2.name channelName, t3.name parentName
 		from mp_channel_order t1
@@ -40,5 +40,15 @@
 		left join mp_channel t3 on t2.parent_id = t3.channel_id
 		${ew.customSqlSegment}
 	</select>
+	
+	
+	<!-- 查询经销商订单数量 -->
+    <select id="selectChannelOrderCount" resultType="integer">
+		select count(DISTINCT t1.order_id) 
+		from mp_channel_order t1
+		left join mp_channel t2 on t1.channel_id = t2.channel_id
+		left join mp_channel t3 on t2.parent_id = t3.channel_id
+		${ew.customSqlSegment}
+	</select>
 
 </mapper>

+ 26 - 0
mp-service/src/main/resources/mapper/user/UserHitPrizeMapper.xml

@@ -20,4 +20,30 @@
         id, user_id, order_id, order_item_id, ticket_id, awards_id, prize_id, created_time, updated_time
     </sql>
 
+    <select id="selectTicketHitPrizeBarrageNotByUserId"
+            resultType="com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO">
+        SELECT su.nick_name nickName,
+                su.avatar avatar,
+                mtap.title prizeInfo
+        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
+        WHERE muhp.prize_id != ''
+        AND muhp.user_id != #{userId}
+        AND ((mtap.prize_type = 'coin' AND mtap.quantity >= 100) OR mtap.prize_type='goods')
+        ORDER BY muhp.created_time DESC
+        LIMIT 20
+    </select>
+
+    <select id="selectTicketHitPrizeBarrageByUserId" resultType="com.qs.mp.user.domain.vo.TicketHitPrizeBarrageVO">
+        SELECT su.nick_name,su.avatar,mtap.title
+        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
+        WHERE muhp.prize_id != ''
+          AND muhp.user_id = #{userId}
+          AND muhp.created_time BETWEEN	#{startTime} AND #{endTime}
+        ORDER BY muhp.created_time DESC
+        LIMIT 2
+    </select>
 </mapper>

+ 26 - 5
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -35,7 +35,6 @@
           DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
           SUM(t1.pay_amt) AS payAmt
 	     from `mp_user_ticket_order` t1
-	left join mp_channel t2 on t1.channel_id = t2.channel_id
 		${ew.customSqlSegment}
 		GROUP BY time
 	</select>
@@ -46,7 +45,6 @@
           DATE_FORMAT(t1.created_time, '%Y%m%d') AS time,
           COUNT(DISTINCT t1.user_id) AS payUserCnt
 	     from `mp_user_ticket_order` t1
-	left join mp_channel t2 on t1.channel_id = t2.channel_id
 		${ew.customSqlSegment}
 		GROUP BY time
 	</select>
@@ -59,7 +57,6 @@
           SUM(IFNULL(t1.ticket_num,0)) AS 'ticketNum',
           COUNT(DISTINCT t1.user_id) AS payUserCnt
 	     from `mp_user_ticket_order` t1
-	left join mp_channel t2 on t1.channel_id = t2.channel_id
 		${ew.customSqlSegment}
 		GROUP BY time
 	</select>
@@ -73,11 +70,11 @@
           t1.box_id,
           SUM(t1.pay_amt) AS pay_amt
 	     from `mp_user_ticket_order` t1
-	left join mp_channel t2 on t1.channel_id = t2.channel_id
 		${ew.customSqlSegment}
 		GROUP BY t1.box_id
 		ORDER BY pay_amt DESC limit 10 ) a
 		left join mp_ticket_box b on a.box_id = b.box_id
+		ORDER BY payAmt DESC 
 	</select>
 	
 	<!-- 统计经销商交易额TOP10 -->
@@ -88,11 +85,11 @@
           t1.channel_id,
           SUM(t1.pay_amt) AS pay_amt
 	     from `mp_user_ticket_order` t1
-	left join mp_channel t2 on t1.channel_id = t2.channel_id
 		${ew.customSqlSegment}
 		GROUP BY t1.channel_id
 		ORDER BY pay_amt DESC limit 10 ) a
 		left join mp_channel b on a.channel_id = b.channel_id
+		ORDER BY payAmt DESC 
 	</select>
 	
 	 <!-- 查询子渠道全部的盲票销量 -->
@@ -110,5 +107,29 @@
 		from mp_user_ticket_order t1
 		where t1.`status` = 1 and t1.channel_id = #{channelId}
 	</select>
+	
+	
+	<!-- 查询经销商的线下、线上盲票销量 -->
+    <select id="getTicketSaleCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
+		 select
+		 SUM( CASE WHEN (t2.type = 'online') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS onLineSaleCnt,
+		 SUM( CASE WHEN (t2.type = 'offline') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS offLineSaleCnt
+		from mp_user_ticket_order t1
+		left join mp_ticket_box t2 on t1.box_id = t2.box_id
+		where t1.channel_id = #{channelId} and t1.`status` = 1
+	</select>
+	
+	
+	<!-- 查询经销商的线下、线上盲票销量 -->
+    <select id="listTicketSaleCnt" resultType="com.qs.mp.admin.domain.vo.TicketCntVO">
+		 select
+		 t1.channel_id,
+		 SUM( CASE WHEN (t2.type = 'online') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS onLineSaleCnt,
+		 SUM( CASE WHEN (t2.type = 'offline') THEN IFNULL(t1.ticket_num,0) ELSE 0 END ) AS offLineSaleCnt
+		from mp_user_ticket_order t1
+		left join mp_ticket_box t2 on t1.box_id = t2.box_id
+		${ew.customSqlSegment}
+		GROUP BY t1.channel_id
+	</select>
     
 </mapper>