Commit bb163111 by ping.wu

Merge branches 'feature/20210830_礼品卡支付_wuping' and 'qa' of…

Merge branches 'feature/20210830_礼品卡支付_wuping' and 'qa' of http://gitlab.freemud.com/order-group-application/order-group into qa
parents 6063e776 21b26916
......@@ -4132,6 +4132,12 @@ public class OrderAdapter {
payPlatformVO.setAmount(0L);
platforms.add(payPlatformVO);
payPlatformVO = new PayPlatformVO();
payPlatformVO.setClientCode(PayChannelType.GIFTCARD.getEbcode());
payPlatformVO.setEbcode(PayChannelType.GIFTCARD.getEbcode());
payPlatformVO.setAmount(0L);
platforms.add(payPlatformVO);
String ebcode = PayChannelType.getByIndex(Byte.parseByte(channel)).getEbcode();
payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(0L);
......
package cn.freemud.entities.dto.pay.svc;
import lombok.Data;
@Data
public class CardSimpleInfo {
private Integer amount;
private String applyId;
private String cardCode;
private String cardName;
private Integer vamount;
//储值卡类型:0一次性卡(礼品卡),3重复使用卡(储值卡),默认3"
private Integer applyType;
}
package cn.freemud.entities.dto.pay.svc;
import lombok.Data;
import java.util.List;
@Data
public class SVCCardAmountRequestDto {
private String partnerId;
private List<String> cardCodes;
}
package cn.freemud.entities.dto.pay.svc;
import lombok.Data;
import java.util.List;
@Data
public class SVCCardAmountResponseDto {
private List<CardSimpleInfo> cardSimpleInfos;
}
package cn.freemud.entities.dto.user;
import lombok.Data;
@Data
public class GetSvcInfoByMemberIdResponseVo {
// private String memberId;
private String cardCode;
private Integer statusFlag;
private String createTime;
}
......@@ -14,4 +14,7 @@ public class StatisticalScoreRequestVo {
// @ApiModelProperty("是否查询即将到期积分{0:否,1:是}")
private Integer status;
//卡类型(-1:查询全部 0:礼品卡,3:储值卡(默认))")
private Integer applyType;
}
......@@ -225,6 +225,8 @@ public class CreateOrderVo {
*/
private String cardCode;
private List<String> cardCodes;
/**
* 扫脸支付使用
*/
......
......@@ -2,6 +2,7 @@ package cn.freemud.entities.vo.encircle;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
......@@ -51,4 +52,6 @@ public class CreateReserveOrderVo extends EncircleReserveBaseVo{
* svc 卡支付使用
*/
private String cardCode;
private List<String> cardCodes;
}
......@@ -26,6 +26,9 @@ import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.*;
import cn.freemud.entities.dto.user.CustomerPropertyBaseResponse;
import cn.freemud.entities.dto.user.GetSvcInfoByMemberIdResponseVo;
import cn.freemud.entities.dto.user.StatisticalScoreRequestVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
......@@ -36,10 +39,7 @@ import cn.freemud.service.CouponService;
import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreBaseApiClient;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
......@@ -108,8 +108,11 @@ public class CheckOrder {
@Autowired
private MemberCenterService memberCenterService;
//会员SDK
// @Autowired
// private MemberPropertyService memberPropertyService;
@Autowired
private MemberPropertyService memberPropertyService;
private CustomerPropertyClient customerPropertyClient;
@Autowired
private ShoppingCartClient shoppingCartClient;
// @Autowired
......@@ -151,8 +154,15 @@ public class CheckOrder {
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
Set<String> cardCodes = new HashSet<>();
if(StringUtils.isNotEmpty(createOrderVo.getCardCode())){
cardCodes.add(createOrderVo.getCardCode());
}
if(CollectionUtils.isNotEmpty(createOrderVo.getCardCodes())){
cardCodes.addAll(createOrderVo.getCardCodes());
}
//校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), createOrderVo.getCardCode());
checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), cardCodes);
createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto;
......@@ -166,7 +176,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.NOT_LOGIN);
}
//校验会员svc卡信息
checkCardCode(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), cardCode);
// checkCardCode(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), cardCode);
return userLoginInfoDto;
}
......@@ -1057,23 +1067,30 @@ public class CheckOrder {
}
public void checkCardCode(String partnerId, String memberId, String cardCode) {
if (StringUtils.isBlank(cardCode)) {
/**
* 校验卡是否是该会员的
*/
public void checkCardCode(String partnerId, String memberId, Set<String> cardCodes) {
if (CollectionUtils.isEmpty(cardCodes)) {
return;
}
StatisticalPropertyRequest request = new StatisticalPropertyRequest();
StatisticalScoreRequestVo request = new StatisticalScoreRequestVo();
request.setPartnerId(partnerId);
request.setMemberId(memberId);
BaseResponse<List<GetSvcInfoByMemberIdResponse>> responseDTO = memberPropertyService.getSvcInfoByMemberId(request, LogThreadLocal.getTrackingNo());
request.setApplyType(-1);
CustomerPropertyBaseResponse<List<GetSvcInfoByMemberIdResponseVo>> responseDTO = customerPropertyClient.getMemberCards(request);
if (!ResponseResult.SUCCESS.getCode().equals(responseDTO.getCode()) || responseDTO.getData() == null
|| responseDTO.getData().size() == 0) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
//svc卡无效
boolean b = true;
for (GetSvcInfoByMemberIdResponse getSvcInfoByMemberIdResponse : responseDTO.getData()) {
if (cardCode.equals(getSvcInfoByMemberIdResponse.getCardCode()) && getSvcInfoByMemberIdResponse.getStatusFlag() == 0) {
b = false;
for (GetSvcInfoByMemberIdResponseVo getSvcInfoByMemberIdResponse : responseDTO.getData()) {
for (String cardCode : cardCodes){
if (cardCode.equals(getSvcInfoByMemberIdResponse.getCardCode()) && getSvcInfoByMemberIdResponse.getStatusFlag() == 0) {
b = false;
break;
}
}
}
if (b) {
......
......@@ -6,6 +6,8 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.UpdateReserveOrderResponseVo;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.promotion.CouponPromotionDto;
import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
......@@ -24,6 +26,7 @@ import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.service.thirdparty.SvcAppClient;
import cn.freemud.utils.AmountUtils;
import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil;
......@@ -103,6 +106,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient;
@Autowired
private OrderCommonService orderCommonService;
@Autowired
private ShoppingCartClient shoppingCartClient;
......@@ -464,25 +469,26 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
}
Integer orderAmount = previewOrderInfoVo.getAmount().intValue();
String trackingNo = LogThreadLocal.getTrackingNo();
SVCCardAmountRequest request = new SVCCardAmountRequest();
SVCCardAmountRequestDto request = new SVCCardAmountRequestDto();
request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo);
BaseResponse<SVCCardAmountResponseDto> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
if (response.getResult() == null || CollectionUtils.isEmpty(response.getResult().getCardSimpleInfos())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().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();
previewOrderInfoVo.setAmount(0L);
// TODO: 21-8-30 围餐礼品卡暂不支持
previewOrderInfoVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
......@@ -497,8 +503,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
if(StringUtils.isBlank(orderId)){
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
Set<String> cardCodes = new HashSet<>();
if(StringUtils.isNotBlank(createReserveOrderVo.getCardCode())){
cardCodes.add(createReserveOrderVo.getCardCode());
}
// 校验svc卡
checkOrder.checkCardCode(assortmentCustomerInfoVo.getPartnerId(),assortmentCustomerInfoVo.getMemberId(), createReserveOrderVo.getCardCode());
checkOrder.checkCardCode(assortmentCustomerInfoVo.getPartnerId(),assortmentCustomerInfoVo.getMemberId(), cardCodes);
CreateOrderResponseVo orderResponseVo = null;
//拉取订单详细信息
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
......
......@@ -703,48 +703,48 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
}
public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest();
String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
request.setCode(cardCode);
request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount());
request.setTransId(transId);
request.setStationId("1");
request.setOperatorId("1");
request.setVer("2");
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
return null;
}
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) {
return null;
}
//svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
return null;
}
OrderPayResponse orderPayResponse = new OrderPayResponse();
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
return orderPayResponse;
}
// public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
// CodePayRequest request = new CodePayRequest();
// String partnerId = orderBean.getCompanyId();
// request.setBody(orderBean.getShopName());
// request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
// request.setCode(cardCode);
// request.setPartnerId(partnerId);
// request.setStoreId(orderBean.getShopId());
// request.setAmount(orderBean.getAmount());
// request.setTransId(transId);
// request.setStationId("1");
// request.setOperatorId("1");
// request.setVer("2");
// SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
// svcRequest.setPartnerId(partnerId);
// svcRequest.setCardCodes(Arrays.asList(cardCode));
// //查询svc卡余额
// com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
// if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
// || svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
// return null;
// }
// Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
// Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
// if (amount + vamount < orderBean.getAmount()) {
// return null;
// }
// //svc卡支付
// com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
// if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// return null;
// }
// OrderPayResponse orderPayResponse = new OrderPayResponse();
// CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
// orderPayResponse.setFmId(codePayResponse.getFmId());
// orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// return orderPayResponse;
// }
private PaymentRequest orderBodyConvertToPaymentBody(String openId, String partnerId, String appId, String payCode) {
//设置支付信息
......
......@@ -33,6 +33,8 @@ import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.ecology.SendMessageRequest;
import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.pay.*;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import cn.freemud.entities.dto.product.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup;
......@@ -262,6 +264,8 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private SvcAppClient svcAppClient;
@Autowired
private ActivityApplicationClient activityApplicationClient;
@Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
......@@ -2909,27 +2913,30 @@ public class OrderServiceImpl implements Orderservice {
request.setOperatorId("1");
request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
SVCCardAmountRequestDto svcRequest = new SVCCardAmountRequestDto();
svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
BaseResponse<SVCCardAmountResponseDto> svcCardAmountResponseBaseResponse = svcAppClient.batchQueryCardAmount(svcRequest);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
|| svcCardAmountResponseBaseResponse.getResult() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse;
}
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer amount = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos().get(0).getVamount();
Integer applyType = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos().get(0).getApplyType();
applyType = applyType == null ? 3 : applyType;
String payMode = applyType == 3 ? PayChannelType.SVC.getEbcode() : PayChannelType.GIFTCARD.getEbcode();
if (amount + vamount < orderBean.getAmount()) {
orderPayResponse.setMsg("svc卡余额不足");
orderPayResponse.setMsg("卡余额不足");
return orderPayResponse;
}
//svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo);
if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage());
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "卡支付异常" : responseBase.getMessage());
} else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId());
......@@ -2938,7 +2945,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayMode(PayChannelType.SVC.getEbcode());
orderPayResponse.setPayMode(payMode);
}
return orderPayResponse;
}
......@@ -3619,60 +3626,111 @@ public class OrderServiceImpl implements Orderservice {
CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
CombPayResponse combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) {
// AppLogUtil.debugLotsParams("混合支付返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(combPayRequest), JSONObject.toJSONString(combPayResponse));
orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
return orderPayResponse;
}
// Integer svcAmount = 0;
// Integer svcVAmount = 0;
List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList();
if (payPlatforms.size() == 0) {
orderPayResponse.setMsg("混合支付:生成预支付失败");
return orderPayResponse;
}
//生成预支付参数
CombPayResponse.PayPlatform cashPay = payPlatforms
.stream()
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
//现金+svc 现金
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayMode(orderPayResponse.getPayMode());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setMsg("success");
boolean cashPay1 = false;
String transId = "";
for (CombPayResponse.PayPlatform pt : payPlatforms) {
if(!PayChannelType.SVC.getEbcode().equals(pt.getEbCode()) && !PayChannelType.GIFTCARD.getEbcode().equals(pt.getEbCode())){
cashPay1 = true;
transId = pt.getTransId();
orderPayResponse.setFmId(pt.getFmTradeNo());
}else {
orderPayResponse.setFmId(pt.getTransId());
}
orderPayResponse.setPayTransId(pt.getTransId());
orderPayResponse.setPayMode(pt.getEbCode());
orderPayResponse.setPayEbcode(pt.getEbCode());
orderPayResponse.setPayId("");
PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setStoreId(storeId);
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(combPayRequest.getPartner_id());
payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
orderPayResponse.getPayItem().add(payItem);
CombPayResponse.PayPlatform.PayOrderBean payOrderBean = pt.getPayOrder();
if (null != payOrderBean) {
OrderPayResponse.PayOrderBean payBean = new OrderPayResponse.PayOrderBean();
payBean.setAppid(payOrderBean.getAppId());
payBean.setNonceStr(payOrderBean.getNonceStr());
payBean.setPackageX(payOrderBean.getPackageX());
payBean.setSign(payOrderBean.getPaySign());
payBean.setSignType(payOrderBean.getSignType());
payBean.setTimestamp(payOrderBean.getTimeStamp());
payBean.setAliPayOrder(payOrderBean.getAliPayOrder());
orderPayResponse.setPayOrder(payBean);
}
}
if (payPlatforms.size() > 1) {
orderPayResponse.setPayMode(PayChannelType.COMB.getEbcode());
}
if(cashPay1){
//隐射关系
redisCache.save(RedisUtil.getPaymentTransIdOrderKey(cashPay.getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
redisCache.save(RedisUtil.getPaymentTransIdOrderKey(transId), orderBean.getOid(), 1L, TimeUnit.DAYS);
//加入轮训队列
putDelMq(orderBean.getCompanyId(), storeId, orderPayResponse.getFmId(), orderBean.getOid(), PayChannelType.getByEbcode(cashPay.getEbCode()).getIndex().intValue());
putDelMq(orderBean.getCompanyId(), storeId, orderPayResponse.getFmId(), orderBean.getOid(), PayChannelType.getByEbcode(transId).getIndex().intValue());
return orderPayResponse;
} else {//单svc
CombPayResponse.PayPlatform svcPay = payPlatforms
.stream()
.filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
.orElse(null);
orderPayResponse.setFmId(svcPay.getTransId());
orderPayResponse.setPayTransId(svcPay.getTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayMode(PayChannelType.SVC.getEbcode());
for (CombPayResponse.PayPlatform pt : payPlatforms) {
PayItem payItem = new PayItem();
payItem.setFmTradeNo(pt.getFmTradeNo());
payItem.setStoreId(storeId);
payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
payItem.setTransId(pt.getTransId());
payItem.setPartnerId(combPayRequest.getPartner_id());
payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
orderPayResponse.getPayItem().add(payItem);
}
}
// return orderPayResponse;
//生成预支付参数
// CombPayResponse.PayPlatform cashPay = payPlatforms.stream()
// .filter(f -> (!PayChannelType.SVC.getEbcode().equals(f.getEbCode()) && !PayChannelType.GIFTCARD.getEbcode().equals(f.getEbCode()))).findFirst()
// .orElse(null);
// //现金+svc 现金
// if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
// orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId);
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayMode(orderPayResponse.getPayMode());
// //隐射关系
// redisCache.save(RedisUtil.getPaymentTransIdOrderKey(cashPay.getTransId()), orderBean.getOid(), 1L, TimeUnit.DAYS);
// //加入轮训队列
// putDelMq(orderBean.getCompanyId(), storeId, orderPayResponse.getFmId(), orderBean.getOid(), PayChannelType.getByEbcode(cashPay.getEbCode()).getIndex().intValue());
// return orderPayResponse;
// } else {//单svc
// CombPayResponse.PayPlatform svcPay = payPlatforms
// .stream()
// .filter(f -> PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst()
// .orElse(null);
// orderPayResponse.setFmId(svcPay.getTransId());
// orderPayResponse.setPayTransId(svcPay.getTransId());
// orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
// orderPayResponse.setOpenId(paymentRequest.getOpenId());
// orderPayResponse.setPartnerId(orderBean.getCompanyId());
// orderPayResponse.setOrderId(orderBean.getOid());
// orderPayResponse.setPayMode(PayChannelType.SVC.getEbcode());
// for (CombPayResponse.PayPlatform pt : payPlatforms) {
// PayItem payItem = new PayItem();
// payItem.setFmTradeNo(pt.getFmTradeNo());
// payItem.setStoreId(storeId);
// payItem.setPayChannelType(PayChannelType.getByEbcode(pt.getEbCode()).getIndex().intValue());
// payItem.setPayChannelName(PayChannelType.getByEbcode(pt.getEbCode()).getName());
// payItem.setTransId(pt.getTransId());
// payItem.setPartnerId(combPayRequest.getPartner_id());
// payItem.setPayAmount(new BigDecimal(pt.getPayAmount()));
// orderPayResponse.getPayItem().add(payItem);
// }
// }
return orderPayResponse;
}
......
......@@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@FeignClient(name = "customer-property-service", url = "${customer.property.service.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomerPropertyClient {
......@@ -21,4 +23,9 @@ public interface CustomerPropertyClient {
@PostMapping({"/propertyservice/score/statisticalScore"})
CustomerPropertyBaseResponse<StatislScoreResponse> statisticalScore(StatisticalScoreRequestVo request);
//查询用户储值卡或会员卡
@LogIgnoreFeign(logMessage="getMemberCards")
@PostMapping({"/propertyservice/card/getMemberCards"})
CustomerPropertyBaseResponse<List<GetSvcInfoByMemberIdResponseVo>> getMemberCards(StatisticalScoreRequestVo request);
}
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.LogIgnoreFeign;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountRequestDto;
import cn.freemud.entities.dto.pay.svc.SVCCardAmountResponseDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name="fm-svc-app", url = "${saas.svc.app.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcAppClient {
//批量查询卡余额
@PostMapping(value = "/svc/card/batch-query-card-amount")
@LogIgnoreFeign(logMessage = "batchQueryCardAmount")
BaseResponse<SVCCardAmountResponseDto> batchQueryCardAmount(SVCCardAmountRequestDto svcComPayRequestDto);
}
......@@ -13,7 +13,9 @@ public enum PayChannelType {
COMB((byte)4,"10212","混合支付","comb"),
USVCP((byte)5,"10556", "电子风味卡支付","usvcp"),
ZERO((byte)6,"100000", "0元支付","zero"),
TIKTOKPAY((byte)7,"10066", "抖音支付","tiktokpay");
TIKTOKPAY((byte)7,"10066", "抖音支付","tiktokpay"),
GIFTCARD((byte)8,"10199","礼品卡","giftCard"),
;
private Byte index;
private String ebcode;
......@@ -36,6 +38,6 @@ public enum PayChannelType {
return payType;
}
}
return null;
return WECHAT;
}
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
@Data
public class CardSimpleInfo {
private Integer amount;
private String applyId;
private String cardCode;
private String cardName;
private Integer vamount;
//储值卡类型:0一次性卡(礼品卡),3重复使用卡(储值卡),默认3"
private Integer applyType;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
import java.util.List;
@Data
public class SVCCardAmountRequest {
private String partnerId;
private List<String> cardCodes;
}
package cn.freemud.entities.dto.pay;
import lombok.Data;
import java.util.List;
@Data
public class SVCCardAmountResponse {
private List<CardSimpleInfo> cardSimpleInfos;
}
......@@ -10,6 +10,8 @@ import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.pay.SVCCardAmountRequest;
import cn.freemud.entities.dto.pay.SVCCardAmountResponse;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum;
......@@ -20,6 +22,7 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.service.thirdparty.SvcAppClient;
import cn.freemud.service.thirdparty.SvcComPayClient;
import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.RedisLock;
......@@ -28,9 +31,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState;
......@@ -105,7 +105,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
private CollageOrderBaseServiceImpl collageOrderBaseService;
@Autowired
private PaymentNewService paymentNewService;
private SvcAppClient svcAppClient;
@Autowired
private SvcComPayClient svcComPayClient;
......@@ -1347,28 +1347,30 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo);
BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
if (response.getResult() == null || CollectionUtils.isEmpty(response.getResult().getCardSimpleInfos())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
//获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
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();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
Integer applyType = response.getResult().getCardSimpleInfos().get(0).getApplyType();
applyType = applyType == null ? 3 : 0;
String svcDesc = applyType == 3 ? "储值卡支付¥" : "礼品卡支付¥";
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);
shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
}
/**
......
......@@ -31,6 +31,9 @@ import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto;
import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto;
import cn.freemud.entities.dto.pay.CardSimpleInfo;
import cn.freemud.entities.dto.pay.SVCCardAmountRequest;
import cn.freemud.entities.dto.pay.SVCCardAmountResponse;
import cn.freemud.entities.dto.shoppingCart.SendPoint;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
......@@ -69,9 +72,6 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress
import com.freemud.application.sdk.api.membercenter.response.StatisticalScoreResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.paymentcenter.client.request.SVCCardAmountRequest;
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
......@@ -141,7 +141,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private PaymentNewService paymentNewService;
private SvcAppClient svcAppClient;
@Autowired
private MemberCenterService memberCenterService;
@Autowired
......@@ -1327,11 +1327,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
SVCCardAmountRequest svcCardAmountRequest = new SVCCardAmountRequest();
svcCardAmountRequest.setCardCodes(cardCodes);
svcCardAmountRequest.setPartnerId(partnerId);
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcCardAmountRequest, LogThreadLocal.getTrackingNo());
List<SVCCardAmountResponse.CardSimpleInfo> cardSimpleInfos = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos();
BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = svcAppClient.batchQueryCardAmount(svcCardAmountRequest);
List<CardSimpleInfo> cardSimpleInfos = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos();
List<GetMemberInfoResponseVo.Card> cards = cardSimpleInfos.stream().map(each -> convert2MemberSvcCard(each)).collect(toList());
responseData.setCards(cards);
}
return ResponseUtil.success(responseData);
}
......@@ -1391,7 +1390,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
private GetMemberInfoResponseVo.Card convert2MemberSvcCard(SVCCardAmountResponse.CardSimpleInfo each) {
private GetMemberInfoResponseVo.Card convert2MemberSvcCard(CardSimpleInfo each) {
GetMemberInfoResponseVo.Card card = new GetMemberInfoResponseVo.Card();
card.setAmount(each.getAmount());
card.setApplyId(each.getApplyId());
......@@ -2386,18 +2385,21 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo);
BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
if (response.getResult() == null || CollectionUtils.isEmpty(response.getResult().getCardSimpleInfos())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
boolean check = this.checkSvcComPay(partnerId, storeId);
Integer applyType = response.getResult().getCardSimpleInfos().get(0).getApplyType();
applyType = applyType == null ? 3 : 0;
String svcDesc = applyType == 3 ? "储值卡支付¥" : "礼品卡支付¥";
if (check) {
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
Integer svcTotalAmount = amount1 + vamount;
//获取实际配送费
Integer deliveryAmount = 0;
......@@ -2417,22 +2419,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
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);
shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} 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();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().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);
shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
}
}
......@@ -2452,24 +2454,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo);
BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
if (response.getData() == null || response.getData().getData() == null || response.getData().getData().getCardSimpleInfos().size() > 1) {
if (response.getResult() == null || CollectionUtils.isEmpty(response.getResult().getCardSimpleInfos())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
boolean check = this.checkSvcComPay(partnerId, storeId);
Integer applyType = response.getResult().getCardSimpleInfos().get(0).getApplyType();
applyType = applyType == null ? 3 : 0;
String svcDesc = applyType == 3 ? "储值卡支付¥" : "礼品卡支付¥";
if (check) {
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().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;
}
......@@ -2483,22 +2487,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
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);
shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} 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();
Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getResult().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);
shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
}
}
......
package cn.freemud.service.thirdparty;
import cn.freemud.annotations.IgnoreFeignLogAnnotation;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ResponseCodeKeyConstant;
import cn.freemud.entities.dto.pay.SVCCardAmountRequest;
import cn.freemud.entities.dto.pay.SVCCardAmountResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name="fm-svc-app", url = "${saas.svc.app.feign.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface SvcAppClient {
//批量查询卡余额
@PostMapping(value = "/svc/card/batch-query-card-amount")
@IgnoreFeignLogAnnotation(logMessage = "batchQueryCardAmount",excludeStatusCodes = {ResponseCodeConstant.RESPONSE_SUCCESS_STR},statusCodeFieldName= ResponseCodeKeyConstant.STATUS_CODE,messageFieldName=ResponseCodeKeyConstant.MSG)
BaseResponse<SVCCardAmountResponse> batchQueryCardAmount(SVCCardAmountRequest 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