|
@@ -4,11 +4,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.ydd.api.DeliveryService;
|
|
|
-import com.ydd.app.dto.OrderCancelReq;
|
|
|
-import com.ydd.app.dto.OrderLocationReq;
|
|
|
-import com.ydd.app.dto.OrderCreateReq;
|
|
|
-import com.ydd.app.dto.OrderReq;
|
|
|
-import com.ydd.app.dto.OrderPushReq;
|
|
|
+import com.ydd.app.dto.*;
|
|
|
import com.ydd.app.service.ApiOrderNewService;
|
|
|
import com.ydd.app.service.OpenApiOrderService;
|
|
|
import com.ydd.app.vo.OrderLocationVo;
|
|
@@ -29,6 +25,7 @@ import com.ydd.module.domain.*;
|
|
|
import com.ydd.module.dto.CancelOrderDto;
|
|
|
import com.ydd.module.dto.CouponDto;
|
|
|
import com.ydd.module.enums.*;
|
|
|
+import com.ydd.module.expection.CustomAppException;
|
|
|
import com.ydd.module.service.*;
|
|
|
import com.ydd.third.common.utils.CoordinateUtils;
|
|
|
import com.ydd.third.common.vo.ResObject;
|
|
@@ -45,10 +42,12 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 订单类开放接口 ServiceImpl
|
|
@@ -736,17 +735,31 @@ public class OpenApiOrderServiceImpl implements OpenApiOrderService {
|
|
|
|
|
|
@Override
|
|
|
public ResponseResult createOrder(OrderCreateReq orderCreateReq) {
|
|
|
- // 计价结果缓存到redis, 10分钟有效, 到时需重新计价
|
|
|
+ // 计价结果缓存到redis, 10分钟有效, 过时需重新计价
|
|
|
if (!redisCache.hasKey(RedisKeyConstant.VALUATION_RESULT + orderCreateReq.getOutOrderSn())) {
|
|
|
return ResponseResult.error(ResponseResultCodeEnum.VALUATION_INVALID);
|
|
|
}
|
|
|
OrderReq orderReq = redisCache.getCacheObject(RedisKeyConstant.VALUATION_RESULT + orderCreateReq.getOutOrderSn());
|
|
|
- Object result = apiOrderNewService.createOrder(orderReq.getMemberId(), orderReq, 1);
|
|
|
- if ("amount_not_enough".equals(result)) {
|
|
|
- return ResponseResult.error(ResponseResultCodeEnum.AMOUNT_NOT_ENOUGH);
|
|
|
- } else if ("ok".equals(result)) {
|
|
|
- OrderCreateVo orderCreateVo = OrderCreateVo.builder().orderSn(orderReq.getOrderNo()).outOrderSn(orderCreateReq.getOutOrderSn()).build();
|
|
|
- return ResponseResult.success(orderCreateVo);
|
|
|
+ List<ValuationRes> valuationResList = orderReq.getValuationRes();
|
|
|
+ if (CollectionUtils.isEmpty(valuationResList)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.VALUATION_INVALID);
|
|
|
+ }
|
|
|
+ List<String> deliveryIds = Arrays.asList(orderCreateReq.getDeliveryIdStr().split(","));
|
|
|
+ List<ValuationRes> valuationRes = valuationResList.stream().filter(item -> deliveryIds.contains(String.valueOf(item.getDeliveryType()))).collect(Collectors.toList());
|
|
|
+ if (CollectionUtils.isEmpty(valuationRes)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.DELIVERY_ID_INVALID);
|
|
|
+ }
|
|
|
+ orderReq.setValuationRes(valuationRes);
|
|
|
+ try {
|
|
|
+ Object result = apiOrderNewService.createOrder(orderReq.getMemberId(), orderReq, 1);
|
|
|
+ if ("amount_not_enough".equals(result)) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.AMOUNT_NOT_ENOUGH);
|
|
|
+ } else if ("ok".equals(result)) {
|
|
|
+ OrderCreateVo orderCreateVo = OrderCreateVo.builder().orderSn(orderReq.getOrderNo()).outOrderSn(orderCreateReq.getOutOrderSn()).build();
|
|
|
+ return ResponseResult.success(orderCreateVo);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ return ResponseResult.error(ResponseResultCodeEnum.ORDER_CREATE_ERR.getCode(), e.getMessage());
|
|
|
}
|
|
|
return ResponseResult.error(ResponseResultCodeEnum.ORDER_CREATE_ERR);
|
|
|
}
|