|
@@ -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);
|
|
|
}
|