Commit 34325d72 by 周晓航

初步完成订单接口优化, 进入自测阶段

parent 640e6f04
...@@ -35,14 +35,12 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -35,14 +35,12 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.time.DateFormatUtils; import org.apache.commons.lang.time.DateFormatUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
...@@ -485,7 +483,7 @@ public class OrderSdkAdapter { ...@@ -485,7 +483,7 @@ public class OrderSdkAdapter {
* @param deliveryContactInfoList * @param deliveryContactInfoList
* @param addInfo * @param addInfo
*/ */
private void getThirdDeliveryInfo(List<DeliveryContactInfoCreateReq> deliveryContactInfoList, BaseCreateOrderRequest.DeliveryTypeInfo addInfo) { public void getThirdDeliveryInfo(List<DeliveryContactInfoCreateReq> deliveryContactInfoList, BaseCreateOrderRequest.DeliveryTypeInfo addInfo) {
//if (addInfo != null && addInfo.getDeliveryType() != null && QueryDeliveryType.THIRD.getCode().equals(addInfo.getDeliveryType().getCode())) { //if (addInfo != null && addInfo.getDeliveryType() != null && QueryDeliveryType.THIRD.getCode().equals(addInfo.getDeliveryType().getCode())) {
if (addInfo != null && addInfo.getDeliveryType() != null) { if (addInfo != null && addInfo.getDeliveryType() != null) {
DeliveryContactInfoCreateReq deliveryinfo = new DeliveryContactInfoCreateReq(); DeliveryContactInfoCreateReq deliveryinfo = new DeliveryContactInfoCreateReq();
...@@ -2683,7 +2681,7 @@ public class OrderSdkAdapter { ...@@ -2683,7 +2681,7 @@ public class OrderSdkAdapter {
* @param accounts 订单优惠和费用(入参) * @param accounts 订单优惠和费用(入参)
* @return 订单金额 * @return 订单金额
*/ */
private Long updateOrderItemsAndSettlements(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, List<OrderCostCreateReq> orderCostCreateReqs, public Long updateOrderItemsAndSettlements(List<OrderItemCreateReq> orderItemList, List<OrderSettlementCreateReq> orderSettlementCreateReqList, List<OrderCostCreateReq> orderCostCreateReqs,
List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) { List<CreateOrderProductRequest> products, List<CreateOrderAccountRequest> accounts, String partnerId) {
Long originalAmount = 0L; Long originalAmount = 0L;
// 更新订单费用信息 // 更新订单费用信息
...@@ -3190,7 +3188,7 @@ public class OrderSdkAdapter { ...@@ -3190,7 +3188,7 @@ public class OrderSdkAdapter {
/** /**
* 计算所有商品的重量 单位g * 计算所有商品的重量 单位g
*/ */
private Double sumOrderWeight(List<CreateOrderProductRequest> products) { public Double sumOrderWeight(List<CreateOrderProductRequest> products) {
Double totalWeight = 0D; Double totalWeight = 0D;
if (CollectionUtils.isEmpty(products)) { if (CollectionUtils.isEmpty(products)) {
return totalWeight; return totalWeight;
......
...@@ -2,7 +2,6 @@ package com.freemud.sdk.api.assortment.order.request.order; ...@@ -2,7 +2,6 @@ package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
...@@ -12,7 +11,7 @@ import java.util.Date; ...@@ -12,7 +11,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
@Data @Data
public class BaseCreateOrderRequest extends BaseConfig { public class BaseCreateOrderRequest extends BaseConfig {
/** /**
* 商户ID 必填 * 商户ID 必填
......
...@@ -80,13 +80,13 @@ public class CreateOrderAdapter { ...@@ -80,13 +80,13 @@ public class CreateOrderAdapter {
requestDto.setPartnerId(createOrderBo.getCreateOrderBaseVo().getPartnerId()); requestDto.setPartnerId(createOrderBo.getCreateOrderBaseVo().getPartnerId());
requestDto.setWxAppId(createOrderBo.getUserLoginInfoDto().getWxAppId()); requestDto.setWxAppId(createOrderBo.getUserLoginInfoDto().getWxAppId());
requestDto.setOpenId(createOrderBo.getUserLoginInfoDto().getOpenId()); requestDto.setOpenId(createOrderBo.getUserLoginInfoDto().getOpenId());
requestDto.setFaceCode(createOrderBo.getCreateOrderBaseVo().getCardCode()); requestDto.setFaceCode(createOrderBo.getCreateOrderBaseVo().getFaceCode());
requestDto.setCardCode(createOrderBo.getCreateOrderBaseVo().getCardCode()); requestDto.setCardCode(createOrderBo.getCreateOrderBaseVo().getCardCode());
requestDto.setPayCode(null); requestDto.setPayCode(null);
requestDto.setFatherOrderBean(createOrderBo.getCreateOrderOperateDto().getFatherOrderBean()); requestDto.setFatherOrderBean(createOrderBo.getCreateOrderOperateDto().getFatherOrderBean());
requestDto.setProductOrderBean(createOrderBo.getCreateOrderOperateDto().getProductOrderBean()); requestDto.setProductOrderBean(createOrderBo.getCreateOrderOperateDto().getProductOrderBean());
requestDto.setTotalAmount(createOrderBo.getCreateOrderOperateDto().getTotalAmount()); requestDto.setTotalAmount(createOrderBo.getCreateOrderOperateDto().getTotalAmount()== null ? 0 : createOrderBo.getCreateOrderOperateDto().getTotalAmount());
requestDto.setCardAmount(createOrderBo.getCreateOrderOperateDto().getCardAmount()); requestDto.setCardAmount(createOrderBo.getCreateOrderOperateDto().getCardAmount()== null ? 0 : createOrderBo.getCreateOrderOperateDto().getCardAmount());
requestDto.setOrderExtInfoDTO(createOrderBo.getExtInfo()); requestDto.setOrderExtInfoDTO(createOrderBo.getExtInfo());
requestDto.setTransId(createOrderBo.getCreateOrderOperateDto().getFatherOrderBean().getOid()); requestDto.setTransId(createOrderBo.getCreateOrderOperateDto().getFatherOrderBean().getOid());
requestDto.setOrderClient(null); requestDto.setOrderClient(null);
......
...@@ -10,6 +10,7 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI ...@@ -10,6 +10,7 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto; import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest; import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.request.order.BaseCreateOrderRequest;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -38,4 +39,9 @@ public class CreateOrderBo { ...@@ -38,4 +39,9 @@ public class CreateOrderBo {
private CreateOrderRequest createOrderRequest; private CreateOrderRequest createOrderRequest;
private Map<String, GetProductsVo> products; private Map<String, GetProductsVo> products;
/**
* 商城转换后的对象, 在减库存中要使用
*/
private BaseCreateOrderRequest baseCreateOrderRequest;
} }
package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.dto.coupon.InvalidCouponsRequestDto;
import cn.freemud.entities.dto.coupon.InvalidCouponsResponseDto;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CheckOrderUniversal;
import cn.freemud.service.thirdparty.CouponOnlineClient;
import cn.freemud.service.universal.CommonCheckOrderHandle;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/19 上午10:28
* @description : APP订单创建 校验实现类
*/
@Service
public class CheckOrderApp extends CheckOrderUniversal {
@Autowired
private CommonCheckOrderHandle commonCheckOrderHandle;
@Autowired
private CouponOnlineClient couponOnlineClient;
@Override
public void checkCustomCreateOrderParam(CreateOrderBo createOrderBo) {
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
super.checkOrderByOrderType(createOrderBo);
// 下单前检查优惠券是否可用 app订单独享
CreateOrderBaseVo createOrderBaseVo = createOrderBo.getCreateOrderBaseVo();
this.checkCouponCode(createOrderBaseVo);
}
/**
* 额外优惠券校验操作
* @param createOrderVo
*/
private void checkCouponCode(CreateOrderBaseVo createOrderVo) {
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
InvalidCouponsRequestDto requestDto = new InvalidCouponsRequestDto();
List<String> couponList = new ArrayList<>();
couponList.add(createOrderVo.getCouponCode());
requestDto.setCouponCodes(couponList);
requestDto.setPartnerId(Integer.valueOf(createOrderVo.getPartnerId()));
InvalidCouponsResponseDto invalidCouponsResponseDto = couponOnlineClient.invalidCoupons(requestDto);
if (invalidCouponsResponseDto.getStatusCode() != 100 || invalidCouponsResponseDto.getData() == null || (invalidCouponsResponseDto.getData() != null && CollectionUtils.isNotEmpty(invalidCouponsResponseDto.getData().getInvalidCoupons()))) {
throw new ServiceException(ResponseResult.COUPON_INVALID);
}
}
}
/**
* 渠道类型
*
* @return
*/
@Override
protected OrderChannelType getChannelType() {
return OrderChannelType.APP;
}
/**
* 拼团逻辑
*
* @param createOrderVo
* @param shoppingCartGoodsDto
*/
@Override
protected void collageOrderHandle(CreateOrderBaseVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
commonCheckOrderHandle.collageOrderHandle(createOrderVo, shoppingCartGoodsDto);
}
/**
* 通过购物车获取优惠信息
* 业务 额外校验
*
* @param createOrderVo
* @param shoppingCartInfoRequestVo
* @return
*/
@Override
protected cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> checkShoppingCartGoods(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
BaseResponse<ShoppingCartGoodsDto> apportionResponse = super.checkShoppingCartGoods(createOrderVo, shoppingCartInfoRequestVo);
// 这个是专门的给coco使用的验证券的逻辑
if (ObjectUtils.equals(ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR, apportionResponse.getCode())) {
throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL, apportionResponse.getMessage());
}
return apportionResponse;
}
/**
* 校验购物车优惠信息请求对象
*
* @param createOrderVo
* @param shoppingCartInfoRequestVo
* @return
*/
@Override
protected GetShoppingCartGoodsApportionDto getShoppingCartGoodsApportionDto(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
// 设置用户选择的买一赠一商品信息
shoppingCartInfoRequestVo.setChooseGoods(JSONArray.parseArray(JSONObject.toJSONString(createOrderVo.getChooseGoods()), ShoppingCartInfoRequestVo.ChooseGood.class));
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
return requestDto;
}
/**
* 优惠券校验
*
* @param createOrderVo
* @param shoppingCartInfoRequestVo
*/
@Override
protected void diyCheckCouponCode(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
commonCheckOrderHandle.diyCheckCouponCode(createOrderVo, shoppingCartInfoRequestVo);
}
}
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBo; import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderBaseVo; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CheckOrderUniversal; import cn.freemud.service.CheckOrderUniversal;
import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.universal.CommonCheckOrderHandle;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappConfigManager;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
public class CheckOrderSaas extends CheckOrderUniversal { public class CheckOrderSaas extends CheckOrderUniversal {
@Override
protected OrderChannelType getChannelType() {
return OrderChannelType.SAAS;
}
@Autowired
private CommonCheckOrderHandle commonCheckOrderHandle;
@Autowired
private OrderRelationFactory orderRelationFactory;
@Autowired
private AssortmentOpenPlatformIappWxappConfigManager openPlatformIappWxappConfigManager;
// 配送费逻辑是否使用旧的
@Value("${store.delivery.use.old}")
private boolean storeDeliveryUseOld;
@Value("${coco.partnerId}")
private String cocoPartnerId;
/** /**
* 业务专属 校验 * 校验购物车优惠信息请求对象
* @param createOrderBo *
* @param createOrderVo
* @param shoppingCartInfoRequestVo
* @return
*/ */
@Override @Override
public void checkCustomCreateOrderParam(CreateOrderBo createOrderBo) { protected GetShoppingCartGoodsApportionDto getShoppingCartGoodsApportionDto(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
GetShoppingCartGoodsApportionDto requestDto = new GetShoppingCartGoodsApportionDto();
// 设置用户选择的买一赠一商品信息
shoppingCartInfoRequestVo.setChooseGoods(JSONArray.parseArray(JSONObject.toJSONString(createOrderVo.getChooseGoods()), ShoppingCartInfoRequestVo.ChooseGood.class));
requestDto.setShoppingCartInfoRequestVo(shoppingCartInfoRequestVo);
//加价购商品 校验放购物车校验
requestDto.setPremiumExchangeActivity(createOrderVo.getPremiumExchangeActivity());
return requestDto;
}
/**
* 通过购物车获取优惠信息
* 业务 额外校验
*
* @param createOrderVo
* @param shoppingCartInfoRequestVo
* @return
*/
@Override
protected cn.freemud.base.entity.BaseResponse<ShoppingCartGoodsDto> checkShoppingCartGoods(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
BaseResponse<ShoppingCartGoodsDto> apportionResponse = super.checkShoppingCartGoods(createOrderVo, shoppingCartInfoRequestVo);
// 这个是专门的给coco使用的验证券的逻辑
if (ObjectUtils.equals(ResponseCodeConstant.COCO_RESPONSE_COUPON_ERR_STR, apportionResponse.getCode())) {
throw new ServiceException(ResponseResult.COCO_COUPON_VALIDATOR_FAIL, apportionResponse.getMessage());
}
return apportionResponse;
}
/**
* 拼团逻辑
*
* @param createOrderVo
* @param shoppingCartGoodsDto
*/
@Override
protected void collageOrderHandle(CreateOrderBaseVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
commonCheckOrderHandle.collageOrderHandle(createOrderVo, shoppingCartGoodsDto);
} }
/**
* 校验优惠券
*
* @param createOrderVo
* @param shoppingCartInfoRequestVo
*/
@Override @Override
public ShoppingCartGoodsDto checkShoppingCartGoods(CreateOrderBaseVo createOrderBaseVo, ShoppingCartGoodsDto shoppingCartGoodsDto) { protected void diyCheckCouponCode(CreateOrderBaseVo createOrderVo, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
return null; commonCheckOrderHandle.diyCheckCouponCode(createOrderVo, shoppingCartInfoRequestVo);
} }
/** /**
* 业务专属校验 * 业务专属 校验
*
* @param createOrderBo * @param createOrderBo
* @param trackingNo
*/ */
@Override @Override
public void checkOrderByOrderTypeCustom(CreateOrderBo createOrderBo, String trackingNo) { public void checkCustomCreateOrderParam(CreateOrderBo createOrderBo) {
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
super.checkOrderByOrderType(createOrderBo);
} }
} }
...@@ -24,20 +24,12 @@ import cn.freemud.base.util.DateUtil; ...@@ -24,20 +24,12 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.OrderRefundConstant; import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant; import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse; import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse; import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean; import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto; import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto; import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
import cn.freemud.entities.dto.delivery.OrderRemindRequestDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
import cn.freemud.entities.dto.delivery.ResRiderTrackDto;
import cn.freemud.entities.dto.ecology.BookingOrderPayedScene;
import cn.freemud.entities.dto.ecology.InstantOrderPayedScene;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.ecology.SubscribeMessageResponse;
import cn.freemud.entities.dto.delivery.*; import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
...@@ -48,17 +40,18 @@ import cn.freemud.entities.dto.product.AttributeValue; ...@@ -48,17 +40,18 @@ import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail; import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup; import cn.freemud.entities.dto.product.ProductAttributeGroup;
import cn.freemud.entities.dto.product.ProductGroup; import cn.freemud.entities.dto.product.ProductGroup;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto; import cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.shoppingCart.CollageOrderDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.*; import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.thirdparty.MulitiPaymentClient; import cn.freemud.management.thirdparty.MulitiPaymentClient;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.BuriedPointService;
import cn.freemud.service.coupon.CouponRelationFactory; import cn.freemud.service.CouponActivityService;
import cn.freemud.service.coupon.CouponRelationService; import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.order.OrderRelationFactory; import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService; import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
...@@ -66,24 +59,16 @@ import cn.freemud.utils.*; ...@@ -66,24 +59,16 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import jdk.nashorn.internal.runtime.ECMAException;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.*; import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.*;
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager; import com.freemud.api.assortment.datamanager.manager.*;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappAuthorizerManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager; import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.api.assortment.datamanager.meal.MealCacheManager; import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import com.freemud.application.sdk.api.constant.ResponseConstant; import com.freemud.application.sdk.api.constant.ResponseConstant;
import com.freemud.application.sdk.api.constant.ResponseResultEnum; import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService; import com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService; import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog; import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog; import com.freemud.application.sdk.api.log.ErrorLog;
...@@ -93,16 +78,11 @@ import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType; ...@@ -93,16 +78,11 @@ import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType; import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum; import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.SdkUpdateAbnormalState;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq; import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse; import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSendCouponResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
...@@ -149,8 +129,6 @@ import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService; ...@@ -149,8 +129,6 @@ import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -167,7 +145,6 @@ import org.springframework.stereotype.Service; ...@@ -167,7 +145,6 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil; import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
...@@ -361,6 +338,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -361,6 +338,7 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responseVo); return ResponseUtil.success(responseVo);
} }
// 原来saas
@Override @Override
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) { public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
......
...@@ -10,6 +10,9 @@ import cn.freemud.enums.ResponseResult; ...@@ -10,6 +10,9 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum; import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CheckOrderUniversal; import cn.freemud.service.CheckOrderUniversal;
import cn.freemud.service.impl.CheckOrderApp;
import cn.freemud.service.impl.CheckOrderSaas;
import cn.freemud.service.impl.CheckOrderSaasMall;
import cn.freemud.service.universal.UniversalOrderService; import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.service.universal.impl.AppOrderService; import cn.freemud.service.universal.impl.AppOrderService;
import cn.freemud.service.universal.impl.SaasMallOrderService; import cn.freemud.service.universal.impl.SaasMallOrderService;
...@@ -111,9 +114,13 @@ public class CreateOrderServiceFactory { ...@@ -111,9 +114,13 @@ public class CreateOrderServiceFactory {
public CheckOrderUniversal getCheckOrderService(CreateOrderSceneEnum createOrderSceneEnum) { public CheckOrderUniversal getCheckOrderService(CreateOrderSceneEnum createOrderSceneEnum) {
switch (createOrderSceneEnum) { switch (createOrderSceneEnum) {
case SAAS: case SAAS:
return applicationContext.getBean("checkOrderSaas", CheckOrderUniversal.class); return applicationContext.getBean("checkOrderSaas", CheckOrderSaas.class);
case SAASMALL:
return applicationContext.getBean("checkOrderSaasMall", CheckOrderSaasMall.class);
case APP:
return applicationContext.getBean("checkOrderApp", CheckOrderApp.class);
default: default:
return applicationContext.getBean("checkOrderSaas", CheckOrderUniversal.class); return applicationContext.getBean("checkOrderSaas", CheckOrderSaas.class);
} }
} }
} }
package cn.freemud.service.universal.impl; package cn.freemud.service.universal.impl;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.bo.CreateOrderBo; import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.vo.CreateOrderBaseVo; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.service.universal.UniversalOrderService; import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CancelOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderEditRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -13,6 +32,18 @@ import org.springframework.stereotype.Service; ...@@ -13,6 +32,18 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
public class AppOrderService extends UniversalOrderService { public class AppOrderService extends UniversalOrderService {
@Autowired
private OrderAdapter orderAdapter;
/**
* @return false 不拉起微信预支付
*/
@Override
protected boolean defaultPrepayOrder() {
return false;
}
@Override @Override
public void getCustomCreateOrderBo(CreateOrderBo createOrderBo) { public void getCustomCreateOrderBo(CreateOrderBo createOrderBo) {
...@@ -24,7 +55,78 @@ public class AppOrderService extends UniversalOrderService { ...@@ -24,7 +55,78 @@ public class AppOrderService extends UniversalOrderService {
} }
@Override @Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) { protected CreateOrderRequest absGetCreateOrderRequest(CreateOrderBo createOrderBo) {
// fisherman 可以直接转换对象 和其他的地方有 重复
return super.createOrderAdapter.convent2CreateOrderRequest(createOrderBo);
}
/**
* 拓展字段存放 app 和 saas 一致
*
* @param createOrderBo
* @return
*/
@Override
public OrderExtInfoDto getExtInfo(CreateOrderBo createOrderBo) {
OrderExtInfoDto extInfo = super.getExtInfoUniversal(createOrderBo);
createOrderBo.setExtInfo(extInfo);
return extInfo;
}
/**
* 覆盖 父类创建订单方法
*
* @param createOrderBo
* @return
*/
@Override
protected BaseResponse createSharedOrder(CreateOrderBo createOrderBo) {
CreateOrderRequest request = this.absGetCreateOrderRequest(createOrderBo);
if (request == null) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
}
// 创建订单
BaseResponse createOrderOperateDtoResponse = super.sendCreateOrder(request, createOrderBo);
if (createOrderOperateDtoResponse == null || !ResponseResult.SUCCESS.getCode().equals(createOrderOperateDtoResponse.getCode()) || createOrderOperateDtoResponse.getResult() == null) {
return createOrderOperateDtoResponse;
}
// app 业务独立逻辑
CreateOrderOperateDto createOrderOperateDto = (CreateOrderOperateDto) createOrderOperateDtoResponse.getResult();
BaseResponse baseResponse = this.updateOrderExtInfo(createOrderOperateDto.getProductOrderBean(), createOrderBo.getExtInfo(), LogThreadLocal.getTrackingNo());
if (baseResponse != null) {
return baseResponse;
}
//返回没创建预支付的结果
CreateOrderResponseVo responseVo = orderAdapter.convent2CreateFatherSonOrderNoPayResponseVo(createOrderOperateDto.getProductOrderBean());
return ResponseUtil.success(responseVo);
}
private BaseResponse updateOrderExtInfo(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderExtInfoDto orderExtInfo, String trackingNo) {
OrderEditRequest orderEditRequest = new OrderEditRequest(orderBean.getOid(), JSONObject.toJSONString(orderExtInfo));
orderEditRequest.setTrackingNo(trackingNo);
BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderEdit(orderEditRequest);
if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS, baseOrderResponse.getErrcode())) {
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "编辑订单支付信息失败", trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
return ResponseUtil.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
}
return null;
}
/**
* 扣减库存订单
*
* @param createOrderBo
* @param createOrderResponse
* @return
*/
@Override
protected BaseResponse sendActivityUpdateStock(CreateOrderBo createOrderBo, CreateOrderResponse createOrderResponse) {
return super.defalutSendActivityUpdateStock(createOrderBo, createOrderResponse);
} }
} }
...@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.CreateOrderBaseVo; ...@@ -5,6 +5,7 @@ import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.universal.UniversalOrderService; import cn.freemud.service.universal.UniversalOrderService;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -28,7 +29,8 @@ public class MealOrderService extends UniversalOrderService { ...@@ -28,7 +29,8 @@ public class MealOrderService extends UniversalOrderService {
} }
@Override @Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) { protected CreateOrderRequest absGetCreateOrderRequest(CreateOrderBo createOrderBo) {
return null;
} }
} }
package cn.freemud.service.universal.impl; package cn.freemud.service.universal.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.bo.CreateOrderBo; import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.vo.CreateOrderBaseVo; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderSaasVo; import cn.freemud.entities.vo.CreateOrderSaasVo;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.universal.UniversalOrderService; import cn.freemud.service.universal.UniversalOrderService;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration; import org.hibernate.validator.HibernateValidatorConfiguration;
...@@ -34,7 +38,7 @@ public class SaasOrderService extends UniversalOrderService { ...@@ -34,7 +38,7 @@ public class SaasOrderService extends UniversalOrderService {
.failFast(false); .failFast(false);
ValidatorFactory validatorFactory = configuration.buildValidatorFactory(); ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
Set<ConstraintViolation<CreateOrderBaseVo>> set = validatorFactory.getValidator().validate(createOrderSaasVo); Set<ConstraintViolation<CreateOrderBaseVo>> set = validatorFactory.getValidator().validate(createOrderSaasVo);
if(CollectionUtils.isNotEmpty(set)) { if (CollectionUtils.isNotEmpty(set)) {
Iterator<ConstraintViolation<CreateOrderBaseVo>> iterator = set.iterator(); Iterator<ConstraintViolation<CreateOrderBaseVo>> iterator = set.iterator();
if (iterator.hasNext()) { if (iterator.hasNext()) {
ConstraintViolation<CreateOrderBaseVo> constraintViolation = iterator.next(); ConstraintViolation<CreateOrderBaseVo> constraintViolation = iterator.next();
...@@ -44,7 +48,28 @@ public class SaasOrderService extends UniversalOrderService { ...@@ -44,7 +48,28 @@ public class SaasOrderService extends UniversalOrderService {
} }
@Override @Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) { protected CreateOrderRequest absGetCreateOrderRequest(CreateOrderBo createOrderBo) {
// fisherman 可以直接转换对象 下面代码先留着 和其他的地方有 重复
return super.createOrderAdapter.convent2CreateOrderRequest(createOrderBo);
}
/**
* 扣减库存订单
* @param createOrderBo
* @param createOrderResponse
* @return
*/
@Override
protected BaseResponse sendActivityUpdateStock(CreateOrderBo createOrderBo, CreateOrderResponse createOrderResponse) {
return super.defalutSendActivityUpdateStock(createOrderBo, createOrderResponse);
} }
@Override
public OrderExtInfoDto getExtInfo(CreateOrderBo createOrderBo) {
OrderExtInfoDto extInfo = super.getExtInfoUniversal(createOrderBo);
createOrderBo.setExtInfo(extInfo);
return extInfo;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment