Commit 52a2f97a by 周晓航

初步提交代码,用于测试

parent 307bbbc3
...@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor; ...@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.List;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
......
package cn.freemud.entities.vo;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 下午2:22
* @description : APP 订单接收参数
*/
public class CreateOrderAppVo extends CreateOrderBaseVo{
}
...@@ -2,7 +2,6 @@ package cn.freemud.entities.vo; ...@@ -2,7 +2,6 @@ package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto; import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
import cn.freemud.enums.CreateOrderSceneEnum;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder; import lombok.Builder;
...@@ -49,6 +48,8 @@ public class CreateOrderBaseVo { ...@@ -49,6 +48,8 @@ public class CreateOrderBaseVo {
private String storeName; private String storeName;
private String storeNameEn;
//入参不需要传 //入参不需要传
private String storeAddress; private String storeAddress;
...@@ -150,7 +151,12 @@ public class CreateOrderBaseVo { ...@@ -150,7 +151,12 @@ public class CreateOrderBaseVo {
/** /**
* 券码列表 * 券码列表
*/ */
private List<CreateOrderVo.couponCode> couponCodes; private List<couponCode> couponCodes;
/**
* 运费券code
*/
private String freightCouponCode;
/** /**
* 版本号 * 版本号
*/ */
...@@ -169,13 +175,14 @@ public class CreateOrderBaseVo { ...@@ -169,13 +175,14 @@ public class CreateOrderBaseVo {
*/ */
private Byte payChannelType; private Byte payChannelType;
// 这里冗余了 CreateOrderVo 对象的属性, 后期需要优化 fisherman
@Valid @Valid
private CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity; private CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity;
/** /**
* 买一赠一选择的商品 * 买一赠一选择的商品
*/ */
private List<CreateOrderVo.ChooseGood> chooseGoods; private List<ChooseGood> chooseGoods;
/** /**
* 是否使用用户积分 * 是否使用用户积分
...@@ -199,6 +206,11 @@ public class CreateOrderBaseVo { ...@@ -199,6 +206,11 @@ public class CreateOrderBaseVo {
*/ */
private String faceCode; private String faceCode;
/**
* 随单购啡常月享卡键位
*/
private String cardKeyCode;
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
private String sessionKey; // 存储sessionKey,异常补退使用 private String sessionKey; // 存储sessionKey,异常补退使用
@ApiModelProperty(hidden = true) @ApiModelProperty(hidden = true)
...@@ -211,14 +223,35 @@ public class CreateOrderBaseVo { ...@@ -211,14 +223,35 @@ public class CreateOrderBaseVo {
*/ */
private String channelType; private String channelType;
private String cardKeyCode; /**
* 是否需要餐具,1 需要 0不需要
*/
private Integer needTableware;
/**
* 是否需要开发票,1 需要 0不需要
*/
private Integer needInvoice;
/**
* 发票抬头
*/
private String invoiceTitle;
/**
* 随单购是否购买月享卡
* 1:不购买,2:月卡续费,3:新购月卡
*/
private String buyMonthlyCard;
private String monthlyCardCode;
/** /**
* 是否使用电子风味卡,如果不为空则为使用 * 是否使用电子风味卡,如果不为空则为使用
*/ */
@Valid @Valid
@ApiModelProperty(value = "电子风味卡") @ApiModelProperty(value = "电子风味卡")
private CreateOrderVo.UnionPayCard unionPayCard; private UnionPayCard unionPayCard;
/** /**
* 电子风味卡 * 电子风味卡
*/ */
...@@ -250,7 +283,7 @@ public class CreateOrderBaseVo { ...@@ -250,7 +283,7 @@ public class CreateOrderBaseVo {
* 加价购sku商品信息 * 加价购sku商品信息
*/ */
@Valid @Valid
private List<CreateOrderVo.PremiumExchangeActivity.Product> products; private List<Product> products;
@Data @Data
public static class Product { public static class Product {
...@@ -271,6 +304,8 @@ public class CreateOrderBaseVo { ...@@ -271,6 +304,8 @@ public class CreateOrderBaseVo {
@NotNull(message = "商品名称不能为空") @NotNull(message = "商品名称不能为空")
private String skuName; private String skuName;
private String skuForeignName;
@NotNull(message = "商品数量不能为空") @NotNull(message = "商品数量不能为空")
private Integer qty; private Integer qty;
...@@ -289,7 +324,7 @@ public class CreateOrderBaseVo { ...@@ -289,7 +324,7 @@ public class CreateOrderBaseVo {
private Long nowPrice; private Long nowPrice;
@Valid @Valid
private List<CreateOrderVo.PremiumExchangeActivity.Product.Attribute> attributes; private List<Attribute> attributes;
@Data @Data
public static class Attribute { public static class Attribute {
...@@ -302,6 +337,9 @@ public class CreateOrderBaseVo { ...@@ -302,6 +337,9 @@ public class CreateOrderBaseVo {
* 属性名称 * 属性名称
*/ */
private String attributeValue; private String attributeValue;
private String attributeForeignValue;
} }
} }
...@@ -342,6 +380,9 @@ public class CreateOrderBaseVo { ...@@ -342,6 +380,9 @@ public class CreateOrderBaseVo {
*/ */
private String goodsName; private String goodsName;
private String goodsForeignName;
/** /**
* 赠送商品数量 * 赠送商品数量
*/ */
......
package cn.freemud.entities.vo;
import lombok.Data;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 上午11:31
* @description :
*/
@Data
public class CreateOrderMealVo extends CreateOrderBaseVo {
/**
* 版本号
*/
private String version;
/**
* 商户ID
*/
private String partnerId;
private Integer repastNumber;
private Integer carVer;
/**
* 下单版本号
*/
private Integer orderUpdateVer;
/**
* 优惠券code
*/
private String couponCode;
/**
* 优惠券对应的活动号
*/
private String activityCode;
/**
* 是否使用用户积分
* 1=不显示积分
* 2=显示积分但不扣减
* 3=显示积分且扣减
*/
private Integer useCustomerScore;
/**
* svc 卡支付使用
*/
private String cardCode;
}
package cn.freemud.entities.vo;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 下午2:20
* @description : 商城订单 vo对象
*/
public class CreateOrderSaasMallVo extends CreateOrderBaseVo {
}
package cn.freemud.entities.vo; 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 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 @Data
public class CreateOrderSaasVo extends CreateOrderBaseVo { public class CreateOrderSaasVo extends CreateOrderBaseVo {
// fisherman 需要定义 saas里面的参数有那些
} }
package cn.freemud.enums; package cn.freemud.enums;
/**
* 仅仅用于 创建对象使用的枚举类,
* 字段code属性 暂时没有 实际价值意义
* 2021年04月09日13:51:24
*/
public enum CreateOrderSceneEnum { public enum CreateOrderSceneEnum {
SAAS(1, "saas"), SAAS(1, "saas订单"),
; MEAL(2, "i围餐订单"),
APP(3, "APP订单"),
SAASMALL(4, "微商城订单");
private Integer code; private Integer code;
......
...@@ -6,7 +6,13 @@ import lombok.Getter; ...@@ -6,7 +6,13 @@ import lombok.Getter;
public enum UserLoginChannelEnum { public enum UserLoginChannelEnum {
WEIXIN("1", "微信"), WEIXIN("1", "微信"),
ALIPAY("2", "支付宝"), ALIPAY("2", "支付宝"),
APP("3", "APP"); APP("3", "APP"),
/**
* 抖音小程序客户端
* 根据业务代码反推添加
* 我也不知道4是什么, 有了再添加
*/
TIKTOKPAY("5", "抖音小程序");
private String code; private String code;
private String desc; private String desc;
......
package cn.freemud.service.adapter; package cn.freemud.service.adapter;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
...@@ -45,4 +45,30 @@ public class OrderCheckAdapter { ...@@ -45,4 +45,30 @@ public class OrderCheckAdapter {
} }
} }
} }
/***
* 校验预约单门店数据 优化订单接口冗余方法
* @param vo
* @param storeResponse
* @throws ServiceException 抛出异常校验异常数据
*/
public static void check(CreateOrderBaseVo vo, StoreResponse storeResponse) throws ServiceException {
//非预约单的过滤
if (Objects.isNull(vo.getOrderType()) ||
(!Objects.equals(vo.getTakeMealFlag(), "1"))) {
return;
}
StoreResponse.Configuration configuration = storeResponse.getBizVO().getStoreConfig();
if(Objects.isNull(configuration)){
//针对老数据没有配置 预约单默认支持,直接返回不校验
log.warn("商户:{},没有配置预约单",vo.getShopId());
return;
}
log.info("门店:{},外卖预约单状态:{},自提预约单状态:{}", vo.getShopId(), configuration.getDeliveryAppoint(), configuration.getSelfMentionSwitch());
for (OrderCheck orderCheck : orderCheckList) {
if (orderCheck.support(vo.getOrderType())) {
orderCheck.check(null, storeResponse);
return;
}
}
}
} }
...@@ -16,7 +16,6 @@ import cn.freemud.service.universal.UniversalOrderService; ...@@ -16,7 +16,6 @@ import cn.freemud.service.universal.UniversalOrderService;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil; import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil; 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.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType; import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
...@@ -37,7 +36,6 @@ import org.springframework.stereotype.Service; ...@@ -37,7 +36,6 @@ import org.springframework.stereotype.Service;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import javax.validation.Validation; import javax.validation.Validation;
import javax.validation.ValidatorFactory; import javax.validation.ValidatorFactory;
import javax.annotation.Resource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map; import java.util.Map;
...@@ -179,6 +177,9 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -179,6 +177,9 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} }
@Override @Override
public BaseResponse createOrderUniversal(Map<String, Object> param) { public BaseResponse createOrderUniversal(Map<String, Object> param) {
if (param.isEmpty()) {
throw new ServiceException(ResponseResult.PARAMETER_MISSING);
}
// 商户逻辑判断 共同代码 begin // 商户逻辑判断 共同代码 begin
String sessionId = (String) param.get("sessionId"); String sessionId = (String) param.get("sessionId");
if(StringUtils.isBlank(sessionId)) { if(StringUtils.isBlank(sessionId)) {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
package cn.freemud.service.order; package cn.freemud.service.order;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo; import cn.freemud.entities.vo.QueryOrderResponseVo;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
...@@ -27,6 +28,13 @@ public interface OrderRelationService { ...@@ -27,6 +28,13 @@ public interface OrderRelationService {
/** /**
* 创建订单的时间检查 订单优化使用
* @param
*/
void createOrderTimeCheck(StoreResponse.BizVO storeResponseDto, CreateOrderBaseVo createOrderVo);
/**
* 订单详情编辑 * 订单详情编辑
* @param * @param
*/ */
......
...@@ -14,10 +14,10 @@ package cn.freemud.service.order.impl; ...@@ -14,10 +14,10 @@ package cn.freemud.service.order.impl;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.order.BusinessDate; import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.ProductVo; import cn.freemud.entities.vo.ProductVo;
import cn.freemud.entities.vo.QueryOrderResponseVo; import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CreateOrderType; import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
...@@ -31,15 +31,12 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType; ...@@ -31,15 +31,12 @@ import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto; import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import io.swagger.models.auth.In;
import org.apache.commons.collections4.CollectionUtils; 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.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -91,6 +88,41 @@ public class CocoOrderRelationServiceImpl implements OrderRelationService { ...@@ -91,6 +88,41 @@ public class CocoOrderRelationServiceImpl implements OrderRelationService {
} }
@Override @Override
public void createOrderTimeCheck(StoreResponse.BizVO storeResponseDto, CreateOrderBaseVo createOrderVo) {
// 只有外卖单才做下单时间判断
if (!CreateOrderType.TAKE_OUT.getCode().equals(createOrderVo.getOrderType())){
return;
}
// 如果是明天的预约单,不做时间检查
// 设置预约时间
Date takeMealDateTime = checkOrder.getOrderExpectTime(createOrderVo.getTakeMealFlag(), createOrderVo.getTakeMealTime(), createOrderVo.getExpectTime(),
CreateOrderType.getByCode(createOrderVo.getOrderType()), storeResponseDto.getServiceTime(), storeResponseDto);
Date todayEnd = DateUtil.setEndDay(new Date());
if(takeMealDateTime != null && todayEnd.before(takeMealDateTime)){
return;
}
//获取门店当天营业时间
// coco只有一个营业时间,如果返回多个就报错
Date todayEndDate = null;
List<String> todayBusinessTimes = storeCenterService.getTodayBusinessTime(Integer.parseInt(storeResponseDto.getBusinessType()), storeResponseDto.getBusinessHoursDay());
if (CollectionUtils.isEmpty(todayBusinessTimes) || 1 < todayBusinessTimes.size() ) {
throw new ServiceException(ResponseResult.STORE_BUSINESS_HOUR_ERROR);
}
BusinessDate businessDate = checkOrder.getStoreBusinessDate(todayBusinessTimes.get(0), true);
todayEndDate = businessDate.getEndDate();
// 当前时间+15分钟 > 门店打烊时间,返回错误
Date nowAddDate = DateUtil.addMinutes(new Date(),15);
if(nowAddDate.after(todayEndDate)){
throw new ServiceException(ResponseResult.STORE_WILL_COLSE);
}
}
@Override
public void queryOrdrBuild(QueryOrderResponseVo queryOrderResponseVo,QueryOrderByIdResponse response) { public void queryOrdrBuild(QueryOrderResponseVo queryOrderResponseVo,QueryOrderByIdResponse response) {
List<QueryOrderResponseVo.chooseGood> chooseGoods = new ArrayList<>(); List<QueryOrderResponseVo.chooseGood> chooseGoods = new ArrayList<>();
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
package cn.freemud.service.order.impl; package cn.freemud.service.order.impl;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.QueryOrderResponseVo; import cn.freemud.entities.vo.QueryOrderResponseVo;
import cn.freemud.service.order.OrderRelationService; import cn.freemud.service.order.OrderRelationService;
...@@ -28,6 +29,11 @@ public class PlatformOrderRelationServiceImpl implements OrderRelationService { ...@@ -28,6 +29,11 @@ public class PlatformOrderRelationServiceImpl implements OrderRelationService {
} }
@Override @Override
public void createOrderTimeCheck(StoreResponse.BizVO storeResponseDto, CreateOrderBaseVo createOrderVo) {
}
@Override
public void queryOrdrBuild(QueryOrderResponseVo queryOrderResponseVo, QueryOrderByIdResponse response) { public void queryOrdrBuild(QueryOrderResponseVo queryOrderResponseVo, QueryOrderByIdResponse response) {
} }
......
...@@ -21,9 +21,8 @@ import cn.freemud.entities.vo.*; ...@@ -21,9 +21,8 @@ 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.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.CheckOrderUniversal; import cn.freemud.service.CheckOrderUniversal;
import cn.freemud.service.impl.CheckOrderSaas; import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.thirdparty.ComPayClient; import cn.freemud.service.thirdparty.ComPayClient;
import cn.freemud.service.thirdparty.SvcComPayClient; import cn.freemud.service.thirdparty.SvcComPayClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory; import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
...@@ -181,6 +180,8 @@ public abstract class UniversalOrderService { ...@@ -181,6 +180,8 @@ public abstract class UniversalOrderService {
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
//参数校验是否满足 标签注解 //参数校验是否满足 标签注解
validParam(createOrderBaseVo); validParam(createOrderBaseVo);
// 组装业务对象
CreateOrderBo createOrderBo = getCreateOrderBo(createOrderBaseVo, userLoginInfoDto, trackingNo); CreateOrderBo createOrderBo = getCreateOrderBo(createOrderBaseVo, userLoginInfoDto, trackingNo);
createOrderBo.setCreateOrderScene(createOrderSceneEnum); createOrderBo.setCreateOrderScene(createOrderSceneEnum);
...@@ -228,8 +229,10 @@ public abstract class UniversalOrderService { ...@@ -228,8 +229,10 @@ public abstract class UniversalOrderService {
} }
public void getUniversalCreateOrderBo(CreateOrderBo createOrderBo, CreateOrderBaseVo createOrderBaseVo, AssortmentCustomerInfoVo userLoginInfoDto) { public void getUniversalCreateOrderBo(CreateOrderBo createOrderBo, CreateOrderBaseVo createOrderBaseVo, AssortmentCustomerInfoVo userLoginInfoDto) {
createOrderBaseVo.setUserId(userLoginInfoDto.getMemberId());
createOrderBo.setCreateOrderBaseVo(createOrderBaseVo); createOrderBo.setCreateOrderBaseVo(createOrderBaseVo);
createOrderBo.setUserLoginInfoDto(userLoginInfoDto); createOrderBo.setUserLoginInfoDto(userLoginInfoDto);
} }
/** /**
...@@ -251,6 +254,7 @@ public abstract class UniversalOrderService { ...@@ -251,6 +254,7 @@ public abstract class UniversalOrderService {
* @return * @return
*/ */
public BaseResponse createSharedOrder(CreateOrderBo createOrderBo) { public BaseResponse createSharedOrder(CreateOrderBo createOrderBo) {
// fisherman 一坨坨的地方
createOrderBo.setCreateOrderRequest(createOrderAdapter.convent2CreateOrderRequest(createOrderBo)); createOrderBo.setCreateOrderRequest(createOrderAdapter.convent2CreateOrderRequest(createOrderBo));
CreateOrderRequest request = createOrderAdapter.convent2CustomCreateOrderRequest(createOrderBo); CreateOrderRequest request = createOrderAdapter.convent2CustomCreateOrderRequest(createOrderBo);
// 发送 /order/v2/create 请求 // 发送 /order/v2/create 请求
...@@ -261,7 +265,7 @@ public abstract class UniversalOrderService { ...@@ -261,7 +265,7 @@ public abstract class UniversalOrderService {
return ResponseUtil.error(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null); return ResponseUtil.error(createOrderResponse.getErrcode().toString(), createOrderResponse.getErrmsg(), null);
} }
// 初始化扣减活动库存请求对象 fisherman-> 考虑 是否可以提取 // 初始化扣减活动库存请求对象
ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(createOrderBo); ActivityUpdateStockRequest activityUpdateStockRequest = this.initActivityUpdateStockRequest(createOrderBo);
MqMessageRequest mqMessageRequest = new MqMessageRequest(); MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange); mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
...@@ -510,6 +514,8 @@ public abstract class UniversalOrderService { ...@@ -510,6 +514,8 @@ public abstract class UniversalOrderService {
serviceTime = 50; serviceTime = 50;
} }
orderExtInfoDto.setServiceTime(serviceTime); orderExtInfoDto.setServiceTime(serviceTime);
// pushOrderTime 在master 版本中 一直都是 0
orderExtInfoDto.setPushOrderTime(0);
orderExtInfoDto.setVersion(version); orderExtInfoDto.setVersion(version);
if (memberCard != null && memberCard.getRuleId() != null) { if (memberCard != null && memberCard.getRuleId() != null) {
orderExtInfoDto.setRuleId(memberCard.getRuleId()); orderExtInfoDto.setRuleId(memberCard.getRuleId());
......
package cn.freemud.service.universal.factory; package cn.freemud.service.universal.factory;
import cn.freemud.entities.vo.CreateOrderAppVo;
import cn.freemud.entities.vo.CreateOrderBaseVo; import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.entities.vo.CreateOrderSaasMallVo;
import cn.freemud.entities.vo.CreateOrderSaasVo; import cn.freemud.entities.vo.CreateOrderSaasVo;
import cn.freemud.enums.CreateOrderSceneEnum; import cn.freemud.enums.CreateOrderSceneEnum;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.CheckOrderUniversal; import cn.freemud.service.CheckOrderUniversal;
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.SaasMallOrderService;
import cn.freemud.service.universal.impl.SaasOrderService; import cn.freemud.service.universal.impl.SaasOrderService;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Map; import java.util.Map;
import java.util.Objects;
@Service @Service
public class CreateOrderServiceFactory { public class CreateOrderServiceFactory {
...@@ -28,22 +38,45 @@ public class CreateOrderServiceFactory { ...@@ -28,22 +38,45 @@ public class CreateOrderServiceFactory {
* @return * @return
*/ */
public CreateOrderSceneEnum getCreateOrderScene(Map<String, Object> param, AssortmentCustomerInfoVo assortmentCustomerInfoVo) { public CreateOrderSceneEnum getCreateOrderScene(Map<String, Object> param, AssortmentCustomerInfoVo assortmentCustomerInfoVo) {
// 围餐
if (IappIdType.WC_XCX.getCode().equals(assortmentCustomerInfoVo.getIappId())) { //i围餐
if (true) {
// 围餐 暂时不接入
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR, "围餐暂不接入");
}
return CreateOrderSceneEnum.MEAL;
}
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
// APP订单
return CreateOrderSceneEnum.APP;
}
Object channelType = param.get("channelType");
if (Objects.nonNull(channelType)
&& (OrderChannelType.SAASMALL.getCode().equals(channelType))) {
// 商城订单
return CreateOrderSceneEnum.SAASMALL;
}
// 其他类型 为saas订单
return CreateOrderSceneEnum.SAAS; return CreateOrderSceneEnum.SAAS;
} }
/** /**
* 获取实体类对应 调用参数 * 获取实体类对应 调用参数
* * fisherman 各个订单的入参类型 暂时没区分
* @param param * @param param
* @param createOrderSceneEnum * @param createOrderSceneEnum
* @return * @return
*/ */
public CreateOrderBaseVo getCreateOrderVo(Map<String, Object> param, CreateOrderSceneEnum createOrderSceneEnum) { public CreateOrderBaseVo getCreateOrderVo(Map<String, Object> param, CreateOrderSceneEnum createOrderSceneEnum) {
switch (createOrderSceneEnum) { switch (createOrderSceneEnum) {
case SAAS: case SAAS: // SAAS
return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasVo.class); return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasVo.class);
case SAASMALL: // 商城
return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasMallVo.class);
case APP: // APP订单
return JSON.parseObject(JSON.toJSONString(param), CreateOrderAppVo.class);
default: default:
return JSON.parseObject(JSON.toJSONString(param), CreateOrderSaasVo.class); throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR, "CreateOrderSceneEnum 类型错误 :" + createOrderSceneEnum);
} }
} }
...@@ -57,6 +90,13 @@ public class CreateOrderServiceFactory { ...@@ -57,6 +90,13 @@ public class CreateOrderServiceFactory {
switch (createOrderSceneEnum) { switch (createOrderSceneEnum) {
case SAAS: case SAAS:
return applicationContext.getBean("saasOrderService", SaasOrderService.class); return applicationContext.getBean("saasOrderService", SaasOrderService.class);
case SAASMALL:
return applicationContext.getBean("saasMallOrderService", SaasMallOrderService.class);
case APP:
return applicationContext.getBean("appOrderService", AppOrderService.class);
// 不支持围餐订单
// case MEAL:
// return applicationContext.getBean("mealOrderService", MealOrderService.class);
default: default:
return applicationContext.getBean("saasOrderService", SaasOrderService.class); return applicationContext.getBean("saasOrderService", SaasOrderService.class);
} }
......
package cn.freemud.service.universal.impl;
import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.service.universal.UniversalOrderService;
import org.springframework.stereotype.Service;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 下午2:31
* @description : app订单
*/
@Service
public class AppOrderService extends UniversalOrderService {
@Override
public void getCustomCreateOrderBo(CreateOrderBo createOrderBo) {
}
@Override
public void validParam(CreateOrderBaseVo createOrderBaseVo) {
}
@Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) {
}
}
package cn.freemud.service.universal.impl;
import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.universal.UniversalOrderService;
import org.springframework.stereotype.Service;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 上午11:36
* @description : 围餐操作 fisherman 没搞完 2021年04月09日11:52:06
*/
@Service
public class MealOrderService extends UniversalOrderService {
@Override
public void getCustomCreateOrderBo(CreateOrderBo createOrderBo) {
}
@Override
public void validParam(CreateOrderBaseVo createOrderBaseVo) {
if (createOrderBaseVo.getOperation() ==null) {
throw new ServiceException(ResponseResult.ORDER_CREATE_OPERATION_ERROR);
}
}
@Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) {
}
}
package cn.freemud.service.universal.impl;
import cn.freemud.entities.bo.CreateOrderBo;
import cn.freemud.entities.vo.CreateOrderBaseVo;
import cn.freemud.service.universal.UniversalOrderService;
import org.springframework.stereotype.Service;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/4/9 下午2:30
* @description : 商城订单
*/
@Service
public class SaasMallOrderService extends UniversalOrderService {
@Override
public void getCustomCreateOrderBo(CreateOrderBo createOrderBo) {
}
@Override
public void validParam(CreateOrderBaseVo createOrderBaseVo) {
}
@Override
public void getExtInfoCustom(CreateOrderBo createOrderBo) {
}
}
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.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
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 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.apache.commons.collections4.CollectionUtils;
import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration; import org.hibernate.validator.HibernateValidatorConfiguration;
...@@ -21,7 +15,6 @@ import javax.validation.ConstraintViolation; ...@@ -21,7 +15,6 @@ import javax.validation.ConstraintViolation;
import javax.validation.Validation; import javax.validation.Validation;
import javax.validation.ValidatorFactory; import javax.validation.ValidatorFactory;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map;
import java.util.Set; import java.util.Set;
@Service @Service
......
...@@ -14,6 +14,11 @@ import org.springframework.test.web.servlet.MockMvc; ...@@ -14,6 +14,11 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.WebApplicationContext;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
...@@ -65,6 +70,70 @@ public class OrderControllerTest { ...@@ -65,6 +70,70 @@ public class OrderControllerTest {
} }
} }
@Test
public void newCreateOrder() {
Map<String, Object> map = new HashMap<>();
map.put("actualPayAmount", 1);
map.put("appId", "wxb78fb7c6218cb52c");
map.put("barCounter", "");
map.put("bizType", "1");
List<Map<String, Object>> delivery = new ArrayList<>();
Map<String, Object> deliveryMap = new HashMap<>();
deliveryMap.put("addressDetail", "南华路与德华路交叉路口往西北约200米(大润发北侧)");
deliveryMap.put("contactsName", "晓航");
deliveryMap.put("extInfo", "{}");
deliveryMap.put("infoType", "1");
deliveryMap.put("mobile", "18868926846");
deliveryMap.put("relateObjectType", 1);
delivery.add(deliveryMap);
map.put("deliveryContactInfoList", delivery);
map.put("note", "");
map.put("operator", "晓航");
map.put("orderClient",2 );
map.put("orderCostDetailList", "[]");
Map<String, Object> orderExtendedMap = new HashMap<>();
orderExtendedMap.put("orderClientGroup","测试门店-1");
orderExtendedMap.put("orderClientGroupCode","20001");
map.put("orderExtended", orderExtendedMap);
List<Map<String, Object>> orderItemList = new ArrayList<>();
Map<String, Object> orderItemListMap = new HashMap<>();
orderItemListMap.put("canRefund", true);
orderItemListMap.put("extInfo","{\"cartGoodsUid\":\"ff3363c8-72cb-4280-b7b9-7cfe4234ad8e\",\"isSendGoods\":false,\"stapleFood\":0,\"tax\":0.01}");
orderItemListMap.put("ignoreInOrderClose", false);
orderItemListMap.put("isDeleted", false);
orderItemListMap.put("packPrice", 0);
orderItemListMap.put("partnerId", "1864");
orderItemListMap.put("productCode", "");
orderItemListMap.put("productForeignName", "");
orderItemListMap.put("productForeignProperty", "");
orderItemListMap.put("productForeignSpecName", "");
orderItemListMap.put("productId", "195422818929983527");
orderItemListMap.put("productName", "草莓");
orderItemListMap.put("productPicUrl", "https://picture.sandload.cn/1609146623369.jpg");
orderItemListMap.put("productPrice", "1");
orderItemListMap.put("packPrice", "");
orderItemListMap.put("packPrice", "");
orderItemListMap.put("relateObjectType", 1);
orderItemList.add(orderItemListMap);
map.put("orderItemList", orderItemList);
//map.put("", );
try {
mockMvc.perform(post("/item/getMenuCategory").content(map.toString()).
contentType(MediaType.APPLICATION_JSON_UTF8).accept(MediaType.APPLICATION_JSON_UTF8)).andDo(print()).
andExpect(jsonPath("$.code").value("100"));
} catch (Exception e) {
e.printStackTrace();
}
}
/** /**
* 订单支付成功后通知 * 订单支付成功后通知
*/ */
......
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