소스 검색

提货订单发货

guanglong 3 년 전
부모
커밋
0205745ec1

+ 24 - 3
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -3,11 +3,13 @@ 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.CouponTicket;
 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.admin.domain.param.UserDeliverOrderShipParam;
 import com.qs.mp.channel.domain.param.OrderPayParam;
 import com.qs.mp.common.annotation.Log;
 import com.qs.mp.common.core.domain.AjaxResult;
@@ -128,9 +130,28 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 	 */
 	@PostMapping("/ship")
 	@ApiOperation(value = "订单发货", notes = "在订单发货页面提交")
-	public AjaxResult ship(@RequestBody UserDeliverOrder order) {
-
-		return AjaxResult.success();
+	public AjaxResult ship(@RequestBody UserDeliverOrderShipParam shipParam) {
+		if(null == shipParam || StringUtils.isBlank(shipParam.getOrderId())) {
+			return error(ErrorCodeEnum.ERROR_CODE_1001);
+		}
+		List<UserDeliverOrderItem> itemList = new ArrayList<UserDeliverOrderItem>();
+		if(null != shipParam && null != shipParam.getItemIds()
+				&& shipParam.getItemIds().size() > 0) {
+			for(String itemId : shipParam.getItemIds() ) {
+				if(StringUtils.isNotBlank(itemId)) {
+					UserDeliverOrderItem item = new UserDeliverOrderItem();
+		        	item.setItemId(itemId);
+		        	item.setDeliveryId(shipParam.getDeliveryId());
+		        	item.setDeliveryFlowId(shipParam.getDeliveryFlowId());
+		        	itemList.add(item);
+				}
+			}
+		}
+		if(null != itemList && itemList.size() > 0) {
+			boolean rtn = userDeliverOrderService.userDeliverOrderShip(shipParam.getOrderId(), itemList);
+			return rtn ? AjaxResult.success() : AjaxResult.error("发货失败");
+		}
+		return AjaxResult.error("发货失败");
 	}
 
 	@Log(title = "导出", businessType = BusinessType.EXPORT)

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

@@ -16,7 +16,8 @@ public enum DeliverOrderStatusEnum implements IEnum<Integer> {
   NOT_PAY(0, "待付款"),
   NOT_DELIVER(1, "待发货"),
   NOT_CONFIRM(2, "待收货"),
-  FINISHED(3, "已完成");
+  FINISHED(3, "已完成"),
+  PART_DELIVER(4, "部分发货");
 
   private final int value;
   private final String desc;

+ 48 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserDeliverOrderShipParam.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 java.util.List;
+
+import javax.validation.constraints.NotNull;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.baomidou.mybatisplus.annotation.TableField;
+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 UserDeliverOrderShipParam {
+
+	@ApiModelProperty(value = "订单编号", required = false)
+	private String orderId;
+
+	/**
+	 * 物流公司ID
+	 */
+	@NotNull(message = "快递公司不能为空")
+	@ApiModelProperty(value = "物流公司", required = false)
+	private Long deliveryId;
+
+	/**
+	 * 物流单号ID
+	 */
+	@NotNull(message = "物流单号不能为空")
+	@ApiModelProperty(value = "物流单号", required = false)
+	private String deliveryFlowId;
+	
+	
+	@NotNull(message = "发货商品不能为空")
+	@ApiModelProperty(value = "发货商品", required = false)
+	private List<String> itemIds;;
+
+}

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

@@ -2,6 +2,7 @@ package com.qs.mp.user.service;
 
 import com.qs.mp.pay.domain.PayOrder;
 import com.qs.mp.user.domain.UserDeliverOrder;
+import com.qs.mp.user.domain.UserDeliverOrderItem;
 
 import java.util.List;
 
@@ -64,4 +65,13 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 	 * @return
 	 */
 	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper);
+	
+	
+	/**
+	 * 用户提货订单发货
+	 * @param orderId
+	 * @param itemList
+	 * @return
+	 */
+	boolean userDeliverOrderShip(String orderId, List<UserDeliverOrderItem> itemList);
 }

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

@@ -47,6 +47,9 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
   @Autowired
   private BizIdGenerator bizIdGenerator;
 
+  @Autowired
+  private IUserDeliverOrderService userDeliverOrderService;
+
   @Autowired
   private IUserDeliverOrderItemService userDeliverOrderItemService;
 
@@ -145,5 +148,27 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
 	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper) {
 		return getBaseMapper().selectUserDeliverOrderCount(wrapper);
 	}
-  
+
+	@Override
+	@Transactional
+	public boolean userDeliverOrderShip(String orderId, List<UserDeliverOrderItem> itemList) {
+		boolean res = userDeliverOrderItemService.updateBatchById(itemList);
+		if(res) {
+			// 检测订单是否全部提货完成
+			LambdaQueryWrapper<UserDeliverOrderItem> queryWrapper = new LambdaQueryWrapper<UserDeliverOrderItem>();
+			queryWrapper.eq(UserDeliverOrderItem::getOrderId, orderId);
+			queryWrapper.isNull(UserDeliverOrderItem::getDeliveryFlowId);
+			int noShipCnt = userDeliverOrderItemService.count(queryWrapper);
+			// 部分发货是订单状态仍保留待发货状态, 全部发完的时候再修改订单状态为待收货
+			LambdaUpdateWrapper<UserDeliverOrder> updateWrapper = new LambdaUpdateWrapper<UserDeliverOrder>();
+			updateWrapper.eq(UserDeliverOrder::getOrderId, orderId);
+			if(noShipCnt == 0) {
+				updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.NOT_CONFIRM);
+			}else {
+				updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.PART_DELIVER);
+			}
+			return userDeliverOrderService.update(updateWrapper);
+		}
+		return false;
+	}
 }