|
@@ -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,158 @@ 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.setItemStatus(StringUtils.isNotBlank(userDeliverOrderItem.get));
|
|
|
+ excelList.add(deliverOrderExcel);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ExcelUtil<DeliverOrderExcel> util = new ExcelUtil<DeliverOrderExcel>(DeliverOrderExcel.class);
|
|
|
+ return util.exportExcel(excelList, "用户提货订单导出", false);
|
|
|
+ }
|
|
|
}
|