Commit c00ae2ce by 周晓航

Merge remote-tracking branch 'origin/master' into master-spock

# Conflicts:
#	order-application-service/src/test/spock/cn/freemud/service/impl/OrderAdapterServiceImplTest.groovy
parents 29e6082d 79362c00
......@@ -16,7 +16,6 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.*;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderSourceV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.RefundStatusV1;
import com.freemud.application.sdk.api.ordercenter.request.*;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
import com.freemud.application.sdk.api.ordercenter.request.create.*;
......@@ -349,6 +348,9 @@ public class OrderSdkAdapter {
Date time = requestVO.getEstimateDeliveryCompleteTime();
request.setEstimateDeliveryCompleteTime(time.getTime() + "");
}
request.setUserMobile(requestVO.getUserMobile());
request.setUserSourceType(requestVO.getUserSourceType());
request.setPhysicalGoodsFlag(requestVO.getPhysicalGoodsFlag());
return request;
}
......@@ -1244,7 +1246,7 @@ public class OrderSdkAdapter {
//20201222 新增配送类型 ->【ID1021986】
//【订单开放平台】订单详情查询接口增加配送类型字段
data.setExpressType(orderInfoReqs.getExpressType());
data.setUserMobile(orderInfoReqs.getUserMobile());
if (orderInfoReqs.getOrderExtended() != null) {
// 围餐门店英文名称
......@@ -2736,6 +2738,7 @@ public class OrderSdkAdapter {
queryRelatedOrderByCodeReq.setOrderCode(request.getOrderCode());
queryRelatedOrderByCodeReq.setThirdOrderCode(request.getThirdOrderCode());
queryRelatedOrderByCodeReq.setWithOperationHistory(request.getWithOperationHistory());
queryRelatedOrderByCodeReq.setPartnerId(request.getPartnerId());
return queryRelatedOrderByCodeReq;
}
......@@ -2743,6 +2746,7 @@ public class OrderSdkAdapter {
SdkNewOrderUpdateThirdOrderCodeReq sdkNewOrderUpdateThirdOrderCodeReq = new SdkNewOrderUpdateThirdOrderCodeReq();
sdkNewOrderUpdateThirdOrderCodeReq.setOrderCode(assortmentSdkUpdateThirdOrderCodeRequest.getOrderCode());
sdkNewOrderUpdateThirdOrderCodeReq.setThirdOrderCode(assortmentSdkUpdateThirdOrderCodeRequest.getThirdOrderCode());
sdkNewOrderUpdateThirdOrderCodeReq.setPartnerId(assortmentSdkUpdateThirdOrderCodeRequest.getPartnerId());
return sdkNewOrderUpdateThirdOrderCodeReq;
}
......@@ -3228,7 +3232,7 @@ public class OrderSdkAdapter {
orderItemCreateReq.setPhotoUrl(productRequest.getPhotoUrl());
orderItemCreateReq.setPackPrice(productRequest.getPackPrice());
// 拼单加购人信息 add by miaohui 2020.10.12 end
orderItemCreateReq.setProductSpuQuantity(product.getProductSpuQuantity());
orderItemList.add(orderItemCreateReq);
if (product.getTotalDiscountAmount() != null && product.getTotalDiscountAmount() > 0L && !isMaterial) {
//优惠信息转换
......
......@@ -13,14 +13,14 @@ package com.freemud.sdk.api.assortment.order.enums;
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum PayRefundStatus {
SUCCESS(1,"退款成功"),
FAIL(2,"退款失败"),
RUNNING(4,"退款中"),
SUCCESS(1, "退款成功"),
FAIL(2, "退款失败"),
RUNNING(4, "退款中"),
/**
* 额外状态码 用于判断逻辑,
*/
NOT_SUFFICIENT_FUNDS(8200201,"余额不足"),
COMPATIBILITY_STATUS(9999999,"退款异常");
NOT_SUFFICIENT_FUNDS(8200201, "余额不足"),
COMPATIBILITY_STATUS(9999999, "退款异常");
private Integer code;
private String desc;
......@@ -30,16 +30,26 @@ public enum PayRefundStatus {
this.desc = desc;
}
public static PayRefundStatus getByCode(Integer code) {
public static PayRefundStatus getByPayResultCode(Integer code) {
if (code == null) {
return null;
return PayRefundStatus.FAIL;
}
for (PayRefundStatus payStatus : values()) {
if (payStatus.getCode().equals(code)) {
return payStatus;
}
switch (code) {
// 退款中状态码需要单独处理
case 8200305:
return PayRefundStatus.RUNNING;
// 重复请求,按照退款中处理
case 82004005:
return PayRefundStatus.RUNNING;
// 退款成功
case 100:
return PayRefundStatus.SUCCESS;
// 已退款订单 当做退款成功处理
case 101:
return PayRefundStatus.SUCCESS;
default:
return PayRefundStatus.FAIL;
}
return null;
}
public Integer getCode() {
......
......@@ -195,6 +195,23 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
private Date estimateDeliveryCompleteTime;
/**
* 实物商品订单标记 1:实物商品订单 2:虚拟商品订单 (之前的一些卖券单(biz=6)等,都没有传递该标记,所以默认为0)
* @see cn.freemud.enums.OrderPhysicalGoodsFlagEnum
*/
private Integer physicalGoodsFlag;
/**
* 下单用户手机号(小程序用户下单时绑定的手机号,非(收货人/联系人)手机号)
*/
private String userMobile;
/**
* 下单用户来源类型: 0:存量未定义 1:开个店用户 2:自定义用户 3:未传递系统随机生成用户
* @see cn.freemud.enums.OrderUserSourceTypeEnum
*/
private Integer userSourceType = 1;
// @Data
// public static class DeliveryTypeInfo {
// /**
......
......@@ -281,4 +281,9 @@ public class CreateOrderProductRequest extends BaseConfig {
* 【订C,“POS编码”让凌顶那边去匹配商品】 https://www.tapd.cn/43862731/prong/stories/view/1143862731001039549
*/
private String linkedId;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
}
......@@ -30,4 +30,8 @@ public class OrderStatusChangeRequestDto {
* 支付状态
*/
private Integer payStatus;
/**
* 商户号
*/
private String partnerId;
}
......@@ -61,20 +61,20 @@ public class CombPayRequest {
/**
* 商家POS机编号(可以使用固定值,扫码付必传)
*/
private String station_id = "1";;
private String station_id = "1";
private String appId;
private String payCode;
private String payTimeOutTime;
private String ebCode;
private String cardCode;
private Boolean disable_service_goods_tag = false;
private String request_source ="V1";
private String ver ="10";
private String request_source = "V1";
private String ver = "10";
private String storeName;
private Long merchantDiscount;
/**
* @see com.freemud
* @see com.freemud
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private Integer applicationType;
......@@ -87,4 +87,19 @@ public class CombPayRequest {
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
private String payTypeCode;
/**
* 订单号
*/
private String orderId;
/**
* 手机号
*/
private String mobile;
/**
* 会员编号
*/
private String memberId;
}
......@@ -61,19 +61,20 @@ public class MultiPayRequest {
/**
* 商家POS机编号(可以使用固定值,扫码付必传)
*/
private String station_id = "1";;
private String station_id = "1";
;
private String appId;
private String payCode;
private String payTimeOutTime;
private String ebCode;
private Boolean disable_service_goods_tag = false;
private String request_source ="V1";
private String ver ="10";
private String request_source = "V1";
private String ver = "10";
private String storeName;
private Long merchantDiscount;
/**
* @see com.freemud
* @see com.freemud
* 下单所用小程序类型:1微信,2支付宝,3抖音")
*/
private Integer applicationType;
......@@ -89,4 +90,20 @@ public class MultiPayRequest {
* 支付类型编码 TWX:微信 TZFB:支付宝
*/
private String payTypeCode;
/**
* 订单号
*/
private String orderId;
/**
* 手机号
*/
private String mobile;
/**
* 会员编号
*/
private String memberId;
}
package com.freemud.sdk.api.assortment.order.response.order;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -33,6 +32,10 @@ public class MultiOrderRefundResponse<T> {
* 退款成功
*/
public static Integer REFUND_SUCCESS = 100;
/**
* 101已退款订单(当成功处理)
*/
public static Integer REFUND_SUCCESSED = 101;
private String endTransTradeNo;
private String fmRefundNo;
private String fmTradeNo;
......@@ -50,7 +53,7 @@ public class MultiOrderRefundResponse<T> {
private String transId;
private String ebcode;
@ApiModelProperty(value = "业务返回码 8200305 代表退款中 100是成功 其他 都是失败")
@ApiModelProperty(value = "业务返回码 8200305 代表退款中 100是成功 101已退款订单(当成功处理) 其他 都是失败")
private Integer resultCode;
@ApiModelProperty(value = "业务返回消息")
......
......@@ -339,7 +339,7 @@ public interface OrderCenterSdkService {
* @param trackingNo
* @return
*/
QueryOrderByIdResponse queryOrderByDownstream(String downstreamPosCode, String downstreamThirdOrderCode, String trackingNo);
QueryOrderByIdResponse queryOrderByDownstream(String downstreamPosCode, String downstreamThirdOrderCode, String trackingNo, String partnerId);
/**
......
......@@ -36,12 +36,6 @@ public class OrderCallBackConfig {
public static final String INVOICE_QUEUE = "invoice-report-queue";
public static final String INVOICE_ROUTE_KEY = "invoice-report-queue-routing-key";
// 腾讯有数上报 & 门店营业开店记录 发送到 ordercenter-order组的 mq中
@Deprecated
public static final String SEND_YOUSHU_REPORT_QUEUE_ROUTING_KEY = "send-youshu-report-queue-routing-key";
@Deprecated
public static final String SEND_YOUSHU_REPORT_QUEUE = "send-youshu-report-queue";
// task-center-order-consumer服务 订单状态处理中心queue
public static final String ORDER_STATUS_PROCESS_CENTER_QUEUE_ROUTING_KEY = "order_status_process_center_queue-routing-key";
......@@ -134,24 +128,9 @@ public class OrderCallBackConfig {
return BindingBuilder.bind(invoiceQueue).to(invoiceExchange).with(INVOICE_ROUTE_KEY).noargs();
}
/**
* 有数上报/ 支付门店 queue 绑定
*
* @return
*/
@Bean(name = "sendWechatReportQueue")
public Queue sendWechatReportQueue() {
return QueueBuilder.durable(SEND_YOUSHU_REPORT_QUEUE).build();
}
@Bean
Binding bindingSendWechatReportQueue(@Qualifier("sendWechatReportQueue") Queue sendWechatReportQueue, @Qualifier("topicExchange") Exchange topicExchange) {
return BindingBuilder.bind(sendWechatReportQueue).to(topicExchange).with(SEND_YOUSHU_REPORT_QUEUE_ROUTING_KEY).noargs();
}
/**
* 有数上报/ 支付门店 queue 绑定
* task-center-order-consumer服务 订单状态处理中心queue 优化原有相同queue代码
*
* @return
*/
......
......@@ -31,6 +31,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequ
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.PayType;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderPayItemResp;
......@@ -63,9 +64,6 @@ public class OrderCallBackMQService {
@Value("${saas.order.invoice.report.partnerIds}")
private String invoicePartnerIds;
@Value("${queue-grace-offline:}")
private String queueGraceOffline;
private static final String backOrdersChangeOrderStatusConsumerQueue = "program.backorders_change_order_status_consumer_queue";
private static final String backOrdersNotifyActivityExchange = "program.backorders_notify_activity_exchange";
......@@ -105,10 +103,6 @@ public class OrderCallBackMQService {
revert(body);
}
if (!Objects.equals(queueGraceOffline, "1")) {
// 有数订单数据上报 & 每日下单门店统计
sendYoushuReportMQ(body);
}
// task-center-order-consumer服务 订单状态处理中心queue 优化原有相同queue代码
this.sendOrderStatusProcessCenterMQ(body);
......@@ -137,6 +131,7 @@ public class OrderCallBackMQService {
requestDto.setOid(orderCode);
//2:未支付
requestDto.setOrderStatus(2);
requestDto.setPartnerId(body.getPartnerId());
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", orderCode, backOrdersChangeOrderStatusConsumerQueue);
MQMessage<OrderStatusChangeRequestDto> message = new MQMessage<>(header, requestDto);
......@@ -216,7 +211,7 @@ public class OrderCallBackMQService {
try {
OrderInfoReqs orderInfoReqs = JSONObject.parseObject(body.getContent(), OrderInfoReqs.class);
List<Integer> allowOrderClientList = Lists.newArrayList(OrderClientType.SAAS.getIndex(), OrderClientType.ALIPAY.getIndex());
if (orderInfoReqs != null && allowOrderClientList.contains(orderInfoReqs.getOrderClient()) &&
if (orderInfoReqs != null && allowOrderClientList.contains(orderInfoReqs.getOrderClient()) && Objects.equals(PayType.ONLINE_PAY.getCode(),orderInfoReqs.getPayType())&&
((body.getOperateType() == 0 && NewOrderStatus.PENDING_PAYMENT.getIndex().equals(orderInfoReqs.getOrderState())) ||
(body.getOperateType() == 1 && NewOrderStatus.PLACE_AN_ORDER.getIndex().equals(orderInfoReqs.getOrderState())))) {
return orderInfoReqs;
......@@ -359,6 +354,7 @@ public class OrderCallBackMQService {
requestDto.setOid(orderCode);
//2:未支付
requestDto.setOrderStatus(2);
requestDto.setPartnerId(body.getPartnerId());
try {
Header header = new Header(MQAction.INSERT.getAction(), "parkingOrderBackOrdersStatusChange", orderCode, backOrdersChangeOrderStatusConsumerQueue);
MQMessage<OrderStatusChangeRequestDto> message = new MQMessage<>(header, requestDto);
......@@ -383,30 +379,6 @@ public class OrderCallBackMQService {
}
/**
* 有数上报MQ
*
* @param body
*/
@Deprecated
private void sendYoushuReportMQ(OrderCallBackRequestVo body) {
try {
if (Objects.isNull(body) || StringUtils.isEmpty(body.getContent())) {
return;
}
ApiLog.infoMessage("send sendYoushuReportMQ start orderCode:{} ", body.getOrderCode());
// 正常变化 订单正向操作 fisherman 检查下
if (body.getOperateType() == 1 && "1".equals(body.getMsgType())) {
Header header = new Header(MQAction.UPDATE.getAction(), "call-back-service-api",
OrderCallBackConfig.SEND_YOUSHU_REPORT_QUEUE_ROUTING_KEY, OrderCallBackConfig.SEND_YOUSHU_REPORT_QUEUE);
MQMessage<OrderCallBackRequestVo> message = new MQMessage<>(header, body);
mqService.convertAndSend(OrderCallBackConfig.TOPIC_EXCHANGE_NAME, OrderCallBackConfig.SEND_YOUSHU_REPORT_QUEUE_ROUTING_KEY, message);
ApiLog.infoMessage("send sendYoushuReportMQ end orderCode:{}", body.getOrderCode());
}
} catch (Exception e) {
ApiLog.infoMessage("send sendYoushuReportMQ Error orderCode:{} e:{}", body.getOrderCode(), ExceptionUtils.getFullStackTrace(e));
}
}
/**
* 订单状态公共处理中心 queue
......
......@@ -24,4 +24,8 @@ public class OrderStatusChangeRequestDto {
* 订单状态
*/
private Integer orderStatus;
/**
* 商户号
*/
private String partnerId;
}
......@@ -821,6 +821,9 @@ public class CouponAdapter {
List<CouponCodeVerificationTransDto> transactions = this.getTransactions(orderBean, couponCodeVerificationDto);
couponCodeVerificationDto.setTransactions(transactions);
couponCodeVerificationDto.setTradeNo(orderBean.getThirdPartTradeNo());
String couponChannel = CouponTradeChannelEnum.getCouponChannel(orderBean.getOrderClient());
couponCodeVerificationDto.setTradeChannel(couponChannel);
return couponCodeVerificationDto;
}
......
......@@ -13,10 +13,11 @@ import cn.freemud.entities.dto.product.pointsmall.ProductStockRequest;
import cn.freemud.entities.dto.product.pointsmall.UpdatePointsMallStocksRequest;
import cn.freemud.entities.dto.user.UseScoreRequest;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.enums.OrderPhysicalGoodsFlagEnum;
import cn.freemud.enums.OrderUserSourceTypeEnum;
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.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.create.CreateOrderRequest;
......@@ -31,7 +32,10 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
@Component
public class PointsMallOrderAdapter {
......@@ -120,6 +124,9 @@ public class PointsMallOrderAdapter {
request.setOperator(userLoginInfoDto.getNickName());
request.setAppId(userLoginInfoDto.getWxAppId());
request.setPayChannel(channel);
request.setUserSourceType(OrderUserSourceTypeEnum.USERSOURCETYPE_ONE);
request.setUserMobile(userLoginInfoDto.getMobile());
request.setPhysicalGoodsFlag(productBean.getProductType() == 1 ? OrderPhysicalGoodsFlagEnum.PHYSICALGOODSFLAG_TWO:OrderPhysicalGoodsFlagEnum.PHYSICALGOODSFLAG_ONE);
return request;
}
......@@ -160,6 +167,7 @@ public class PointsMallOrderAdapter {
orderItemCreateReq.setExtInfo(JSONObject.toJSONString(orderProductAddInfoDto));
}
orderItemCreateReq.setProductQuantity(1);
orderItemCreateReq.setProductSpuQuantity(1);
return orderItemCreateReq;
}
......
package cn.freemud.config;
import cn.freemud.interceptor.FeignInterceptor;
import feign.RequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FeignSupportConfig {
/**
* feign请求拦截器
*
* @return
*/
@Bean
public RequestInterceptor requestInterceptor(){
return new FeignInterceptor();
}
}
......@@ -90,7 +90,7 @@ public class ExposureOrderController {
@ApiAnnotation(logMessage = "回滚订单状态改动")
@PostMapping("/backOrdersStatusChange")
public BaseResponse backOrdersStatusChange(@Validated @LogParams @RequestBody BackOrdersStatusChangeVo backOrdersStatusChangeVo) {
orderQueueService.backOrdersStatusChange(backOrdersStatusChangeVo.getOrderCode(), backOrdersStatusChangeVo.getOrderState());
orderQueueService.backOrdersStatusChange(backOrdersStatusChangeVo.getOrderCode(), backOrdersStatusChangeVo.getOrderState(),backOrdersStatusChangeVo.getPartnerId());
return ResponseUtil.success();
}
......@@ -113,4 +113,22 @@ public class ExposureOrderController {
payService.putPayQueryDelMq(putDeadLetterVo.getPartnerId(), putDeadLetterVo.getStoreId(), putDeadLetterVo.getFmId(), putDeadLetterVo.getOrderId(), putDeadLetterVo.getPayChanelType());
return ResponseUtil.success();
}
/**
* 查询支付虚拟门店配置
*/
@ApiAnnotation(logMessage = "查询支付虚拟门店配置")
@PostMapping("/getVirtualStore")
public BaseResponse<String> getVirtualStore(@Validated @LogParams @RequestBody GetVirtualStoreRequest req) {
return ResponseUtil.success(exposureOrderService.getVirtualStore(req.getAppId(), req.getType()));
}
/**
* 查询支付配置paycode
*/
@ApiAnnotation(logMessage = "查询支付配置paycode")
@PostMapping("/getPayCode")
public BaseResponse<String> getPayCode(@Validated @LogParams @RequestBody GetPayCodeVo req) {
return ResponseUtil.success(exposureOrderService.getPayCode(req));
}
}
......@@ -35,4 +35,6 @@ public class ConfirmOrderDto {
*/
private Integer orderSettlementAmount;
private String partnerId;
}
......@@ -132,6 +132,11 @@ public class OrderPrintDto {
private List<ProductsBean> materialProducts;
// 商品单位
private String unit;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
}
}
......@@ -44,4 +44,20 @@ public class FacePayRequestDto {
private List<PayProductDto> products;
/**
* 订单号
*/
private String orderId;
/**
* 手机号
*/
private String mobile;
/**
* 会员编号
*/
private String memberId;
}
......@@ -9,5 +9,5 @@ public class BackOrdersStatusChangeVo {
private Integer orderState;
private String partnerId;
}
package cn.freemud.entities.vo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class GetPayCodeVo {
@NotBlank(message = "商户号不能为空")
private String partnerId;
@NotBlank(message = "门店id不能为空")
private String storeId;
@NotBlank(message = "小程序id不能为空")
private String appId;
private String channel;
}
package cn.freemud.entities.vo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: GetMallPayConfigVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: ping.wu
* @date: 22-5-24 下午5:51
* @Copyright: 2022 www.freemud.cn Inc. All rights reserved.
*/
@Data
public class GetVirtualStoreRequest {
@NotBlank(message = "商户号不能为空")
private String partnerId;
@NotBlank(message = "小程序id不能为空")
private String appId;
/**
* @see cn.freemud.enums.AggregationTypeEnum
*/
@NotBlank
private String type;
}
......@@ -86,4 +86,6 @@ public class PaysuccessNoticeMessage {
* 储值卡流水明细
*/
private List<SvcPayItem> svcPayItems;
private String partnerId;
}
......@@ -14,7 +14,6 @@ package cn.freemud.entities.vo;
import cn.freemud.entities.dto.ProductGroupDto;
import com.freemud.application.sdk.api.ordercenter.entities.v1.ProductExtInfoV1;
import com.freemud.sdk.api.assortment.order.request.order.ProductBindingCouponType;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -205,6 +204,12 @@ public class ProductVo {
private Long score;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
@Data
@NoArgsConstructor
public static class ProductLabel {
......
......@@ -14,7 +14,7 @@ public enum AggregationTypeEnum {
*/
TYPE_6("6","会员卡支付门店"),
/**
* 微商城支付门店
* 微商城支付门店(FM商城)
*/
TYPE_7("7","微商城支付门店"),
/**
......
package cn.freemud.enums;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/9/5 10:35
* @description :
*/
public interface OrderPhysicalGoodsFlagEnum {
/**
* 0:存量未定义
*/
public static Integer PHYSICALGOODSFLAG_ZERO = 0;
/**
* 1:实物商品订单
*/
public static Integer PHYSICALGOODSFLAG_ONE = 1;
/**
* 2:虚拟商品订单
*/
public static Integer PHYSICALGOODSFLAG_TWO = 2;
}
package cn.freemud.enums;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/9/5 10:31
* @description :
*/
public interface OrderUserSourceTypeEnum {
/**
* 0:存量未定义
*/
public static Integer USERSOURCETYPE_ZERO = 0;
/**
* 1:开个店用户
*/
public static Integer USERSOURCETYPE_ONE = 1;
/**
* 2:自定义用户
*/
public static Integer USERSOURCETYPE_TWO = 2;
/**
* 3:未传递系统随机生成用户
*/
public static Integer USERSOURCETYPE_THREE = 3;
}
package cn.freemud.interceptor;
import cn.freemud.utils.AppLogUtil;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Configuration
public class FeignInterceptor implements RequestInterceptor {
@Value("${forward.feign.headers:x-forwarded-for, x-real-ip}")
private Set<String> needHeaders;
@Override
public void apply(RequestTemplate requestTemplate) {
HttpServletRequest httpServletRequest = this.getHttpServletRequest();
if (Objects.nonNull(httpServletRequest)) {
Map<String, String> headers = getHeaders(httpServletRequest);
for (String headerName : headers.keySet()) {
requestTemplate.header(headerName, getHeaders(getHttpServletRequest()).get(headerName));
}
}
}
private HttpServletRequest getHttpServletRequest() {
try {
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (Objects.isNull(requestAttributes)) {
return null;
}
return requestAttributes.getRequest();
} catch (Exception e) {
AppLogUtil.errorLog("FeignInterceptor error {}", "", "", e);
return null;
}
}
private Map<String, String> getHeaders(HttpServletRequest request) {
Map<String, String> map = new LinkedHashMap<>();
Enumeration<String> enumeration = request.getHeaderNames();
while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
if (needThisHeader(key)) {
String value = request.getHeader(key);
map.put(key, value);
}
}
// AppLogUtil.printLog("clientIp for feign client info:" + JSON.toJSONString(map), "", "");
return map;
}
private boolean needThisHeader(String headerName) {
// TODO:过滤哪些header需要传递,千万不能把所有的header传下去
return needHeaders.contains(headerName);
}
}
......@@ -24,7 +24,7 @@ public class OrderManager {
QueryOrderByIdResponse queryOrderByIdResponse = new QueryOrderByIdResponse();
String trackingNo = LogThreadLocal.getTrackingNo();
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(request.getOrderClient(), request.getOrderId(),
request.getThirdOrderCode(), request.getWithOperationHistory(), trackingNo);
request.getThirdOrderCode(), request.getWithOperationHistory(), trackingNo,request.getPartnerId());
if(orderInfo != null){
queryOrderByIdResponse.setErrcode(Integer.parseInt(orderInfo.getCode()));
queryOrderByIdResponse.setErrmsg(orderInfo.getMessage());
......
......@@ -78,6 +78,7 @@ public class CallerService {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
baseQueryOrderRequest.setPartnerId(vo.getPartnerId());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
OrderBeanV1 orderBean = queryOrderByIdResponse.getData();
if (Objects.isNull(orderBean)) {
......
......@@ -3,6 +3,8 @@ package cn.freemud.service;
import cn.freemud.entities.vo.GetMallPayConfigVo;
import cn.freemud.entities.vo.GetPayConfigVo;
import cn.freemud.entities.vo.GetPaySuccessDataRequest;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.PayConfigVo;
import cn.freemud.entities.vo.order.PaySuccessDataVo;
import cn.freemud.enums.AggregationTypeEnum;
......@@ -15,6 +17,7 @@ import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIa
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
/**
* @author Clover.z
......@@ -68,8 +71,26 @@ public class ExposureOrderService {
if (wxAppStore == null) {
wxAppStore = new AssortmentOpenPlatformIappWxappStore();
}
vo.setPayCode(wxAppStore.getClientCode());
vo.setPayCode(StringUtils.isEmpty(wxAppStore.getClientCode()) ? "9" : wxAppStore.getClientCode());
vo.setStoreId(wxAppStore.getStoreId());
return vo;
}
/**
* 查询支付虚拟门店配置
* @param appId 小程序应用appId
* @param type 虚拟门店类型 {@link AggregationTypeEnum}
* @return 虚拟门店号
*/
public String getVirtualStore(String appId, String type) {
AssortmentOpenPlatformIappWxappStore wxAppStore = payService.getIappWxappStoreInfo(appId, type);
return wxAppStore == null ? "" : wxAppStore.getStoreId();
}
/**
* 查询支付配置paycode
*/
public String getPayCode(GetPayCodeVo req) {
return payService.getPayCode(req.getAppId(), req.getStoreId(), req.getChannel());
}
}
......@@ -294,7 +294,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
AfterSalesType.SYSTEM_CANCEL, "活动库存不足", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
orderQueueService.backOrdersStatusChange(orderBean.getOid(),orderBean.getStatus());
orderQueueService.backOrdersStatusChange(orderBean);
return BaseOrderResponse.getErrorBaseOrderResponse(activityResponse.getStatusCode(), "活动库存不足");
}
}
......@@ -309,7 +309,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
AfterSalesType.SYSTEM_CANCEL, "积分不足", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
orderQueueService.backOrdersStatusChange(orderBean.getOid(),orderBean.getStatus());
orderQueueService.backOrdersStatusChange(orderBean);
return BaseOrderResponse.getErrorBaseOrderResponse(userScoreResponse.getCode(), "积分不足");
}
}
......@@ -324,7 +324,7 @@ public class OrderBusinessServiceImpl implements OrderBusinessService {
CancelOrderRequest cancelOrderRequest = orderSdkAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(), AfterSalesType.SYSTEM_CANCEL, "锁定券码失败", "", null);
orderCancel(cancelOrderRequest);
//失败异步冲正库存,取消订单
orderQueueService.backOrdersStatusChange(orderBean.getOid(),orderBean.getStatus());
orderQueueService.backOrdersStatusChange(orderBean);
return BaseOrderResponse.getErrorBaseOrderResponse(couponLockResponseBaseResponse.getCode(), couponLockResponseBaseResponse.getMessage());
}
}
......
......@@ -7,16 +7,16 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.*;
import cn.freemud.entities.dto.pos.PosBaseRequestDto;
import cn.freemud.entities.vo.order.EditLogisticsReq;
import cn.freemud.entities.vo.delivery.DeliveryAmountVo;
import cn.freemud.entities.vo.order.DirectDeliveryReq;
import cn.freemud.entities.vo.order.EditLogisticsReq;
import cn.freemud.entities.vo.order.LogisticsList;
import cn.freemud.entities.vo.order.OrderPack;
import cn.freemud.enums.*;
import cn.freemud.enums.DeliveryStatus;
import cn.freemud.enums.MessageEventTypeEnum;
import cn.freemud.enums.MessageSceneEnum;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.service.adapter.OrderManagerAdapter;
import cn.freemud.service.ThirdDeliveryService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
......@@ -39,9 +39,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderType;
import com.freemud.application.sdk.api.ordercenter.request.OrderCollectReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
......@@ -181,7 +179,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
}
sendPosMessage(partnerId, storeCode, request.getOrderId(), sendPosDeliveryStatus, request.getRemark());
//推送异常到生态
sendException(request.getOrderId(), request.getExceptionDesc(), request.getUpdateTime(), DeliveryStatus.getDeliveryStatusByCode(deliveryStatus).getDesc());
sendException(request.getOrderId(), request.getExceptionDesc(), request.getUpdateTime(), DeliveryStatus.getDeliveryStatusByCode(deliveryStatus).getDesc(),partnerId);
// 取消外卖中台配送单 订单异常
// 如果 "配送单异常并且顾客更改配送地址" 不取消配送单
// if (!isDeliveryAbnormalAndCustomerChangedAddress(request)) {
......@@ -319,7 +317,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
@Override
public BaseResponse mallCallbackUrl(MallCallbackRequestDto request) {
QueryByCodeResponse responseDto = orderSdkService.getOrderInfo(null, request.getTid(), null, null, null);
QueryByCodeResponse responseDto = orderSdkService.getOrderInfo(null, request.getTid(), null, null, null,null);
if (responseDto == null || !Objects.equals(SUCCESS_RESPONSE_CODE.toString(), responseDto.getCode())|| responseDto.getResult().getOrderCode() == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -394,7 +392,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
// pos获取回调状态
sendPosMessage(request.getPartnerId(), request.getStoreId(), request.getOrderId(), 71, request.getErrorDesc());
//生态回调
sendException(request.getOrderId(), request.getErrorDesc(), request.getErrorCreateTime(), deliveryEarlyWarningMsg);
sendException(request.getOrderId(), request.getErrorDesc(), request.getErrorCreateTime(), deliveryEarlyWarningMsg,request.getPartnerId());
return ResponseUtil.success();
}
......@@ -489,6 +487,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
baseQueryOrderRequest.setPartnerId(partnerId);
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!ResponseConstant.SUCCESS_RESPONSE_CODE.equals(response.getErrcode())) {
AppLogUtil.infoLog("麦咖啡订阅消息推送失败,查询订单信息失败:{} {}" ,null, JSON.toJSONString(response));
......@@ -544,6 +543,7 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
try {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setPartnerId(partnerId);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
OrderBeanV1 orderBean = response.getData();
......@@ -607,10 +607,11 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
/**
* 通知生态发送调用消息
*/
public void sendException(String orderId, String unusualReason, String unusualTime, String desc) {
public void sendException(String orderId, String unusualReason, String unusualTime, String desc, String partnerId) {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
baseQueryOrderRequest.setPartnerId(partnerId);
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
OrderBeanV1 orderBean = response.getData();
SubscribeMessageRequest request = new SubscribeMessageRequest();
......
......@@ -112,14 +112,14 @@ public class AppOrderServiceImpl implements AppOrderService {
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
// 下单前检查优惠券是否可用
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())){
if (StringUtils.isNotBlank(createOrderVo.getCouponCode())) {
InvalidCouponsRequestDto requestDto = new InvalidCouponsRequestDto();
List<String> couponList = new ArrayList<>();
couponList.add(createOrderVo.getCouponCode());
requestDto.setCouponCodes(couponList);
requestDto.setPartnerId(Integer.valueOf(createOrderVo.getPartnerId()));
InvalidCouponsResponseDto invalidCouponsResponseDto = couponOnlineClient.invalidCoupons(requestDto);
if (invalidCouponsResponseDto.getStatusCode() != 100 || invalidCouponsResponseDto.getData() == null || (invalidCouponsResponseDto.getData() != null && CollectionUtils.isNotEmpty(invalidCouponsResponseDto.getData().getInvalidCoupons()))){
if (invalidCouponsResponseDto.getStatusCode() != 100 || invalidCouponsResponseDto.getData() == null || (invalidCouponsResponseDto.getData() != null && CollectionUtils.isNotEmpty(invalidCouponsResponseDto.getData().getInvalidCoupons()))) {
return ResponseUtil.error(ResponseResult.COUPON_INVALID.getCode(), ResponseResult.COUPON_INVALID.getMessage());
}
}
......@@ -142,7 +142,7 @@ public class AppOrderServiceImpl implements AppOrderService {
@Override
public BaseResponse createPrepay(CreatePrepayVo createPrepayVo) {
CreateOrderOperateDto createOrderOperateDto = this.getCreateOrderOperateDto(createPrepayVo.getOrderCode());
CreateOrderOperateDto createOrderOperateDto = this.getCreateOrderOperateDto(createPrepayVo.getOrderCode(), createPrepayVo.getPartnerId());
OrderBeanV1 productOrderBean = createOrderOperateDto.getProductOrderBean();
this.checkOrderBefore(createPrepayVo, productOrderBean);
// 关闭历史预支付订单
......@@ -239,8 +239,6 @@ public class AppOrderServiceImpl implements AppOrderService {
// CreateOrderResponseVo responseVo = orderAdapter.convent2CreateFatherSonOrderNoPayResponseVo(orderBean);
// return ResponseUtil.success(responseVo);
// }
@Override
public String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, OrderBeanV1> orderBeans) {
String paySuccessCallbackResult = orderservice.paySuccessCallback(message, confirmOrderDto, orderBeans);
......@@ -280,9 +278,10 @@ public class AppOrderServiceImpl implements AppOrderService {
return null;
}
private CreateOrderOperateDto getCreateOrderOperateDto(String orderId) {
private CreateOrderOperateDto getCreateOrderOperateDto(String orderId, String partnerId) {
QueryRelatedOrderByCodeRequest baseQueryOrderRequest = new QueryRelatedOrderByCodeRequest();
baseQueryOrderRequest.setOrderCode(orderId);
baseQueryOrderRequest.setPartnerId(partnerId);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryRelatedOrderByCodeResp queryOrderByIdResponse = orderCenterSdkService.queryRelatedOrderByCode(baseQueryOrderRequest);
if (queryOrderByIdResponse == null || CollectionUtils.isEmpty(queryOrderByIdResponse.getOrderBeanList())) {
......
......@@ -397,6 +397,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
//查询订单信息
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setPartnerId(createReserveOrderVo.getPartnerId());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(queryOrderByIdResponse.getErrcode()) || queryOrderByIdResponse.getData() == null) {
......@@ -508,6 +509,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
//拉取订单详细信息
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
//判断订单中是否存在未称重商品
......@@ -606,6 +608,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
message.setOpenid(assortmentCustomerInfoVo.getOpenId());
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
message.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
orderAdapterService.paySuccessCallback(message);
}
}else{
......@@ -692,6 +695,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
//查询订单信息
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(orderId);
baseQueryOrderRequest.setPartnerId(assortmentCustomerInfoVo.getPartnerId());
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
queryTableStatusReponseVo = orderAdapter.conventTableStatusInfoByOrderInfo(queryOrderByIdResponse);
......
......@@ -58,7 +58,7 @@ public class EvaluationServiceImpl implements EvaluationService {
public BaseResponse userOrderEvaluationNew(AddUserOrderEvaluationNewRequestVo request) {
OrderEvaluationStatus orderEvaluationStatus = new OrderEvaluationStatus(EvaluationStatus.SUCCESS.getCode());
try {
QueryByCodeResponse orderDetailResponse = orderSdkService.getOrderInfo("", request.getOrderId(), "", null, LogThreadLocal.getTrackingNo());
QueryByCodeResponse orderDetailResponse = orderSdkService.getOrderInfo("", request.getOrderId(), "", null, LogThreadLocal.getTrackingNo(),request.getPartnerId());
if (orderDetailResponse == null || !ResponseResult.SUCCESS.getCode().equals(orderDetailResponse.getCode() + "") || orderDetailResponse.getResult() == null) {
return ResponseUtil.success(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -187,7 +187,7 @@ public class EvaluationServiceImpl implements EvaluationService {
return ResponseUtil.success(new OrderEvaluationStatus(2));
}
QueryByCodeResponse orderDetailResponse = orderSdkService.getOrderInfo("", request.getOrderId(), "", null, LogThreadLocal.getTrackingNo());
QueryByCodeResponse orderDetailResponse = orderSdkService.getOrderInfo("", request.getOrderId(), "", null, LogThreadLocal.getTrackingNo(),request.getPartnerId());
if (orderDetailResponse == null || !ResponseResult.SUCCESS.getCode().equals(orderDetailResponse.getCode() + "")
|| orderDetailResponse.getResult() == null || StringUtils.isEmpty(orderDetailResponse.getResult().getOrderCode())) {
return ResponseUtil.success(ResponseResult.ORDER_NOT_EXIST);
......
......@@ -45,13 +45,17 @@ public class OrderQueueService {
public void backOrdersNotifyActivity(OrderBeanV1 orderBean) {
String oid = orderBean.getOid();
Integer statusV1 = orderBean.getStatus();
this.backOrdersStatusChange(oid, statusV1);
this.backOrdersStatusChange(oid, statusV1, orderBean.getCompanyId());
}
public void backOrdersStatusChange(OrderBeanV1 orderBean) {
this.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(),orderBean.getPayStatus(), orderBean.getCompanyId());
}
/**
* 失败订单冲正 mq
*/
public void backOrdersStatusChange(String oid, Integer orderStatus, Integer payStatus) {
public void backOrdersStatusChange(String oid, Integer orderStatus, Integer payStatus, String partnerId) {
if (StringUtils.isEmpty(oid)) {
return;
}
......@@ -60,6 +64,7 @@ public class OrderQueueService {
requestDto.setOid(oid);
requestDto.setPayStatus(payStatus);
requestDto.setOrderStatus(orderStatus);
requestDto.setPartnerId(partnerId);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", oid, backOrdersChangeOrderStatusConsumerQueue);
......@@ -71,7 +76,7 @@ public class OrderQueueService {
}
public void backOrdersStatusChange(String oid, Integer orderStatusV1) {
public void backOrdersStatusChange(String oid, Integer orderStatusV1, String partnerId) {
if (StringUtils.isEmpty(oid)) {
return;
}
......@@ -79,6 +84,7 @@ public class OrderQueueService {
OrderStatusChangeRequestDto requestDto = new OrderStatusChangeRequestDto();
requestDto.setOid(oid);
requestDto.setOrderStatus(orderStatusV1);
requestDto.setPartnerId(partnerId);
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", oid, backOrdersChangeOrderStatusConsumerQueue);
......
......@@ -254,6 +254,7 @@ public class PayServiceImpl {
message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setSvcPayItems(orderPayResponse.getSvcPayItems());
message.setPartnerId(createPrepayRequestDto.getPartnerId());
orderAdapterService.paySuccessCallback(message);
return createOrderResponse;
}
......@@ -515,6 +516,9 @@ public class PayServiceImpl {
request.setOperatorId("2");
request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
request.setOrderId(orderBean.getOid());
request.setMobile(orderBean.getPhone());
request.setMemberId(orderBean.getUserId());
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> responseBase = paymentNewClient.codePay(request);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData() == null) {
// 需要把2种特殊情况抛给用户
......@@ -688,15 +692,15 @@ public class PayServiceImpl {
, String channel
, String storeId) {
String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
OrderPayResponse orderPayResponse = new OrderPayResponse();
if (StringUtils.isBlank(ebCode)) {
if (StringUtils.isBlank(clientCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, clientCode, channel, totalAmount);
CombPayResponse combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
......@@ -797,6 +801,9 @@ public class PayServiceImpl {
request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue() - orderBean.getAmount());
request.setApplicationType(orderAdapter.getPayApplicationType(orderBean.getOrderClient()));
request.setOrderId(orderBean.getOid());
request.setMobile(orderBean.getPhone());
request.setMemberId(orderBean.getUserId());
SVCCardAmountRequestDto svcRequest = new SVCCardAmountRequestDto();
svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode));
......@@ -1062,7 +1069,7 @@ public class PayServiceImpl {
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp cancelOrderResponse = orderSdkService.cancelOrder(request, cancelOrderRequest.getTrackingNo());
//如果编辑订单支付信息失败,冲正
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), PayStatusEnum.NOT_PAY.getCode());
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), PayStatusEnum.NOT_PAY.getCode(), orderBean.getCompanyId());
return ResponseUtil.error(response.getCode(), response.getMessage());
}
return null;
......@@ -1119,7 +1126,7 @@ public class PayServiceImpl {
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp cancelOrderResponse = orderSdkService.cancelOrder(request, cancelOrderRequest.getTrackingNo());
// TODO: 2019/9/10 hubowen mq推送变更
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), PayStatusEnum.NOT_PAY.getCode());
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus(), PayStatusEnum.NOT_PAY.getCode(), orderBean.getCompanyId());
}
//svc 卡支付失败
if (CollectionUtils.isNotEmpty(cardCodes)) {
......@@ -1143,7 +1150,7 @@ public class PayServiceImpl {
if (wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getClientCode())) {
return wxAppStore.getClientCode();
}
return "";
return "9";
}
/**
......@@ -1157,7 +1164,8 @@ public class PayServiceImpl {
if (wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getClientCode())) {
return wxAppStore.getClientCode();
}
return "";
//配合预支付接口迁移非码付,查不到配置返回 9
return "9";
}
public String getPayCodeByCondition(String wxAppid, String storeId, String channel) {
......@@ -1408,7 +1416,7 @@ public class PayServiceImpl {
refundRequest.setTotalAmount(refundRequest.getRefundAmount());
}
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
// AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId());
......@@ -1424,7 +1432,7 @@ public class PayServiceImpl {
request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore);
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount());
if (!Objects.equals(checkParam.getCode(), "100")) {
return checkParam;
} else {
......@@ -1477,7 +1485,7 @@ public class PayServiceImpl {
}
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) {
public com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount) {
if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) {
......@@ -1485,7 +1493,7 @@ public class PayServiceImpl {
} else if (amount == null) {
return ResponseUtils.error("501", "金额不能为空");
} else {
return wxAppStore == null ? ResponseUtils.error("500", "支付信息没有配置") : ResponseUtils.success();
return ResponseUtils.success();
}
}
......@@ -1564,15 +1572,15 @@ public class PayServiceImpl {
// 统一走多卡支付Ka2.0.76-0427-0504
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
String storeId = orderBean.getShopId();
String ebCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
String clientCode = this.getPayCodeByChanel(paymentRequest.getWxAppId(), channel, storeId);
OrderPayResponse orderPayResponse = new OrderPayResponse();
if (StringUtils.isBlank(ebCode)) {
if (StringUtils.isBlank(clientCode)) {
orderPayResponse.setMsg("请先联系相关人员配置商户对应的支付渠道");
return orderPayResponse;
}
MultiPayRequest combPayRequest = orderAdapter.convent2MultiPayOrderRequest(cardNos, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
MultiPayRequest combPayRequest = orderAdapter.convent2MultiPayOrderRequest(cardNos, orderBean, paymentRequest, partnerPayOvertime, clientCode, channel, totalAmount);
MultiPayResponse multiPayResponse = comPayClient.multiPay(combPayRequest, combPayRequest.getPartner_id());
if (multiPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(multiPayResponse.getCode())) {
orderPayResponse.setMsg(multiPayResponse != null ? "支付:" + multiPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
......@@ -1703,4 +1711,16 @@ public class PayServiceImpl {
return payTypeCode;
}
public String getPayCode(String wxAppid, String storeId, String channel) {
PayChannelType byIndex = PayChannelType.getByIndex(Byte.parseByte(channel));
if (byIndex.getEbcode() == null) return "";
AssortmentOpenPlatformIappWxappStore wxAppStore = assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(wxAppid
, storeId
, byIndex.getEbcode());
if (wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getPayCode())) {
return wxAppStore.getPayCode();
}
return "9";
}
}
......@@ -195,7 +195,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
//线上现金支付,创建预支付订单,唤起支付
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = null;
if (!Objects.equals(ExchangeTypeEnum.TYPE_1.getCode(), exchangeType) && cashPrice != null && cashPrice > 0) {
Long payClientCode = Long.parseLong(wxAppStore.getClientCode());
Long payClientCode = StringUtils.isEmpty(wxAppStore.getClientCode())? 9L : Long.parseLong(wxAppStore.getClientCode());
UnifiedOrderRequestDto requestDto = pointsMallOrderAdapter.convert2UnifiedOrderRequestDto(result, openId, cashPrice,
payClientCode, reverseNotifyiDcUrl, getPartnerPayOvertime(partnerId));
response = payService.unifiedOrder(requestDto);
......@@ -414,7 +414,7 @@ public class PointsMallOrderServiceImpl implements PointsMallOrderService {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING);
}
String orderCode = queryOrderVo.getOid();
QueryByCodeResponse queryByCodeResponse = orderSdkService.getOrderInfo("", orderCode, "", null, LogThreadLocal.getTrackingNo());
QueryByCodeResponse queryByCodeResponse = orderSdkService.getOrderInfo("", orderCode, "", null, LogThreadLocal.getTrackingNo(),userLoginInfoDto.getPartnerId());
if (null == queryByCodeResponse || null == queryByCodeResponse.getResult()) {
return ResponseUtil.success();
......
......@@ -209,7 +209,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
String skuId = createOrderVo.getProducts().get(0).getSkuId();
//10-抖音卖券门店
AssortmentOpenPlatformIappWxappStore wxAppStore = payService.getIappWxappStoreInfo(wxAppId,AggregationTypeEnum.TYPE_10.getCode());
if ((wxAppStore == null || wxAppStore.getClientCode() == null)) {
if ((wxAppStore == null)) {
return ResponseUtil.error(ResponseCodeConstant.RESPONSE_ERROR_STR, "支付门店未配置");
}
String storeId = wxAppStore.getStoreId();
......@@ -498,7 +498,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
}else if(wxAppStore == null){
wxAppStore = assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(userLoginInfoDto.getWxAppId(),storeId);
}
if ((wxAppStore == null || wxAppStore.getClientCode() == null)) {
if ((wxAppStore == null)) {
return ResponseUtil.error(ResponseCodeConstant.RESPONSE_ERROR_STR, "支付门店未配置");
}
createOrderRequest.setStoreId(storeId);
......@@ -509,7 +509,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
createOrderResponseVo.setOid(orderCode);
//线上现金支付,创建预支付订单,唤起支付
com.freemud.application.sdk.api.base.BaseResponse<UnifiedPayResponseDto> response = null;
Long payClientCode = Long.parseLong(wxAppStore.getClientCode());
Long payClientCode = StringUtils.isEmpty(wxAppStore.getClientCode())? 9L : Long.parseLong(wxAppStore.getClientCode());
//实际支付金额
Long cashPrice = createOrderRequest.getSettlementAmount();
UnifiedOrderRequestDto requestDto = checkOrder.convert2UnifiedOrderRequestDto(result, openId, cashPrice, payClientCode, reverseNotifyiDcUrl, getPartnerPayOvertime(partnerId));
......@@ -619,17 +619,6 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_VAILD_ERROR);
}
/*GetProductInfoRequest request = new GetProductInfoRequest();
request.setChannel(menuType);
request.setPartnerId(partnerId);
request.setProductInfoType(ProductInfoType.ALL.getCode());
request.setShopId(storeId);
request.setProductIds(productIds);
//获取商品(里面的活动)
com.freemud.application.sdk.api.base.BaseResponse<GetProductInfosResponse> productInfosByIds = menuService.getProductInfosByIds(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(productInfosByIds.getCode()) || productInfosByIds.getData() == null || CollectionUtils.isEmpty(productInfosByIds.getData().getProducts())) {
return ResponseUtil.error(ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getCode(), ResponseResultEnum.GET_PRODUCT_INFOS_ERROR.getMessage());
}*/
//查询商品信息sdk改feign
GetProductInfoDto request = new GetProductInfoDto();
request.setPartnerId(partnerId);
......@@ -893,6 +882,7 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
orderItemCreateReq.setProductCode(productBean.getProductCode());
orderItemCreateReq.setThirdProductId(productBean.getCustomerCode());
orderItemCreateReq.setProductQuantity(1);
orderItemCreateReq.setProductSpuQuantity(1);
orderItemCreateReq.setOriginalProductType(productBean.getType());
OrderProductAddInfoDto orderProductAddInfoDto = new OrderProductAddInfoDto();
......@@ -946,7 +936,8 @@ public class SellCouponOrderServiceImpl implements OrderFactoryService {
request.setAppId(userLoginInfoDto.getWxAppId());
request.setUserMobile(userLoginInfoDto.getMobile());
//2:虚拟商品订单
request.setPhysicalGoodsFlag(2);
request.setPhysicalGoodsFlag(OrderPhysicalGoodsFlagEnum.PHYSICALGOODSFLAG_TWO);
request.setUserSourceType(OrderUserSourceTypeEnum.USERSOURCETYPE_ONE);
return request;
}
......
......@@ -730,6 +730,7 @@ public abstract class UniversalOrderService {
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setPartnerId(createPrepayRequestDto.getPartnerId());
orderAdapterService.paySuccessCallback(message);
return ResponseUtil.success(createOrderResponse);
}
......@@ -778,7 +779,7 @@ public abstract class UniversalOrderService {
AfterSalesType.SYSTEM_CANCEL, "编辑订单支付信息失败", trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
//如果编辑订单支付信息失败,冲正
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
orderQueueService.backOrdersStatusChange(orderBean);
return ResponseUtil.error(baseOrderResponse.getErrcode().toString(), baseOrderResponse.getErrmsg());
}
......@@ -794,7 +795,7 @@ public abstract class UniversalOrderService {
AfterSalesType.SYSTEM_CANCEL, StringUtils.join(new String[]{"获取预支付失败", msg}, '-'), trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更
orderQueueService.backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
orderQueueService.backOrdersStatusChange(orderBean);
}
//svc 卡支付失败
if (StringUtils.isNotBlank(cardCode)) {
......@@ -996,19 +997,19 @@ public abstract class UniversalOrderService {
* @param storeId
* @return
*/
private String getPayCodeByChanel(String wxAppid, String channel, String storeId) {
if (StringUtils.isBlank(channel)) return "";
PayChannelType byIndex = PayChannelType.getByIndex(Byte.parseByte(channel));
if (byIndex.getEbcode() == null) return "";
AssortmentOpenPlatformIappWxappStore wxAppStore = assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(wxAppid
, storeId
, byIndex.getEbcode());
if (wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getClientCode())) {
return wxAppStore.getClientCode();
}
return "";
}
// private String getPayCodeByChanel(String wxAppid, String channel, String storeId) {
// if (StringUtils.isBlank(channel)) return "";
//
// PayChannelType byIndex = PayChannelType.getByIndex(Byte.parseByte(channel));
// if (byIndex.getEbcode() == null) return "";
// AssortmentOpenPlatformIappWxappStore wxAppStore = assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(wxAppid
// , storeId
// , byIndex.getEbcode());
// if (wxAppStore != null && StringUtils.isNotBlank(wxAppStore.getClientCode())) {
// return wxAppStore.getClientCode();
// }
// return "9";
// }
/**
* 获取混合支付是否开启
......
......@@ -294,7 +294,7 @@ public class SaasMallOrderService extends UniversalOrderService {
private String paySuccessCallback(PaysuccessNoticeMessage message) {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
Map<String, OrderBeanV1> orderBeans = getOrderBeanByOrderId(confirmOrderDto.getOrderId());
Map<String, OrderBeanV1> orderBeans = getOrderBeanByOrderId(confirmOrderDto.getOrderId(),confirmOrderDto.getPartnerId());
return this.paySuccessCallback(message, confirmOrderDto, orderBeans);
}
......@@ -303,10 +303,10 @@ public class SaasMallOrderService extends UniversalOrderService {
return mallOrderService.paySuccessCallback(message, confirmOrderDto, orderBeans);
}
private Map<String, OrderBeanV1> getOrderBeanByOrderId(String orderId) {
private Map<String, OrderBeanV1> getOrderBeanByOrderId(String orderId, String partnerId) {
// 订单查询:若结果集只有一个orderBean,则为普通订单,否则为会员卡订单(父子订单)
Map<String, OrderBeanV1> result = new HashMap<>();
QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(orderId);
QueryRelationOrderByIdResponseDto queryOrderByIdResponseDto = getQueryRelationOrderByIdResponseDto(orderId,partnerId);
if (CollectionUtils.isEmpty(queryOrderByIdResponseDto.getData())) {
return result;
}
......@@ -323,10 +323,11 @@ public class SaasMallOrderService extends UniversalOrderService {
return result;
}
private QueryRelationOrderByIdResponseDto getQueryRelationOrderByIdResponseDto(String oid) {
private QueryRelationOrderByIdResponseDto getQueryRelationOrderByIdResponseDto(String oid, String partnerId) {
QueryRelatedOrderByCodeRequest baseQueryOrderRequest = new QueryRelatedOrderByCodeRequest();
baseQueryOrderRequest.setOrderCode(oid);
baseQueryOrderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
baseQueryOrderRequest.setPartnerId(partnerId);
QueryRelatedOrderByCodeResp queryOrderByIdResponse;
queryOrderByIdResponse = orderCenterSdkService.queryRelatedOrderByCode(baseQueryOrderRequest);
String string = JSONObject.toJSONString(queryOrderByIdResponse);
......
package cn.freemud.service.impl;
import cn.freemud.adapter.DeliveryAdapter;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
......@@ -16,9 +15,9 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import org.apache.commons.lang.ObjectUtils;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -84,22 +83,22 @@ public class EncircleOrderServiceImplTest {
@Test
public void testd() throws Exception {
Map<String, OrderBeanV1> orderBeans = orderService.getOrderBeanByOrderId("18550453673517366500002");
Map<String, OrderBeanV1> orderBeans = orderService.getOrderBeanByOrderId("18550453673517366500002", null);
OrderBeanV1 orderBean = orderBeans.get(OrderBeanType.SAASORDER.getCode());
//获取门店信息
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), "");
if (storeInfo == null || ObjectUtils.notEqual(cn.freemud.management.enums.ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode().toString()) || storeInfo.getBizVO() == null) {
//return sendPaySuccessNoticeMessage();
}
CreateDeliveryVo createDeliveryVo = deliveryAdapter.buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl,"");
CreateDeliveryVo createDeliveryVo = deliveryAdapter.buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl, "");
//创建配送单
CreateDeliveryOrderResponseDto deliveryResponse = deliveryFeiginClient.deliveryOrderAdd(createDeliveryVo);
//创建配送单失败,更新订单为异常单
if (deliveryResponse == null || 100 != deliveryResponse.getCode() || deliveryResponse.getData() == null) {
String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : "";
String operator = "系统" ;
String operator = "系统";
//updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator);
// return sendPaySuccessNoticeMessage();
// return sendPaySuccessNoticeMessage();
}
}
......@@ -245,7 +244,7 @@ try {
}
@Test
public void testQueryTableNumberStatus()throws Exception{
public void testQueryTableNumberStatus() throws Exception {
EmptyTableNumberVo emptyTableNumberVo = new EmptyTableNumberVo();
emptyTableNumberVo.setPartnerId("1864");
......
......@@ -45,6 +45,7 @@ class OrderAdapterServiceImplTest extends Specification {
memberBlacklistHandler.dataCenterClient = dataCenterClient
orderBusinessService.orderSdkAdapter = orderSdkAdapter
orderServiceImpl.orderBusinessService = orderBusinessService
orderServiceImpl.memberBlacklistHandler = memberBlacklistHandler
}
......
package cn.freemud.service.impl;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.entities.dto.OrderPrintDto;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.ordercenter.adapter.OrderCenterSdkAdapter;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2022/9/23 16:51
* @description :
*/
public class OrderInfo2OrderBean {
public static void main(String[] args) {
OrderCenterSdkAdapter orderCenterSdkAdapter = new OrderCenterSdkAdapter();
String strOrderInfo = "{\"abnormalDesc\":\"\",\"abnormalState\":0,\"actualPayAmount\":2.0,\"afterSalesOrderList\":[],\"afterSalesState\":0,\"appId\":\"wxef754bdcc220db4e\",\"barCounter\":\"\",\"bizType\":1,\"canRefund\":true,\"cancelReason\":\"\",\"companySelfCode\":\"\",\"createTime\":\"1664171871000\",\"daySeq\":3,\"deliveryContactInfoList\":[{\"addressDetail\":\"大润发(南翔店),1\",\"city\":\"\",\"contactsName\":\"\",\"expressNo\":\"0\",\"extInfo\":\"{\\\"receiveId\\\": \\\"3630371879117105885\\\"}\",\"infoType\":1,\"latitude\":31.2934880,\"longitude\":121.3048500,\"mobile\":\"13673451997\",\"province\":\"\",\"region\":\"\",\"relateObjectType\":1,\"street\":\"\",\"telephone\":\"\",\"thirdDeliveryId\":\"0\"},{\"addressDetail\":\"third\",\"city\":\"\",\"contactsName\":\"\",\"expressNo\":\"0\",\"extInfo\":\"\",\"infoType\":0,\"latitude\":0E-7,\"longitude\":0E-7,\"mobile\":\"\",\"province\":\"\",\"region\":\"\",\"relateObjectType\":3,\"street\":\"\",\"telephone\":\"\",\"thirdDeliveryId\":\"0\"}],\"deliveryPromise\":0,\"deliveryState\":-2,\"dinersNumber\":0,\"downstreamPosCode\":\"0\",\"downstreamThirdOrderCode\":\"0\",\"estimateDeliveryCompleteTime\":\"1664173670000\",\"expressChannelCode\":\"\",\"expressChannelName\":\"\",\"expressNo\":\"\",\"expressType\":0,\"extInfo\":\"{\\\"fmId\\\": \\\"7702399255989142807352652\\\", \\\"appid\\\": \\\"wxef754bdcc220db4e\\\", \\\"openid\\\": \\\"oDbry5DgPZ4JoPEIK6T3_TfLIZjU\\\", \\\"payDate\\\": \\\"2022-09-26 13:57:59\\\", \\\"version\\\": \\\"3.0.8.1\\\", \\\"prepayId\\\": \\\"wx26135751171422810eac850846067c0000\\\", \\\"fromAppId\\\": \\\"wxef754bdcc220db4e\\\", \\\"sessionId\\\": \\\"7f66316bda471491462c8b5517567689f4fdd3b0\\\", \\\"endTransId\\\": \\\"112474209721622092613575125375\\\", \\\"paidMember\\\": false, \\\"payTransId\\\": \\\"7702399255989142807352652\\\", \\\"sessionKey\\\": \\\"QV0djl/Sc3aCGbzDOFPBQw==\\\", \\\"memberLevel\\\": \\\"青铜\\\", \\\"serviceTime\\\": 50, \\\"pushOrderTime\\\": 0, \\\"deliveryHoursDayEnd\\\": \\\"\\\", \\\"deliveryHoursDayStart\\\": \\\"2022-09-26 00:00:00\\\", \\\"packageAmountCollectType\\\": 1}\",\"immediately\":true,\"isParent\":false,\"localTableKey\":\"\",\"marketingCode\":\"\",\"marketingType\":0,\"needInvoice\":false,\"note\":\"\",\"operator\":\"\",\"orderArea\":\"0\",\"orderClient\":2,\"orderCode\":\"25598914263934597100005\",\"orderCostDetailList\":[{\"actualCostAmount\":1.0,\"billType\":1,\"costAmount\":1.0,\"costName\":\"配送费\",\"costType\":2,\"note\":\"\",\"orderItemId\":0,\"productId\":\"0\",\"productSeq\":0}],\"orderExtended\":{\"agentPayerId\":\"\",\"agentPayerName\":\"\",\"orderClientGroup\":\"小鱼\",\"orderClientGroupCode\":\"896\",\"sendWord\":\"\",\"spellGroupCode\":\"\",\"storeNameEn\":\"\",\"userPhone\":\"\"},\"orderInvoice\":{\"address\":\"\",\"bankCardNo\":\"\",\"content\":\"\",\"invoiceBank\":\"\",\"invoiceUrl\":\"\",\"itemId\":\"\",\"partnerId\":\"\",\"phoneNo\":\"\",\"taxNo\":\"\",\"title\":\"\"},\"orderItemList\":[{\"canRefund\":true,\"extInfo\":\"{\\\"tax\\\": 0, \\\"stapleFood\\\": 0, \\\"isMonthCard\\\": 0, \\\"isSendGoods\\\": false, \\\"cartGoodsUid\\\": \\\"1f7863c9-fb4e-4e22-9051-a6d3dc22a29b\\\", \\\"isB3S1Coupon\\\": 0, \\\"spuProductCode\\\": \\\"nogroupcombo\\\"}\",\"id\":255989142654026037,\"ignoreInOrderClose\":false,\"marketingCode\":\"0\",\"marketingType\":0,\"nickName\":\"\",\"note\":\"\",\"openId\":\"\",\"parentProductId\":\"0\",\"photoUrl\":\"\",\"productCode\":\"nogroupcombo\",\"productForeignName\":\"\",\"productForeignProperty\":\"null\",\"productForeignSpecName\":\"\",\"productId\":\"152022148230396673\",\"productName\":\"无商品组套餐\",\"productPicUrl\":\"https://img10.sandload.cn/zfx01.jpg?timestamp=1593832540030\",\"productPrice\":1.0,\"productProperty\":\"番茄味糖\",\"productQuantity\":1,\"productSeq\":1,\"productSharePrice\":0.0,\"productSpec\":\"152022148230396673\",\"productSpecName\":\"无商品组套餐\",\"productSpuQuantity\":1,\"productType\":0,\"productUnit\":\"\",\"productUpc\":\"\",\"productWeightUnit\":0,\"salePrice\":1.0,\"settlementPrice\":1.0,\"thirdProductId\":\"nogroupcombo\",\"userId\":\"\",\"weight\":0.00}],\"orderSendCouponRespList\":[],\"orderSettlementDetailList\":[{\"agentDiscountAmount\":0,\"carrierDiscountAmount\":0,\"extInfo\":\"\",\"externalObjectId\":\"\",\"externalObjectName\":\"优惠总金额\",\"externalObjectSubId\":\"\",\"ignoreInDiscountAmount\":false,\"isOnline\":true,\"note\":\"\",\"number\":0,\"platformDiscountAmount\":0,\"platformServiceAmount\":0,\"productId\":\"0\",\"productSeq\":0,\"prospectiveAmount\":0.0,\"settlementAmount\":2.0,\"settlementType\":205,\"shopAmount\":0,\"shopDiscountAmount\":0}],\"orderState\":2,\"orderSubState\":0,\"orderType\":3,\"originalAmount\":2.0,\"parentCode\":\"0\",\"partnerId\":\"2399\",\"partnerName\":\"\",\"payChannel\":\"10211\",\"payChannelName\":\"微信\",\"payChannelType\":\"1\",\"payRequestNo\":\"7702399255989142807352652\",\"payState\":2,\"payTime\":\"1664171879000\",\"payType\":1,\"pickUpGoodsNo\":\"C003\",\"posCode\":\"\",\"posTableKey\":\"\",\"printNum\":0,\"settlementAmount\":2.0,\"sourceType\":0,\"storeId\":\"1085\",\"storeName\":\"南翔QA测试门店lulu&测试门店lulu&测试门店lulu&(店)\",\"storeUnifyId\":\"0\",\"suspendDesc\":\"\",\"suspendState\":0,\"thirdOrderCode\":\"25598914263934597100005\",\"thirdStoreId\":\"0099\",\"toStoreId\":\"0\",\"updateTime\":\"1664171879000\",\"userId\":\"3628509743958943995\",\"userMobile\":\"13673451997\",\"userName\":\"李雪玉\",\"weight\":0.00}";
OrderInfoReqs orderInfoReqs = JSON.parseObject(strOrderInfo, OrderInfoReqs.class);
OrderBeanV1 orderBeanV1 = orderCenterSdkAdapter.convent2NEWOrderInfo(orderInfoReqs);
OrderAdapter orderAdapter = new OrderAdapter();
OrderPrintDto orderPrintDto = orderAdapter.convert2OrderPrintDto(orderBeanV1);
System.out.println(orderPrintDto);
}
}
......@@ -54,7 +54,7 @@ public class DeliverySdkAdapter {
deliveryOrderRequestDto.setStorePhone(storeInfo.getPhone());
deliveryOrderRequestDto.setStoreName(order.getShopName());
deliveryOrderRequestDto.setCityName(storeInfo.getCity());
deliveryOrderRequestDto.setReceiverName(order.getUserName());
deliveryOrderRequestDto.setReceiverName(order.getContactsName());
deliveryOrderRequestDto.setReceiverPrimaryPhone(order.getPhone());
deliveryOrderRequestDto.setReceiverAddress(order.getAddress());
deliveryOrderRequestDto.setReceiverLng(BigDecimal.valueOf(order.getLongitude()));
......
......@@ -26,8 +26,8 @@ public class DeliveryOrderController {
@ApiOperation(value = "创建配送单", notes = "创建配送单", produces = "application/json")
@GetMapping("/delivery/create")
public BaseResponse deliveryCreate(@RequestParam("orderCode") String orderCode
, @RequestParam(value = "operator", required = false) String operator) {
return orderDeliveryService.createDelivery(orderCode, operator);
, @RequestParam(value = "operator", required = false) String operator, @RequestParam(value = "partnerId", required = false) String partnerId) {
return orderDeliveryService.createDelivery(orderCode, operator,partnerId);
}
......
......@@ -11,4 +11,5 @@ public class DeliveryOrderRequest {
private String orderCode;
private String operator;
private String partnerId;
}
......@@ -44,7 +44,7 @@ public class OrderBaseService {
@Autowired
private OrderServiceV1 serviceV1;
public OrderBeanV1 getByOrderCode(String orderCode) {
public OrderBeanV1 getByOrderCode(String orderCode, String partnerId) {
// BaseQueryOrderRequest queryRequest = new BaseQueryOrderRequest();
// queryRequest.setOrderId(orderCode);
// QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(queryRequest);
......@@ -52,8 +52,8 @@ public class OrderBaseService {
// return null;
// }
// return response.getData();
String trackingNo = LogThreadLocal.getTrackingNo();
return serviceV1.queryOrderById(null,orderCode,null,null,trackingNo);
String trackingNo = LogThreadLocal.getTrackingNo();
return serviceV1.queryOrderById(null, orderCode, null, null, trackingNo, partnerId);
}
public void sendMessage(OrderBeanV1 orderBean, OperateType opType, String reason) {
......@@ -72,10 +72,10 @@ public class OrderBaseService {
MessageTemplateRequest<MessagePushOrderTemplateRequest> messageTemplateRequest = null;
try {
messageTemplateRequest = messagePushAdapter.convent2MessageTemplateRequest(orderBean, reason, opType);
if (messageTemplateRequest!=null && messageTemplateRequest.getMessageEventType() != null) {
if (messageTemplateRequest != null && messageTemplateRequest.getMessageEventType() != null) {
BaseResponse baseResponse = messageTemplatePushService.sendTemplateMsg(messageTemplateRequest);
if(baseResponse != null && !ResponseResultEnum.SUCCESS.getCode().equals(baseResponse.getCode())){
ApiLog.printLog("sendTemplateMsg",orderBean.getOid(), JSONObject.toJSONString(baseResponse),null);
if (baseResponse != null && !ResponseResultEnum.SUCCESS.getCode().equals(baseResponse.getCode())) {
ApiLog.printLog("sendTemplateMsg", orderBean.getOid(), JSONObject.toJSONString(baseResponse), null);
}
}
} catch (Exception e) {
......@@ -92,9 +92,9 @@ public class OrderBaseService {
* @param orderCode
* @param deliveryId
*/
public void updateDeliveryAbnormal(String partnerId, String orderCode, String deliveryId, String operator,String msg) {
public void updateDeliveryAbnormal(String partnerId, String orderCode, String deliveryId, String operator, String msg) {
AssortmentUpdateDeliveryAbnormalRequest request = AssortmentUpdateDeliveryAbnormalRequest.builder()
.abnormalDesc("配送异常"+ msg)
.abnormalDesc("配送异常" + msg)
.deliveryId(deliveryId)
.orderCode(orderCode)
.partnerId(partnerId)
......
......@@ -45,7 +45,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse<OrderManagerResponse> orderConfirmTake(OrderManagerRequest request) {
//查询订单
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId(),request.getPartnerId());
if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(orderBeanResp.getMessage());
}
......@@ -70,7 +70,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse<OrderManagerResponse> orderDone(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -91,7 +91,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse<OrderManagerResponse> orderDelivery(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (Objects.isNull(orderBean)) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -119,7 +119,7 @@ public class OrderManagerAdapter {
public BaseResponse<OrderManagerResponse> orderAffirm(OrderManagerRequest request, OrderBeanV1 orderBean) {
if (orderBean == null) {
//查询订单
orderBean = orderBaseService.getByOrderCode(request.getOrderId());
orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -141,7 +141,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderReject(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -171,7 +171,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderAgreeRefund(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -222,7 +222,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderRejectRefund(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -250,7 +250,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderCancel(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -327,7 +327,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderCreateDelivery(OrderManagerRequest request) {
//查询订单
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId(),request.getPartnerId());
if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(orderBeanResp.getMessage());
}
......@@ -340,9 +340,9 @@ public class OrderManagerAdapter {
return handleResponse(request, orderBean, orderManagerResponse);
}
private BaseResponse<OrderBeanV1> getOrderBean(String orderId) {
private BaseResponse<OrderBeanV1> getOrderBean(String orderId, String partnerId) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderId);
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderId,partnerId);
// 防止NPE
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
......@@ -358,7 +358,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse orderCancelDelivery(OrderManagerRequest request) {
//查询订单
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId());
BaseResponse<OrderBeanV1> orderBeanResp = this.getOrderBean(request.getOrderId(),request.getPartnerId());
if (!Objects.equals(orderBeanResp.getCode(), ResponseResult.SUCCESS.getCode())) {
return ResponseUtil.error(orderBeanResp.getMessage());
}
......@@ -375,7 +375,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse developRefund(OrderManagerRequest request) {
//查询订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderId(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -394,7 +394,7 @@ public class OrderManagerAdapter {
*/
public BaseResponse refundSuccessCallback(RefundSuccessCallbackVo request) {
// step 1 查订单
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderCode());
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(request.getOrderCode(),request.getPartnerId());
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......
......@@ -371,15 +371,15 @@ public class OrderVerifyHandle {
//订单
boolean isRefundDeliveryFee=false;
//saas渠道订单,已完成的订单不能操作, 商户配置已完成订单可退款可退款
if (ObjectUtils.equals(orderBean.getSource(), OrderSourceV1.SAAS.getCode())) {
isCanRefund = getRefundConfig(orderBean);
if (!isCanRefund) {
return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND);
}
}
if (isCanRefund) {
// if (ObjectUtils.equals(orderBean.getSource(), OrderSourceV1.SAAS.getCode())) {
// isCanRefund = getRefundConfig(orderBean);
// if (!isCanRefund) {
// return ResponseUtil.error(ResponseResult.ORDER_HAD_AFFIRM_CAN_NOT_REFUND);
// }
// }
// if (isCanRefund) {
orderBean.setAmount(getRefundAmount(orderBean,isRefundDeliveryFee).longValue());
}
// }
return ResponseUtil.success();
}
......@@ -650,21 +650,22 @@ public class OrderVerifyHandle {
/**
* 获取已完成订单退款金额
* isRefundDeliveryFee 退款是否退配送费已在申请退款传到订单基础服务,取订单售后单中退款金额 actualAmount
*/
public BigDecimal getRefundAmount(OrderBeanV1 data,boolean isRefundDeliveryFee) {
//是否配置已完成订单可退款
BigDecimal refundAmount = new BigDecimal(data.getAmount());
if (isRefundDeliveryFee || isPayBySVC(data)){
return refundAmount;
}
List<AccountBeanV1> accountList = data.getAccountList();
if (CollectionUtils.isNotEmpty(accountList)) {
for (AccountBeanV1 orderCostResp : accountList) {
if (orderCostResp.getType() == OldOrderAccountType.DELIVERY_AMOUNT.getCode()) {
refundAmount = new BigDecimal(data.getAmount().intValue() - orderCostResp.getPrice());
}
}
}
// if (isRefundDeliveryFee || isPayBySVC(data)){
// return refundAmount;
// }
// List<AccountBeanV1> accountList = data.getAccountList();
// if (CollectionUtils.isNotEmpty(accountList)) {
// for (AccountBeanV1 orderCostResp : accountList) {
// if (orderCostResp.getType() == OldOrderAccountType.DELIVERY_AMOUNT.getCode()) {
// refundAmount = new BigDecimal(data.getAmount().intValue() - orderCostResp.getPrice());
// }
// }
// }
return refundAmount;
}
/**
......
......@@ -14,13 +14,10 @@ import cn.freemud.management.thirdparty.OMSPaymentClient;
import cn.freemud.management.util.RedisUtil;
import cn.freemud.redis.RedisCache;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappStore;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIappWxappStoreManager;
import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.enums.PayChannelType;
import com.freemud.application.sdk.api.ordercenter.enums.orderv1.OrderTypeV1;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
......@@ -35,11 +32,11 @@ 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.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.*;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
......@@ -147,7 +144,7 @@ public class PaymentHandle {
message = orderRefundResponse.getMessage();
}
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, orderRefundRequest.getRefundId());
if(message != null){
if (message != null) {
payRefundResponse.setMessage(message);
}
return payRefundResponse;
......@@ -161,15 +158,16 @@ public class PaymentHandle {
MultiOrderRefundRequest multiOrderRefundRequest = paymentSdkAdapter.getMultiOrderPayRefundRequest(orderBean, getRefundAmount(orderBean));
MultiOrderRefundResponse multiOrderRefundResponse = mulitiPaymentClient.paymentApplicationRefund(multiOrderRefundRequest, orderBean.getCompanyId());
String message = "";
if (multiOrderRefundResponse == null || multiOrderRefundResponse.getData() == null || !com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant.ORDER_PAY_RESPONSE_SUCCESS.equals(multiOrderRefundResponse.getCode())) {
// fisherman 退款异常 也当做 退款中处理
refundStatus = PayRefundStatus.RUNNING;
if (Objects.isNull(multiOrderRefundResponse) || multiOrderRefundResponse.getCode() != 200) {
refundStatus = PayRefundStatus.FAIL;
} else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
if (null != refundPlatformResponseList && refundPlatformResponseList.size() > 0) {
MultiOrderRefundResponse.RefundPlatform data = multiOrderRefundResponse.getData();
if (Objects.isNull(data) || CollectionUtils.isEmpty(data.refundPlatformResponseList)) {
refundStatus = PayRefundStatus.FAIL;
} else {
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = data.refundPlatformResponseList;
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
}
if (CollectionUtils.isNotEmpty(refundPlatformResponseList)) {
long refundError = refundPlatformResponseList.stream()
.filter(s -> s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUNDED_RESULTCODE) != 0
&& s.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0)
......@@ -184,15 +182,16 @@ public class PaymentHandle {
if (refunded > 0L) {
refundStatus = PayRefundStatus.RUNNING;
}
for (MultiOrderRefundResponse.RefundPlatformResponse refundPlatformResponse : refundPlatformResponseList){
if(refundPlatformResponse.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0){
message = refundPlatformResponse.getResultMsg()+ ";" + message;
for (MultiOrderRefundResponse.RefundPlatformResponse refundPlatformResponse : refundPlatformResponseList) {
if (refundPlatformResponse.getResultCode().compareTo(MultiOrderRefundResponse.RefundPlatformResponse.REFUND_SUCCESS) != 0) {
message = refundPlatformResponse.getResultMsg() + ";" + message;
}
}
}
}
PayRefundResponse payRefundResponse = handlePayRefundResponse(refundStatus, multiOrderRefundRequest.getRefundTradeNo());
if(StringUtils.isNotEmpty(message)){
if (StringUtils.isNotEmpty(message)) {
payRefundResponse.setMessage(message);
}
return payRefundResponse;
......@@ -211,13 +210,13 @@ public class PaymentHandle {
AgentPayRefundReq req = paymentSdkAdapter.getAgentPayefundReq(orderBean, this.getRefundAmount(orderBean));
AgentPayRefundResp resp = mulitiPaymentClient.agentPayRefund(req);
if (!resp.isOk()) {
refundStatus = PayRefundStatus.RUNNING;
refundStatus = PayRefundStatus.FAIL;
}
AgentPayRefundResp.DataDTO data = resp.getData();
if (Objects.nonNull(data)) {
refundStatus = this.getFinalRefundStatus(data.getResultCode());
fmRefundNo = data.getFmRefundNo();
}
fmRefundNo = resp.getData().getFmRefundNo();
} catch (Throwable e) {
refundStatus = PayRefundStatus.FAIL;
}
......@@ -226,19 +225,7 @@ public class PaymentHandle {
private PayRefundStatus getFinalRefundStatus(Integer resultCode) {
switch (resultCode) {
// 退款中状态码需要单独处理
case 8200305:
return PayRefundStatus.RUNNING;
// 重复请求,按照退款中处理
case 82004005:
return PayRefundStatus.RUNNING;
// 退款成功
case 100:
return PayRefundStatus.SUCCESS;
default:
return PayRefundStatus.FAIL;
}
return PayRefundStatus.getByPayResultCode(resultCode);
}
......@@ -255,7 +242,7 @@ public class PaymentHandle {
if (refundRequest.getTotalAmount() == null || refundRequest.getTotalAmount() == 0L) {
refundRequest.setTotalAmount(refundRequest.getRefundAmount());
}
AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
// AssortmentOpenPlatformIappWxappStore wxAppStore = this.assortmentOpenPlatformIappWxappStoreManager.selectWxappStoreByWxAppIdAndStoreId(refundRequest.getAppId(), refundRequest.getStoreId(), payCode);
PayRefundRequestDto request = new PayRefundRequestDto();
request.setStoreId(refundRequest.getStoreId());
request.setStationId(refundRequest.getStationId());
......@@ -271,7 +258,7 @@ public class PaymentHandle {
request.setPartnerId(refundRequest.getPartnerId());
request.setVer(2);
request.setExtendParams(refundRequest.getExtendParams());
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount(), wxAppStore);
com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam = this.checkParam(refundRequest.getPartnerId(), refundRequest.getStoreId(), refundRequest.getRefundAmount());
if (!Objects.equals(checkParam.getCode(), "100")) {
return null;
}
......@@ -450,7 +437,7 @@ public class PaymentHandle {
}
private com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount, AssortmentOpenPlatformIappWxappStore wxAppStore) {
private com.freemud.application.sdk.api.base.BaseResponse<OrderRefundResponse> checkParam(String partnerId, String storeId, Long amount) {
if (StringUtils.isBlank(partnerId)) {
return ResponseUtils.error("501", "商户号不能为空");
} else if (StringUtils.isBlank(storeId)) {
......@@ -458,7 +445,7 @@ public class PaymentHandle {
} else if (amount == null) {
return ResponseUtils.error("501", "金额不能为空");
} else {
return wxAppStore == null ? ResponseUtils.error("500", "支付信息没有配置") : ResponseUtils.success();
return ResponseUtils.success();
}
}
......
......@@ -49,7 +49,7 @@ public class StockHandle {
OrderStatusChangeRequestDto requestDto = new OrderStatusChangeRequestDto();
requestDto.setOid(orderBean.getOid());
requestDto.setOrderStatus(orderBean.getStatus());
requestDto.setPartnerId(orderBean.getCompanyId());
try {
Header header = new Header(MQAction.INSERT.getAction(), "backOrdersStatusChange", orderBean.getOid(), backOrdersChangeOrderStatusConsumerQueue);
MQMessage<OrderStatusChangeRequestDto> message = new MQMessage<>(header, requestDto);
......
......@@ -37,8 +37,8 @@ public class OrderDeliveryService {
* @param orderCode
* @return
*/
public BaseResponse createDelivery(String orderCode, String operator) {
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderCode);
public BaseResponse createDelivery(String orderCode, String operator, String partnerId) {
OrderBeanV1 orderBean = orderBaseService.getByOrderCode(orderCode,partnerId);
if (null == orderBean) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......@@ -59,7 +59,7 @@ public class OrderDeliveryService {
* @return
*/
public BaseResponse cancelDeliveryOrder(DeliveryOrderRequest request) {
OrderBeanV1 data = orderBaseService.getByOrderCode(request.getOrderCode());
OrderBeanV1 data = orderBaseService.getByOrderCode(request.getOrderCode(),request.getPartnerId());
if (null == data) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
......
......@@ -143,7 +143,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if (orderCenterProperties.isUrgentCallbackOpen()) {
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(), 3, null, null);
OrderCallBackRequestVo requestVo = saasOrderHandle.convert2CallbackReq(orderBean.getOid(), 3, null, null, request.getPartnerId());
ApiLog.infoMessage("紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}", requestVo.getOrderCode(), requestVo.getRequestId());
orderCallbackClient.callbackOrder(requestVo);
}
......@@ -473,12 +473,6 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
PayRefundStatus payRefundStatus = PayRefundStatus.SUCCESS;
if (!Objects.equals(refundStatus, "100")) {
payRefundStatus = PayRefundStatus.FAIL;
// 告知基础服务 退款失败
AfterSalesRefundFailReq refundFailReq = this.getAfterSalesRefundFailReq(orderBean,
"refundSuccessCallback",
AfterSalesApplyClientEnum.STATE_6.getIndex(),
refundResponse.getMessage());
orderSdkService.refundFail(refundFailReq, LogThreadLocal.getTrackingNo());
}
refundResponse.setPayRefundStatus(payRefundStatus);
refundResponse.setRefundId(request.getRefundId());
......@@ -486,7 +480,7 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
OrderManagerRequest omRequest = new OrderManagerRequest();
omRequest.setReason(reason);
omRequest.setOperator("支付退款回调系统补偿");
saasOrderHandle.refundAgree(omRequest, refundResponse, orderBean);
saasOrderHandle.refundAgreeByCallback(omRequest, refundResponse, orderBean);
// 退款失败 不应该走 冲正逻辑
if (payRefundStatus.getCode().compareTo(PayRefundStatus.SUCCESS.getCode()) != 0) {
......
......@@ -61,7 +61,7 @@ public class OrderCenterSdkAdapter {
data.setDownstreamPosCode(orderInfoReqs.getDownstreamPosCode());
data.setDownstreamThirdOrderCode(orderInfoReqs.getDownstreamThirdOrderCode());
data.setAppId(orderInfoReqs.getAppId());
data.setUserMobile(orderInfoReqs.getUserMobile());
//20201222 新增配送类型 ->【ID1021986】
//【订单开放平台】订单详情查询接口增加配送类型字段
data.setExpressType(orderInfoReqs.getExpressType());
......@@ -352,6 +352,7 @@ public class OrderCenterSdkAdapter {
productBean.setProductForeignProperty(orderItemResp.getProductForeignProperty());
productBean.setExtInfo(orderItemResp.getExtInfo());
productBean.setNote(orderItemResp.getNote());
productBean.setProductSpuQuantity(orderItemResp.getProductSpuQuantity());
// 套餐
productBean.setParentProductId(orderItemResp.getParentProductId());
......
......@@ -7,6 +7,7 @@ public class InterfaceAddressConstant {
//创建订单
public static final String CREATE_ORDER = "order/v2/create";
//创建父子订单
@Deprecated
public static final String CREATE_FATHER_ORDER = "order/v2/createRelatedOrders";
//根据订单CODE查询订单详细信息
public static final String GET_ORDER_INFO = "order/v2/queryByCode";
......@@ -19,8 +20,10 @@ public class InterfaceAddressConstant {
//支付成功
public static final String MCCAFE_COLLECT_ORDER = "order/v2/mcCafe/syncPos";
//父子订单支付成功
@Deprecated
public static final String FATHER_ORDER_PAY_SUCCESS = "/order/v2/relatedOrdersPaySuccess";
//删除订单
@Deprecated
public static final String DELETE_ORDER = "order/v2/delete";
//取消整个订单
public static final String CANCEL_ORDER = "order/v2/cancel";
......
......@@ -63,7 +63,7 @@ public class OrderBeanV1 {
*/
private String address;
/**
* 收货地址
* 收货人名称
*/
private String contactsName;
......@@ -168,9 +168,16 @@ public class OrderBeanV1 {
private String payVoucher;
/**
* 手机号
* 手机号 这个老手机号,取 delivery_contact_info 的数据, 历史遗漏问题,其他地方有使用, 不进行改动,
*/
private String phone;
/**
* 下单用户手机号
*/
private String userMobile;
private String posId;
private String remark;
/**
......
......@@ -188,4 +188,8 @@ public class ProductBeanV1 {
*/
private Boolean isSendGoods;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
}
......@@ -20,4 +20,5 @@ public class QueryRelatedOrderByCodeReq {
private String orderCode;
private String thirdOrderCode;
private Boolean withOperationHistory;
private String partnerId;
}
......@@ -16,6 +16,9 @@ import lombok.Data;
*/
@Data
public class SdkNewOrderUpdateThirdOrderCodeReq {
// 商户号
protected String partnerId;
private String orderCode;
private String thirdOrderCode;
}
......@@ -80,4 +80,9 @@ public class ParkingOrderAffirmReq {
/*******商户名称****/
private String partnerName;
/**
* 商户号 必传字段
*/
private String partnerId;
}
......@@ -11,4 +11,5 @@ public class ParkingOrderCancelReq {
private String orderCode;
private String operator;
private String cancelReason;
private String partnerId;
}
......@@ -24,4 +24,6 @@ public class BatchQueryByCodesReq {
*/
private List<String> orderCodes;
private String partnerId;
}
......@@ -258,6 +258,7 @@ public class CreateOrderRequest extends BaseRequest {
/**
* 实物商品订单标记 1:实物商品订单 2:虚拟商品订单 (之前的一些卖券单(biz=6)等,都没有传递该标记,所以默认为0)
* @see cn.freemud.enums.OrderPhysicalGoodsFlagEnum
*/
private Integer physicalGoodsFlag;
......@@ -266,6 +267,11 @@ public class CreateOrderRequest extends BaseRequest {
*/
private String userMobile;
/**
* 下单用户来源类型: 0:存量未定义 1:开个店用户 2:自定义用户 3:未传递系统随机生成用户
* @see cn.freemud.enums.OrderUserSourceTypeEnum
*/
private Integer userSourceType = 1;
@Data
public static class ChooseGood {
......
......@@ -163,4 +163,9 @@ public class OrderItemCreateReq {
*/
private Long packPrice;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
}
......@@ -396,6 +396,11 @@ public class OrderInfoReqs {
private String operator;
/**
* 下单用户手机号
*/
private String userMobile;
/**
* 订单扩展信息 (门店渠道信息)
*/
private OrderExtendedReq orderExtended;
......
......@@ -130,4 +130,9 @@ public class OrderItemResp {
//加购人包装费
private Long packPrice;
/**
* 订单新增商品SPU数量字段 https://cf.freemudvip.com/pages/viewpage.action?pageId=209356052
*/
private Integer productSpuQuantity;
}
......@@ -286,6 +286,7 @@ public class OrderDownLoadSdkService {
// 查询redis
BatchQueryByCodesReq batchQueryByCodesReq = new BatchQueryByCodesReq();
batchQueryByCodesReq.setOrderCodes(orderCodes);
batchQueryByCodesReq.setPartnerId(request.getPartnerId());
OrderBaseResp<List<OrderInfoReqs>> redisResponse = orderSdkService.batchQueryByCodes(batchQueryByCodesReq, LogThreadLocal.getTrackingNo());
logUtil.info("list 热点数据查询redis, ",batchQueryByCodesReq,redisResponse);
if (CollectionUtils.isEmpty(redisResponse.getResult())) {
......@@ -373,6 +374,7 @@ public class OrderDownLoadSdkService {
logUtil.info("进入redis 数据替换 ES 逻辑", LogThreadLocal.getTrackingNo(), null);
BatchQueryByCodesReq batchQueryByCodesReq = new BatchQueryByCodesReq();
batchQueryByCodesReq.setOrderCodes(Collections.singletonList(infoReqs.getOrderCode()));
batchQueryByCodesReq.setPartnerId(partnerId);
OrderBaseResp<List<OrderInfoReqs>> redisResponse = orderSdkService.batchQueryByCodes(batchQueryByCodesReq, LogThreadLocal.getTrackingNo());
logUtil.info("热点数据查询redis, ",batchQueryByCodesReq,redisResponse);
if (CollectionUtils.isEmpty(redisResponse.getResult())) {
......
......@@ -19,8 +19,8 @@ public class OrderServiceV1 {
* 根据订单编号查询订单信息
* 返回 V1版本订单数据结构
*/
public OrderBeanV1 queryOrderById(String orderClient, String orderCode, String thirdOrderCode, Integer withOperationHistory, String trackingNo){
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(orderClient, orderCode, thirdOrderCode, withOperationHistory, trackingNo);
public OrderBeanV1 queryOrderById(String orderClient, String orderCode, String thirdOrderCode, Integer withOperationHistory, String trackingNo,String partnerId){
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(orderClient, orderCode, thirdOrderCode, withOperationHistory, trackingNo,partnerId);
if(orderInfo == null || orderInfo.getResult() == null || StringUtils.isEmpty(orderInfo.getResult().getOrderCode())){
return null;
}
......
......@@ -425,7 +425,7 @@ public class TestApiService {
String orderClient = "11";
String orderCode = null;
String thirdOrderCode = "27003913648267755";
QueryByCodeResponse response = orderSdkService.getOrderInfo(orderClient, orderCode, thirdOrderCode, 0, "");
QueryByCodeResponse response = orderSdkService.getOrderInfo(orderClient, orderCode, thirdOrderCode, 0, "","");
System.out.println(JSON.toJSONString(response));
}
......
......@@ -504,6 +504,11 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
// 更新购物车中数量
List<CartGoods> cartGoodsList = assortmentSdkService.updateGoodsQtyBySdk(partnerId, userId, storeId, cartGoodsUid, qty < 0 ? 0 : qty, "", shoppingCartBaseService, bizType);
// fisherman 校验购物车 最大限购数量
if (oldQty.compareTo(qty) < 0) {
this.sendGoodsQtyCheckForUpdate(cartGoodsList, oldQty, appId, partnerId, userId, storeId, cartGoodsUid, "", shoppingCartBaseService, null, bizType);
}
// check购物车中所有商品
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo, updateShoppingCartGoodsQtyRequestVo.getOrderType(), "", updateShoppingCartGoodsQtyRequestVo.getMenuType(), shoppingCartBaseService);
if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) {
......@@ -1062,7 +1067,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo = goodsList.getResult();
// fisherman -> 储值卡互斥需求 发现bug 导致返回购物车数据不对 当前时间节点无法修复 重新请求一次
if (Objects.nonNull(shoppingCartInfoRequestVo.getEnableSharing()) && shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0) {
if (shoppingCartGoodsResponseVo.getChanged() != null && shoppingCartGoodsResponseVo.getChanged() ==true) {
if (shoppingCartGoodsResponseVo.getChanged() != null && shoppingCartGoodsResponseVo.getChanged() == true) {
goodsList = getGoodsList(shoppingCartInfoRequestVo);
if (goodsList == null || !ResponseResult.SUCCESS.getCode().equals(goodsList.getCode())) {
return goodsList;
......@@ -2449,7 +2454,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
setToastMsgIfNotExist(shoppingCartGoodsResponseVo, toastMsg);
//结算页,只有商品全部非法(即products为空)时,才提示changed为true toastMsg 不为空
boolean changed = shoppingCartInfoRequestVo != null
&&shoppingCartInfoRequestVo.getEnableSharing() != null
&& shoppingCartInfoRequestVo.getEnableSharing() != null
&& shoppingCartInfoRequestVo.getEnableSharing().compareTo(0) == 0
&& Objects.nonNull(shoppingCartGoodsResponseVo.getChanged())
&& shoppingCartGoodsResponseVo.getChanged().compareTo(true) == 0;
......@@ -2818,7 +2823,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @param cartUid
*/
public void clearMsg(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String cartUid) {
if (StringUtils.isNotBlank(shoppingCartGoodsResponseVo.getToastMsg()) && StringUtils.isNotBlank(shoppingCartGoodsResponseVo.getUid()) && !Objects.equals(cartUid,shoppingCartGoodsResponseVo.getUid())) {
if (StringUtils.isNotBlank(shoppingCartGoodsResponseVo.getToastMsg()) && StringUtils.isNotBlank(shoppingCartGoodsResponseVo.getUid()) && !Objects.equals(cartUid, shoppingCartGoodsResponseVo.getUid())) {
shoppingCartGoodsResponseVo.setUid("");
shoppingCartGoodsResponseVo.setToastMsg("");
}
......
......@@ -121,7 +121,10 @@ public class CalculationSharingEquallyService {
Goods find = null;
for (CartGoods product : shoppingCartGoodsResponseVo.getProducts()) {
if (goods!=null) {
find = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst().orElseGet(null);
Optional<Goods> first = goods.stream().filter((k) -> k.getCartGoodsUid().equals(product.getCartGoodsUid())).findFirst();
if (first.isPresent()) {
find = first.get();
}
}
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = calculationCommonService.convertCartGoods2DetailGoodsList(find, product,shoppingCartInfoRequestVo.getPartnerId());
cartGoodsDetailDtoList.add(cartGoodsDetailDto);
......
......@@ -1506,7 +1506,7 @@ public class ShoppingCartMCoffeeServiceImpl {
String appId = requestVo.getAppId();
String orderId = requestVo.getOrderId();
String trackingNo = LogThreadLocal.getTrackingNo();
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(null, orderId, null, null, trackingNo);
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(null, orderId, null, null, trackingNo,partnerId);
if (orderInfo == null || orderInfo.getResult() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_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