Commit 3642d6a4 by ping.wu

Merge branches 'feature/20210624_购买虚拟商品校验是否在菜单_wuping' and 'qa' of…

Merge branches 'feature/20210624_购买虚拟商品校验是否在菜单_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/controller/OrderController.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 1420c3bd af9af288
......@@ -200,10 +200,10 @@ public class OrderController {
/**
* 取消支付订单
* 蜜雪APP 取消支付订单
*/
@LogIgnore(logMessage = "cancelPayOrder")
@PostMapping("/cancelPayOrder")
@PostMapping({"/cancelPayOrder","/deleteOrderById"})
public BaseResponse cancelPayOrder(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
return orderservice.cancelPayOrder(deleteOrderVo);
}
......@@ -220,12 +220,12 @@ public class OrderController {
/**
* 取消支付删除订单
*/
@LogIgnore(logMessage = "deleteOrderById")
@PostMapping("/deleteOrderById")
public BaseResponse deleteOrderById(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
//return orderservice.deleteOrderById(deleteOrderVo);
return orderservice.cancelPayOrder(deleteOrderVo);
}
// @LogIgnore(logMessage = "deleteOrderById")
// @PostMapping("/deleteOrderById")
// public BaseResponse deleteOrderById(@Validated @LogParams @RequestBody DeleteOrderVo deleteOrderVo) {
// //return orderservice.deleteOrderById(deleteOrderVo);
// return orderservice.cancelPayOrder(deleteOrderVo);
// }
/**
* 用户申请退款
......
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class MultiPaymentRespDto {
private String ebCode;
private String endTransTradeNo;
private String fmTradeNo;
private Integer mcouponAmount;
private String outOrderNo;
private Integer payAmount;
private Integer pcouponAmount;
private String platformTradeNo;
private String status;
private String transId;
private String ver;
private String appId;
private String userId;
private String platformMchId;
private String tradeTime;
private String transCurrency;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
import lombok.ToString;
@Data
@ToString
public class MultiQueryRequest {
/**
* 开启渠道端查询,默认不开启
*/
private boolean enable_platform_data_query;
/**
* 外部交易流水号,由上游系统生成,需保证唯一(支付标识)
*/
private String outOrderNo;
/**
* 商户编号(由非码提供)
*/
private Integer partnerId;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String storeId;
/**
* 接口版本,默认30
*/
private String ver;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
import java.util.List;
/**
* 聚合查询返回
*/
@Data
public class MultiQueryRespDto<T> {
private int code;
private String msg;
private T data;
@lombok.Data
public class Data {
public List<MultiPaymentRespDto> queryList;
}
}
\ No newline at end of file
......@@ -68,7 +68,7 @@ public interface Orderservice {
/**
* 支付取消删除订单
*/
BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo);
// BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo);
/**
* 订单申请退款
......
......@@ -13,7 +13,7 @@
package cn.freemud.service.impl;
import cn.freemud.adapter.*;
import cn.freemud.amp.body.MessagePushNewMqBody;
//import cn.freemud.amp.body.MessagePushNewMqBody;
import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage;
......@@ -24,25 +24,28 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
//import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.activity.*;
import cn.freemud.entities.dto.delivery.OrderRemindRequestDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
import cn.freemud.entities.dto.delivery.ResRiderTrackDto;
//import cn.freemud.entities.dto.delivery.OrderRemindRequestDto;
//import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
//import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
//import cn.freemud.entities.dto.delivery.ResRiderTrackDto;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.ecology.SendMessageResponse;
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import cn.freemud.entities.dto.ecology.SendMessageRequest;
//import cn.freemud.entities.dto.ecology.SendMessageResponse;
//import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
//import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.pay.MultiPaymentRespDto;
import cn.freemud.entities.dto.pay.MultiQueryRequest;
import cn.freemud.entities.dto.pay.MultiQueryRespDto;
import cn.freemud.entities.dto.promotion.*;
import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail;
......@@ -83,7 +86,7 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
//import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
......@@ -105,7 +108,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
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.ProductTypeEnum;
//import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
......@@ -137,9 +140,9 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
//import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
//import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
//import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
......@@ -171,8 +174,8 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.joda.time.DateTime;
import org.springframework.beans.BeanUtils;
//import org.joda.time.DateTime;
//import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
......@@ -194,6 +197,8 @@ import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
public class OrderServiceImpl implements Orderservice {
private final Integer RESPONSE_SUCCESS_CODE = 100;
private static final Integer MULITI_RESPONSE = 200;
private static final String SUCCESS = "SUCCESS";
private static Gson gson = new Gson();
......@@ -226,6 +231,9 @@ public class OrderServiceImpl implements Orderservice {
@Value("${query.order.es:true}")
private Boolean queryOrderEs;
@Value("${query.pay.order:true}")
private Boolean queryPayOrder;
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
......@@ -1669,12 +1677,22 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
OrderBean orderBean = responseDto.getData();
if (PayStatus.HAVE_PAID.getCode().equals(orderBean.getPayStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "已支付成功");
}
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单已关闭");
}
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
//关闭预支付
if(queryPayOrder && closePrePay(orderBean)){
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
// DeleteOrderDto deleteOrderDto = orderAdapter.convent2DeleteOrderDto(deleteOrderVo.getOid());
//
// DeleteOrderRequest var1 = new DeleteOrderRequest();
......@@ -1712,6 +1730,9 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
OrderBean orderBean = responseDto.getData();
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单已取消");
}
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许取消");
}
......@@ -1743,43 +1764,43 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success();
}
@Override
public BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo) {
if (StringUtils.isBlank(deleteOrderVo.getOid())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(deleteOrderVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
String string = JSONObject.toJSONString(queryOrderByIdResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
QueryOrderByIdResponseDto responseDto = jsonObject.toJavaObject(QueryOrderByIdResponseDto.class);
if (!RESPONSE_SUCCESS_CODE.equals(responseDto.getErrcode()) || responseDto.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
OrderBean orderBean = responseDto.getData();
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
}
DeleteOrderDto deleteOrderDto = orderAdapter.convent2DeleteOrderDto(deleteOrderVo.getOid());
//
DeleteOrderRequest var1 = new DeleteOrderRequest();
var1.setOrderId(deleteOrderDto.getOrderId());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
var1.setOperator("未支付取消");
BaseOrderResponse baseOrderResponse = orderCenterSdkService.deleteOrder(var1);
if (!RESPONSE_SUCCESS_CODE.equals(baseOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR);
}
// TODO: 2019/9/10 删除订单通知
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
return ResponseUtil.success();
}
// @Override
// public BaseResponse deleteOrderById(DeleteOrderVo deleteOrderVo) {
// if (StringUtils.isBlank(deleteOrderVo.getOid())) {
// return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
// }
// BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
// baseQueryOrderRequest.setOrderId(deleteOrderVo.getOid());
// baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
// QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
// String string = JSONObject.toJSONString(queryOrderByIdResponse);
// JSONObject jsonObject = JSONObject.parseObject(string);
// QueryOrderByIdResponseDto responseDto = jsonObject.toJavaObject(QueryOrderByIdResponseDto.class);
// if (!RESPONSE_SUCCESS_CODE.equals(responseDto.getErrcode()) || responseDto.getData() == null) {
// return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
// }
// OrderBean orderBean = responseDto.getData();
// if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
// return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
// }
// if (!OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
// return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR.getCode(), "订单状态不允许删除");
// }
// DeleteOrderDto deleteOrderDto = orderAdapter.convent2DeleteOrderDto(deleteOrderVo.getOid());
// //
// DeleteOrderRequest var1 = new DeleteOrderRequest();
// var1.setOrderId(deleteOrderDto.getOrderId());
// var1.setTrackingNo(LogTreadLocal.getTrackingNo());
// var1.setOperator("未支付取消");
// BaseOrderResponse baseOrderResponse = orderCenterSdkService.deleteOrder(var1);
//
// if (!RESPONSE_SUCCESS_CODE.equals(baseOrderResponse.getErrcode())) {
// return ResponseUtil.error(ResponseResult.ORDER_DELETE_ERROR);
// }
// // TODO: 2019/9/10 删除订单通知
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
// return ResponseUtil.success();
// }
@Override
public BaseResponse orderRefund(OrderRefundVo orderRefundVo) {
......@@ -3795,6 +3816,79 @@ public class OrderServiceImpl implements Orderservice {
orderSdkService.updateAbnormalState(sdkUpdateAbnormalState);
}
/**
* 关闭预支付
*/
private boolean closePrePay(OrderBean orderBean) {
//是否支付成功
boolean paySuccess = false;
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> orderPayItemList = orderBean.getOrderPayItem();
if (null != orderPayItemList && orderPayItemList.size() > 0) {
Integer partnerId = Integer.valueOf(orderBean.getCompanyId());
MultiQueryRequest request = new MultiQueryRequest();
request.setEnable_platform_data_query(false);
request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId());
request.setOutOrderNo(orderBean.getOid());
//查询聚合支付结果
MultiQueryRespDto<MultiQueryRespDto.Data> response = comPayClient.paymentApplicationQuery(request, partnerId);
if (response != null && response.getData() != null && Objects.equals(response.getCode(), MULITI_RESPONSE)) {
List<MultiPaymentRespDto> multiPaymentRespDtoArrayList = response.getData().getQueryList();
if (null != multiPaymentRespDtoArrayList && multiPaymentRespDtoArrayList.size() > 0) {
int successData = 0;
for (MultiPaymentRespDto multiPaymentRespDto : multiPaymentRespDtoArrayList) {
if (Objects.equals(multiPaymentRespDto.getStatus(), SUCCESS)) {
successData++;
}
}
if (successData >= multiPaymentRespDtoArrayList.size()) {
paySuccess = true;
}
}
}
}else {
//判断当前订单是否存在预支付订单
if (extInfo != null && StringUtils.isNotEmpty(extInfo.getFmId())) {
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest paymentQueryRequest = new PaymentQueryRequest();
paymentQueryRequest.setPartnerId(orderBean.getCompanyId());
paymentQueryRequest.setStoreId(orderBean.getShopId());
paymentQueryRequest.setFmId(extInfo.getFmId());
paymentQueryRequest.setVer("2");
com.freemud.application.sdk.api.base.BaseResponse<PaymentQueryResponse> queryResponseBaseResponse = paymentNewService.query(paymentQueryRequest, LogThreadLocal.getTrackingNo());
//判断预支付订单状态
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), queryResponseBaseResponse.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PAY_GETPRE_MESSAGE_ERROR);
}
//判断当前预支付订单是否已经支付成功
if (ObjectUtils.equals(TradeState.SUCCESS.getCode(), queryResponseBaseResponse.getData().getTradeState())) {
paySuccess = true;
}
}
}
if(!paySuccess){
PaymentCloseUnifiedOrderRequest closeUnifiedOrderRequest = new PaymentCloseUnifiedOrderRequest();
closeUnifiedOrderRequest.setFmId(extInfo.getFmId());
closeUnifiedOrderRequest.setVer("2");
closeUnifiedOrderRequest.setPartnerId(orderBean.getCompanyId());
closeUnifiedOrderRequest.setStoreId(orderBean.getShopId());
com.freemud.application.sdk.api.base.BaseResponse<PaymentCloseUnifiedOrderResponse> cancelNewUnifiedOrder = paymentNewService.cancelNewUnifiedOrder(closeUnifiedOrderRequest, LogThreadLocal.getTrackingNo());
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(), cancelNewUnifiedOrder.getCode())) {
throw new ServiceException(ResponseResult.ORDER_PRE_PAYMENT_CLOSE_FAILED);
}
}
return paySuccess;
}
/**
* 与 closePrePay 待合并
* @param orderBean
*/
private void closeHistoryPrePay(OrderBean orderBean) {
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
......
......@@ -14,6 +14,8 @@
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.pay.CombPayResponse;
import cn.freemud.entities.dto.pay.MultiQueryRequest;
import cn.freemud.entities.dto.pay.MultiQueryRespDto;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -26,11 +28,16 @@ import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface ComPayClient {
// TODO: 21-4-1 待合并
/**
* 统一下单
* 混合支付统一下单
*/
@PostMapping("/payment/application/pay")
CombPayResponse combPay(@RequestBody CombPayRequest combPayRequest, @RequestHeader("partnerId") String partnerId);
/**
* 混合支付查询接口
*/
@PostMapping("/payment/application/query")
MultiQueryRespDto<MultiQueryRespDto.Data> paymentApplicationQuery(MultiQueryRequest multiQueryRequest, @RequestHeader("partnerId") Integer partnerId);
}
......@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
public interface MulitiPaymentClient {
/**
* 统一活动查询接口
* 混合支付退款接口
*/
@PostMapping("/payment/application/refund")
MultiOrderRefundResponse paymentApplicationRefund(MultiOrderRefundRequest multiOrderRefundRequest, @RequestHeader("partnerId") String partnerId);
......
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