Commit 0ab2b0a3 by 徐康

11

parent 1a4bf2c3
package cn.freemud.adapter;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderVo;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Component
public class CreateOrderAdapter {
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto, CreateOrderBaseVo createOrderBaseVo,
CreateOrderOperateDto createOrderOperateDto, OrderExtInfoDto orderExtInfoDTO){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(createOrderBaseVo.getPartnerId());
requestDto.setWxAppId(userLoginInfoDto.getWxAppId());
requestDto.setOpenId(userLoginInfoDto.getOpenId());
requestDto.setFaceCode(createOrderBaseVo.getCardCode());
requestDto.setCardCode(createOrderBaseVo.getCardCode());
requestDto.setPayCode(null);
requestDto.setFatherOrderBean(createOrderOperateDto.getFatherOrderBean());
requestDto.setProductOrderBean(createOrderOperateDto.getProductOrderBean());
requestDto.setTotalAmount(createOrderOperateDto.getTotalAmount());
requestDto.setCardAmount(createOrderOperateDto.getCardAmount());
requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setTransId(createOrderOperateDto.getFatherOrderBean().getOid());
requestDto.setOrderClient(null);
requestDto.setUnionPayCard(createOrderBaseVo.getUnionPayCard());
requestDto.setStoreId(createOrderBaseVo.getShopId());
requestDto.setChannel(createOrderBaseVo.getChannel());
return requestDto;
}
}
\ No newline at end of file
......@@ -31,6 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@Slf4j
@RequestMapping("/order")
@RestController
......@@ -74,6 +76,15 @@ public class OrderController {
}
/**
* 通用创建订单
*/
@ApiAnnotation(logMessage = "createOrderUniversal")
@PostMapping("/createOrderUniversal")
public BaseResponse createOrderUniversal(@Validated @LogParams @RequestBody Map<String, Object> param) {
return orderAdapterService.createOrderUniversal(param);
}
/**
* 麦咖啡创建订单
*/
@ApiAnnotation(logMessage = "createMCCafeOrder")
......
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;
@Data
public class CreateOrderBaseVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
//@NotEmpty(message = "门店ID 不能为空") //本次需要根据业务做校验
private String shopId;
private String thirdShopId;
/**
* 就餐人数
*/
private Integer peopleNumber;
/**
* 操作标识
*/
private Integer operation;
/**
* 购物车版本号
*/
private Integer carVer;
/**
* 下单版本号
*/
private Integer orderUpdateVer;
private String partnerId;
private String storeName;
//入参不需要传
private String storeAddress;
private String userId;
private String userName;
private String mobile;
/**
* 渠道 1 saas 2 img 爱马哥 默认saas 3. iwc i围餐
*/
private String channel;
/**
* 订单类型 1 到店自取 2 外卖 枚举CreateOrderType
*/
//@NotNull(message = "下单类型不能为空")
private Integer orderType;
/**
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
private Byte marketingType;
/**
* 到店类型 orderType 传1的时候 如果reachStoreTyp为空转成订单类型4 如果不为空存储4(打包带走)和5(店内就餐)
*/
private Integer reachStoreType;
/**
* 桌号
*/
private String tableNumber;
/**
* 取餐时间
*/
private String takeMealTime;
/**
* 预约时间 格式yyyy-MM-dd HH:mm:ss
* 麦咖啡返回的是yyyy-MM-dd HH:mm
*/
private String expectTime;
/**
* 取餐标识 0=我已到店、尽快送出 1预约单
*/
private String takeMealFlag;
/**
* 是否外带 ,打包 1 是 0 否
*/
private Integer takeOut;
/**
* 订单备注
*/
private String orderRemark;
/**
* 收货地址ID
*/
private String receiveId;
/**
* 收货办公楼
*/
private String officeName;
/**
* 收货地址
*/
private String receiveAddress;
/**
* 收货用户名
*/
private String receiveUsername;
/**
* 收货电话
*/
@Pattern(regexp = "^1[3|4|5|6|7|8|9][0-9]{9}$", message = "手机号码格式不正确")
private String receiveMobile;
/**
* 收货人性别 sexType 1 男 2 女 0 未知
*/
private Integer sex;
/**
* 用户定义纬度
*/
private String latitude;
/**
* 用户定义经度
*/
private String longitude;
/**
* 券码
*/
private String couponCode;
/**
* 券码列表
*/
private List<CreateOrderVo.couponCode> couponCodes;
/**
* 版本号
*/
private String version;
/**
* form_id 用于金额是0的情况 现在只支持商品券,前端参数
*/
private String formId;
/**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
public UserDeliveryInfoDto userDeliveryInfoDto;
/**
* 下单支付渠道类型
*/
private Byte payChannelType;
@Valid
private CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity;
/**
* 买一赠一选择的商品
*/
private List<CreateOrderVo.ChooseGood> chooseGoods;
/**
* 是否使用用户积分
* 1=不显示积分
* 2=显示积分但不扣减
* 3=显示积分且扣减
*/
private Integer useCustomerScore;
/**
* 会员卡信息
*/
private BuyMemberCard buyMemberCard;
/**
* svc 卡支付使用
*/
private String cardCode;
/**
* 扫脸支付使用
*/
private String faceCode;
@ApiModelProperty(hidden = true)
private String sessionKey; // 存储sessionKey,异常补退使用
@ApiModelProperty(hidden = true)
private String scene;// 打开小程序的场景值
@Builder.Default
private String menuType = "saas";
/**
* 渠道类型 OrderChannelType
*/
private String channelType;
/**
* 是否使用电子风味卡,如果不为空则为使用
*/
@Valid
@ApiModelProperty(value = "电子风味卡")
private CreateOrderVo.UnionPayCard unionPayCard;
/**
* 电子风味卡
*/
@Data
@ApiModel(value = "电子风味卡", description = "如果传了电子风味卡字段,此类中属性必传")
public static class UnionPayCard {
@NotNull(message = "电子风味卡手机号必传")
@ApiModelProperty(value = "电子风味卡卡号(手机号)",required = true)
private String code;
@NotNull(message = "电子风味卡密码必传")
@ApiModelProperty(value = "电子风味卡密码",required = true)
private String password;
}
/**
* 微信配送地址信息
*/
private WeixinDeliveryAddressDto weixinDeliveryAddress;
@Data
public static class PremiumExchangeActivity {
@NotNull(message = "activityCode 不能为空")
private String activityCode;
@NotNull(message = "activityName 不能为空")
private String activityName;
/**
* 加价购sku商品信息
*/
@Valid
private List<CreateOrderVo.PremiumExchangeActivity.Product> products;
@Data
public static class Product {
/**
* spuId 商品原始id
*/
@NotNull(message = "spuId不能为空")
private String spuId;
/**
* skuId 如果是多规格 skuId 不能为空
*/
@NotNull(message = "skuId不能为空")
private String skuId;
/**
* 商品名称
*/
@NotNull(message = "商品名称不能为空")
private String skuName;
@NotNull(message = "商品数量不能为空")
private Integer qty;
/**
* 图片
*/
private String picture;
/**
* 原价 入参不需要传,做对象组装使用
*/
private Long originalPrice;
/**
* 现价 入参不需要传,做对象组装使用
*/
private Long nowPrice;
@Valid
private List<CreateOrderVo.PremiumExchangeActivity.Product.Attribute> attributes;
@Data
public static class Attribute {
/**
* 属性ID
*/
private String attributeId;
/**
* 属性名称
*/
private String attributeValue;
}
}
}
@Data
public final static class BuyMemberCard {
/**
* 付费会员卡ID
*/
private String paidId;
/**
* 规则ID
*/
private String ruleId;
}
@Data
public static class ChooseGood {
/**
* 活动类型
*/
private Integer activeType;
/**
* 活动号
*/
private String activeCode;
/**
* 赠送商品id
*/
private String goodsId;
/**
* 赠送商品名称
*/
private String goodsName;
/**
* 赠送商品数量
*/
private Integer qty;
/**
* 可兑换商品券编号
*/
private String couponCode ;
/**
* 商品券兑换数量
*/
private Integer couponQty;
/**
* 是否已选择寄杯
*/
private Boolean sendCoupon;
}
@Data
public final static class couponCode {
/**
* 优惠券
*/
private String couponCode;
/**
* 活动号
*/
private String activityCode;
/**
* 顺序
*/
private Integer index;
}
}
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.List;
@Data
public class CreateOrderSaasVo extends CreateOrderBaseVo {
}
package cn.freemud.enums;
public enum CreateOrderSceneEnum {
SAAS(1, "saas"),
;
private Integer code;
private String desc;
CreateOrderSceneEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package cn.freemud.manager;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest;
import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberIdResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class MemberPropertyManager {
@Autowired
private MemberPropertyService memberPropertyService;
public List<GetSvcInfoByMemberIdResponse> getSvcInfoByMemberId(StatisticalPropertyRequest request, String trackingNo) {
com.freemud.application.sdk.api.base.BaseResponse<List<GetSvcInfoByMemberIdResponse>> responseDTO = memberPropertyService.getSvcInfoByMemberId(request, LogThreadLocal.getTrackingNo());
if (!ResponseResult.SUCCESS.getCode().equals(responseDTO.getCode()) || responseDTO.getData() == null
|| responseDTO.getData().size() == 0) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
return responseDTO.getData();
}
}
package cn.freemud.manager;
public class ShoppingCartInfoManager {
}
package cn.freemud.manager;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class StoreInfoManager {
@Autowired
StoreCenterService storeCenterService;
/**
* 查询门店信息
*/
public StoreResponse getStoreInfo(String partnerId, String shopId, String trackingNo) {
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, shopId, null);
return storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
}
}
......@@ -6,6 +6,8 @@ import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import java.util.Map;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -27,6 +29,13 @@ public interface OrderAdapterService {
BaseResponse createOrderNew(CreateOrderVo createOrderVo);
/**
* 创建订单
* @param param
* @return
*/
BaseResponse createOrderUniversal(Map<String, Object> param);
/**
* 麦咖啡创建订单
* @param createOrderVo
* @return
......
......@@ -6,17 +6,17 @@ import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.AppCreateOrderVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
......@@ -24,15 +24,23 @@ import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -73,6 +81,10 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private OrderServiceImpl orderService;
@Autowired
private MCCafeOrderService mcCafeOrderService;
private UniversalOrderService universalOrderService;
@Autowired
private CreateOrderServiceFactory createOrderServiceFactory;
@Autowired
private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired
......@@ -89,6 +101,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private SellCouponOrderServiceImpl sellCouponOrderService;
@Value("${saas.autoRefund.client}")
private String autoRefundClient;
@Override
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createOrderVo.getSessionId());
......@@ -159,6 +173,51 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
//LockUtils.unlock(redisCache.getRedisTemplate(),createOrderKey);
}
}
@Override
public BaseResponse createOrderUniversal(Map<String, Object> param) {
String sessionId = (String) param.get("sessionId");
if(StringUtils.isBlank(sessionId)) {
throw new ServiceException(ResponseResult.SESSION_INVAILD);
}
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(sessionId);
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
CreateOrderSceneEnum createOrderScene = createOrderServiceFactory.getCreateOrderScene(param, assortmentCustomerInfoVo);
CreateOrderBaseVo createOrderBaseVo = createOrderServiceFactory.getCreateOrderVo(param, createOrderScene);
// 添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
// 锁定秒数从apollo获取,如果apollo没有设置,默认5秒
String createOrderKey = CREATE_ORDER_KEY + assortmentCustomerInfoVo.getMemberId();
try {
Long expire = Long.valueOf(createOrderKeyExpire);
if(!LockUtils.lock(redisCache.getRedisTemplate(),createOrderKey,expire)){
return ResponseUtil.error(ResponseResult.ORDER_NOT_CREATE_ERROR);
}
return createOrderServiceFactory.getCreateOrderService(createOrderScene).createOrder(createOrderBaseVo, assortmentCustomerInfoVo);
} catch (Exception e) {
throw e;
} finally {
//LockUtils.unlock(redisCache.getRedisTemplate(),createOrderKey);
}
}
private BaseResponse validateParam(CreateOrderBaseVo createOrderBaseVo) {
HibernateValidatorConfiguration configuration = Validation.byProvider(HibernateValidator.class)
.configure()
.failFast(false);
ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
Set<ConstraintViolation<CreateOrderBaseVo>> set = validatorFactory.getValidator().validate(createOrderBaseVo);
if(CollectionUtils.isNotEmpty(set)) {
Iterator<ConstraintViolation<CreateOrderBaseVo>> iterator = set.iterator();
if (iterator.hasNext()) {
ConstraintViolation<CreateOrderBaseVo> constraintViolation = iterator.next();
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), constraintViolation.getMessage());
}
}
return ResponseUtil.success();
}
@Override
......
package cn.freemud.service.universal.factory;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderSaasVo;
import cn.freemud.enums.CreateOrderSceneEnum;
import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.service.universal.impl.SaasOrderService;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import java.util.Map;
@Service
public class CreateOrderServiceFactory {
@Autowired
private ApplicationContext applicationContext;
public CreateOrderSceneEnum getCreateOrderScene(Map<String, Object> param, AssortmentCustomerInfoVo assortmentCustomerInfoVo) {
return CreateOrderSceneEnum.SAAS;
}
public CreateOrderBaseVo getCreateOrderVo(Map<String, Object> param, CreateOrderSceneEnum createOrderSceneEnum) {
switch (createOrderSceneEnum) {
case SAAS:
return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasVo.class);
default:
return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasVo.class);
}
}
public UniversalOrderService getCreateOrderService(CreateOrderSceneEnum createOrderSceneEnum) {
switch (createOrderSceneEnum) {
case SAAS:
return applicationContext.getBean("SaasOrderService", SaasOrderService.class);
default:
return applicationContext.getBean("SaasOrderService", SaasOrderService.class);
}
}
}
package cn.freemud.service.universal.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderSaasVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.utils.ResponseUtil;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration;
import org.springframework.stereotype.Service;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.ValidatorFactory;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@Service
public class SaasOrderService extends UniversalOrderService {
@Override
public void handleCustomParam(CreatePrepayRequestDto requestDto, Map<String, Object> customParam) {
}
@Override
public void validParam(CreateOrderBaseVo createOrderBaseVo) {
CreateOrderSaasVo createOrderSaasVo = (CreateOrderSaasVo) createOrderBaseVo;
HibernateValidatorConfiguration configuration = Validation.byProvider(HibernateValidator.class)
.configure()
.failFast(false);
ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
Set<ConstraintViolation<CreateOrderBaseVo>> set = validatorFactory.getValidator().validate(createOrderSaasVo);
if(CollectionUtils.isNotEmpty(set)) {
Iterator<ConstraintViolation<CreateOrderBaseVo>> iterator = set.iterator();
if (iterator.hasNext()) {
ConstraintViolation<CreateOrderBaseVo> constraintViolation = iterator.next();
throw new ServiceException(ResponseResult.PARAMETER_MISSING, constraintViolation.getMessage());
}
}
}
@Override
public BaseResponse createSharedOrder(CreateOrderBaseVo createOrderBaseVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, AssortmentCustomerInfoVo userLoginInfoDto, Map<String, Object> customParam) {
return null;
}
@Override
public Map<String, Object> getCustomParam(CreateOrderBaseVo createOrderBaseVo, AssortmentCustomerInfoVo userLoginInfoDto, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto) {
return null;
}
@Override
public void customCheck(Map<String, Object> customParam) {
}
@Override
public ShoppingCartGoodsDto checkShoppingCartGoods(CreateOrderBaseVo createOrderBaseVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
return null;
}
}
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