Commit f4a1a80f by 胡敬轩

Merge remote-tracking branch 'remotes/origin/feature/Ka2.0.74-0413-0421-分账券'

parents 39c32f72 358d520d
......@@ -21,10 +21,8 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.pay.OrderPayResponse;
import cn.freemud.entities.dto.pay.PayProductDto;
import cn.freemud.entities.dto.pay.UnifiedOrderCom;
import cn.freemud.entities.dto.pay.UnifiedOrderRequest;
import cn.freemud.entities.dto.order.UnifiedPayResponseDto;
import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
......@@ -4023,4 +4021,14 @@ public class OrderAdapter {
return type;
}
public List<SvcPayItem> convertSvcPayItem(UnifiedPayResponseDto codePayResponse,String cardCode){
List<SvcPayItem> payItems = new ArrayList<>();
SvcPayItem payItem = new SvcPayItem();
payItem.setCardCode(cardCode);
payItem.setSvcTransId(codePayResponse.getPayTransId());
payItem.setTransId(codePayResponse.getFmId());
payItems.add(payItem);
return payItems;
}
}
package cn.freemud.entities;
public class EdenResponse<T> {
private static final String SUCCESSCODE ="200";
protected String statusCode;
protected String message;
protected T result;
public EdenResponse() {
this.statusCode = SUCCESSCODE;
}
public EdenResponse(String statusCode) {
this.statusCode = statusCode;
}
public EdenResponse(String statusCode, String message) {
this.statusCode = statusCode;
this.message = message;
}
public EdenResponse(String ver, String statusCode, T result) {
this.statusCode = statusCode;
this.message = message;
this.result = result;
}
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public T getResult() {
return this.result;
}
public void setResult(T result) {
this.result = result;
}
}
......@@ -20,7 +20,7 @@ public class UnifiedPayResponseDto {
private Integer resultCode;
private String resultMsg;
private String fmId;
private String payTransId;
private String payTransId;//svc交易记录表id
private String payCode;
private String userId;
private String originalChannel;
......
......@@ -97,6 +97,12 @@ public class OrderPayResponse {
*/
private String channelPayId;
/**
* 储值卡流水明细 储值卡消费结果通知储值交易服务
*/
private List<SvcPayItem> svcPayItems;
@NoArgsConstructor
@Data
public static class PayOrderBean {
......@@ -131,5 +137,4 @@ public class OrderPayResponse {
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderPayResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/25 17:10
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.dto.pay;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
//sdk 类迁移
@NoArgsConstructor
@Data
@ToString
public class SvcPayItem {
/**
* 支付流水号
*/
private String transId;
/**
* 卡号
*/
private String cardCode;
/**
* svc交易记录表id
*/
private String svcTransId;
}
package cn.freemud.entities.dto.pay.svc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Auther: Chenbin
* @Description:
* @CreateDate: Created in 10:39 2020/3/19
* @ModifyDate:
*/
@Data
public class ConsumeHistoryCreateRequest {
@ApiModelProperty("商户编号")
private String partnerId;
@ApiModelProperty("订单号")
private String orderCode;
@ApiModelProperty("用户id")
private String memberId;
@ApiModelProperty("门店")
private String storeId;
@ApiModelProperty("储值卡流水号")
private List<String> cardRequestNo;
}
......@@ -12,9 +12,12 @@
*/
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data;
import lombok.ToString;
import java.util.List;
@Data
@ToString
public class NewPaysuccessNoticeMessage {
......@@ -86,4 +89,9 @@ public class NewPaysuccessNoticeMessage {
* 100 是成功
*/
private String resultCode;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> payItems;
}
......@@ -12,9 +12,12 @@
*/
package cn.freemud.entities.vo;
import cn.freemud.entities.dto.pay.SvcPayItem;
import lombok.Data;
import lombok.ToString;
import java.util.List;
@Data
@ToString
public class PaysuccessNoticeMessage {
......@@ -78,4 +81,9 @@ public class PaysuccessNoticeMessage {
* 消息来源
*/
private Integer source;
/**
* 储值卡流水明细
*/
private List<SvcPayItem> svcPayItems;
}
......@@ -8,8 +8,13 @@ import cn.freemud.entities.bo.CreateOrderBONew;
import cn.freemud.entities.db.OpenPlatformOrderConfig;
import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.order.CreateCashierOrderDto;
import cn.freemud.entities.dto.pay.SvcPayItem;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.order.*;
import cn.freemud.entities.vo.order.CashierCheckResponseVo;
import cn.freemud.entities.vo.order.GetOrderConfigRequestVo;
import cn.freemud.entities.vo.order.PaymentConfigVo;
import cn.freemud.entities.vo.order.PlugInParameter;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.service.handle.SaasOrderHandle;
......@@ -17,23 +22,24 @@ import cn.freemud.management.thirdparty.OrderCallbackClient;
import cn.freemud.manager.OpenPlatformOrderConfigManager;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.thirdparty.SvcTransactionClient;
import cn.freemud.service.universal.factory.CreateOrderServiceFactory;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties;
import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo;
import com.freemud.application.sdk.api.ordercenter.enums.BizTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.MarketTypeEnum;
import com.freemud.application.sdk.api.ordercenter.enums.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -45,6 +51,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
......@@ -139,6 +146,8 @@ public class OrderAdapterServiceImpl {
private PayServiceImpl payService;
@Autowired
private OpenPlatformOrderConfigManager openPlatformOrderConfigManager;
@Autowired
private SvcTransactionClient svcTransactionClient;
//获取下单实现对象
private OrderFactoryService getCreateOrderBean(AssortmentCustomerInfoVo assortmentCustomerInfoVo,CreateOrderVo createOrderVo){
......@@ -354,6 +363,11 @@ public class OrderAdapterServiceImpl {
break;
}
}
//储值卡订单消费后通知储值交易服务
if(CollectionUtils.isNotEmpty(message.getSvcPayItems())){
sendSvcPayInfoToSvcTransaction(message.getSvcPayItems(),orderBean.getCompanyId(),orderBean.getOid(),orderBean.getUserId(),orderBean.getShopId());
}
return result;
} catch (Exception e) {
throw e;
......@@ -433,4 +447,21 @@ public class OrderAdapterServiceImpl {
return configStr;
}
private void sendSvcPayInfoToSvcTransaction(List<SvcPayItem> svcPayItems,String partnerId,String orderCode,String memberId,String storeId){
ConsumeHistoryCreateRequest request = new ConsumeHistoryCreateRequest();
try {
request.setPartnerId(partnerId);
request.setOrderCode(orderCode);
request.setMemberId(memberId);
request.setStoreId(storeId);
List<String> svcTransIds = svcPayItems.stream().map(SvcPayItem::getSvcTransId).collect(Collectors.toList());
request.setCardRequestNo(svcTransIds);
svcTransactionClient.consumeHistoryCreate(request);
}catch (Exception e){
ErrorLog.printErrorLog("sendSvcPayInfoToSvcTransaction","paySuccessCallback",request,e);
}
}
}
......@@ -630,6 +630,7 @@ public class OrderServiceImpl implements Orderservice {
message.setRuleId(newMessage.getRuleId());
message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setThirdPartTradeNo(message.getThirdPartTradeNo());
message.setSvcPayItems(newMessage.getPayItems());
String res = orderAdapterService.paySuccessCallback(message);
JSONObject jsonObject = JSONObject.parseObject(res);
if (jsonObject.containsKey("code")) {
......
......@@ -240,6 +240,7 @@ public class PayServiceImpl {
message.setPlatform_coupon(0);
message.setMerchant_coupon(0);
message.setSource(PaySuccessSource.OUTSIDE.getSource());
message.setSvcPayItems(orderPayResponse.getSvcPayItems());
orderAdapterService.paySuccessCallback(message);
return createOrderResponse;
}
......@@ -709,6 +710,18 @@ public class PayServiceImpl {
for (CombPayResponse.PayPlatform pt : payPlatforms) {
if (!PayChannelType.SVC.getEbcode().equals(pt.getEbCode())) {
cashPay = pt;
}else{
SvcPayItem payItem = new SvcPayItem();
payItem.setCardCode(cardNo);
payItem.setSvcTransId(pt.getPlatformTradeNo());
payItem.setTransId(pt.getTransId());
if(CollectionUtils.isEmpty(orderPayResponse.getSvcPayItems())){
List<SvcPayItem> svcPayItems = new ArrayList<>();
svcPayItems.add(payItem);
orderPayResponse.setSvcPayItems(svcPayItems);
}else{
orderPayResponse.getSvcPayItems().add(payItem);
}
}
orderPayResponse.setFmId(pt.getTransId());
orderPayResponse.setPayTransId(pt.getTransId());
......@@ -809,6 +822,7 @@ public class PayServiceImpl {
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayChannelType(payChannelType);
orderPayResponse.setSvcPayItems(orderAdapter.convertSvcPayItem(codePayResponse,cardCode));
}
return orderPayResponse;
}
......
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.entities.EdenResponse;
import cn.freemud.entities.dto.pay.svc.ConsumeHistoryCreateRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Auther: hujx
* @Description: 储值交易服务
* @CreateDate: Created in 10:31 2020/3/19
* @ModifyDate:
*/
@FeignClient(name = "transaction-svc-application", url = "${fm.svcTransaction.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcTransactionClient {
/**
* 储值卡订单消费后通知储值交易服务
*/
@PostMapping(value = "/svc/rechargeHistory/reduce")
@LogIgnoreFeign(logMessage="consumeHistoryCreate")
EdenResponse consumeHistoryCreate(ConsumeHistoryCreateRequest request);
}
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