Browse Source

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

Mp server test

See merge request quanshu/mp-server!512
zhong chunping 2 years ago
parent
commit
e61ec08f41
18 changed files with 493 additions and 14 deletions
  1. 4 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java
  2. 94 2
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java
  3. 94 0
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserTicketOrderMgrController.java
  4. 4 0
      mp-common/src/main/java/com/qs/mp/common/enums/ChannelCertifyStatusEnum.java
  5. 4 0
      mp-common/src/main/java/com/qs/mp/common/enums/TicketStatusEnum.java
  6. 36 0
      mp-service/src/main/java/com/qs/mp/admin/domain/excel/ChannelExcel.java
  7. 64 0
      mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderItemExcel.java
  8. 5 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsQueryParam.java
  9. 3 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/UserTicketOrderQueryParam.java
  10. 71 0
      mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserTicketOrderItemVO.java
  11. 3 0
      mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserTicketOrderListVO.java
  12. 17 4
      mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java
  13. 16 0
      mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderItemMapper.java
  14. 16 0
      mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderItemService.java
  15. 1 0
      mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java
  16. 11 0
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderItemServiceImpl.java
  17. 41 0
      mp-service/src/main/resources/mapper/user/UserTicketOrderItemMapper.xml
  18. 9 8
      mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

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

@@ -98,6 +98,10 @@ public class GoodsMgrController extends BaseApiController {
     queryWrapper.lambda()
         .eq(null != queryParam.getGoodsId() && 0 != queryParam.getGoodsId(),
             Goods::getGoodsId, queryParam.getGoodsId());
+    // 供应商
+    queryWrapper.lambda()
+            .eq(null != queryParam.getSupplierId() && 0 != queryParam.getSupplierId(),
+                    Goods::getSupplierId, queryParam.getSupplierId());
     // 成本
     queryWrapper.lambda()
         .ge(null != queryParam.getMinCost(), Goods::getCost, queryParam.getMinCost());

+ 94 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/SaleSiteMgrController.java

@@ -3,6 +3,8 @@ package com.qs.mp.web.controller.api.admin;
 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.excel.ChannelExcel;
+import com.qs.mp.admin.domain.excel.UserTicketOrderItemExcel;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.service.ITicketService;
 import com.qs.mp.channel.domain.Channel;
@@ -28,21 +30,26 @@ import com.qs.mp.system.domain.SysUser;
 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.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 ma.glasnost.orika.MapperFacade;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -54,10 +61,9 @@ import org.springframework.web.bind.annotation.RestController;
  * @create 2022-02-28 16:17:48
  * @describe 经销商管理前端控制器
  */
-@Api("经销商管理API")
+@Api(tags = "经销商管理API")
 @RestController
 @RequestMapping("/api/v1/mp/admin/salesite/*")
-@Component
 public class SaleSiteMgrController extends BaseApiController {
 
 	@Autowired
@@ -89,6 +95,10 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	@PostMapping("/list")
 	@PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	@ApiOperation("获取经销商列表信息,支持翻页")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = ChannelVO.class)
+	)
 	public TableDataInfo listSite(@RequestBody Channel channel) {
 		List<ChannelVO> list = new ArrayList<ChannelVO>();
 		startPage();
@@ -154,6 +164,84 @@ public class SaleSiteMgrController extends BaseApiController {
 		return "";
 	}
 
+	@PostMapping("/export")
+	@PreAuthorize("@ss.hasPermi('business:salesite:export')")
+	@ApiOperation("导出经销商信息")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = ChannelVO.class)
+	)
+	public AjaxResult export(@RequestBody Channel channel) {
+		QueryWrapper<Channel> queryWrapper = new QueryWrapper<>();
+		if(null!=channel && null != channel.getParentId()) {
+			queryWrapper.eq("t1.parent_id", channel.getParentId());
+		}
+		queryWrapper.eq("t1.level", 0);
+		queryWrapper.likeRight(null != channel && StringUtils.isNotBlank(channel.getMobile()), "t1.mobile", channel.getMobile());
+		queryWrapper.likeRight(null != channel && StringUtils.isNotBlank(channel.getName()), "t1.name", channel.getName());
+		queryWrapper.eq(null != channel && null != channel.getProvinceId(), "t1.province_id", channel.getProvinceId());
+		queryWrapper.eq(null != channel && null != channel.getCityId(), "t1.city_id", channel.getCityId());
+		queryWrapper.eq(null != channel && null != channel.getAreaId(), "t1.area_id", channel.getAreaId());
+		List<ChannelVO> list  = channelService.selectSaleSiteList(queryWrapper);
+		if (CollectionUtils.isEmpty(list)) {
+			return AjaxResult.error("没有符合条件的经销商信息");
+		}
+
+		if(null != list && list.size() > 0) {
+			for(ChannelVO channelVO : list) {
+				if(null != channelVO && null != channelVO.getChannelId()
+						&& StringUtils.isNotBlank(channelVO.getChannelNo())) {
+					channelVO.setParentsName(getParentsNameAndCommRate(channelVO.getChannelNo()));
+				}
+			}
+		}
+
+		List<ChannelExcel> excelList = new ArrayList<>();
+		for (ChannelVO channelVO : list) {
+			ChannelExcel channelExcel = new ChannelExcel();
+			channelExcel.setChannelId(channelVO.getChannelId());
+			channelExcel.setCommRate(channelVO.getCommRate());
+			channelExcel.setName(channelVO.getName());
+			channelExcel.setParentsName(channelVO.getParentsName());
+			if (Objects.nonNull(channelVO.getCertifyStatus())) {
+				channelExcel.setCertifyStatus(channelVO.getCertifyStatus().getDesc());
+			}
+			excelList.add(channelExcel);
+		}
+
+		ExcelUtil<ChannelExcel> util = new ExcelUtil<>(ChannelExcel.class);
+		return util.exportExcel(excelList, "经销商导出", false);
+	}
+
+	private String getParentsNameAndCommRate(String channelNo) {
+		if(StringUtils.isNotBlank(channelNo)) {
+			String[] noArray = channelNo.split("\\.");
+			if(null != noArray && noArray.length > 0) {
+				List<String> noList = new ArrayList<String>();
+				String parentNo = "";
+				for (int i = 0; i < noArray.length; i++) {
+					if(null != noArray[i] && StringUtils.isNotBlank(noArray[i])) {
+						parentNo += (i>0?".":"")+noArray[i];
+						if(StringUtils.isNotBlank(parentNo) && !parentNo.equals(channelNo)) {
+							noList.add(parentNo);
+						}
+					}
+				}
+				if(noList.size() > 0 ) {
+					LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();
+					queryWrapper.gt(Channel::getLevel, 0);
+					queryWrapper.in(Channel::getChannelNo,noList);
+					queryWrapper.orderByAsc(Channel::getLevel);
+					List<Channel> list = channelService.list(queryWrapper);
+					if(null != list && list.size() >0) {
+						return list.stream().map(channel -> channel.getName() + "(" + channel.getCommRate() + "%)").collect(Collectors.joining(" > "));
+					}
+				}
+			}
+		}
+		return "";
+	}
+
+
 	/**
 	 * 查询所有渠道列表
 	 *
@@ -161,6 +249,10 @@ public class SaleSiteMgrController extends BaseApiController {
 	 */
 	@PostMapping("/listAll")
 	// @PreAuthorize("@ss.hasPermi('business:salesite:list')")
+	@ApiOperation("查询所有渠道列表")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "经销商列表返回信息",response = Channel.class)
+	)
 	public AjaxResult listAllSite() {
 		List<Channel> list = new ArrayList<Channel>();
 		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<Channel>();

+ 94 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserTicketOrderMgrController.java

@@ -3,20 +3,25 @@ package com.qs.mp.web.controller.api.admin;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.excel.UserTicketOrderExcel;
+import com.qs.mp.admin.domain.excel.UserTicketOrderItemExcel;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO;
+import com.qs.mp.admin.domain.vo.UserTicketOrderItemVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderListVO;
 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.enums.BusinessType;
 import com.qs.mp.common.enums.PayOrderStatusEnum;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
 import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
 import com.qs.mp.common.utils.StringUtils;
 import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 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.user.service.IUserTicketOrderItemService;
 import com.qs.mp.user.service.IUserTicketOrderService;
 import com.qs.mp.utils.ExcelUtil;
 import com.qs.mp.web.controller.common.BaseApiController;
@@ -49,6 +54,10 @@ public class UserTicketOrderMgrController extends BaseApiController {
     @Autowired
     private IUserTicketOrderService userTicketOrderService;
 
+
+    @Autowired
+    private IUserTicketOrderItemService userTicketOrderItemService;
+
     @PostMapping("/list")
     @PreAuthorize("@ss.hasPermi('order:userTicket:list')")
     @ApiOperation("用户盲票订单列表")
@@ -73,6 +82,9 @@ public class UserTicketOrderMgrController extends BaseApiController {
         if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
             queryWrapper.between("t1.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
         }
+        if (Objects.nonNull(userTicketOrderQueryParam.getChannelId()) && userTicketOrderQueryParam.getChannelId() != 0) {
+            queryWrapper.eq("t1.channel_id", userTicketOrderQueryParam.getChannelId());
+        }
 
         queryWrapper.orderByDesc("t1.created_time");
 
@@ -112,6 +124,9 @@ public class UserTicketOrderMgrController extends BaseApiController {
         if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
             queryWrapper.between("t1.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
         }
+        if (Objects.nonNull(userTicketOrderQueryParam.getChannelId()) && userTicketOrderQueryParam.getChannelId() != 0) {
+            queryWrapper.eq("t1.channel_id", userTicketOrderQueryParam.getChannelId());
+        }
         queryWrapper.orderByDesc("t1.created_time");
         int totalSize = userTicketOrderService.countUserTicketOrder(queryWrapper);
         if (totalSize == 0) {
@@ -158,4 +173,83 @@ public class UserTicketOrderMgrController extends BaseApiController {
     }
 
 
+    @Log(title = "销售订单盲票导出", businessType = BusinessType.EXPORT)
+    @PostMapping("/ticket/export")
+    @PreAuthorize("@ss.hasPermi('order:userTicket:ticketExport')")
+    @ApiOperation("销售订单盲票导出")
+    public AjaxResult ticketExport(@RequestBody UserTicketOrderQueryParam userTicketOrderQueryParam) {
+        QueryWrapper<UserTicketOrderItem> queryWrapper = new QueryWrapper<>();
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getBoxTitle())) {
+            queryWrapper.like("t2.title", userTicketOrderQueryParam.getBoxTitle());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getBoxType())) {
+            queryWrapper.eq("t2.resource", userTicketOrderQueryParam.getBoxType());
+        }
+        if (StringUtils.isNotBlank(userTicketOrderQueryParam.getPhone())) {
+            queryWrapper.eq("t8.phonenumber", userTicketOrderQueryParam.getPhone());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getStatus())) {
+            queryWrapper.eq("t2.status", userTicketOrderQueryParam.getStatus());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getStartTime()) && Objects.nonNull(userTicketOrderQueryParam.getEndTime())) {
+            queryWrapper.between("t2.created_time", userTicketOrderQueryParam.getStartTime(), userTicketOrderQueryParam.getEndTime());
+        }
+        if (Objects.nonNull(userTicketOrderQueryParam.getChannelId()) && userTicketOrderQueryParam.getChannelId() != 0) {
+            queryWrapper.eq("t2.channel_id", userTicketOrderQueryParam.getChannelId());
+        }
+        queryWrapper.orderByDesc("t2.created_time");
+
+        int totalSize = userTicketOrderItemService.countUserTicketOrderItem(queryWrapper);
+        if (totalSize == 0) {
+            return AjaxResult.error("没有符合条件的用户订单");
+        }
+
+        int pageSize = 2000;
+        List<UserTicketOrderItemVO> userTicketOrderItemVOList = new ArrayList<>();
+        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<UserTicketOrderItemVO> list = userTicketOrderItemService.listUserTicketOrderItem(queryWrapper);
+                if (CollectionUtils.isNotEmpty(list)) {
+                    userTicketOrderItemVOList.addAll(list);
+                }
+            }
+        } else {
+            userTicketOrderItemVOList = userTicketOrderItemService.listUserTicketOrderItem(queryWrapper);
+        }
+
+        List<UserTicketOrderItemExcel> excelList = userTicketOrderItemVOList.stream().map(userTicketOrderItemVO -> {
+            UserTicketOrderItemExcel userTicketOrderItemExcel = new UserTicketOrderItemExcel();
+            BeanUtils.copyProperties(userTicketOrderItemVO, userTicketOrderItemExcel);
+            if (Objects.nonNull(userTicketOrderItemVO.getSalePrice())) {
+                userTicketOrderItemExcel.setSalePrice(new BigDecimal(userTicketOrderItemVO.getSalePrice()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+            }
+            if (Objects.nonNull(userTicketOrderItemVO.getTicketType())) {
+                userTicketOrderItemExcel.setTicketType(userTicketOrderItemVO.getTicketType().getDesc());
+            }
+
+            if (Objects.nonNull(userTicketOrderItemVO.getTicketStatus())) {
+                userTicketOrderItemExcel.setTicketStatus(userTicketOrderItemVO.getTicketStatus().getDesc());
+            }
+
+            if (Objects.nonNull(userTicketOrderItemVO.getOrderStatus())) {
+                userTicketOrderItemExcel.setOrderStatus(userTicketOrderItemVO.getOrderStatus().getDesc());
+            }
+
+            // 如果为盲豆,拼接盲豆数量
+            if (Objects.nonNull(userTicketOrderItemVO.getPrizeType()) && TicketPrizeTypeEnum.COIN.equals(userTicketOrderItemVO.getPrizeType())) {
+                if (StringUtils.isNotBlank(userTicketOrderItemVO.getPrizeName()) && Objects.nonNull(userTicketOrderItemVO.getValue())) {
+                    userTicketOrderItemExcel.setPrizeName(userTicketOrderItemVO.getPrizeName() + "x" + userTicketOrderItemVO.getValue());
+                }
+            }
+            return userTicketOrderItemExcel;
+        }).collect(Collectors.toList());
+
+        ExcelUtil<UserTicketOrderItemExcel> util = new ExcelUtil<>(UserTicketOrderItemExcel.class);
+        return util.exportExcel(excelList, "销售订单盲票导出", false);
+    }
+
+
+
 }

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

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

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

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

+ 36 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/ChannelExcel.java

@@ -0,0 +1,36 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import com.qs.mp.common.enums.ChannelCertifyStatusEnum;
+import com.qs.mp.common.enums.SiteTypeEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 经销商导出
+ * @author Cup
+ * @date 2022/5/13
+ */
+@ApiModel("经销商导出")
+@Data
+public class ChannelExcel {
+
+    @Excel(name = "经销商编号")
+    private Long channelId;
+
+    @Excel(name = "经销商名称")
+    private String name;
+
+    @Excel(name = "经销商认证状态")
+    private String certifyStatus;
+
+    @Excel(name = "经销商佣金比例(%)")
+    private BigDecimal commRate;
+
+    @Excel(name = "上级渠道")
+    String parentsName;
+
+}

+ 64 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/excel/UserTicketOrderItemExcel.java

@@ -0,0 +1,64 @@
+package com.qs.mp.admin.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import com.qs.mp.common.enums.TicketStatusEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户盲票相关导出
+ * @author Cup
+ * @date 2022/5/13
+ */
+@ApiModel("用户盲票订单明细相关导出")
+@Data
+public class UserTicketOrderItemExcel {
+
+    @Excel(name = "盲票序列号")
+    private String serialNo;
+
+    @Excel(name = "盲票名称")
+    private String ticketTitle;
+
+    @Excel(name = "盲票类型")
+    private String ticketType;
+
+    @Excel(name = "盲票售价(元)")
+    private BigDecimal salePrice;
+
+    @Excel(name = "佣金系数(%)")
+    private BigDecimal saleCommRate;
+
+    @Excel(name = "盲票状态")
+    private String ticketStatus;
+
+    @Excel(name = "奖级")
+    private String awardsName;
+
+    @Excel(name = "奖品")
+    private String prizeName;
+
+    @Excel(name = "订单编号")
+    private String orderId;
+
+    @Excel(name = "订单状态")
+    private String orderStatus;
+
+    @Excel(name = "下单时间")
+    private Date createdTime;
+
+    @Excel(name = "用户昵称")
+    private String userName;
+
+    @Excel(name = "用户手机号")
+    private String userPhone;
+
+    @Excel(name = "经销商")
+    private String channelName;
+}

+ 5 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/GoodsQueryParam.java

@@ -33,6 +33,11 @@ public class GoodsQueryParam {
 	@ApiModelProperty(value = "商品名称", required = true)
 	private String title;
 
+
+	@ApiModelProperty(value = "供应商id", required = false)
+	private Long supplierId;
+
+
 	/**
 	 * 最低成本
 	 */

+ 3 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserTicketOrderQueryParam.java

@@ -33,6 +33,9 @@ public class UserTicketOrderQueryParam {
     @ApiModelProperty("订单状态;-1 已取消 0:待付款 1:已完成")
     private Integer status;
 
+    @ApiModelProperty("经销商id")
+    private Long channelId;
+
     @ApiModelProperty("开始时间")
     private Date startTime;
 

+ 71 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserTicketOrderItemVO.java

@@ -0,0 +1,71 @@
+package com.qs.mp.admin.domain.vo;
+
+import com.qs.mp.common.enums.TicketPrizeTypeEnum;
+import com.qs.mp.common.enums.TicketStatusEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 用户盲票订单明细相关出参类
+ * @author Cup
+ * @date 2022/5/13
+ */
+@ApiModel("用户盲票订单明细相关出参类")
+@Data
+public class UserTicketOrderItemVO {
+
+    @ApiModelProperty("盲票序列号")
+    private String serialNo;
+
+    @ApiModelProperty("盲票名称")
+    private String ticketTitle;
+
+    @ApiModelProperty("盲票类型")
+    private TicketTypeEnum ticketType;
+
+    @ApiModelProperty("盲票售价")
+    private Integer salePrice;
+
+    @ApiModelProperty("佣金系数")
+    private BigDecimal saleCommRate;
+
+    @ApiModelProperty("盲票状态")
+    private TicketStatusEnum ticketStatus;
+
+    @ApiModelProperty("奖级")
+    private String awardsName;
+
+    @ApiModelProperty("奖品")
+    private String prizeName;
+
+    @ApiModelProperty("价值")
+    private Integer value;
+
+    @ApiModelProperty("奖品类型")
+    private TicketPrizeTypeEnum prizeType;
+
+    @ApiModelProperty("订单编号")
+    private String orderId;
+
+    @ApiModelProperty("订单状态")
+    private UserTicketOrderStatusEnum orderStatus;
+
+    @ApiModelProperty("下单时间")
+    private Date createdTime;
+
+    @ApiModelProperty("用户昵称")
+    private String userName;
+
+    @ApiModelProperty("用户手机号")
+    private String userPhone;
+
+    @ApiModelProperty("经销商")
+    private String channelName;
+
+}

+ 3 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/vo/UserTicketOrderListVO.java

@@ -54,6 +54,9 @@ public class UserTicketOrderListVO {
     @ApiModelProperty("手机号")
     private String phone;
 
+    @ApiModelProperty("经销商")
+    private String channelName;
+
 
     @ApiModelProperty("创建时间")
     private Date createdTime;

+ 17 - 4
mp-service/src/main/java/com/qs/mp/channel/domain/vo/ChannelVO.java

@@ -1,6 +1,8 @@
 package com.qs.mp.channel.domain.vo;
 
 import com.qs.mp.channel.domain.Channel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -8,21 +10,32 @@ import lombok.Data;
  * @Date 2022/3/1
  */
 @Data
+@ApiModel("渠道经销商相关出参类")
 public class ChannelVO extends Channel {
+  @ApiModelProperty("经销网点数")
   long siteCnt;   // 经销网点数
+  @ApiModelProperty("用户数")
   long userCnt;   // 用户数
-  
+
+  @ApiModelProperty("上级渠道名称")
   String parentName; // 上级渠道名称
-  
+
+  @ApiModelProperty("订单数")
   long orderCnt;   // 订单数
+  @ApiModelProperty("子渠道数量")
   int childCnt;  // 子渠道数量
+  @ApiModelProperty("经营数据")
   ChannelOperDataVO operData;  // 经营数据
   // SysUser sysUser;  // 关联的用户账号信息
-  
+
+  @ApiModelProperty("所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道")
   String parentsName; // 所有上级渠道名称 eg: 一级渠道 > 上N级渠道 ** > 上级渠道
-  
+
+  @ApiModelProperty("线下库存(盲票张数)")
   long offLineQtyCnt; // 线下库存(盲票张数)
+  @ApiModelProperty("线下销售(线下盲票销售张数)")
   long offLineSaleCnt; // 线下销售(线下盲票销售张数)
+  @ApiModelProperty("线上销售(显示盲票销售张数)")
   long onLineSaleCnt; // 线上销售(显示盲票销售张数)
   
   

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.TicketAwardsPrize;
 import com.qs.mp.admin.domain.vo.TicketAwardsPrizeVO;
 import com.qs.mp.admin.domain.vo.TicketListVO;
+import com.qs.mp.admin.domain.vo.UserTicketOrderItemVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderTicketDetailVO;
 import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -30,4 +31,19 @@ public interface UserTicketOrderItemMapper extends BaseMapper<UserTicketOrderIte
    * @return
    */
   List<UserTicketOrderTicketDetailVO> listTicketDetailByOrderId(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrderTicketDetailVO> queryWrapper);
+
+  /**
+   * 根据条件获取用户盲票订单明细相关信息
+   * @param queryWrapper
+   * @return
+   */
+  List<UserTicketOrderItemVO> listUserTicketOrderItem(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrderItem> queryWrapper);
+
+  /**
+   * 统计用户盲票订单明细相关数量
+   * @param queryWrapper
+   * @return
+   */
+  int countUserTicketOrderItem(@Param(Constants.WRAPPER) QueryWrapper<UserTicketOrderItem> queryWrapper);
+
 }

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

@@ -1,8 +1,10 @@
 package com.qs.mp.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.admin.domain.vo.TicketListVO;
+import com.qs.mp.admin.domain.vo.UserTicketOrderItemVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderTicketDetailVO;
 import com.qs.mp.common.enums.TicketStatusEnum;
 import com.qs.mp.user.domain.UserTicketOrderItem;
@@ -56,4 +58,18 @@ public interface IUserTicketOrderItemService extends IService<UserTicketOrderIte
    * @return
    */
   List<UserTicketOrderTicketDetailVO> listTicketDetailByOrderId(String orderId);
+
+  /**
+   * 根据条件获取用户盲票订单明细相关信息
+   * @param queryWrapper
+   * @return
+   */
+  List<UserTicketOrderItemVO> listUserTicketOrderItem(QueryWrapper<UserTicketOrderItem> queryWrapper);
+
+  /**
+   * 统计用户盲票订单明细相关数量
+   * @param queryWrapper
+   * @return
+   */
+  int countUserTicketOrderItem(QueryWrapper<UserTicketOrderItem> queryWrapper);
 }

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

@@ -12,6 +12,7 @@ import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserTicketOrder;
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.user.domain.UserTicketOrderItem;
 import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
 import com.qs.mp.user.domain.vo.UserShareVO;
 import java.util.List;

+ 11 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderItemServiceImpl.java

@@ -2,6 +2,7 @@ package com.qs.mp.user.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.vo.TicketListVO;
+import com.qs.mp.admin.domain.vo.UserTicketOrderItemVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderTicketDetailVO;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
@@ -26,6 +27,16 @@ import org.springframework.util.CollectionUtils;
 @Service
 public class UserTicketOrderItemServiceImpl extends ServiceImpl<UserTicketOrderItemMapper, UserTicketOrderItem> implements IUserTicketOrderItemService {
 
+  @Override
+  public int countUserTicketOrderItem(QueryWrapper<UserTicketOrderItem> queryWrapper) {
+    return getBaseMapper().countUserTicketOrderItem(queryWrapper);
+  }
+
+  @Override
+  public List<UserTicketOrderItemVO> listUserTicketOrderItem(QueryWrapper<UserTicketOrderItem> queryWrapper) {
+    return getBaseMapper().listUserTicketOrderItem(queryWrapper);
+  }
+
   @Override
   public UserTicketOrderItem queryFinishedOrderItem(Long userId, String ticketId) {
     List<UserTicketOrderItem> itemList = getBaseMapper().listTicketOrderItemVO(new QueryWrapper<UserTicketOrderItem>().eq("t1.ticket_id", ticketId)

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

@@ -67,4 +67,45 @@
             left join mp_ticket_awards_prize t5 on t3.prize_id = t5.prize_id
         ${ew.customSqlSegment}
     </select>
+
+    <select id="listUserTicketOrderItem" resultType="com.qs.mp.admin.domain.vo.UserTicketOrderItemVO">
+        select t3.serial_no,
+               t1.title ticketTitle,
+               t2.resource ticketType,
+               t2.sale_price ,
+               t2.sale_comm_rate,
+               t3.status ticketStatus,
+               t5.name awardsName,
+               t6.title prizeName,
+               t6.value,
+               t6.prize_type,
+               t1.order_id,
+               t2.status orderStatus,
+               t2.created_time,
+               t8.user_name,
+               t8.phonenumber userPhone,
+               t7.name channelName
+        from mp_user_ticket_order_item t1
+                 left join mp_user_ticket_order t2 on t1.order_id = t2.order_id
+                 left join mp_ticket t3 on t1.ticket_id = t3.ticket_id
+                 left join mp_user_hit_prize t4 on t1.item_id = t4.order_item_id
+                 left join mp_ticket_awards t5 on t4.awards_id = t5.awards_id
+                 left join mp_ticket_awards_prize t6 on t4.prize_id = t6.prize_id
+                 left join mp_channel t7 on t2.channel_id = t7.channel_id
+                 left join sys_user t8 on t1.user_id = t8.user_id
+        ${ew.customSqlSegment}
+    </select>
+
+    <select id="countUserTicketOrderItem" resultType="int">
+        select count(*)
+        from mp_user_ticket_order_item t1
+            left join mp_user_ticket_order t2 on t1.order_id = t2.order_id
+            left join mp_ticket t3 on t1.ticket_id = t3.ticket_id
+            left join mp_user_hit_prize t4 on t1.item_id = t4.order_item_id
+            left join mp_ticket_awards t5 on t4.awards_id = t5.awards_id
+            left join mp_ticket_awards_prize t6 on t4.prize_id = t6.prize_id
+            left join mp_channel t7 on t2.channel_id = t7.channel_id
+            left join sys_user t8 on t1.user_id = t8.user_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 9 - 8
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -143,10 +143,12 @@
 				t1.ticket_num,
 				t2.nick_name,
 				t2.phonenumber phone,
-				t3.type boxType
+				t3.type boxType,
+				t4.name channelName
 		from mp_user_ticket_order t1
-				 left join sys_user t2 on t1.user_id = t2.user_id
-				 left join mp_ticket_box t3 on t1.box_id = t3.box_id
+			left join sys_user t2 on t1.user_id = t2.user_id
+			left join mp_ticket_box t3 on t1.box_id = t3.box_id
+			left join mp_channel t4 on t1.channel_id = t4.channel_id
 		${ew.customSqlSegment}
     </select>
 
@@ -162,13 +164,12 @@
 				t1.ticket_num,
 				t2.nick_name,
 				t2.phonenumber phone,
-				t4.name channelName,
-				t5.type ticketBoxType
+				t3.name channelName,
+				t4.type ticketBoxType
 		from mp_user_ticket_order t1
 			left join sys_user t2 on t1.user_id = t2.user_id
-			left join mp_channel_user_rel t3 on t2.user_id = t3.user_id
-			left join mp_channel t4 on t3.channel_id = t4.channel_id
-			left join mp_ticket_box t5 on t1.box_id = t5.box_id
+			left join mp_channel t3 on t1.channel_id = t3.channel_id
+			left join mp_ticket_box t4 on t1.box_id = t4.box_id
 		${ew.customSqlSegment}
 	</select>