소스 검색

用户订单发货增加快递和无需物流类型

cup 3 년 전
부모
커밋
7d359d88eb

+ 27 - 4
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/UserDeliverOrderMgrController.java

@@ -8,6 +8,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.DeliverTypeEnum;
 import com.qs.mp.common.enums.ErrorCodeEnum;
 import com.qs.mp.user.domain.UserDeliverOrder;
 import com.qs.mp.user.domain.UserDeliverOrderItem;
@@ -25,6 +26,9 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
+
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import lombok.AllArgsConstructor;
 import ma.glasnost.orika.MapperFacade;
 import org.apache.commons.lang3.StringUtils;
@@ -69,6 +73,9 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 	 */
 	@PostMapping("/list")
 	@ApiOperation(value = "用户提货订单列表", notes = "获取用户提货订单列表")
+	@ApiResponses(
+			@ApiResponse(code = 200, message = "OK", response = UserDeliverOrderVO.class)
+	)
 	@PreAuthorize("@ss.hasPermi('order:deliver:list')")
 	public TableDataInfo list(@RequestBody UserDeliverOrderQueryParam queryParam) {
 		startPage();
@@ -124,16 +131,31 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 		if (null == shipParam || StringUtils.isBlank(shipParam.getOrderId())) {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
+
+		Integer deliveryType = shipParam.getDeliveryType();
+		if (null == deliveryType) {
+			return error("物流类型参数为空");
+		}
+
 		List<UserDeliverOrderItem> itemList = new ArrayList<UserDeliverOrderItem>();
 		if (null != shipParam && null != shipParam.getItemIds() && shipParam.getItemIds().size() > 0) {
 			Date deliveryTime = new Date();
 			for (String itemId : shipParam.getItemIds()) {
 				if (StringUtils.isNotBlank(itemId)) {
 					UserDeliverOrderItem item = new UserDeliverOrderItem();
-					item.setItemId(itemId);
-					item.setDeliveryId(shipParam.getDeliveryId());
-					item.setDeliveryFlowId(shipParam.getDeliveryFlowId());
-					item.setDeliveryTime(deliveryTime);
+
+					if (DeliverTypeEnum.NO_DELIVER.getValue().equals(deliveryType)) {
+						// 无需物流,设置发货时间为当前时间
+						item.setItemId(itemId);
+						item.setDeliveryTime(deliveryTime);
+
+					} else if (DeliverTypeEnum.DELIVER.getValue().equals(deliveryType)) {
+						// 快递发货,设置物流信息
+						item.setItemId(itemId);
+						item.setDeliveryId(shipParam.getDeliveryId());
+						item.setDeliveryFlowId(shipParam.getDeliveryFlowId());
+						item.setDeliveryTime(deliveryTime);
+					}
 					itemList.add(item);
 				}
 			}
@@ -142,6 +164,7 @@ public class UserDeliverOrderMgrController extends BaseApiController {
 			boolean rtn = userDeliverOrderService.userDeliverOrderShip(shipParam.getOrderId(), itemList);
 			return rtn ? AjaxResult.success() : AjaxResult.error("发货失败");
 		}
+
 		return AjaxResult.error("发货失败");
 	}
 

+ 0 - 5
mp-admin/src/main/resources/application-test.yml

@@ -99,11 +99,6 @@ server:
   # 环境标识
   env: test
 
-# Swagger配置
-swagger:
-  # 请求前缀
-  pathMapping: /test-api
-
 
 #API访问
 client:

+ 36 - 0
mp-common/src/main/java/com/qs/mp/common/enums/DeliverTypeEnum.java

@@ -0,0 +1,36 @@
+package com.qs.mp.common.enums;
+
+import com.baomidou.mybatisplus.annotation.IEnum;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+/**
+ * 物流配送方式枚举类
+ * @author Cup
+ * @date 2022/4/19
+ */
+@ApiModel("物流配送方式枚举类")
+public enum DeliverTypeEnum implements IEnum<Integer> {
+
+    DELIVER(1,"快递"),
+
+    NO_DELIVER(2, "无需物流");
+
+    DeliverTypeEnum(int value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+
+
+    private final int value;
+
+    private final String desc;
+
+    @Override
+    public Integer getValue() {
+        return value;
+    }
+
+}

+ 4 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/UserDeliverOrderShipParam.java

@@ -26,6 +26,10 @@ public class UserDeliverOrderShipParam {
 	@ApiModelProperty(value = "订单编号", required = false)
 	private String orderId;
 
+	@NotNull(message = "配送类型不能为空")
+	@ApiModelProperty(value = "配送类型 1快递 2 无需物流", required = false)
+	private Integer deliveryType;
+
 	/**
 	 * 物流公司ID
 	 */

+ 23 - 0
mp-service/src/main/java/com/qs/mp/user/domain/UserDeliverOrder.java

@@ -10,6 +10,9 @@ import com.baomidou.mybatisplus.annotation.Version;
 import com.qs.mp.common.enums.DeliverOrderStatusEnum;
 import java.io.Serializable;
 import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 /**
@@ -19,6 +22,7 @@ import lombok.Data;
  */
 @TableName("mp_user_deliver_order")
 @Data
+@ApiModel("用户提货订单实体类")
 public class UserDeliverOrder implements Serializable {
 
   private static final long serialVersionUID = 1L;
@@ -26,91 +30,110 @@ public class UserDeliverOrder implements Serializable {
   /**
    * 主键
    */
+  @ApiModelProperty("订单 id")
   @TableId(value = "order_id", type = IdType.INPUT)
   private String orderId;
 
   /**
    * 用户ID
    */
+  @ApiModelProperty("用户ID")
   @TableField("user_id")
   private Long userId;
 
   /**
    * 收货人
    */
+  @ApiModelProperty("收货人")
   @TableField("receiver")
   private String receiver;
 
   /**
    * 收货人电话
    */
+  @ApiModelProperty("收货人电话")
   @TableField("tel")
   private String tel;
 
   /**
    * 省
    */
+  @ApiModelProperty("省")
   @TableField("province")
   private String province;
 
   /**
    * 市
    */
+  @ApiModelProperty("市")
   @TableField("city")
   private String city;
 
   /**
    * 区
    */
+  @ApiModelProperty("区")
   @TableField("area")
   private String area;
 
   /**
    * 详细地址
    */
+  @ApiModelProperty("详细地址")
   @TableField("address")
   private String address;
 
   /**
    * 总商品数
    */
+  @ApiModelProperty("总商品数")
   @TableField("order_num")
   private Integer orderNum;
 
   /**
    * 支付金额
    */
+  @ApiModelProperty("支付金额")
   @TableField("pay_amt")
   private Integer payAmt;
 
   /**
    * 运费
    */
+  @ApiModelProperty("运费")
   @TableField("freight_amt")
   private Integer freightAmt;
 
   /**
    * 备注
    */
+  @ApiModelProperty("备注")
   @TableField("memo")
   private String memo;
 
   /**
    * 订单状态;-1 已取消 0:待付款 1:待发货 2:待收货 3:已完成
    */
+  @ApiModelProperty("订单状态;-1 已取消 0:待付款 1:待发货 2:待收货 3:已完成")
   @TableField("status")
   @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
   private DeliverOrderStatusEnum status;
 
+  @TableField("confirm_Time")
+  @ApiModelProperty("确认收货时间")
+  private Date confirmTime;
+
   /**
    * 创建时间
    */
+  @ApiModelProperty("创建时间")
   @TableField("created_time")
   private Date createdTime;
 
   /**
    * 更新时间
    */
+  @ApiModelProperty("更新时间")
   @TableField("updated_time")
   @Version
   private Date updatedTime;

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

@@ -23,6 +23,8 @@ import com.qs.mp.user.service.IUserDeliverOrderItemService;
 import com.qs.mp.user.service.IUserDeliverOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.user.service.IUserPrizeStorageService;
+
+import java.util.Date;
 import java.util.List;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -150,21 +152,41 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
 	}
 
 	@Override
-	@Transactional
+	@Transactional(rollbackFor = Exception.class)
 	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);
+			queryWrapper.isNull(UserDeliverOrderItem::getDeliveryTime);
 			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 {
+                // 判断订单是否全部都是无需物流; 有发货时间并且物流单号是空的就是无需物流
+                LambdaQueryWrapper<UserDeliverOrderItem> userDeliverOrderItemLambdaQueryWrapper = new LambdaQueryWrapper<>();
+                userDeliverOrderItemLambdaQueryWrapper.eq(UserDeliverOrderItem::getOrderId, orderId);
+                // 获取订单下所有提货统计
+                int orderItemCount = userDeliverOrderItemService.count(userDeliverOrderItemLambdaQueryWrapper);
+
+                userDeliverOrderItemLambdaQueryWrapper.isNotNull(UserDeliverOrderItem::getDeliveryTime);
+                userDeliverOrderItemLambdaQueryWrapper.isNull(UserDeliverOrderItem::getDeliveryFlowId);
+
+                // 获取无需物流状态数量
+                int noNeedShipCnt = userDeliverOrderItemService.count(userDeliverOrderItemLambdaQueryWrapper);
+
+                // 如果相等则表示所有商品都是无需物流,直接设置订单状态为已完成,并且设置订单的收货时间
+                if (orderItemCount == noNeedShipCnt) {
+                    updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.FINISHED);
+                    updateWrapper.set(UserDeliverOrder::getConfirmTime, new Date());
+                } else {
+                    // 否则订单状态为待收货
+                    updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.NOT_CONFIRM);
+                }
+
+            }else {
 				updateWrapper.set(UserDeliverOrder::getStatus, DeliverOrderStatusEnum.PART_DELIVER);
 			}
 			return userDeliverOrderService.update(updateWrapper);