Commit cb592078 by dingkai

Merge branch 'feature/1.9.19-蜜雪中台订单创建-dingkai' into qa

# Conflicts:
#	order-application-service/pom.xml
parents bc6de12e c90eb10a
...@@ -1245,6 +1245,9 @@ public class OrderSdkAdapter { ...@@ -1245,6 +1245,9 @@ public class OrderSdkAdapter {
case 23: case 23:
name = "saasmall"; name = "saasmall";
break; break;
case 12:
name = "app";
break;
default: default:
name = orderClientType.toString(); name = orderClientType.toString();
break; break;
...@@ -1286,6 +1289,9 @@ public class OrderSdkAdapter { ...@@ -1286,6 +1289,9 @@ public class OrderSdkAdapter {
case 23: case 23:
name = "saas 商城"; name = "saas 商城";
break; break;
case 12:
name = "APP";
break;
default: default:
break; break;
} }
......
...@@ -81,4 +81,11 @@ public class OrderExtInfoDTO { ...@@ -81,4 +81,11 @@ public class OrderExtInfoDTO {
* 微信上报异常补推使用 * 微信上报异常补推使用
*/ */
private String sessionKey; private String sessionKey;
/**
* 来源appId
*/
private String fromAppId;
private String fmId;
} }
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.4.2-SNAPSHOT</version> <version>1.4.4-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -2336,6 +2336,25 @@ public class OrderAdapter { ...@@ -2336,6 +2336,25 @@ public class OrderAdapter {
return createOrderResponseVo; return createOrderResponseVo;
} }
public CreateOrderResponseVo convent2CreateFatherSonOrderNoPayResponseVo(QueryOrdersResponse.DataBean.OrderBean orderBean) {
CreateOrderResponseVo createOrderResponseVo = new CreateOrderResponseVo();
createOrderResponseVo.setOid(orderBean.getOid());
createOrderResponseVo.setWxappId("");
createOrderResponseVo.setFmId("");
createOrderResponseVo.setTimestamp("");
createOrderResponseVo.setNonceStr("");
createOrderResponseVo.setPackageX("");
createOrderResponseVo.setSignType("");
createOrderResponseVo.setSign("");
//微信新版订阅消息判断新加字段
if(orderBean != null && orderBean.getType() != null){
createOrderResponseVo.setOrderType(getNewOrderType(orderBean.getType(), orderBean.getGmtExpect()));
}
createOrderResponseVo.setOrderStr("");
createOrderResponseVo.setPaySuccess(false);
return createOrderResponseVo;
}
public OrderPayResponse convent2OrderPayResponse(UnifiedOrderResponse unifiedOrderResponse) { public OrderPayResponse convent2OrderPayResponse(UnifiedOrderResponse unifiedOrderResponse) {
OrderPayResponse responseDto = new OrderPayResponse(); OrderPayResponse responseDto = new OrderPayResponse();
responseDto.setFmId(unifiedOrderResponse.getFmId()); responseDto.setFmId(unifiedOrderResponse.getFmId());
...@@ -2718,4 +2737,30 @@ public class OrderAdapter { ...@@ -2718,4 +2737,30 @@ public class OrderAdapter {
return orderTask; return orderTask;
} }
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId,
String faceCode, String cardCode, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean,
QueryOrdersResponse.DataBean.OrderBean productOrderBean, long totalAmount, int cardAmount, OrderExtInfoDTO orderExtInfoDTO){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId);
requestDto.setOpenId(openId);
requestDto.setFaceCode(faceCode);
requestDto.setCardCode(cardCode);
requestDto.setFatherOrderBean(fatherOrderBean);
requestDto.setProductOrderBean(productOrderBean);
requestDto.setTotalAmount(totalAmount);
requestDto.setCardAmount(cardAmount);
requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
return requestDto;
}
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(AssortmentCustomerInfoVo userLoginInfoDto,CreateOrderVo createOrderVo,
CreateOrderOperateDto createOrderOperateDto, OrderExtInfoDTO orderExtInfoDTO){
return this.convertToCreatePrepayRequestDto(createOrderVo.getPartnerId(), userLoginInfoDto.getWxAppId(), userLoginInfoDto.getOpenId(),
createOrderVo.getFaceCode(), createOrderVo.getCardCode(), createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(),
createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO);
}
} }
...@@ -25,6 +25,7 @@ import cn.freemud.utils.ResponseUtil; ...@@ -25,6 +25,7 @@ import cn.freemud.utils.ResponseUtil;
import cn.freemud.service.impl.MallOrderServiceImpl; import cn.freemud.service.impl.MallOrderServiceImpl;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import com.freemud.sdk.api.assortment.order.response.order.CreateOrderResponse;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -218,4 +219,13 @@ public class OrderController { ...@@ -218,4 +219,13 @@ public class OrderController {
return mallOrderService.orderAffirm(request); return mallOrderService.orderAffirm(request);
} }
/**
* 创建预支付
*/
@ApiAnnotation(logMessage = "createPrepay")
@PostMapping("/createPrepay")
public BaseResponse createPrepay(@Validated @LogParams @RequestBody CreatePrepayVo request) {
return orderAdapterService.createPrepay(request);
}
} }
package cn.freemud.entities.dto.order;
import com.freemud.sdk.api.assortment.order.entities.OrderExtInfoDTO;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
@Data
public class CreatePrepayRequestDto {
private String partnerId;
private String wxAppId;
private String openId;
private String faceCode;
private String cardCode;
private QueryOrdersResponse.DataBean.OrderBean fatherOrderBean;
private QueryOrdersResponse.DataBean.OrderBean productOrderBean;
private long totalAmount;
private int cardAmount;
private OrderExtInfoDTO orderExtInfoDTO;
}
...@@ -12,47 +12,54 @@ ...@@ -12,47 +12,54 @@
*/ */
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
@Data @Data
public class CreateOrderResponseVo { public class CreateOrderResponseVo {
@ApiModelProperty(value = "订单id")
private String oid; private String oid;
@ApiModelProperty(value = "微信appid")
private String wxappId; private String wxappId;
@ApiModelProperty(value = "时间戳")
private String timestamp; private String timestamp;
@ApiModelProperty(value = "随机字符串")
private String nonceStr; private String nonceStr;
@ApiModelProperty(value = "订单详情扩展字符串")
private String packageX; private String packageX;
@ApiModelProperty(value = "签名方式")
private String signType; private String signType;
@ApiModelProperty(value = "签名")
private String sign; private String sign;
/** /**
* 是否支持成功 支付金额为0,现为商品券时返回true,其余为false * 是否支持成功 支付金额为0,现为商品券时返回true,其余为false
*/ */
@ApiModelProperty(value = "是否支持成功")
private Boolean paySuccess; private Boolean paySuccess;
/** /**
* 非码支付商户号 用户数据上报 * 非码支付商户号 用户数据上报
*/ */
@ApiModelProperty(value = "非码支付商户号")
private String fmId; private String fmId;
/** /**
* 下单版本号 * 下单版本号
*/ */
@ApiModelProperty(value = "下单版本号")
private Integer orderUpdateVer; private Integer orderUpdateVer;
/** /**
* 订单类型 * 订单类型
*/ */
@ApiModelProperty(value = "订单类型")
private Integer orderType; private Integer orderType;
/** /**
* 支付宝参数 唤起支付宝支付使用 * 支付宝参数 唤起支付宝支付使用
*/ */
@ApiModelProperty(value = "支付宝参数 唤起支付宝支付使用")
private String orderStr; private String orderStr;
} }
package cn.freemud.entities.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class CreatePrepayVo {
/**
* 商户id
*/
@NotEmpty
@ApiModelProperty(value = "商户id")
private String partnerId;
/**
* 用户sessionId
*/
@NotEmpty
@ApiModelProperty(value = "用户sessionId")
private String sessionId;
/**
* 订单号
*/
@NotEmpty
@ApiModelProperty(value = "订单号")
private String orderCode;
/**
* 门店id
*/
@NotEmpty
@ApiModelProperty(value = "门店id")
private String storeId;
/**
* 支付appid
*/
@NotEmpty
@ApiModelProperty(value = "支付appId")
private String payAppId;
@ApiModelProperty(value = "微信openId")
private String openId;
}
...@@ -136,6 +136,10 @@ public enum ResponseResult { ...@@ -136,6 +136,10 @@ public enum ResponseResult {
ORDER_HAS_CANCELED("45053", "订单已经被取消"), ORDER_HAS_CANCELED("45053", "订单已经被取消"),
ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"), ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"),
AFFIRM_ORDER_FAIL("45055", "确认订单失败"), AFFIRM_ORDER_FAIL("45055", "确认订单失败"),
ORDER_EMPTY_CREATE_PREPAY_FAIL("45056", "订单为空,创建预订单失败"),
ORDER_HAS_PAID("45057", "订单已支付或已完成"),
ORDER_PRE_PAYMENT_CLOSE_FAILED("45058","关闭预支付订单失败"),
ORDER_OWNER_ERROR("45059","订单归属错误"),
/** /**
* 支付 * 支付
......
package cn.freemud.enums;
import lombok.Getter;
@Getter
public enum UserLoginChannelEnum {
WEIXIN("1", "微信"),
ALIPAY("2", "支付宝"),
APP("3", "APP");
private String code;
private String desc;
UserLoginChannelEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
}
package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
/**
* app订单服务
*/
public interface AppOrderService {
/**
* 创建订单
*/
BaseResponse createOrderFlow(CreateOrderVo createOrderVo);
/**
* 创建预支付
*/
BaseResponse createPrepay(CreatePrepayVo createPrepayVo);
}
...@@ -2,6 +2,7 @@ package cn.freemud.service; ...@@ -2,6 +2,7 @@ package cn.freemud.service;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -23,4 +24,9 @@ public interface OrderAdapterService { ...@@ -23,4 +24,9 @@ public interface OrderAdapterService {
*/ */
BaseResponse createOrderNew(CreateOrderVo createOrderVo); BaseResponse createOrderNew(CreateOrderVo createOrderVo);
/**
* 创建预支付
*/
BaseResponse createPrepay(CreatePrepayVo createPrepayVo);
} }
package cn.freemud.service.impl;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TradeState;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.AppOrderService;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.entities.OrderExtInfoDTO;
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.request.order.QueryRelatedOrderByCodeRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryRelatedOrderByCodeResp;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
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.List;
@Service
public class AppOrderServiceImpl implements AppOrderService {
@Autowired
private OrderServiceImpl orderservice;
@Autowired
private CheckOrder checkOrder;
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private PaymentNewService paymentNewService;
/**
* 不支持会员卡
*/
@Override
public BaseResponse createOrderFlow(CreateOrderVo createOrderVo) {
String trackingNo = LogThreadLocal.getTrackingNo();
// 查询用户信息
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMember(createOrderVo.getSessionId());
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
StoreResponse.BizVO storeResponseDto = checkOrder.checkOrderByStore(createOrderVo, trackingNo);
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, userLoginInfoDto, storeResponseDto,shoppingCartGoodsDto.getTotalAmount(), trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDTO extInfo = orderservice.getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//创建订单
CreateOrderOperateDto createOrderOperateDto = orderservice.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
BaseResponse baseResponse = this.updateOrderExtInfo(createOrderOperateDto.getProductOrderBean(), extInfo, trackingNo);
if(baseResponse != null) {
return baseResponse;
}
//返回没创建预支付的结果
CreateOrderResponseVo responseVo = orderAdapter.convent2CreateFatherSonOrderNoPayResponseVo(createOrderOperateDto.getProductOrderBean());
return ResponseUtil.success(responseVo);
}
@Override
public BaseResponse createPrepay(CreatePrepayVo createPrepayVo) {
CreateOrderOperateDto createOrderOperateDto = this.getCreateOrderOperateDto(createPrepayVo.getOrderCode());
QueryOrdersResponse.DataBean.OrderBean productOrderBean = createOrderOperateDto.getProductOrderBean();
this.checkOrderBefore(createPrepayVo, productOrderBean);
// 关闭历史预支付订单
this.closeHistoryPrePay(productOrderBean);
OrderExtInfoDTO extInfo = JSONObject.parseObject(productOrderBean.getExtInfo(), OrderExtInfoDTO.class);
String faceCode = "";
String cardCode = "";
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(createPrepayVo.getPartnerId(), createPrepayVo.getPayAppId(), createPrepayVo.getOpenId(), faceCode,
cardCode, createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(), createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount(), extInfo);
return orderservice.createPrepayOrder(createPrepayRequestDto);
}
private void checkOrderBefore(CreatePrepayVo createPrepayVo, QueryOrdersResponse.DataBean.OrderBean orderBean) {
if(!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
}
OrderExtInfoDTO extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDTO.class);
if(extInfo == null || StringUtils.isBlank(extInfo.getSessionId()) || extInfo.getSessionId().equals(createPrepayVo.getSessionId())) {
throw new ServiceException(ResponseResult.ORDER_OWNER_ERROR);
}
}
/**
* 更新订单扩展信息
*/
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;
}
private CreateOrderOperateDto getCreateOrderOperateDto(String orderId){
QueryRelatedOrderByCodeRequest baseQueryOrderRequest = new QueryRelatedOrderByCodeRequest();
baseQueryOrderRequest.setOrderCode(orderId);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryRelatedOrderByCodeResp queryOrderByIdResponse = orderCenterSdkService.queryRelatedOrderByCode(baseQueryOrderRequest);
if(queryOrderByIdResponse == null || CollectionUtils.isEmpty(queryOrderByIdResponse.getOrderBeanList())) {
throw new ServiceException(ResponseResult.ORDER_QUERYORDER_ERROR);
}
List<QueryOrdersResponse.DataBean.OrderBean> orderBeanList = queryOrderByIdResponse.getOrderBeanList();
long totalAmount = 0;
QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
QueryOrdersResponse.DataBean.OrderBean productBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
if(1 == orderBeanList.size()) {
fatherBeanListOne = orderBeanList.get(0);
productBeanListOne = orderBeanList.get(0);
totalAmount = orderBeanList.get(0).getAmount();
} else {
fatherBeanListOne = orderBeanList.stream().filter(orderBeanTemp -> orderBeanTemp.getIsParent()).findFirst().orElse(fatherBeanListOne);
productBeanListOne = orderBeanList.stream().filter(orderBeanTemp -> 1 == orderBeanTemp.getBizType()).findFirst().orElse(productBeanListOne);
totalAmount = orderBeanList.stream().mapToLong(QueryOrdersResponse.DataBean.OrderBean::getAmount).count();
}
CreateOrderOperateDto createOrderOperateDto = new CreateOrderOperateDto();
createOrderOperateDto.setTotalAmount(totalAmount);
createOrderOperateDto.setCardAmount(0);
createOrderOperateDto.setFatherOrderBean(fatherBeanListOne);
createOrderOperateDto.setProductOrderBean(productBeanListOne);
return createOrderOperateDto;
}
private void closeHistoryPrePay(QueryOrdersResponse.DataBean.OrderBean orderBean) {
OrderExtInfoDTO extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDTO.class);
//判断当前订单是否存在预支付订单
if(extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())){
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest,LogThreadLocal.getTrackingNo());
//判断预支付订单状态
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())){
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
}
//判断当前预支付订单是否已经支付成功
if(ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())){
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
}
// 3.取消前一个预支付订单 调用支付取消预支付订单,如果预支付订单已经取消了再调用取消预支付订单接口会报错的
if(ObjectUtils.equals(TradeState.NOTPAY.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
PaymentCloseUnifiedOrderRequest closeUnifiedOrderRequest = new PaymentCloseUnifiedOrderRequest();
closeUnifiedOrderRequest.setFmId(extInfo.getFmId());
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest,LogThreadLocal.getTrackingNo());
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),cancelNewUnifiedOrder.getCode())){
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
}
}
}
}
...@@ -116,6 +116,15 @@ public class CheckOrder { ...@@ -116,6 +116,15 @@ public class CheckOrder {
return userLoginInfoDto; return userLoginInfoDto;
} }
public AssortmentCustomerInfoVo checkOrderByMember(String sessionId) {
// 通过sessionId查询缓存中会员id
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(sessionId);
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
return userLoginInfoDto;
}
/** /**
* 查询门店信息 * 查询门店信息
......
...@@ -2,14 +2,13 @@ package cn.freemud.service.impl; ...@@ -2,14 +2,13 @@ package cn.freemud.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.CreateOrderVo; import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo; import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.enums.OrderChannelType; import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.ResponseResult; import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.UserLoginChannelEnum;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.EncircleOrderService; import cn.freemud.service.*;
import cn.freemud.service.MallOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
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;
...@@ -41,6 +40,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -41,6 +40,8 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private AssortmentCustomerInfoManager assortmentCustomerInfoManager; private AssortmentCustomerInfoManager assortmentCustomerInfoManager;
@Autowired @Autowired
private MallOrderService mallOrderService; private MallOrderService mallOrderService;
@Autowired
private AppOrderService appOrderService;
@Override @Override
public BaseResponse createOrderNew(CreateOrderVo createOrderVo) { public BaseResponse createOrderNew(CreateOrderVo createOrderVo) {
...@@ -81,6 +82,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -81,6 +82,13 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return mallOrderService.createOrder(createOrderVo); return mallOrderService.createOrder(createOrderVo);
} }
/**
* APP下单
*/
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createOrderFlow(createOrderVo);
}
//原标准点餐程序逻辑处理 //原标准点餐程序逻辑处理
BaseResponse baseResponse = this.checkStandardParamInfo(createOrderVo); BaseResponse baseResponse = this.checkStandardParamInfo(createOrderVo);
if(ObjectUtils.notEqual(baseResponse.getCode(),ResponseResult.SUCCESS.getCode())){ if(ObjectUtils.notEqual(baseResponse.getCode(),ResponseResult.SUCCESS.getCode())){
...@@ -89,6 +97,18 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -89,6 +97,18 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return orderservice.createOrderNew(createOrderVo); return orderservice.createOrderNew(createOrderVo);
} }
@Override
public BaseResponse createPrepay(CreatePrepayVo createPrepayVo) {
AssortmentCustomerInfoVo assortmentCustomerInfoVo = assortmentCustomerInfoManager.getCustomerInfoByObject(createPrepayVo.getSessionId());
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (UserLoginChannelEnum.APP.getCode().equals(assortmentCustomerInfoVo.getChannel())) {
return appOrderService.createPrepay(createPrepayVo);
}
throw new UnsupportedOperationException("暂不支持渠道:"+assortmentCustomerInfoVo.getChannel());
}
/** /**
* 标准点餐参数校验 * 标准点餐参数校验
* @param createOrderVo * @param createOrderVo
......
...@@ -30,6 +30,7 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean; ...@@ -30,6 +30,7 @@ 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.order.CreateOrderOperateDto; import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto; import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.product.AttributeValue; import cn.freemud.entities.dto.product.AttributeValue;
...@@ -279,7 +280,10 @@ public class OrderServiceImpl implements Orderservice { ...@@ -279,7 +280,10 @@ public class OrderServiceImpl implements Orderservice {
OrderExtInfoDTO extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo); OrderExtInfoDTO extInfo = getExtInfo(userLoginInfoDto, storeResponseDto, pushOrderTime, createOrderVo);
//1.9.2套餐需求同步优化创建订单代码 //1.9.2套餐需求同步优化创建订单代码
return this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto, extInfo); CreateOrderOperateDto createOrderOperateDto = this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto);
//创建支付
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(userLoginInfoDto, createOrderVo, createOrderOperateDto, extInfo);
return this.createPrepayOrder(createPrepayRequestDto);
} }
/** /**
...@@ -607,7 +611,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -607,7 +611,7 @@ public class OrderServiceImpl implements Orderservice {
return newSendPaySuccessNoticeMessage(); return newSendPaySuccessNoticeMessage();
} }
private QueryRelationOrderByIdResponseDto getQueryRelationOrderByIdResponseDto(String oid) { public QueryRelationOrderByIdResponseDto getQueryRelationOrderByIdResponseDto(String oid) {
QueryRelatedOrderByCodeRequest baseQueryOrderRequest = new QueryRelatedOrderByCodeRequest(); QueryRelatedOrderByCodeRequest baseQueryOrderRequest = new QueryRelatedOrderByCodeRequest();
baseQueryOrderRequest.setOrderCode(oid); baseQueryOrderRequest.setOrderCode(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo()); baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
...@@ -1718,51 +1722,20 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1718,51 +1722,20 @@ public class OrderServiceImpl implements Orderservice {
* *
* @return * @return
*/ */
private BaseResponse sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, public CreateOrderOperateDto sdkCreateOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto,
AssortmentCustomerInfoVo userLoginInfoDto, OrderExtInfoDTO orderExtInfoDTO) { AssortmentCustomerInfoVo userLoginInfoDto) {
CreateOrderOperateDto response = new CreateOrderOperateDto();
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto); OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
String orderWarnTime = storeResponseDto.getOrderWarnTime(); String orderWarnTime = storeResponseDto.getOrderWarnTime();
OrderClientType orderClient = OrderClientType.SAAS; OrderClientType orderClient = OrderClientType.SAAS;
String appId = userLoginInfoDto.getWxAppId(); String appId = userLoginInfoDto.getWxAppId();
if("2".equals(userLoginInfoDto.getChannel()) ){ if("2".equals(userLoginInfoDto.getChannel()) ){
orderClient = OrderClientType.ALIPAY; orderClient = OrderClientType.ALIPAY;
} else if(UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) {
orderClient = OrderClientType.APP;
} }
//创建普通订单
OrderClientType finalOrderClient = orderClient;
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
baseCreateOrderRequest.setOrderExtended(orderExtendedReq);
baseCreateOrderRequest.setOrderClient(finalOrderClient);
CreateOrderRequest createOrderRequest = new CreateOrderRequest();
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createOrderRequest.setMqMessageRequest(mqMessageRequest);
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return orderCenterSdkService.createOrderFlow(createOrderRequest);
});
//创建父子订单
Function<Object, CreateFatherSonOrderResponse> createFatherSonOrder = (var -> {
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,storeResponseDto);
//查询第三方商品编号
createFatherSonOrderRequest = getProductCustomerCodeNew(createFatherSonOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createFatherSonOrderRequest.setMqMessageRequest(mqMessageRequest);
return orderCenterSdkService.createFatherSonOrder(createFatherSonOrderRequest);
});
CreateOrderResponseVo createOrderResponse = new CreateOrderResponseVo();
PaymentRequest paymentRequest = new PaymentRequest();
long totalAmount = 0; long totalAmount = 0;
int cardAmount = 0; int cardAmount = 0;
QueryOrdersResponse.DataBean.OrderBean orderBean = new QueryOrdersResponse.DataBean.OrderBean();
QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = new QueryOrdersResponse.DataBean.OrderBean(); QueryOrdersResponse.DataBean.OrderBean fatherBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
QueryOrdersResponse.DataBean.OrderBean productBeanListOne = new QueryOrdersResponse.DataBean.OrderBean(); QueryOrdersResponse.DataBean.OrderBean productBeanListOne = new QueryOrdersResponse.DataBean.OrderBean();
if (createOrderVo.getBuyMemberCard() != null && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getRuleId()) && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getPaidId())) { if (createOrderVo.getBuyMemberCard() != null && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getRuleId()) && StringUtils.isNotEmpty(createOrderVo.getBuyMemberCard().getPaidId())) {
...@@ -1770,9 +1743,9 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1770,9 +1743,9 @@ public class OrderServiceImpl implements Orderservice {
int cardOriginalAmount = shoppingCartGoodsDto.getCardOriginalAmount() == null ? 0 : shoppingCartGoodsDto.getCardOriginalAmount(); int cardOriginalAmount = shoppingCartGoodsDto.getCardOriginalAmount() == null ? 0 : shoppingCartGoodsDto.getCardOriginalAmount();
int cardDiscountAmount = shoppingCartGoodsDto.getCardDiscountAmount() == null ? 0 : shoppingCartGoodsDto.getCardDiscountAmount(); int cardDiscountAmount = shoppingCartGoodsDto.getCardDiscountAmount() == null ? 0 : shoppingCartGoodsDto.getCardDiscountAmount();
cardAmount = cardOriginalAmount - cardDiscountAmount; cardAmount = cardOriginalAmount - cardDiscountAmount;
CreateFatherSonOrderResponse createFatherSonOrderResponse = createFatherSonOrder.apply(null); CreateFatherSonOrderResponse createFatherSonOrderResponse = createFatherSonOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, orderExtendedReq);
if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createFatherSonOrderResponse.getErrcode())) { if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createFatherSonOrderResponse.getErrcode())) {
return ResponseUtil.error(createFatherSonOrderResponse.getErrcode().toString(), createFatherSonOrderResponse.getErrmsg()); throw new ServiceException(ResponseResult.ORDER_CREATE_ERROR);
} }
List<QueryOrdersResponse.DataBean.OrderBean> orderBeanList = createFatherSonOrderResponse.getOrderBeanList(); List<QueryOrdersResponse.DataBean.OrderBean> orderBeanList = createFatherSonOrderResponse.getOrderBeanList();
List<QueryOrdersResponse.DataBean.OrderBean> fatherBeanList = orderBeanList.stream().filter(orderBeanTemp -> orderBeanTemp.getIsParent()).collect(Collectors.toList()); List<QueryOrdersResponse.DataBean.OrderBean> fatherBeanList = orderBeanList.stream().filter(orderBeanTemp -> orderBeanTemp.getIsParent()).collect(Collectors.toList());
...@@ -1783,45 +1756,53 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1783,45 +1756,53 @@ public class OrderServiceImpl implements Orderservice {
totalAmount = orderBeanList.stream().mapToLong(QueryOrdersResponse.DataBean.OrderBean::getAmount).count(); totalAmount = orderBeanList.stream().mapToLong(QueryOrdersResponse.DataBean.OrderBean::getAmount).count();
fatherBeanList.get(0).setShopId(storeResponseDto.getStoreCode()); fatherBeanList.get(0).setShopId(storeResponseDto.getStoreCode());
fatherBeanList.get(0).setCompanyId(createOrderVo.getPartnerId()); fatherBeanList.get(0).setCompanyId(createOrderVo.getPartnerId());
List<QueryOrdersResponse.DataBean.OrderBean> orderBeans = createFatherSonOrderResponse.getOrderBeanList().stream().filter(orderBeanTemp -> orderBeanTemp.getBizType().equals(1)).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(orderBeans)) {
orderBean = orderBeans.get(0);
}
} else { } else {
//普通订单 //普通订单
CreateOrderResponse createOrderFlowResponse = createOrder.apply(null); CreateOrderResponse createOrderFlowResponse = createOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, orderExtendedReq, orderClient);
if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createOrderFlowResponse.getErrcode())) { if (ObjectUtils.notEqual(Integer.valueOf(ResponseResult.SUCCESS.getCode()), createOrderFlowResponse.getErrcode())) {
return ResponseUtil.error(createOrderFlowResponse.getErrcode().toString(), createOrderFlowResponse.getErrmsg()); throw new ServiceException(ResponseResult.ORDER_CREATE_ERROR);
} }
orderBean = createOrderFlowResponse.getData(); fatherBeanListOne = createOrderFlowResponse.getData();
fatherBeanListOne = orderBean; productBeanListOne = createOrderFlowResponse.getData();
productBeanListOne = orderBean; totalAmount = createOrderFlowResponse.getData().getAmount();
totalAmount = orderBean.getAmount();
} }
response.setTotalAmount(totalAmount);
response.setCardAmount(cardAmount);
response.setFatherOrderBean(fatherBeanListOne);
response.setProductOrderBean(productBeanListOne);
return response;
}
//<!---创建订单公共方法执行逻辑---> /**
* 创建预支付订单
*/
public BaseResponse createPrepayOrder(CreatePrepayRequestDto createPrepayRequestDto) {
CreateOrderResponseVo createOrderResponse;
OrderPayResponse orderPayResponse = null; OrderPayResponse orderPayResponse = null;
paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId(),appId); PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(createPrepayRequestDto.getOpenId(), createPrepayRequestDto.getPartnerId(), createPrepayRequestDto.getWxAppId());
long totalAmount = createPrepayRequestDto.getTotalAmount();
String cardCode = createPrepayRequestDto.getCardCode();
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode())) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount); orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount());
} else if (totalAmount > 0 && StringUtils.isNotBlank(createOrderVo.getCardCode())) { } else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
//svc卡支付 //svc卡支付
orderPayResponse = svcPay(createOrderVo.getCardCode(), fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo()); orderPayResponse = svcPay(cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo());
} else { } else {
// 0元订单如果不需要支付,自定义支付单号 // 0元订单如果不需要支付,自定义支付单号
orderPayResponse = getOrderPayResponse(paymentRequest, fatherBeanListOne); orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
} }
if (orderPayResponse == null) { if (orderPayResponse == null) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productBeanListOne, createOrderVo.getCardCode()); return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode);
} }
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, orderBean); createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, orderExtInfoDTO, productBeanListOne, LogThreadLocal.getTrackingNo()); BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
if (baseEditResponse != null) { if (baseEditResponse != null) {
return baseEditResponse; return baseEditResponse;
} }
if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode())) { if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
createOrderResponse.setPaySuccess(false); createOrderResponse.setPaySuccess(false);
} else { } else {
createOrderResponse.setPaySuccess(true); createOrderResponse.setPaySuccess(true);
...@@ -1837,15 +1818,47 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1837,15 +1818,47 @@ public class OrderServiceImpl implements Orderservice {
message.setOut_trade_no(createOrderResponse.getFmId()); message.setOut_trade_no(createOrderResponse.getFmId());
message.setTrans_id(createOrderResponse.getOid()); message.setTrans_id(createOrderResponse.getOid());
message.setTotal_fee(0); message.setTotal_fee(0);
message.setOpenid(userLoginInfoDto.getOpenId()); message.setOpenid(createPrepayRequestDto.getOpenId());
message.setPlatform_coupon(0); message.setPlatform_coupon(0);
message.setMerchant_coupon(0); message.setMerchant_coupon(0);
this.paySuccessCallback(message); this.paySuccessCallback(message);
return ResponseUtil.success(createOrderResponse); return ResponseUtil.success(createOrderResponse);
} }
} }
/**
* 创建普通订单
*/
public CreateOrderResponse createOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, OrderExtendedReq orderExtendedReq, OrderClientType orderClient) {
BaseCreateOrderRequest baseCreateOrderRequest = orderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto, storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
baseCreateOrderRequest.setOrderExtended(orderExtendedReq);
baseCreateOrderRequest.setOrderClient(orderClient);
CreateOrderRequest createOrderRequest = new CreateOrderRequest();
baseCreateOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
createOrderRequest.setBaseCreateOrderRequest(baseCreateOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createOrderRequest.setMqMessageRequest(mqMessageRequest);
createOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return orderCenterSdkService.createOrderFlow(createOrderRequest);
}
/**
* 创建父子订单
*/
public CreateFatherSonOrderResponse createFatherSonOrder(CreateOrderVo createOrderVo, StoreResponse.BizVO storeResponseDto, ShoppingCartGoodsDto shoppingCartGoodsDto, OrderExtendedReq orderExtendedReq) {
CreateFatherSonOrderRequest createFatherSonOrderRequest = orderAdapter.convertFatherSonOrderRequest(createOrderVo, shoppingCartGoodsDto, orderExtendedReq,storeResponseDto);
//查询第三方商品编号
createFatherSonOrderRequest = getProductCustomerCodeNew(createFatherSonOrderRequest);
MqMessageRequest mqMessageRequest = new MqMessageRequest();
mqMessageRequest.setBackOrdersNotifyActivityExchange(backOrdersNotifyActivityExchange);
mqMessageRequest.setBackOrdersNotifyActivityQueue(backOrdersChangeOrderStatusConsumerQueue);
createFatherSonOrderRequest.setMqMessageRequest(mqMessageRequest);
return orderCenterSdkService.createFatherSonOrder(createFatherSonOrderRequest);
}
private OrderPayResponse getOrderPayResponse(PaymentRequest paymentRequest, QueryOrdersResponse.DataBean.OrderBean orderBean) { private OrderPayResponse getOrderPayResponse(PaymentRequest paymentRequest, QueryOrdersResponse.DataBean.OrderBean orderBean) {
OrderPayResponse orderPayResponse; OrderPayResponse orderPayResponse;
...@@ -1935,11 +1948,11 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1935,11 +1948,11 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse; return orderPayResponse;
} }
private PaymentRequest orderBodyConvertToPaymentBody(AssortmentCustomerInfoVo userLoginInfoDto, String partnerId,String appId) { private PaymentRequest orderBodyConvertToPaymentBody(String openId, String partnerId,String appId) {
// String wxAppId = userLoginInfoDto.getWxAppId(); // String wxAppId = userLoginInfoDto.getWxAppId();
//设置支付信息 //设置支付信息
PaymentRequest paymentRequest = new PaymentRequest(); PaymentRequest paymentRequest = new PaymentRequest();
paymentRequest.setOpenId(userLoginInfoDto.getOpenId()); paymentRequest.setOpenId(openId);
paymentRequest.setWxAppId(appId); paymentRequest.setWxAppId(appId);
AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, appId); AssortmentOpenPlatformWxapp wxApp = openPlatformWxappManager.findByPartnerIdAndWxappId(partnerId, appId);
String principalName = "上海非码网络科技有限公司"; String principalName = "上海非码网络科技有限公司";
...@@ -1987,6 +2000,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -1987,6 +2000,7 @@ public class OrderServiceImpl implements Orderservice {
// 扩展字段中存储 sessionKey // 扩展字段中存储 sessionKey
orderExtInfoDto.setSessionKey(createOrderVo.getSessionKey()); orderExtInfoDto.setSessionKey(createOrderVo.getSessionKey());
orderExtInfoDto.setFormId(createOrderVo.getFormId()); orderExtInfoDto.setFormId(createOrderVo.getFormId());
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
return orderExtInfoDto; return orderExtInfoDto;
} }
...@@ -2049,6 +2063,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2049,6 +2063,7 @@ public class OrderServiceImpl implements Orderservice {
, QueryOrdersResponse.DataBean.OrderBean orderBean, String trackingNo) { , QueryOrdersResponse.DataBean.OrderBean orderBean, String trackingNo) {
// orderExtInfo = orderAdapter.getOrderExtInfo(orderPayResponse, orderExtInfo); // orderExtInfo = orderAdapter.getOrderExtInfo(orderPayResponse, orderExtInfo);
orderExtInfo.setOpenid(orderPayResponse.getOpenId()); orderExtInfo.setOpenid(orderPayResponse.getOpenId());
orderExtInfo.setFmId(orderPayResponse.getFmId());
String prepayId = ""; String prepayId = "";
OrderPayResponse.PayOrderBean payOrder = orderPayResponse.getPayOrder(); OrderPayResponse.PayOrderBean payOrder = orderPayResponse.getPayOrder();
// StringUtils 依赖修改 // StringUtils 依赖修改
...@@ -2316,7 +2331,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2316,7 +2331,7 @@ public class OrderServiceImpl implements Orderservice {
//<!---创建订单公共方法执行逻辑---> //<!---创建订单公共方法执行逻辑--->
OrderPayResponse orderPayResponse = null; OrderPayResponse orderPayResponse = null;
String appId = userLoginInfoDto.getWxAppId(); String appId = userLoginInfoDto.getWxAppId();
PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto, createOrderVo.getPartnerId(),appId); PaymentRequest paymentRequest = orderBodyConvertToPaymentBody(userLoginInfoDto.getOpenId(), createOrderVo.getPartnerId(),appId);
//支付金额异常 //支付金额异常
if (totalAmount < 0) { if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR); throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
......
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