Commit 7aea696e by xiaoer.li@freemud.com

Merge branch 'feature/switch' into qa

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
#	assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
#	call-back-service/pom.xml
#	order-application-service/pom.xml
#	order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
#	order-management/pom.xml
#	ordercenter-sdk/pom.xml
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
parents 2e433f1f d1a4fca3
......@@ -145,4 +145,5 @@
| 2.1.2.RELEASE | 活动扣减库存 | 缪晖 | 2020-11-11 |
| 2.1.3-RELEASE | 退款增加自动退款配置的null判断 | 刘鹏飞 | 2020-11-12 |
| 2.1.4-RELEASE | 退款增加自动退款配置的null判断 | 刘鹏飞 | 2020-11-12 |
| 2.1.5-RELEASE | 麦咖啡权益卡金额入机 | 徐康 | 2020-11-23 |
\ No newline at end of file
| 2.1.5-RELEASE | 麦咖啡权益卡金额入机 | 徐康 | 2020-11-23 |
| 2.1.6-RELEASE | hun | 徐康 | 2020-11-23 |
\ No newline at end of file
......@@ -1170,6 +1170,8 @@ public class OrderSdkAdapter {
data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
//发票信息
data.setOrderInvoice(orderInfoReqs.getOrderInvoice());
data.setPayChannelType(orderInfoReqs.getPayChannelType());
data.setPickUpGoodsNo(orderInfoReqs.getPickUpGoodsNo());
//todo:混合支付
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderPayItemCreateReqList())) {
data.setOrderPayItem(this.getOrderItemPayList(orderInfoReqs.getOrderPayItemCreateReqList()));
......@@ -1346,6 +1348,9 @@ public class OrderSdkAdapter {
case "MEMBER_PRICE_DISCOUNT":
type=220;
break;
case "GATHER_SPOT":
type=221;
break;
default:
break;
}
......
......@@ -12,7 +12,6 @@
*/
package com.freemud.sdk.api.assortment.order.response.order;
import com.freemud.application.sdk.api.ordercenter.response.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInvoice;
......@@ -411,13 +410,11 @@ public class QueryOrdersResponse {
private String downstreamThirdOrderCode;
/**
* 混合支付list
*/
//订单支付详情
private List<OrderPayItem> orderPayItem;
private String pickUpGoodsNo;
@NoArgsConstructor
......
......@@ -12,7 +12,6 @@
*/
package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.ordercenter.response.OrderPayItemResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
......@@ -280,12 +279,6 @@ public class QueryOrdersResponseDto {
*/
private BigDecimal weight;
/**
* 混合支付详情
*/
private List<OrderPayItemResp> orderPayItemCreateReqList;
@NoArgsConstructor
@Data
public static class AddDeliveryInfo {
......
package cn.freemud.entities.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.dto SvcComPayRequestDto
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class SvcComPayRequestDto {
private String partnerId;
private String storeId;
}
package cn.freemud.entities.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.dto SvcComPayResoonseDto
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class SvcComPayResponseDto {
private Integer code;
private String message;
private Result result;
@Data
@NoArgsConstructor
static public class Result {
private Boolean value;
}
}
......@@ -161,6 +161,8 @@ public enum ResponseResult {
ORDER_TAKE_OUT_ADDRESS_NOT_VALID("45063", "收货地址校验失败"),
ORDER_PICK_UP_GOOD_NO("45064", "更新取餐码失败"),
ORDER_NOT_CREATE_ERROR("45065", "请不要重复创建订单"),
MULTIORDER__ERRORREFUND("45005", "订单申请退款失败"),
/**
* 支付
......
......@@ -288,6 +288,8 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private AssortmentOpenPlatformIappWxappStoreManager assortmentOpenPlatformIappWxappStoreManager;
@Autowired
private SvcComPayClient svcComPayClient;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
String trackingNo = LogTreadLocal.getTrackingNo();
......@@ -1947,6 +1949,7 @@ public class OrderServiceImpl implements Orderservice {
req.setPartnerId(vo.getPartnerId());
req.setImgUlr(vo.getImgUrl());
req.setMobile(userInfo.getMobile());
req.setOperator(userInfo.getNickName());
//积分订单为4
req.setOrderType((byte) 4);
com.freemud.application.sdk.api.ordercenter.response.BaseResponse<OrderResp> result = orderSdkService.parking_v2_create(req, LogThreadLocal.getTrackingNo());
......@@ -2412,12 +2415,10 @@ public class OrderServiceImpl implements Orderservice {
, String storeId
, String trackingNo) {
boolean tigger = false;
OrderPayResponse orderPayResponse = new OrderPayResponse();
tigger = true;
boolean check = this.checkSvcComPay(orderBean.getCompanyId(), orderBean.getShopId());
//混合支付
//partnerId.contains()
if (svcSwitch && partnerId.contains(orderBean.getCompanyId()) && tigger && StringUtils.isNotBlank(channel)) {
if (check && StringUtils.isNotBlank(channel)) {
log.info("混合支付:");
String partnerPayOvertime = this.getPartnerPayOvertime(orderBean.getCompanyId());
orderPayResponse = comPayOrder(cardCode,orderBean,paymentRequest,partnerPayOvertime,totalAmount.intValue(),channel,storeId,LogThreadLocal.getTrackingNo());
......@@ -2543,33 +2544,8 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getCode(), ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getMessage(), null);
}
/**
* 混合预支付
* @param trackingNo
* @param orderBean
* @param cardCode
* @param orderClient
* @param msg
* @return
*/
private BaseResponse failCombPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient, String msg) {
List<OrderClientType> notCancelOrderClientList = Lists.newArrayList(OrderClientType.APP);
if(!notCancelOrderClientList.contains(orderClient)) {
//失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, StringUtils.join(new String[]{"获取预支付失败", msg}, '-'), trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
}
//svc 卡支付失败
//if (StringUtils.isNotBlank(cardCode)) {
// return ResponseUtil.error(ResponseResultEnum.PAY_BACKEND_CONFIG_ERROR.getCode(), ResponseResultEnum.PAY_BACKEND_CONFIG_ERROR.getMessage(), null);
//}
return ResponseUtil.error(ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getCode(),"获取混合预支付信息失败", null);
}
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime, OrderExtInfoDto orderExtInfoDto) {
OrderPayResponse orderPayResponse = null;
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime ,OrderExtInfoDto orderExtInfoDto) {
OrderPayResponse orderPayResponse;
try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
if (orderExtInfoDto != null && StringUtils.isNotBlank(orderExtInfoDto.getStationId())) {
......@@ -3459,4 +3435,28 @@ public class OrderServiceImpl implements Orderservice {
// // TODO: 2019/9/10 hubowen mq推送变更
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//}
/**
* 获取混合支付是否开启
* @param partnerId
* @return
*/
private boolean checkSvcComPay(String partnerId,String storeId) {
SvcComPayRequestDto requestDto = new SvcComPayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
SvcComPayResponseDto query = null;
for (int i=0;i<3;i++) {
query = svcComPayClient.query(requestDto);
if (query!=null) break;
}
if (query==null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
return false;
}
if (partnerId.equals(query.getResult().getValue())) {
return true;
}
else {
return false;
}
}
}
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.SvcComPayRequestDto;
import cn.freemud.entities.dto.SvcComPayResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.service.thirdparty SvcClient
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@FeignClient(name="payment-center-management", url = "${saas.svc.switch.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcComPayClient {
@PostMapping("/paymentmanager/partnerSetting/queryAssociationPaymentFlagPartnerSetting")
SvcComPayResponseDto query(SvcComPayRequestDto svcComPayRequestDto);
}
......@@ -167,11 +167,9 @@ public class PaymentHandle {
throw new OrderServiceException(ResponseResult.REFUND_EXCEPTION);
}
List<MultiOrderRefundResponse.RefundPlatformResponse> refundPlatformResponseList = multiOrderRefundResponse.getData().refundPlatformResponseList;
refundPlatformResponseList = refundPlatformResponseList.stream().filter(m -> !m.getEbcode().equalsIgnoreCase("10102")).collect(Collectors.toList());
if(null != refundPlatformResponseList && refundPlatformResponseList.size()>0){
redisCache.save(RedisUtil.getPaymentTransIdSequenceKey(refundPlatformResponseList.get(0).getTransId()),orderBean.getOid(),1L,TimeUnit.DAYS);
}
return handlePayRefundResponse(refundStatus,multiOrderRefundRequest.getRefundTradeNo());
}
}
......@@ -87,4 +87,5 @@
| 1.3.17.RELEASE | 集点推送改造 | 梁崇福 | 2020-10-28 |
| 1.3.18.RELEASE | 麦咖啡加料 | 徐康 | 2020-10-30 |
| 1.3.20.RELEASE | 麦咖啡权益卡金额入机 | 徐康 | 2020-11-23 |
| 1.3.21.RELEASE | 混支付 | 徐康 | 2020-11-26 |
......@@ -87,5 +87,10 @@ public class ParkingOrderCreateReq {
*/
private Byte orderType;
/**
* 操作人
*/
private String operator;
}
package cn.freemud.entities.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.dto SvcComPayRequestDto
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class SvcComPayRequestDto {
private String partnerId;
private String storeId;
}
package cn.freemud.entities.dto;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.entities.dto SvcComPayResoonseDto
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class SvcComPayResponseDto {
private Integer code;
private String message;
private Result result;
@Data
@NoArgsConstructor
static public class Result {
private Boolean value;
}
}
......@@ -156,6 +156,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private ActivityService activityService;
@Autowired
private RedisCache redisCache;
@Autowired
private SvcComPayClient svcComPayClient;
@Autowired
private DeliveryFactory deliveryFactory;
......@@ -1670,30 +1672,49 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer svcTotalAmount = amount1+vamount;
//获取实际配送费
Integer deliveryAmount = 0;
Integer svcPayAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
//Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount;
}
if (svcTotalAmount>0 && svcTotalAmount>orderAmount) {
svcPayAmount = orderAmount;
shoppingCartGoodsResponseVo.setTotalAmount(0L);
boolean check = this.checkSvcComPay(partnerId, storeId);
if (check) {
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer svcTotalAmount = amount1+vamount;
//获取实际配送费
Integer deliveryAmount = 0;
Integer svcPayAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
//Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount;
}
if (svcTotalAmount>0 && svcTotalAmount>orderAmount) {
svcPayAmount = orderAmount;
shoppingCartGoodsResponseVo.setTotalAmount(0L);
}
else if (svcTotalAmount>0 && svcTotalAmount<=orderAmount) {
svcPayAmount = svcTotalAmount;
shoppingCartGoodsResponseVo.setTotalAmount((orderAmount.longValue()-svcPayAmount.longValue()));
}
BigDecimal bigDecimal = new BigDecimal(svcPayAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
else if (svcTotalAmount>0 && svcTotalAmount<=orderAmount) {
svcPayAmount = svcTotalAmount;
shoppingCartGoodsResponseVo.setTotalAmount((orderAmount.longValue()-svcPayAmount.longValue()));
else {
//获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount;
}
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
}
BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
BigDecimal bigDecimal = new BigDecimal(svcPayAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
/**
......@@ -2077,4 +2098,28 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
/**
* 获取混合支付是否开启
* @param partnerId
* @return
*/
private boolean checkSvcComPay(String partnerId,String storeId) {
SvcComPayRequestDto requestDto = new SvcComPayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setStoreId(storeId);
SvcComPayResponseDto query = null;
for (int i=0;i<3;i++) {
query = svcComPayClient.query(requestDto);
if (query!=null) break;
}
if (query==null || !ResponseResult.SUCCESS.getCode().equals(query.getCode())) {
return false;
}
if (partnerId.equals(query.getResult().getValue())) {
return true;
}
else {
return false;
}
}
}
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.SvcComPayRequestDto;
import cn.freemud.entities.dto.SvcComPayResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.service.thirdparty SvcClient
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/27
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@FeignClient(name="payment-center-management", url = "${saas.svc.switch.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcComPayClient {
@PostMapping("/paymentmanager/partnerSetting/queryAssociationPaymentFlagPartnerSetting")
SvcComPayResponseDto query(SvcComPayRequestDto svcComPayRequestDto);
}
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