Commit 6a7c4904 by ping.wu

下单接口优化

parent 9750797d
......@@ -12,23 +12,9 @@
*/
package cn.freemud.adapter;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.utils.BeanUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@Component
public class ShoppingCartAdapter {
......
......@@ -10,16 +10,19 @@ import lombok.Data;
@Data
public class CreateOrderBONew {
//请求参数信息
private CreateOrderVo createOrderVo;
private AssortmentCustomerInfoVo customerInfoVo;
//用户缓存信息
private AssortmentCustomerInfoVo userLoginInfoDto;
//门店信息
private StoreMixResponseDto storeMixResponseDto;
//购物车信息
private ShoppingCartGoodsDto shoppingCartGoodsDto;
private AssortmentCustomerInfoVo userLoginInfoDto;
//订单扩展字段信息
private OrderExtInfoDto extInfo;
public CreateOrderBONew() {
......
......@@ -35,11 +35,11 @@ public class CreateOrderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
private String partnerId;
//@NotEmpty(message = "门店ID 不能为空") //本次需要根据业务做校验
private String shopId;
private String thirdShopId;
/**
* 爱马哥蛋糕预定
* 预定单需求, bizType= 7 其他的场景默认传递null
......@@ -47,42 +47,47 @@ public class CreateOrderVo {
private Integer bizType;
/**
* 就餐人数
* 就餐人数 (围餐参数)
*/
private Integer peopleNumber;
/**
* 操作标识
* 操作标识 (围餐参数)
*/
private Integer operation;
/**
* 购物车版本号
* 购物车版本号 (围餐参数)
*/
private Integer carVer;
/**
* 下单版本号
* 下单版本号 (围餐参数)
*/
private Integer orderUpdateVer;
private String partnerId;
//内部参数
private String thirdShopId;
//内部参数
private String storeName;
//内部参数
private String storeNameEn;
//入参不需要传
//内部参数 入参不需要传 
private String storeAddress;
//内部参数
private String userId;
//内部参数
private String userName;
//内部参数
private String mobile;
//抖音卖券参数
private String saleCouponPhone;
/**
......@@ -97,22 +102,19 @@ public class CreateOrderVo {
private Integer orderType;
/**
* 拼单参数
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
* @see cn.freemud.enums.OrderMarketType
*/
private Byte marketingType;
/**
* 1、结算页 0
*/
private Integer flag;
/**
* 到店类型 orderType 传1的时候 如果reachStoreTyp为空转成订单类型4 如果不为空存储4(打包带走)和5(店内就餐)
*/
private Integer reachStoreType;
/**
* 桌号
* 桌号 桌号点餐必传
*/
private String tableNumber;
......@@ -143,27 +145,23 @@ public class CreateOrderVo {
* 收货地址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 未知
* 内部参数
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
private Integer sex;
public UserDeliveryInfoDto userDeliveryInfoDto;
/**
* 用户定义纬度
*/
......@@ -192,13 +190,10 @@ public class CreateOrderVo {
*/
private String version;
/**
* form_id 用于金额是0的情况 现在只支持商品券,前端参数
* 前端参数
* form_id 用于金额是0的情况,支付宝消息通知中下单通知必传
*/
private String formId;
/**
* 用户收货地址信息 ,入参不需要传,通过校验receiveId获取
*/
public UserDeliveryInfoDto userDeliveryInfoDto;
/**
* 下单支付渠道类型
......
......@@ -231,7 +231,7 @@ public class AppOrderServiceImpl implements AppOrderService {
CreateOrderVo createOrderVo = new CreateOrderVo();
BeanUtil.convertBean(createOrderReq, createOrderVo);
CreateOrderBONew createOrderBO = new CreateOrderBONew(createOrderVo);
createOrderBO.setCustomerInfoVo(customerInfo);
createOrderBO.setUserLoginInfoDto(customerInfo);
createOrderBO.setStoreMixResponseDto(storeMixResponseDto);
createOrderBO.setShoppingCartGoodsDto(shoppingCartGoodsDto);
createOrderVo.setStoreName(storeResponse.getStoreName());
......
......@@ -435,7 +435,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
previewOrderInfoVo.setPayIsArouseStatus(payIsArouseStatus);
//校验返回的订单信息,如包含称重菜单但未称重则不走后续流程直接返回当前订单详细信息,不计算金额
Integer payLicenceStatus = 0;
if(!orderCommonService.queryExistWeightNoNum(queryOrderByIdResponse.getData())){
if(!orderAdapter.queryExistWeightNoNum(queryOrderByIdResponse.getData())){
payLicenceStatus = 0; //不可支付
}else{
payLicenceStatus = 1; //可支付
......@@ -523,7 +523,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
//判断订单中是否存在未称重商品
if(!orderCommonService.queryExistWeightNoNum(queryOrderByIdResponse.getData())){
if(!orderAdapter.queryExistWeightNoNum(queryOrderByIdResponse.getData())){
return ResponseUtil.error(ResponseResult.ORDER_INFO_NOT_WEIGHT_ERROR);
}
//判断订单支付状态 订单状态已支付则返回已支付
......
......@@ -636,7 +636,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
public BaseResponse sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponseDto storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
AssortmentCustomerInfoVo userLoginInfoDto) {
CreateOrderOperateDto response = new CreateOrderOperateDto();
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfoNew(storeResponseDto);
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
OrderClientType orderClient = OrderClientType.SAAS;
String appId = userLoginInfoDto.getWxAppId();
if(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel()) ){
......
......@@ -273,7 +273,7 @@ public class MallOrderServiceImpl implements MallOrderService {
}
private BaseResponse sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponseDto storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, AssortmentCustomerInfoVo userLoginInfoDto, OrderExtInfoDto orderExtInfoDTO) {
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfoNew(storeResponseDto);
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
//创建普通订单
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,storeResponseDto);
......
......@@ -80,8 +80,6 @@ import java.util.concurrent.TimeUnit;
public class OrderCommonService {
@Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
@Value("${saas.reverseNotifyiDcUrl}")
private String reverseNotifyiDcUrl;
@Autowired
private OrderAdapter orderAdapter;
@Autowired
......@@ -106,86 +104,7 @@ public class OrderCommonService {
private OrderServiceImpl orderService;
private final Integer RESPONSE_SUCCESS_CODE = 100;
/**
* 创建预支付信息
* cardCode svc卡号
*/
// public CreateOrderResponseVo createPrePaymentOrder(OrderBeanV1 orderBean,AssortmentCustomerInfoVo assortmentCustomerInfoVo, String partnerId, int cardAmount, String cardCode){
// OrderPayResponse orderPayResponse = null;
// String wxAppId = assortmentCustomerInfoVo.getWxAppId();
// //设置支付信息
// PaymentRequest paymentRequest = new PaymentRequest();
// paymentRequest.setOpenId(assortmentCustomerInfoVo.getOpenId());
// paymentRequest.setWxAppId(wxAppId);
// AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, wxAppId);
// paymentRequest.setPrincipalName(wxApp.getPrincipalName());
// // fisherman 2227 测试商户号, 下个版本需要删除
// if ("2080".equals(partnerId)) {
// //【ID1035981】【蜜雪冰城】订单C端,拼接order_body字段:蜜雪冰城+门店编号
// paymentRequest.setPrincipalName("蜜雪冰城"+orderBean.getShopId()+"店");
// }
// paymentRequest.setReverseNotifyiDcUrl(reverseNotifyiDcUrl);
// //修改订单信息
// OrderExtInfoDto orderExtInfoDto = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class) == null ? new OrderExtInfoDto() : JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
// if(orderBean.getAmount() > 0 && StringUtils.isEmpty(cardCode)) {
// try {
// String transId = orderBean.getOid() + redisService.increment(RedisUtil.getPaymentTransIdSequenceKey(orderBean.getOid()), 1L, TimeUnit.DAYS);
// UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
//
// if (SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEFAULT.getProfile())
// || SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.DEV.getProfile())
// || SDKCommonBaseContextWare.getProfile().equals(SDKCommonBaseContextWare.profiles.TEST.getProfile())) {
// request.setAmount(1L);
// }
// AppLogUtil.infoLog("支付transId :{},payRequest:{}", request.getTransId(), JSON.toJSONString(request));
// redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), orderBean.getOid(), 1L, TimeUnit.DAYS);
// com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, LogThreadLocal.getTrackingNo());
// if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
// return null;
// }
// orderPayResponse = orderAdapter.convent2OrderPayResponse(responseBase.getData());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
//
// orderExtInfoDto.setPrePayTransId(request.getTransId());
// } catch (Exception e) {
// AppLogUtil.errorLog("getPreOrderPay_error", JSONObject.toJSONString(orderBean), JSONObject.toJSONString(paymentRequest),e);
// //给出支付失败提示
// return null;
// }
// }else if(orderBean.getAmount() > 0 && StringUtils.isNotEmpty(cardCode)){
// //svc卡支付
// orderPayResponse = orderService.svcPay(cardCode, orderBean, paymentRequest, orderBean.getOid(), LogThreadLocal.getTrackingNo());
// orderExtInfoDto.setPrePayTransId(orderPayResponse.getPayTransId());
// }else if(orderBean.getAmount() < 0){
// throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
// }else{
// String fmId = "SPAY" + ValidationCode.getRandomUuid();
// orderPayResponse = orderAdapter.getOrderPayResponse(orderBean.getCompanyId(), paymentRequest,
// orderBean.getOid(), fmId);
// orderExtInfoDto.setPrePayTransId(orderPayResponse.getPayTransId());
// }
// CreateOrderResponseVo createOrderResponseVo = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse,orderBean);
// orderExtInfoDto.setFmId(createOrderResponseVo.getFmId());
// orderExtInfoDto.setPrePayUserId(assortmentCustomerInfoVo.getMemberId());
// orderExtInfoDto.setPhone(assortmentCustomerInfoVo.getMobile());
// orderExtInfoDto.setAppid(wxAppId);
// OrderEditRequest orderEditRequest = new OrderEditRequest(orderBean.getOid(),
// JSONObject.toJSONString(orderExtInfoDto));
// orderEditRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
// BaseOrderResponse baseOrderResponse = orderCenterSdkService.orderEdit(orderEditRequest);
// if (!ObjectUtils.equals(ResponseCodeConstant.RESPONSE_SUCCESS, baseOrderResponse.getErrcode())) {
// throw new ServiceException(ResponseResult.ORDER_EDIT_ERROR,baseOrderResponse.getErrmsg());
// }
// if (orderBean.getAmount() > 0 && StringUtils.isBlank(cardCode)) {
// createOrderResponseVo.setPaySuccess(false);
// } else {
// createOrderResponseVo.setPaySuccess(true);
// }
// return createOrderResponseVo;
// }
/**
* 支付后通知确认返回信息
......@@ -283,7 +202,6 @@ public class OrderCommonService {
affirmRequest.setOperator(orderBean.getUserName());
AssortmentAffirmGroupOrderResponse groupOrderResponse = orderCenterSdkService.affirmGroupOrder(affirmRequest);
if(ObjectUtils.notEqual(RESPONSE_SUCCESS_CODE,groupOrderResponse.getErrcode())){
// AppLogUtil.errorLog("paySuccessCallback_payAccess_faild", JSON.toJSONString(message), JSON.toJSONString(groupOrderResponse));
return this.newSendPayFaileMessage();
}
......@@ -325,25 +243,4 @@ public class OrderCommonService {
return sb.toString();
}
/**
* 查询订单商品详情中是否有称重菜未称重
* @return
*/
public boolean queryExistWeightNoNum(OrderBeanV1 orderBean){
for(ProductBeanV1 productBean : orderBean.getProductList()){
if(ProductTypeEnum.WEIGHT_PRODUCT.getCode().equals(productBean.getProductType()) && (productBean.getWeight() == null || new BigDecimal("0.00").compareTo(productBean.getWeight()) >= 0)){
return false;
}
if(ProductTypeEnum.SETMEAL_PRODUCT.getCode().equals(productBean.getProductType()) || ProductTypeEnum.SETMEAL_UPPRICE_PRODUCT.getCode().equals(productBean.getProductType())){
if(CollectionUtils.isNotEmpty(productBean.getComboProduct())){
for(ProductBeanV1 productBeanSon : productBean.getComboProduct()){
if(ProductTypeEnum.WEIGHT_PRODUCT.getCode().equals(productBeanSon.getProductType()) && (productBeanSon.getWeight() == null || new BigDecimal("0.00").compareTo(productBeanSon.getWeight()) >= 0)){
return false;
}
}
}
}
}
return true;
}
}
......@@ -2446,7 +2446,7 @@ public class OrderServiceImpl implements Orderservice {
//更新订单使用
CreateOrderOperateDto response = new CreateOrderOperateDto();
//订单扩展表保存门店组织结构信息
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfoNew(storeResponseDto);
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
// fisherman 爱马哥蛋糕 预定 额外字段存储
orderExtendedReq.setUserPhone(createOrderVo.getUserPhone());
orderExtendedReq.setSendWord(createOrderVo.getSendWord());
......@@ -2723,7 +2723,7 @@ public class OrderServiceImpl implements Orderservice {
if (!String.valueOf(RESPONSE_SUCCESS_CODE).equals(orderInfoReqs.getCode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
Map<String, Object> responseMap = Maps.newTreeMap();
// Map<String, Object> responseMap = Maps.newTreeMap();
//用户无订单数据
if (orderInfoReqs.getResult() == null || orderInfoReqs.getTotalNum() == 0) {
return ResponseUtil.success();
......@@ -2732,7 +2732,7 @@ public class OrderServiceImpl implements Orderservice {
orderBean -> {
QueryOrderByConditionsResponseVo queryOrderByConditionsResponseVo = new QueryOrderByConditionsResponseVo();
BeanUtil.convertBean(orderBean, queryOrderByConditionsResponseVo);
BeanUtil.convertBean(orderBean, queryOrderByConditionsResponseVo);
// BeanUtil.convertBean(orderBean, queryOrderByConditionsResponseVo);
List<String> imgUrl = new ArrayList<>();
String extInfo = orderBean.getExtInfo();
if (!StringUtil.isEmpty(extInfo)) {
......
......@@ -827,7 +827,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
deliveryContactInfoList.add(deliveryContactInfoCreateReq);
request.setDeliveryContactInfoList(deliveryContactInfoList);
//保存门店渠道信息
request.setOrderExtended(orderAdapter.saveStoreInfoNew(storeInfo));
request.setOrderExtended(orderAdapter.saveStoreInfo(storeInfo));
request.setOperator(userLoginInfoDto.getNickName());
request.setAppId(userLoginInfoDto.getWxAppId());
return request;
......
......@@ -220,7 +220,7 @@ public class SaasMallOrderService extends UniversalOrderService {
*/
@Override
protected BaseResponse createSharedOrder(CreateOrderBo createOrderBo) {
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfoNew(createOrderBo.getStoreResponseDto());
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(createOrderBo.getStoreResponseDto());
CreateOrderBaseVo createOrderBaseVo = createOrderBo.getCreateOrderBaseVo();
ShoppingCartGoodsDto shoppingCartGoodsDto = createOrderBo.getShoppingCartGoodsDto();
//创建普通订单
......
......@@ -2,19 +2,20 @@ package com.freemud.application.sdk.api.ordercenter.enums.orderv1;
public enum OrderStatusV1 {
PENDING_PAYMENT("待支付",2,1),
PLACE_AN_ORDER( "下单",1,2),
ACCEPTED("已接单",3,3),
PRODUCED("制作完成(待发货)",31,4),
DELIVERING("配送中",4,5),
COMPLETE( "已完成",5,6),
CLOSED( "已关闭",6,7)
PENDING_PAYMENT("待支付",2,1,"To be paid"),
PLACE_AN_ORDER( "下单",1,2,"place an order"),
ACCEPTED("已接单",3,3,"Receiving orders"),
PRODUCED("制作完成(待发货)",31,4,"Production completed"),
DELIVERING("配送中",4,5,"In delivery"),
COMPLETE( "已完成",5,6,"Complete"),
CLOSED( "已关闭",6,7,"Cancel")
;
private String name;
private Integer v1Code;
private Integer v2Code;
private String descEn;
/**
......@@ -47,10 +48,22 @@ public enum OrderStatusV1 {
return v2Code;
}
OrderStatusV1(String name, Integer v1Code, Integer v2Code) {
public static Integer[] getAllCodes() {
Integer[] codeArray = new Integer[values().length];
int i = 0;
for (OrderStatusV1 orderStatusV1 : values()) {
codeArray[i] = orderStatusV1.getV1Code();
i++;
}
return codeArray;
}
OrderStatusV1(String name, Integer v1Code, Integer v2Code, String descEn) {
this.name = name;
this.v1Code = v1Code;
this.v2Code = v2Code;
this.descEn = descEn;
}
public String getName() {
......
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