Browse Source

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

Dev

See merge request quanshu/mp-server!400
zhong chunping 3 years ago
parent
commit
21039ea9e2

+ 29 - 10
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelOrderMgrController.java

@@ -27,10 +27,7 @@ import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.domain.DeliveryCompany;
-import com.qs.mp.common.enums.BusinessType;
-import com.qs.mp.common.enums.DeliverTypeEnum;
-import com.qs.mp.common.enums.ErrorCodeEnum;
-import com.qs.mp.common.enums.TicketPkgStatusEnum;
+import com.qs.mp.common.enums.*;
 import com.qs.mp.common.service.IDeliveryCompanyService;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
@@ -217,10 +214,12 @@ public class ChannelOrderMgrController extends BaseApiController {
 	@Log(title = "经销商订单发货单号修改", businessType = BusinessType.UPDATE)
 	@PostMapping("/ship/update")
 	@ApiOperation(value = "订单发货单号修改" , notes = "在订单发货页面提交")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "操作成功", response = AjaxResult.class)
+	)
 	@PreAuthorize("@ss.hasPermi('order:channel:ship')")
 	public AjaxResult updateShipInfo(@RequestBody ChannelOrderShipParam shipParam) {
-		if(null == shipParam || StringUtils.isBlank(shipParam.getOrderId())
-			|| null == shipParam.getDeliveryId() || StringUtils.isBlank(shipParam.getDeliveryFlowId())) {
+		if(null == shipParam || StringUtils.isBlank(shipParam.getOrderId())) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 
@@ -230,10 +229,30 @@ public class ChannelOrderMgrController extends BaseApiController {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 
-		boolean rtn = channelOrderService.update(new LambdaUpdateWrapper<ChannelOrder>()
-				.set(ChannelOrder::getDeliveryId, shipParam.getDeliveryId())
-				.set(ChannelOrder::getDeliveryFlowId, shipParam.getDeliveryFlowId())
-				.eq(ChannelOrder::getOrderId, shipParam.getOrderId()));
+		Integer deliveryType = shipParam.getDeliveryType();
+		if (null == deliveryType) {
+			return error("物流类型参数为空");
+		}
+
+
+		boolean rtn = false;
+		if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+			// 无需物流,设置单号为空,物流公司为空
+			rtn = channelOrderService.update(new LambdaUpdateWrapper<ChannelOrder>()
+					.set(ChannelOrder::getDeliveryId, null)
+					.set(ChannelOrder::getDeliveryFlowId, null)
+					.set(ChannelOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
+					.eq(ChannelOrder::getOrderId, shipParam.getOrderId()));
+
+		} else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+			// 快递发货,原逻辑
+			rtn = channelOrderService.update(new LambdaUpdateWrapper<ChannelOrder>()
+					.set(ChannelOrder::getDeliveryId, shipParam.getDeliveryId())
+					.set(ChannelOrder::getDeliveryFlowId, shipParam.getDeliveryFlowId())
+					.eq(ChannelOrder::getOrderId, shipParam.getOrderId()));
+		}
+
+
 		return rtn ? AjaxResult.success() : AjaxResult.error("修改失败");
 
 	}

+ 14 - 7
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -1,5 +1,6 @@
 package com.qs.mp.web.controller.api.admin;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.param.UserDeliverOrderQueryParam;
@@ -8,6 +9,7 @@ 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.DeliverOrderStatusEnum;
 import com.qs.mp.common.enums.DeliverTypeEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.user.domain.UserDeliverOrder;
@@ -174,21 +176,26 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 	@Log(title = "用户提货订单发货单号修改", businessType = BusinessType.UPDATE)
 	@PostMapping("/ship/update")
 	@ApiOperation(value = "订单发货修改", notes = "在订单发货页面提交")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "success", response = AjaxResult.class)
+	)
 	@PreAuthorize("@ss.hasPermi('order:deliver:ship')")
 	public AjaxResult updateShipInfo(@RequestBody UserDeliverOrderShipParam shipParam) {
 		if (null == shipParam || StringUtils.isBlank(shipParam.getOrderId())
-				|| null == shipParam.getDeliveryId() || StringUtils.isBlank(shipParam.getDeliveryFlowId())
 				|| CollectionUtils.isEmpty(shipParam.getItemIds())) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 
-		for (String itemId : shipParam.getItemIds()) {
-			userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
-					.set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
-					.set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
-					.eq(UserDeliverOrderItem::getItemId, itemId));
+		Integer deliveryType = shipParam.getDeliveryType();
+		if (null == deliveryType) {
+			return error("物流类型参数为空");
 		}
-		return AjaxResult.success();
+
+		// 修改物流信息
+		boolean res = userDeliverOrderService.updateShipInfo(shipParam);
+
+
+		return res ? AjaxResult.success() : AjaxResult.error("消息修改失败");
 	}
 
 	@Log(title = "提货订单导出", businessType = BusinessType.EXPORT)

+ 9 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java

@@ -1,5 +1,6 @@
 package com.qs.mp.user.service;
 
+import com.qs.mp.admin.domain.param.UserDeliverOrderShipParam;
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
@@ -83,4 +84,12 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 	 * @return
 	 */
 	boolean userDeliverOrderShip(String orderId, List<UserDeliverOrderItem> itemList);
+
+	/**
+	 * 修改物流信息
+	 * @param shipParam
+	 * @return
+	 */
+    boolean updateShipInfo(UserDeliverOrderShipParam shipParam);
+
 }

+ 49 - 1
mp-service/src/main/java/com/qs/mp/user/service/impl/UserDeliverOrderServiceImpl.java

@@ -4,7 +4,9 @@ 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.admin.domain.param.UserDeliverOrderShipParam;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
+import com.qs.mp.common.enums.DeliverTypeEnum;
 import com.qs.mp.common.enums.PrizeStorageStatusEnum;
 import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
 import com.qs.mp.common.exception.ServiceException;
@@ -194,7 +196,53 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
 		return false;
 	}
 
-	@Override
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateShipInfo(UserDeliverOrderShipParam shipParam) {
+        Integer deliveryType = shipParam.getDeliveryType();
+        boolean res = false;
+
+        for (String itemId : shipParam.getItemIds()) {
+
+            if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+                // 无需物流,设置物流信息为空
+                res = userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
+                        .set(UserDeliverOrderItem::getDeliveryId, null)
+                        .set(UserDeliverOrderItem::getDeliveryFlowId, null)
+                        .eq(UserDeliverOrderItem::getItemId, itemId));
+                // 查询判断是否所有都是无需物流
+                LambdaQueryWrapper<UserDeliverOrderItem> userDeliverOrderItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                userDeliverOrderItemLambdaQueryWrapper.eq(UserDeliverOrderItem::getOrderId, shipParam.getOrderId());
+                // 获取订单下所有提货统计数
+                int orderItemCount = userDeliverOrderItemService.count(userDeliverOrderItemLambdaQueryWrapper);
+
+                userDeliverOrderItemLambdaQueryWrapper.isNotNull(UserDeliverOrderItem::getDeliveryTime);
+                userDeliverOrderItemLambdaQueryWrapper.isNull(UserDeliverOrderItem::getDeliveryFlowId);
+
+                // 获取无需物流状态数量
+                int noNeedShipCnt = userDeliverOrderItemService.count(userDeliverOrderItemLambdaQueryWrapper);
+
+                // 如果相等则表示所有商品都是无需物流,直接设置订单状态为已完成,并且设置订单的收货时间
+                if (orderItemCount == noNeedShipCnt) {
+                    res = userDeliverOrderService.update(new LambdaUpdateWrapper<UserDeliverOrder>()
+                            .set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
+                            .eq(UserDeliverOrder::getOrderId, shipParam.getOrderId()));
+                }
+
+
+            } else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+                // 快递发货,原逻辑
+                res = userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
+                        .set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
+                        .set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
+                        .eq(UserDeliverOrderItem::getItemId, itemId));
+            }
+
+        }
+        return res;
+    }
+
+    @Override
 	public UserDeliverOrderVO selectUserDeliverOrderVo(String orderId) {
 		return getBaseMapper().selectUserDeliverOrderVo(orderId);
 	}