ソースを参照

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

Dev

See merge request quanshu/mp-server!175
zhong chunping 3 年 前
コミット
861702b653
17 ファイル変更426 行追加147 行削除
  1. 3 27
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java
  2. 163 75
      mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java
  3. 5 1
      mp-common/src/main/java/com/qs/mp/common/enums/DeliverOrderStatusEnum.java
  4. 2 1
      mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxCreateParam.java
  5. 48 0
      mp-service/src/main/java/com/qs/mp/admin/domain/param/UserDeliverOrderQueryParam.java
  6. 0 2
      mp-service/src/main/java/com/qs/mp/admin/domain/vo/GoodsVO.java
  7. 1 1
      mp-service/src/main/java/com/qs/mp/admin/service/impl/CouponServiceImpl.java
  8. 1 1
      mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java
  9. 2 2
      mp-service/src/main/java/com/qs/mp/user/domain/UserHitPrize.java
  10. 74 0
      mp-service/src/main/java/com/qs/mp/user/domain/excel/DeliverOrderExcel.java
  11. 8 8
      mp-service/src/main/java/com/qs/mp/user/domain/vo/UserDeliverOrderVO.java
  12. 24 0
      mp-service/src/main/java/com/qs/mp/user/mapper/UserDeliverOrderMapper.java
  13. 49 21
      mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java
  14. 15 2
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java
  15. 6 2
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java
  16. 4 4
      mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java
  17. 21 0
      mp-service/src/main/resources/mapper/user/UserDeliverOrderMapper.xml

+ 3 - 27
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/GoodsMgrController.java

@@ -4,51 +4,25 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.google.common.html.HtmlEscapers;
-import com.qs.mp.admin.domain.Coupon;
 import com.qs.mp.admin.domain.Goods;
-import com.qs.mp.admin.domain.GoodsCategory;
 import com.qs.mp.admin.domain.GoodsSku;
-import com.qs.mp.admin.domain.param.CouponParam;
 import com.qs.mp.admin.domain.param.GoodsParam;
 import com.qs.mp.admin.domain.param.GoodsQueryParam;
-import com.qs.mp.admin.domain.vo.GoodsListVO;
 import com.qs.mp.admin.domain.vo.GoodsVO;
-import com.qs.mp.admin.service.IGoodsCategoryService;
 import com.qs.mp.admin.service.IGoodsService;
 import com.qs.mp.admin.service.IGoodsSkuService;
-import com.qs.mp.channel.domain.Channel;
-import com.qs.mp.channel.domain.param.ChannelParam;
-import com.qs.mp.channel.domain.vo.ChannelOperDataVO;
-import com.qs.mp.channel.domain.vo.ChannelVO;
-import com.qs.mp.channel.service.IChannelService;
-import com.qs.mp.channel.service.IChannelUserRelService;
-import com.qs.mp.common.constant.UserConstants;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
-import com.qs.mp.common.enums.ChannelRoleEnum;
-import com.qs.mp.common.enums.CouponStatusEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.GoodsStatusEnum;
-import com.qs.mp.common.utils.html.EscapeUtil;
-import com.qs.mp.system.domain.SysUser;
-import com.qs.mp.system.service.ISysUserService;
-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 ma.glasnost.orika.MapperFacade;
 
-import java.math.BigDecimal;
-import java.net.URI;
 import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.codec.Decoder;
-import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -90,7 +64,6 @@ public class GoodsMgrController extends BaseApiController {
 		startPage();
 		QueryWrapper<Goods> queryWrapper = new QueryWrapper<Goods>();
 		queryWrapper.lambda().like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), Goods::getTitle, queryParam.getTitle());
-
 		queryWrapper.lambda()
 					.eq(null != queryParam && null != queryParam.getGoodsId() && 0 != queryParam.getGoodsId(),
 							Goods::getGoodsId, queryParam.getGoodsId());
@@ -150,6 +123,9 @@ public class GoodsMgrController extends BaseApiController {
 	@ApiOperation(value = "新增商品信息", notes = "后台商品管理新增商品")
 	@PostMapping("/create")
 	public AjaxResult goodsCreate(@Validated @RequestBody GoodsParam goodsParam) {
+		if (null != goodsParam.getGoodsId() || 0 !=  goodsParam.getGoodsId()) {
+			return AjaxResult.error("该商品已存在");
+		}
 		Goods goods = mapperFacade.map(goodsParam, Goods.class);
 		// 1、校验名称是否重复(商品表)
 		LambdaQueryWrapper<Goods> queryWrapper = new LambdaQueryWrapper<>();

+ 163 - 75
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -2,20 +2,30 @@ 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.Ticket;
+import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.domain.excel.TicketExcel;
+import com.qs.mp.admin.domain.param.BathIdParam;
+import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
 import com.qs.mp.channel.domain.param.OrderPayParam;
+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.core.redis.RedisCache;
 import com.qs.mp.common.enums.BizTypeEnum;
+import com.qs.mp.common.enums.BusinessType;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
+import com.qs.mp.common.utils.RSAUtil;
 import com.qs.mp.framework.redis.RedisKey;
 import com.qs.mp.pay.service.IWalletService;
 import com.qs.mp.user.domain.UserAddr;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
 import com.qs.mp.user.domain.UserPrizeStorage;
+import com.qs.mp.user.domain.excel.DeliverOrderExcel;
 import com.qs.mp.user.domain.param.DeliverOrderParam;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
@@ -23,10 +33,14 @@ import com.qs.mp.user.service.IUserAddrService;
 import com.qs.mp.user.service.IUserDeliverOrderItemService;
 import com.qs.mp.user.service.IUserDeliverOrderService;
 import com.qs.mp.user.service.IUserPrizeStorageService;
+import com.qs.mp.utils.ExcelUtil;
 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.Comparator;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 import javax.validation.Valid;
@@ -40,85 +54,159 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-
 @RestController
 @RequestMapping("/api/v1/admin/deliver/order")
 @Api(tags = "用户提货订单接口")
 @AllArgsConstructor
 public class UserDeliverOrderMgrController extends BaseApiController {
 
-  @Autowired
-  private IUserDeliverOrderService userDeliverOrderService;
-  
-  @Autowired
-  private IUserDeliverOrderItemService userDeliverOrderItemService;
-
-  @Autowired
-  private IUserPrizeStorageService userPrizeStorageService;
-
-  @Autowired
-  private IUserAddrService userAddrService;
-  
-  @Autowired
-  private IWalletService walletService;
-
-  @Autowired
-  private MapperFacade mapperFacade;
-
-  @Autowired
-  private RedisCache redisCache;
-
-  /**
-   * 订单列表
-   */
-  @PostMapping("/list")
-  @ApiOperation(value = "订单列表" , notes = "获取所有订单信息")
-  public TableDataInfo list(@RequestBody JSONObject param) {
-   // Long channelId = SecurityUtils.getLoginUser().getChannelId();
-    Integer status = param.getInteger("status");
-    startPage();
-    LambdaQueryWrapper<UserDeliverOrder> queryWrapper = new LambdaQueryWrapper<UserDeliverOrder>();
-    // queryWrapper.eq(UserDeliverOrder::getChannelId, channelId);
-    queryWrapper.eq(null != status, UserDeliverOrder::getStatus, status);
-    queryWrapper.orderByDesc(UserDeliverOrder::getCreatedTime);
-    List<UserDeliverOrder> userDeliverOrders = userDeliverOrderService.list(queryWrapper);
-    List<UserDeliverOrderVO> userDeliverOrderVOList = mapperFacade.mapAsList(userDeliverOrders, UserDeliverOrderVO.class);
-    for (UserDeliverOrderVO userDeliverOrderVO : userDeliverOrderVOList) {
-      userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
-          .eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
-    }
-    TableDataInfo rspData = getDataTable(userDeliverOrders);
-    rspData.setRows(userDeliverOrderVOList);
-    return rspData;
-  }
-
-  /**
-   * 订单详情
-   */
-  @PostMapping("/detail")
-  @ApiOperation(value = "订单详情" , notes = "在订单列表页面查看详情")
-  public AjaxResult query(@RequestBody UserDeliverOrder order) {
-	  if(null == order || StringUtils.isBlank(order.getOrderId())) {
-	    	return error(ErrorCodeEnum.ERROR_CODE_1001);
-	    } 
-    LambdaQueryWrapper<UserDeliverOrder> queryWrapper = new LambdaQueryWrapper<UserDeliverOrder>();
-    queryWrapper.eq(UserDeliverOrder::getOrderId, order.getOrderId());
-    UserDeliverOrder userDeliverOrder = userDeliverOrderService.getOne(queryWrapper);
-    UserDeliverOrderVO userDeliverOrderVO = mapperFacade.map(userDeliverOrder, UserDeliverOrderVO.class);
-    userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
-        .eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
-    return AjaxResult.success(userDeliverOrderVO);
-  }
-
-  
-
-  /**
-   * 订单发货
-   */
-  @PostMapping("/ship")
-  @ApiOperation(value = "订单发货" , notes = "在订单发货页面提交")
-  public AjaxResult ship(@RequestBody UserDeliverOrder order) {
-
-    return AjaxResult.success();
-  }
+	@Autowired
+	private IUserDeliverOrderService userDeliverOrderService;
+
+	@Autowired
+	private IUserDeliverOrderItemService userDeliverOrderItemService;
+
+	@Autowired
+	private IUserPrizeStorageService userPrizeStorageService;
+
+	@Autowired
+	private IUserAddrService userAddrService;
+
+	@Autowired
+	private IWalletService walletService;
+
+	@Autowired
+	private MapperFacade mapperFacade;
+
+	@Autowired
+	private RedisCache redisCache;
+
+	/**
+	 * 用户提货订单列表
+	 */
+	@PostMapping("/list")
+	@ApiOperation(value = "用户提货订单列表", notes = "获取用户提货订单列表")
+	public TableDataInfo list(@RequestBody UserDeliverOrderQueryParam queryParam) {
+		startPage();
+		QueryWrapper<UserDeliverOrder> queryWrapper = new QueryWrapper<UserDeliverOrder>();
+		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.create_time", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.create_time", queryParam.getEndTime());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getNickName()), "t2.nick_name", queryParam.getNickName());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t3.title", queryParam.getTitle());
+		queryWrapper.orderByDesc("t1.order_id");
+		List<UserDeliverOrderVO> userDeliverOrderVOList = userDeliverOrderService.selectUserDeliverOrderVoList(queryWrapper);
+		for (UserDeliverOrderVO userDeliverOrderVO : userDeliverOrderVOList) {
+			userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+					.eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
+		}
+		TableDataInfo rspData = getDataTable(userDeliverOrderVOList);
+		return rspData;
+	}
+
+	/**
+	 * 订单详情
+	 */
+	@PostMapping("/detail")
+	@ApiOperation(value = "订单详情", notes = "在订单列表页面查看详情")
+	public AjaxResult query(@RequestBody UserDeliverOrder order) {
+		if (null == order || StringUtils.isBlank(order.getOrderId())) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+		LambdaQueryWrapper<UserDeliverOrder> queryWrapper = new LambdaQueryWrapper<UserDeliverOrder>();
+		queryWrapper.eq(UserDeliverOrder::getOrderId, order.getOrderId());
+		UserDeliverOrder userDeliverOrder = userDeliverOrderService.getOne(queryWrapper);
+		UserDeliverOrderVO userDeliverOrderVO = mapperFacade.map(userDeliverOrder, UserDeliverOrderVO.class);
+		userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+				.eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
+		return AjaxResult.success(userDeliverOrderVO);
+	}
+
+	/**
+	 * 订单发货
+	 */
+	@PostMapping("/ship")
+	@ApiOperation(value = "订单发货", notes = "在订单发货页面提交")
+	public AjaxResult ship(@RequestBody UserDeliverOrder order) {
+
+		return AjaxResult.success();
+	}
+
+	@Log(title = "导出", businessType = BusinessType.EXPORT)
+	@PostMapping("/export")
+	public AjaxResult export(@RequestBody UserDeliverOrderQueryParam queryParam) {
+
+		List<DeliverOrderExcel> excelList = new ArrayList<DeliverOrderExcel>();
+		List<UserDeliverOrderVO> listAll = new ArrayList<UserDeliverOrderVO>();
+		// 首先查询要导出的数据总数
+		QueryWrapper<UserDeliverOrder> queryWrapper = new QueryWrapper<UserDeliverOrder>();
+		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.create_time", queryParam.getStartTime());
+		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.create_time", queryParam.getEndTime());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getNickName()), "t2.nick_name", queryParam.getNickName());
+		queryWrapper.like(null != queryParam && StringUtils.isNotBlank(queryParam.getTitle()), "t3.title", queryParam.getTitle());
+		queryWrapper.orderByDesc("t1.order_id");
+		int totalSize = userDeliverOrderService.selectUserDeliverOrderCount(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<UserDeliverOrderVO> userDeliverOrderVOList = userDeliverOrderService.selectUserDeliverOrderVoList(queryWrapper);
+				for (UserDeliverOrderVO userDeliverOrderVO : userDeliverOrderVOList) {
+					userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+							.eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
+				}
+				if (null != userDeliverOrderVOList && userDeliverOrderVOList.size() > 0) {
+					listAll.addAll(userDeliverOrderVOList);
+				}
+			}
+		} else {
+			listAll = userDeliverOrderService.selectUserDeliverOrderVoList(queryWrapper);
+			for (UserDeliverOrderVO userDeliverOrderVO : listAll) {
+				userDeliverOrderVO.setItems(userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
+						.eq(UserDeliverOrderItem::getOrderId, userDeliverOrderVO.getOrderId())));
+			}
+		}
+
+		if (null != listAll && listAll.size() > 0) {
+			listAll.sort(Comparator.comparing(UserDeliverOrderVO::getOrderId));
+			for (UserDeliverOrderVO deliverOrder : listAll) {
+				if (null != deliverOrder && StringUtils.isNotBlank(deliverOrder.getOrderId())
+						&& StringUtils.isNotBlank(deliverOrder.getReceiver())
+						&& StringUtils.isNotBlank(deliverOrder.getTel())
+						&& StringUtils.isNotBlank(deliverOrder.getProvince())
+						&& StringUtils.isNotBlank(deliverOrder.getCity())
+						&& StringUtils.isNotBlank(deliverOrder.getArea())
+						&& StringUtils.isNotBlank(deliverOrder.getAddress()) && null != deliverOrder.getItems()
+						&& deliverOrder.getItems().size() > 0) {
+					for (UserDeliverOrderItem userDeliverOrderItem : deliverOrder.getItems()) {
+						if (null != userDeliverOrderItem) {
+							DeliverOrderExcel deliverOrderExcel = new DeliverOrderExcel();
+							deliverOrderExcel.setTitle(userDeliverOrderItem.getTitle());
+							deliverOrderExcel.setProperties(userDeliverOrderItem.getProperties());
+							deliverOrderExcel.setGoodsNum(userDeliverOrderItem.getGoodsNum());
+							deliverOrderExcel.setCreatedTime(deliverOrder.getCreatedTime());
+							deliverOrderExcel.setOrderId(deliverOrder.getOrderId());
+							deliverOrderExcel.setReceiver(deliverOrder.getReceiver());
+							deliverOrderExcel.setTel(deliverOrder.getTel());
+							String address = deliverOrder.getProvince() + deliverOrder.getCity()
+									+ deliverOrder.getArea() + deliverOrder.getAddress();
+							deliverOrderExcel.setAddress(address);
+							deliverOrderExcel.setStatus(deliverOrder.getStatus().getDesc());
+							deliverOrderExcel.setItemStatus(StringUtils.isNotBlank(userDeliverOrderItem.getDeliveryFlowId())?"已发货":"未发货");
+							excelList.add(deliverOrderExcel);
+						}
+					}
+				}
+			}
+		}
+		ExcelUtil<DeliverOrderExcel> util = new ExcelUtil<DeliverOrderExcel>(DeliverOrderExcel.class);
+		return util.exportExcel(excelList, "用户提货订单导出", false);
+	}
 }

+ 5 - 1
mp-common/src/main/java/com/qs/mp/common/enums/DeliverOrderStatusEnum.java

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

+ 2 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/param/TicketBoxCreateParam.java

@@ -3,6 +3,7 @@ package com.qs.mp.admin.domain.param;
 import com.qs.mp.common.enums.TicketTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import java.math.BigDecimal;
 import java.util.List;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
@@ -44,7 +45,7 @@ public class TicketBoxCreateParam {
 
 	@NotNull(message = "分佣基数不能为空")
 	@ApiModelProperty(value = "分佣基数",required=true)
-	private Integer saleCommRate;
+	private BigDecimal saleCommRate;
 
 	@NotEmpty(message = "奖级列表不能为空")
 	@ApiModelProperty(value = "奖级列表",required=true)

+ 48 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserDeliverOrderQueryParam.java

@@ -0,0 +1,48 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.qs.mp.common.enums.DeliverOrderStatusEnum;
+import lombok.Data;
+
+/**
+ * @describe 商品库实体类
+ * @auther quanshu
+ * @create 2022-03-07 20:43:44
+ */
+@ApiModel(value = "商品列表查询参数")
+@Data
+public class UserDeliverOrderQueryParam {
+
+	@ApiModelProperty(value = "用户昵称", required = false)
+	private String nickName;
+
+	@ApiModelProperty(value = "商品名称", required = false)
+	private String title;
+	
+	@ApiModelProperty(value = "订单编号", required = false)
+	private String orderId;
+	
+	@ApiModelProperty(value = "订单状态", required = false)
+	@JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
+	private DeliverOrderStatusEnum status;
+
+	/**
+	 * 下单区间-开始时间
+	 */
+	@ApiModelProperty(value = "开始时间", required = false)
+	private Date startTime;
+	
+	/**
+	 * 下单区间-截止时间
+	 */
+	@ApiModelProperty(value = "截止时间", required = false)
+	private Date endTime;
+
+
+}

+ 0 - 2
mp-service/src/main/java/com/qs/mp/admin/domain/vo/GoodsVO.java

@@ -2,8 +2,6 @@ package com.qs.mp.admin.domain.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.serializer.SerializerFeature;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.qs.mp.admin.domain.GoodsSku;
 import com.qs.mp.common.enums.GoodsStatusEnum;
 

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

@@ -78,7 +78,7 @@ public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> impleme
   public void distribute(Ticket ticket, Long userId, String couponId) {
     Coupon coupon = getById(couponId);
     UserCoupon userCoupon = new UserCoupon();
-    userCoupon.setId(bizIdGenerator.newId());
+    userCoupon.setId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userCoupon.setUserId(userId);
     userCoupon.setVerifyCode(bizIdGenerator.newId());
     userCoupon.setCouponId(coupon.getCouponId());

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

@@ -223,7 +223,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
         pkgAwards.setQuantity(pkgAwards.getQuantity() - 1);
 
         Ticket ticket = new Ticket();
-        ticket.setTicketId(bizIdGenerator.newId());
+        ticket.setTicketId(bizIdGenerator.newIdWithUidSharding(ticketBox.getBoxNo()));
         ticket.setBoxId(ticketBox.getBoxId());
         ticket.setPkgId(ticketPackage.getPkgId());
         ticket.setTitle(ticketBox.getTitle());

+ 2 - 2
mp-service/src/main/java/com/qs/mp/user/domain/UserHitPrize.java

@@ -22,8 +22,8 @@ public class UserHitPrize implements Serializable {
   /**
    * 主键
    */
-  @TableId(value = "id", type = IdType.AUTO)
-  private Long id;
+  @TableId(value = "id", type = IdType.INPUT)
+  private String id;
 
   /**
    * 用户ID

+ 74 - 0
mp-service/src/main/java/com/qs/mp/user/domain/excel/DeliverOrderExcel.java

@@ -0,0 +1,74 @@
+package com.qs.mp.user.domain.excel;
+
+import com.qs.mp.common.annotation.Excel;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * @author liugl
+ * @Date 2022/3/17
+ */
+@Data
+public class DeliverOrderExcel {
+ 
+	/**
+	   * 商品标题
+	   */
+	  @Excel(name = "商品名称")
+	  private String title;
+
+	  
+	  /**
+	   * sku 属性
+	   */
+	  @Excel(name = "规格")
+	  private String properties;
+
+
+	  /**
+	   * 商品数量
+	   */
+	  @Excel(name = "数量")
+	  private Integer goodsNum;
+	  
+	  /**
+	   * 创建时间
+	   */
+	  @Excel(name = "下单时间")
+	  private Date createdTime;
+	  
+	  @Excel(name = "订单编号")
+	  private String orderId;
+	  
+	  /**
+	   * 收货人
+	   */
+	  @Excel(name = "收货人")
+	  private String receiver;
+
+	  /**
+	   * 收货人电话
+	   */
+	  @Excel(name = "联系电话")
+	  private String tel;
+
+	  /**
+	   * (省-市-区-详细地址)
+	   */
+	  @Excel(name = "收货地址")
+	  private String address;
+	  
+
+	  /**
+	   * 订单状态
+	   */
+	  @Excel(name = "订单状态")
+	  private String status;
+	  
+	  
+	  /**
+	   * 商品发货状态, 有物流单号默认为已发货
+	   */
+	  @Excel(name = "商品发货状态")
+	  private String itemStatus;
+}

+ 8 - 8
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserDeliverOrderVO.java

@@ -1,19 +1,19 @@
 package com.qs.mp.user.domain.vo;
 
-import java.util.List;
-
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
-
+import java.util.List;
 import lombok.Data;
 
-
 /**
- * @author liugl
+ * @author zhongcp
  * @Date 2022/3/17
  */
 @Data
-public class UserDeliverOrderVO extends UserDeliverOrder{
-
-	private List<UserDeliverOrderItem> items;
+public class UserDeliverOrderVO extends UserDeliverOrder {
+  List<UserDeliverOrderItem> items;
+  
+  // 用户昵称
+  private String nickName;
+  
 }

+ 24 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserDeliverOrderMapper.java

@@ -1,7 +1,17 @@
 package com.qs.mp.user.mapper;
 
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.vo.ChannelVO;
 import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 
 /**
  * @auther quanshu
@@ -10,4 +20,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface UserDeliverOrderMapper extends BaseMapper<UserDeliverOrder> {
 
+	/**
+	 *  获取用户提货订单列表信息,支持翻页
+	 * @param wrapper
+	 * @return
+	 */
+	public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(@Param(Constants.WRAPPER) Wrapper<UserDeliverOrder> wrapper);
+	
+	/**
+	 * 查询满足筛选条件的用户提货订单数量
+	 * 
+	 * @param wrapper
+	 * @return
+	 */
+	public int selectUserDeliverOrderCount(@Param(Constants.WRAPPER) Wrapper<UserDeliverOrder> wrapper);
 }

+ 49 - 21
mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java

@@ -2,9 +2,17 @@ package com.qs.mp.user.service;
 
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
 import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
 
 /**
  * <p>
@@ -15,25 +23,45 @@ import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
  * @since 2022-03-07
  */
 public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
-  /**
-   * 提交奖品提货订单
-   * @param userId
-   * @param orderSettleVO
-   * @return
-   */
-  String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO);
-
-  /**
-   * 取消订单
-   * @param orderId
-   * @return
-   */
-  boolean cancelOrder(String orderId);
-
-  /**
-   * 支付成功回调
-   * @param payOrder
-   * @return
-   */
-  boolean paySuccess(PayOrder payOrder);
+	/**
+	 * 提交奖品提货订单
+	 * 
+	 * @param userId
+	 * @param orderSettleVO
+	 * @return
+	 */
+	String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO);
+
+	/**
+	 * 取消订单
+	 * 
+	 * @param orderId
+	 * @return
+	 */
+	boolean cancelOrder(String orderId);
+
+	/**
+	 * 支付成功回调
+	 * 
+	 * @param payOrder
+	 * @return
+	 */
+	boolean paySuccess(PayOrder payOrder);
+
+	/**
+	 * 获取用户提货订单列表信息,支持翻页
+	 * 
+	 * @param wrapper
+	 * @return
+	 */
+	public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper);
+	
+	
+	/**
+	 * 查询满足筛选条件的用户提货订单数量
+	 * 
+	 * @param wrapper
+	 * @return
+	 */
+	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper);
 }

+ 15 - 2
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -1,6 +1,7 @@
 package com.qs.mp.user.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
@@ -16,6 +17,7 @@ import com.qs.mp.user.domain.UserDeliverOrderItem;
 import com.qs.mp.user.domain.UserPrizeStorage;
 import com.qs.mp.user.domain.UserTicketOrder;
 import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
+import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
 import com.qs.mp.user.mapper.UserDeliverOrderMapper;
 import com.qs.mp.user.service.IUserDeliverOrderItemService;
 import com.qs.mp.user.service.IUserDeliverOrderService;
@@ -55,7 +57,7 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
   @Transactional
   public String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO) {
     UserDeliverOrder userDeliverOrder = new UserDeliverOrder();
-    userDeliverOrder.setOrderId(bizIdGenerator.newId());
+    userDeliverOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userDeliverOrder.setUserId(userId);
     UserAddr userAddr = orderSettleVO.getAddr();
     userDeliverOrder.setReceiver(userAddr.getReceiver());
@@ -77,7 +79,7 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
 
     for (UserPrizeStorage prizeStorage : orderSettleVO.getPrizeList()) {
       UserDeliverOrderItem orderItem = new UserDeliverOrderItem();
-      orderItem.setItemId(bizIdGenerator.newId());
+      orderItem.setItemId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
       orderItem.setOrderId(userDeliverOrder.getOrderId());
       orderItem.setStorageId(prizeStorage.getStorageId());
       orderItem.setGoodsId(prizeStorage.getGoodsId());
@@ -133,4 +135,15 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
     Assert.isTrue(rst, "支付回调用户提货订单处理,更新订单状态失败,orderId:" + deliverOrder.getOrderId());
     return false;
   }
+
+	@Override
+	public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper) {
+		return getBaseMapper().selectUserDeliverOrderVoList(wrapper);
+	}
+
+	@Override
+	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper) {
+		return getBaseMapper().selectUserDeliverOrderCount(wrapper);
+	}
+  
 }

+ 6 - 2
mp-service/src/main/java/com/qs/mp/user/service/impl/UserHitPrizeServiceImpl.java

@@ -82,6 +82,9 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
   @Autowired
   private ITicketService ticketService;
 
+  @Autowired
+  private BizIdGenerator bizIdGenerator;
+
   @Override
   public List<TicketAwardsPrize> listPrize(Ticket ticket, Long userId) {
     UserHitPrize userHitPrize = getOne(new LambdaQueryWrapper<UserHitPrize>().eq(UserHitPrize::getTicketId, ticket.getTicketId()));
@@ -97,6 +100,7 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
       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());
@@ -138,11 +142,11 @@ public class UserHitPrizeServiceImpl extends ServiceImpl<UserHitPrizeMapper, Use
 
     // 放入仓库
     if (ticketAwardsPrize.getPrizeType() == TicketPrizeTypeEnum.COIN) {
-      userCoinService.produce(userId, ticketAwardsPrize.getValue(), String.valueOf(userHitPrize.getId()));
+      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, String.valueOf(userHitPrize.getId()));
+      userPrizeStorageService.takeInStorage(userId, ticketAwardsPrize, PrizeStorageInTypeEnum.TICKET_CASHED, userHitPrize.getId());
     }
 
     boolean rtn = ticketService.update(new LambdaUpdateWrapper<Ticket>().set(Ticket::getStatus, TicketStatusEnum.CASHED)

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

@@ -140,7 +140,7 @@ public class UserTicketOrderServiceImpl extends
 
     // 创建订单
     UserTicketOrder userTicketOrder = new UserTicketOrder();
-    userTicketOrder.setOrderId(bizIdGenerator.newId());
+    userTicketOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     userTicketOrder.setUserId(userId);
     userTicketOrder.setTitle(ticketBox.getTitle());
     userTicketOrder.setBoxId(orderSettleVO.getBoxId());
@@ -165,7 +165,7 @@ public class UserTicketOrderServiceImpl extends
 
     for (int i = 0; i < orderSettleVO.getOrderNum(); i++) {
       UserTicketOrderItem orderItem = new UserTicketOrderItem();
-      orderItem.setItemId(bizIdGenerator.newId());
+      orderItem.setItemId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
       orderItem.setOrderId(userTicketOrder.getOrderId());
       orderItem.setUserId(userId);
       orderItem.setBoxId(ticketBox.getBoxId());
@@ -184,7 +184,7 @@ public class UserTicketOrderServiceImpl extends
     String couponIds = verifyUserCoupon(orderSettleVO.getCouponList());
 
     UserTicketOrder ticketOrder = new UserTicketOrder();
-    ticketOrder.setOrderId(bizIdGenerator.newId());
+    ticketOrder.setOrderId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     ticketOrder.setUserId(userId);
     ticketOrder.setTitle(ticket.getTitle());
     ticketOrder.setBoxId(ticket.getBoxId());
@@ -214,7 +214,7 @@ public class UserTicketOrderServiceImpl extends
     save(ticketOrder);
 
     UserTicketOrderItem orderItem = new UserTicketOrderItem();
-    orderItem.setItemId(bizIdGenerator.newId());
+    orderItem.setItemId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
     orderItem.setOrderId(ticketOrder.getOrderId());
     orderItem.setUserId(userId);
     orderItem.setBoxId(ticket.getBoxId());

+ 21 - 0
mp-service/src/main/resources/mapper/user/UserDeliverOrderMapper.xml

@@ -25,5 +25,26 @@
     <sql id="Base_Column_List">
         order_id, user_id, receiver, tel, province, city, area, address, order_num, pay_amt, freight_amt, memo, status, created_time, updated_time
     </sql>
+    
+    
+    <!-- 查询用户提货订单列表 -->
+    <select id="selectUserDeliverOrderVoList" resultType="com.qs.mp.user.domain.vo.UserDeliverOrderVO">
+		select DISTINCT t1.* , t2.nick_name nickName
+		from mp_user_deliver_order t1
+		left join sys_user t2 on t1.user_id = t2.user_id
+		left join mp_user_deliver_order_item t3 on t1.order_id = t3.order_id
+		${ew.customSqlSegment}
+	</select>
+	
+	    
+    <!-- 查询满足筛选条件的用户提货订单数量 -->
+    <select id="selectUserDeliverOrderCount" resultType="integer">
+		select count(DISTINCT t1.order_id) 
+		from mp_user_deliver_order t1
+		left join sys_user t2 on t1.user_id = t2.user_id
+		left join mp_user_deliver_order_item t3 on t1.order_id = t3.order_id
+		${ew.customSqlSegment}
+	</select>
+	
 
 </mapper>