Przeglądaj źródła

用户订单物流支持修改类型

cup 3 lat temu
rodzic
commit
58ce84f3c0

+ 45 - 5
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,19 +176,57 @@ 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);
 		}
 
+		Integer deliveryType = shipParam.getDeliveryType();
+		if (null == deliveryType) {
+			return error("物流类型参数为空");
+		}
 		for (String itemId : shipParam.getItemIds()) {
-			userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
-					.set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
-					.set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
-					.eq(UserDeliverOrderItem::getItemId, itemId));
+
+			if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+				// 无需物流,设置物流信息为空
+				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) {
+					userDeliverOrderService.update(new LambdaUpdateWrapper<UserDeliverOrder>()
+							.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.FINISHED)
+							.eq(UserDeliverOrder::getOrderId, shipParam.getOrderId()));
+				}
+
+
+			} else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+				// 快递发货,原逻辑
+				userDeliverOrderItemService.update(new LambdaUpdateWrapper<UserDeliverOrderItem>()
+						.set(UserDeliverOrderItem::getDeliveryId, shipParam.getDeliveryId())
+						.set(UserDeliverOrderItem::getDeliveryFlowId, shipParam.getDeliveryFlowId())
+						.eq(UserDeliverOrderItem::getItemId, itemId));
+			}
+
+
 		}
 		return AjaxResult.success();
 	}