Commit 21b26916 by ping.wu

礼品卡支付调整

parent ba22ef47
...@@ -4123,6 +4123,12 @@ public class OrderAdapter { ...@@ -4123,6 +4123,12 @@ public class OrderAdapter {
payPlatformVO.setAmount(0L); payPlatformVO.setAmount(0L);
platforms.add(payPlatformVO); 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(); String ebcode = PayChannelType.getByIndex(Byte.parseByte(channel)).getEbcode();
payPlatformVO = new PayPlatformVO(); payPlatformVO = new PayPlatformVO();
payPlatformVO.setAmount(0L); 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 { ...@@ -14,4 +14,7 @@ public class StatisticalScoreRequestVo {
// @ApiModelProperty("是否查询即将到期积分{0:否,1:是}") // @ApiModelProperty("是否查询即将到期积分{0:否,1:是}")
private Integer status; private Integer status;
//卡类型(-1:查询全部 0:礼品卡,3:储值卡(默认))")
private Integer applyType;
} }
...@@ -225,6 +225,8 @@ public class CreateOrderVo { ...@@ -225,6 +225,8 @@ public class CreateOrderVo {
*/ */
private String cardCode; private String cardCode;
private List<String> cardCodes;
/** /**
* 扫脸支付使用 * 扫脸支付使用
*/ */
......
...@@ -2,6 +2,7 @@ package cn.freemud.entities.vo.encircle; ...@@ -2,6 +2,7 @@ package cn.freemud.entities.vo.encircle;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -51,4 +52,6 @@ public class CreateReserveOrderVo extends EncircleReserveBaseVo{ ...@@ -51,4 +52,6 @@ public class CreateReserveOrderVo extends EncircleReserveBaseVo{
* svc 卡支付使用 * svc 卡支付使用
*/ */
private String cardCode; private String cardCode;
private List<String> cardCodes;
} }
...@@ -26,6 +26,9 @@ import cn.freemud.entities.dto.order.BusinessDate; ...@@ -26,6 +26,9 @@ import cn.freemud.entities.dto.order.BusinessDate;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto; import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.store.*; 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.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo; import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo; import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
...@@ -36,10 +39,7 @@ import cn.freemud.service.CouponService; ...@@ -36,10 +39,7 @@ import cn.freemud.service.CouponService;
import cn.freemud.service.adapter.OrderCheckAdapter; import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.order.OrderRelationFactory; import cn.freemud.service.order.OrderRelationFactory;
import cn.freemud.service.order.OrderRelationService; import cn.freemud.service.order.OrderRelationService;
import cn.freemud.service.thirdparty.DeliveryFeiginClient; import cn.freemud.service.thirdparty.*;
import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreBaseApiClient;
import cn.freemud.service.thirdparty.StoreClient;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
...@@ -108,8 +108,11 @@ public class CheckOrder { ...@@ -108,8 +108,11 @@ public class CheckOrder {
@Autowired @Autowired
private MemberCenterService memberCenterService; private MemberCenterService memberCenterService;
//会员SDK //会员SDK
// @Autowired
// private MemberPropertyService memberPropertyService;
@Autowired @Autowired
private MemberPropertyService memberPropertyService; private CustomerPropertyClient customerPropertyClient;
@Autowired @Autowired
private ShoppingCartClient shoppingCartClient; private ShoppingCartClient shoppingCartClient;
// @Autowired // @Autowired
...@@ -151,8 +154,15 @@ public class CheckOrder { ...@@ -151,8 +154,15 @@ public class CheckOrder {
if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) { if (userLoginInfoDto == null || StringUtils.isEmpty(userLoginInfoDto.getMemberId())) {
throw new ServiceException(ResponseResult.NOT_LOGIN); 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卡信息 //校验会员svc卡信息
checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), createOrderVo.getCardCode()); checkCardCode(createOrderVo.getPartnerId(), userLoginInfoDto.getMemberId(), cardCodes);
createOrderVo.setUserId(userLoginInfoDto.getMemberId()); createOrderVo.setUserId(userLoginInfoDto.getMemberId());
return userLoginInfoDto; return userLoginInfoDto;
...@@ -166,7 +176,7 @@ public class CheckOrder { ...@@ -166,7 +176,7 @@ public class CheckOrder {
throw new ServiceException(ResponseResult.NOT_LOGIN); throw new ServiceException(ResponseResult.NOT_LOGIN);
} }
//校验会员svc卡信息 //校验会员svc卡信息
checkCardCode(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), cardCode); // checkCardCode(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getMemberId(), cardCode);
return userLoginInfoDto; return userLoginInfoDto;
} }
...@@ -1060,23 +1070,30 @@ public class CheckOrder { ...@@ -1060,23 +1070,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; return;
} }
StatisticalPropertyRequest request = new StatisticalPropertyRequest(); StatisticalScoreRequestVo request = new StatisticalScoreRequestVo();
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setMemberId(memberId); 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 if (!ResponseResult.SUCCESS.getCode().equals(responseDTO.getCode()) || responseDTO.getData() == null
|| responseDTO.getData().size() == 0) { || responseDTO.getData().size() == 0) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//svc卡无效 //svc卡无效
boolean b = true; boolean b = true;
for (GetSvcInfoByMemberIdResponse getSvcInfoByMemberIdResponse : responseDTO.getData()) { for (GetSvcInfoByMemberIdResponseVo getSvcInfoByMemberIdResponse : responseDTO.getData()) {
if (cardCode.equals(getSvcInfoByMemberIdResponse.getCardCode()) && getSvcInfoByMemberIdResponse.getStatusFlag() == 0) { for (String cardCode : cardCodes){
b = false; if (cardCode.equals(getSvcInfoByMemberIdResponse.getCardCode()) && getSvcInfoByMemberIdResponse.getStatusFlag() == 0) {
b = false;
break;
}
} }
} }
if (b) { if (b) {
......
...@@ -6,6 +6,8 @@ import cn.freemud.base.entity.BaseResponse; ...@@ -6,6 +6,8 @@ import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.UpdateReserveOrderResponseVo; import cn.freemud.entities.UpdateReserveOrderResponseVo;
import cn.freemud.entities.dto.*; 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.CouponPromotionDto;
import cn.freemud.entities.dto.promotion.OrderBeanRequest; import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse; import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
...@@ -24,6 +26,7 @@ import cn.freemud.service.EncircleOrderService; ...@@ -24,6 +26,7 @@ import cn.freemud.service.EncircleOrderService;
import cn.freemud.service.OrderAdapterService; import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StoreItemClient; import cn.freemud.service.thirdparty.StoreItemClient;
import cn.freemud.service.thirdparty.SvcAppClient;
import cn.freemud.utils.AmountUtils; import cn.freemud.utils.AmountUtils;
import cn.freemud.utils.AppLogUtil; import cn.freemud.utils.AppLogUtil;
import cn.freemud.utils.ResponseUtil; import cn.freemud.utils.ResponseUtil;
...@@ -103,6 +106,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -103,6 +106,8 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
@Autowired @Autowired
private PaymentNewService paymentNewService; private PaymentNewService paymentNewService;
@Autowired @Autowired
private SvcAppClient svcAppClient;
@Autowired
private OrderCommonService orderCommonService; private OrderCommonService orderCommonService;
@Autowired @Autowired
private ShoppingCartClient shoppingCartClient; private ShoppingCartClient shoppingCartClient;
...@@ -464,25 +469,26 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -464,25 +469,26 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
} }
Integer orderAmount = previewOrderInfoVo.getAmount().intValue(); Integer orderAmount = previewOrderInfoVo.getAmount().intValue();
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
SVCCardAmountRequest request = new SVCCardAmountRequest(); SVCCardAmountRequestDto request = new SVCCardAmountRequestDto();
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode)); request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额 //查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo); BaseResponse<SVCCardAmountResponseDto> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) { if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR); 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); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY); throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
previewOrderInfoVo.setAmount(0L); previewOrderInfoVo.setAmount(0L);
// TODO: 21-8-30 围餐礼品卡暂不支持
previewOrderInfoVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); previewOrderInfoVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
} }
...@@ -497,8 +503,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService { ...@@ -497,8 +503,12 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
if(StringUtils.isBlank(orderId)){ if(StringUtils.isBlank(orderId)){
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR); return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
} }
Set<String> cardCodes = new HashSet<>();
if(StringUtils.isNotBlank(createReserveOrderVo.getCardCode())){
cardCodes.add(createReserveOrderVo.getCardCode());
}
// 校验svc卡 // 校验svc卡
checkOrder.checkCardCode(assortmentCustomerInfoVo.getPartnerId(),assortmentCustomerInfoVo.getMemberId(), createReserveOrderVo.getCardCode()); checkOrder.checkCardCode(assortmentCustomerInfoVo.getPartnerId(),assortmentCustomerInfoVo.getMemberId(), cardCodes);
CreateOrderResponseVo orderResponseVo = null; CreateOrderResponseVo orderResponseVo = null;
//拉取订单详细信息 //拉取订单详细信息
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest(); BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
......
...@@ -703,48 +703,48 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService { ...@@ -703,48 +703,48 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
} }
} }
public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) { // public OrderPayResponse svcPay(String cardCode, QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String transId, String trackingNo) {
CodePayRequest request = new CodePayRequest(); // CodePayRequest request = new CodePayRequest();
String partnerId = orderBean.getCompanyId(); // String partnerId = orderBean.getCompanyId();
request.setBody(orderBean.getShopName()); // request.setBody(orderBean.getShopName());
request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS)); // request.setBusinessDate(DateUtil.convert2String(new Date(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
request.setCode(cardCode); // request.setCode(cardCode);
request.setPartnerId(partnerId); // request.setPartnerId(partnerId);
request.setStoreId(orderBean.getShopId()); // request.setStoreId(orderBean.getShopId());
request.setAmount(orderBean.getAmount()); // request.setAmount(orderBean.getAmount());
request.setTransId(transId); // request.setTransId(transId);
request.setStationId("1"); // request.setStationId("1");
request.setOperatorId("1"); // request.setOperatorId("1");
request.setVer("2"); // request.setVer("2");
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest(); // SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(partnerId); // svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode)); // svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额 // //查询svc卡余额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo); // com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcRequest, trackingNo);
if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode()) // if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) { // || svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) {
return null; // return null;
} // }
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount(); // Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount(); // Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount();
if (amount + vamount < orderBean.getAmount()) { // if (amount + vamount < orderBean.getAmount()) {
return null; // return null;
} // }
//svc卡支付 // //svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); // 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) { // if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
return null; // return null;
} // }
OrderPayResponse orderPayResponse = new OrderPayResponse(); // OrderPayResponse orderPayResponse = new OrderPayResponse();
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); // CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); // orderPayResponse.setFmId(codePayResponse.getFmId());
orderPayResponse.setPayTransId(codePayResponse.getPayTransId()); // orderPayResponse.setPayTransId(codePayResponse.getPayTransId());
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); // orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
orderPayResponse.setOpenId(paymentRequest.getOpenId()); // orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); // orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); // orderPayResponse.setOrderId(orderBean.getOid());
return orderPayResponse; // return orderPayResponse;
} // }
private PaymentRequest orderBodyConvertToPaymentBody(String openId, String partnerId, String appId, String payCode) { private PaymentRequest orderBodyConvertToPaymentBody(String openId, String partnerId, String appId, String payCode) {
//设置支付信息 //设置支付信息
......
...@@ -36,6 +36,8 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto; ...@@ -36,6 +36,8 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.order.FacePayRequestDto; import cn.freemud.entities.dto.order.FacePayRequestDto;
import cn.freemud.entities.dto.order.FacePayResponseDto; import cn.freemud.entities.dto.order.FacePayResponseDto;
import cn.freemud.entities.dto.pay.*; 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.AttributeValue;
import cn.freemud.entities.dto.product.GroupDetail; import cn.freemud.entities.dto.product.GroupDetail;
import cn.freemud.entities.dto.product.ProductAttributeGroup; import cn.freemud.entities.dto.product.ProductAttributeGroup;
...@@ -259,6 +261,8 @@ public class OrderServiceImpl implements Orderservice { ...@@ -259,6 +261,8 @@ public class OrderServiceImpl implements Orderservice {
@Autowired @Autowired
private PaymentNewService paymentNewService; private PaymentNewService paymentNewService;
@Autowired @Autowired
private SvcAppClient svcAppClient;
@Autowired
private ActivityApplicationClient activityApplicationClient; private ActivityApplicationClient activityApplicationClient;
@Autowired @Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager; private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
...@@ -2897,27 +2901,30 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2897,27 +2901,30 @@ public class OrderServiceImpl implements Orderservice {
request.setOperatorId("1"); request.setOperatorId("1");
request.setVer("2"); request.setVer("2");
request.setMerchantDiscount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount()); request.setMerchantDiscount(orderBean.getOriginalAmount().longValue()-orderBean.getAmount());
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest(); SVCCardAmountRequestDto svcRequest = new SVCCardAmountRequestDto();
svcRequest.setPartnerId(partnerId); svcRequest.setPartnerId(partnerId);
svcRequest.setCardCodes(Arrays.asList(cardCode)); svcRequest.setCardCodes(Arrays.asList(cardCode));
//查询svc卡余额 //查询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()) if (svcCardAmountResponseBaseResponse == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(svcCardAmountResponseBaseResponse.getCode())
|| svcCardAmountResponseBaseResponse.getData().getData() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos())) { || svcCardAmountResponseBaseResponse.getResult() == null || CollectionUtils.isEmpty(svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos())) {
orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取svc卡余额异常" : svcCardAmountResponseBaseResponse.getMessage()); orderPayResponse.setMsg(Objects.isNull(svcCardAmountResponseBaseResponse) ? "获取卡余额异常" : svcCardAmountResponseBaseResponse.getMessage());
return orderPayResponse; return orderPayResponse;
} }
Integer amount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos().get(0).getVamount(); 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()) { if (amount + vamount < orderBean.getAmount()) {
orderPayResponse.setMsg("svc卡余额不足"); orderPayResponse.setMsg("卡余额不足");
return orderPayResponse; return orderPayResponse;
} }
//svc卡支付 //svc卡支付
com.freemud.application.sdk.api.base.BaseResponse<CodePayResponse> responseBase = paymentNewService.codePay(request, trackingNo); 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) { if (responseBase == null || !ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode()) || responseBase.getData().getData() == null) {
// 1.9.34 预支付失败需要把原因进行记录 // 1.9.34 预支付失败需要把原因进行记录
orderPayResponse.setMsg(Objects.isNull(responseBase) ? "svc卡支付异常" : responseBase.getMessage()); orderPayResponse.setMsg(Objects.isNull(responseBase) ? "卡支付异常" : responseBase.getMessage());
} else { } else {
CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData(); CodePayResponse.CodePayDate codePayResponse = responseBase.getData().getData();
orderPayResponse.setFmId(codePayResponse.getFmId()); orderPayResponse.setFmId(codePayResponse.getFmId());
...@@ -2926,7 +2933,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2926,7 +2933,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse.setOpenId(paymentRequest.getOpenId()); orderPayResponse.setOpenId(paymentRequest.getOpenId());
orderPayResponse.setPartnerId(orderBean.getCompanyId()); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid()); orderPayResponse.setOrderId(orderBean.getOid());
orderPayResponse.setPayMode(PayChannelType.SVC.getEbcode()); orderPayResponse.setPayMode(payMode);
} }
return orderPayResponse; return orderPayResponse;
} }
...@@ -3607,60 +3614,111 @@ public class OrderServiceImpl implements Orderservice { ...@@ -3607,60 +3614,111 @@ public class OrderServiceImpl implements Orderservice {
CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount); CombPayRequest combPayRequest = orderAdapter.convent2CombPayOrderRequest(cardNo, orderBean, paymentRequest, partnerPayOvertime, ebCode, channel, totalAmount);
CombPayResponse combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id()); CombPayResponse combPayResponse = comPayClient.combPay(combPayRequest, combPayRequest.getPartner_id());
if (combPayResponse == null || !ResponseCodeConstant.PAYMENT_RESPONSE_SUCCESS.equals(combPayResponse.getCode())) { 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() : "混合支付忙不过来啦,请稍后再试"); orderPayResponse.setMsg(combPayResponse != null ? "支付:" + combPayResponse.getMsg() : "混合支付忙不过来啦,请稍后再试");
return orderPayResponse; return orderPayResponse;
} }
// Integer svcAmount = 0;
// Integer svcVAmount = 0;
List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList(); List<CombPayResponse.PayPlatform> payPlatforms = combPayResponse.getData().getPayPlatformResponseList();
if (payPlatforms.size() == 0) { if (payPlatforms.size() == 0) {
orderPayResponse.setMsg("混合支付:生成预支付失败"); orderPayResponse.setMsg("混合支付:生成预支付失败");
return orderPayResponse; return orderPayResponse;
} }
//生成预支付参数
CombPayResponse.PayPlatform cashPay = payPlatforms
.stream() orderPayResponse.setWxAppid(paymentRequest.getWxAppId());
.filter(f -> !PayChannelType.SVC.getEbcode().equals(f.getEbCode())).findFirst() orderPayResponse.setOpenId(paymentRequest.getOpenId());
.orElse(null); orderPayResponse.setPartnerId(orderBean.getCompanyId());
orderPayResponse.setOrderId(orderBean.getOid());
//现金+svc 现金 orderPayResponse.setMsg("success");
if (payPlatforms.size() == 2 || (payPlatforms.size() == 1 && cashPay != null)) {
orderPayResponse = orderAdapter.convent2OrderCombPayResponse(combPayResponse.getData().getPayPlatformResponseList(), orderBean.getCompanyId(), storeId); boolean cashPay1 = false;
orderPayResponse.setOpenId(paymentRequest.getOpenId()); String transId = "";
orderPayResponse.setWxAppid(paymentRequest.getWxAppId()); for (CombPayResponse.PayPlatform pt : payPlatforms) {
orderPayResponse.setPartnerId(orderBean.getCompanyId()); if(!PayChannelType.SVC.getEbcode().equals(pt.getEbCode()) && !PayChannelType.GIFTCARD.getEbcode().equals(pt.getEbCode())){
orderPayResponse.setOrderId(orderBean.getOid()); cashPay1 = true;
orderPayResponse.setPayMode(orderPayResponse.getPayMode()); 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; 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; return orderPayResponse;
} }
......
...@@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@FeignClient(name = "customer-property-service", url = "${customer.property.service.url:}") @FeignClient(name = "customer-property-service", url = "${customer.property.service.url:}")
@RequestMapping(produces = {"application/json;charset=UTF-8"}) @RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CustomerPropertyClient { public interface CustomerPropertyClient {
...@@ -21,4 +23,9 @@ public interface CustomerPropertyClient { ...@@ -21,4 +23,9 @@ public interface CustomerPropertyClient {
@PostMapping({"/propertyservice/score/statisticalScore"}) @PostMapping({"/propertyservice/score/statisticalScore"})
CustomerPropertyBaseResponse<StatislScoreResponse> statisticalScore(StatisticalScoreRequestVo request); 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 { ...@@ -13,7 +13,9 @@ public enum PayChannelType {
COMB((byte)4,"10212","混合支付","comb"), COMB((byte)4,"10212","混合支付","comb"),
USVCP((byte)5,"10556", "电子风味卡支付","usvcp"), USVCP((byte)5,"10556", "电子风味卡支付","usvcp"),
ZERO((byte)6,"100000", "0元支付","zero"), 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 Byte index;
private String ebcode; private String ebcode;
...@@ -36,6 +38,6 @@ public enum PayChannelType { ...@@ -36,6 +38,6 @@ public enum PayChannelType {
return payType; 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;
}
...@@ -4,13 +4,14 @@ import cn.freemud.adapter.ActivityAdapter; ...@@ -4,13 +4,14 @@ import cn.freemud.adapter.ActivityAdapter;
import cn.freemud.adapter.CouponAdapter; import cn.freemud.adapter.CouponAdapter;
import cn.freemud.adapter.ShoppingCartConvertAdapter; import cn.freemud.adapter.ShoppingCartConvertAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.constant.ApplicationConstant;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.ShoppingCartConstant; import cn.freemud.constant.ShoppingCartConstant;
import cn.freemud.entities.dto.*; import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ActivityQueryDto; import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto; 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.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityChannelEnum; import cn.freemud.enums.ActivityChannelEnum;
...@@ -21,6 +22,7 @@ import cn.freemud.interceptor.ServiceException; ...@@ -21,6 +22,7 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.*; import cn.freemud.service.*;
import cn.freemud.service.thirdparty.ActivityClient; import cn.freemud.service.thirdparty.ActivityClient;
import cn.freemud.service.thirdparty.SvcAppClient;
import cn.freemud.service.thirdparty.SvcComPayClient; import cn.freemud.service.thirdparty.SvcComPayClient;
import cn.freemud.utils.PropertyConvertUtil; import cn.freemud.utils.PropertyConvertUtil;
import cn.freemud.utils.RedisLock; import cn.freemud.utils.RedisLock;
...@@ -29,9 +31,6 @@ import com.alibaba.fastjson.JSONArray; ...@@ -29,9 +31,6 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare; import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.log.LogThreadLocal; 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.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState; import com.freemud.sdk.api.assortment.shoppingcart.domain.CollageMemberState;
...@@ -106,7 +105,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -106,7 +105,7 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
private CollageOrderBaseServiceImpl collageOrderBaseService; private CollageOrderBaseServiceImpl collageOrderBaseService;
@Autowired @Autowired
private PaymentNewService paymentNewService; private SvcAppClient svcAppClient;
@Autowired @Autowired
private SvcComPayClient svcComPayClient; private SvcComPayClient svcComPayClient;
...@@ -1334,28 +1333,30 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp ...@@ -1334,28 +1333,30 @@ public class ShoppingCartCollageServiceImpl extends AbstractShoppingCartImpl imp
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode)); request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额 //查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo); BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) { if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR); 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); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//获取实际配送费 //获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); 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) { if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY); throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L); shoppingCartGoodsResponseVo.setTotalAmount(0L);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} }
/** /**
......
...@@ -30,6 +30,9 @@ import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto; ...@@ -30,6 +30,9 @@ import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountRequestDto;
import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto; import cn.freemud.entities.dto.calculate.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto; import cn.freemud.entities.dto.openplatform.WeixinProductRequestDto;
import cn.freemud.entities.dto.openplatform.WeixinProductResponseDto; 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.SendPoint;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest; import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
...@@ -68,9 +71,6 @@ import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddress ...@@ -68,9 +71,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.response.StatisticalScoreResponse;
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService; 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.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
...@@ -139,7 +139,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -139,7 +139,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired @Autowired
private AssortmentCustomerInfoManager customerInfoManager; private AssortmentCustomerInfoManager customerInfoManager;
@Autowired @Autowired
private PaymentNewService paymentNewService; private SvcAppClient svcAppClient;
@Autowired @Autowired
private MemberCenterService memberCenterService; private MemberCenterService memberCenterService;
@Autowired @Autowired
...@@ -1257,11 +1257,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1257,11 +1257,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
SVCCardAmountRequest svcCardAmountRequest = new SVCCardAmountRequest(); SVCCardAmountRequest svcCardAmountRequest = new SVCCardAmountRequest();
svcCardAmountRequest.setCardCodes(cardCodes); svcCardAmountRequest.setCardCodes(cardCodes);
svcCardAmountRequest.setPartnerId(partnerId); svcCardAmountRequest.setPartnerId(partnerId);
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = paymentNewService.querySVCCardAmount(svcCardAmountRequest, LogThreadLocal.getTrackingNo()); BaseResponse<SVCCardAmountResponse> svcCardAmountResponseBaseResponse = svcAppClient.batchQueryCardAmount(svcCardAmountRequest);
List<SVCCardAmountResponse.CardSimpleInfo> cardSimpleInfos = svcCardAmountResponseBaseResponse.getData().getData().getCardSimpleInfos(); List<CardSimpleInfo> cardSimpleInfos = svcCardAmountResponseBaseResponse.getResult().getCardSimpleInfos();
List<GetMemberInfoResponseVo.Card> cards = cardSimpleInfos.stream().map(each -> convert2MemberSvcCard(each)).collect(toList()); List<GetMemberInfoResponseVo.Card> cards = cardSimpleInfos.stream().map(each -> convert2MemberSvcCard(each)).collect(toList());
responseData.setCards(cards); responseData.setCards(cards);
} }
return ResponseUtil.success(responseData); return ResponseUtil.success(responseData);
} }
...@@ -1321,7 +1320,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1321,7 +1320,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(); GetMemberInfoResponseVo.Card card = new GetMemberInfoResponseVo.Card();
card.setAmount(each.getAmount()); card.setAmount(each.getAmount());
card.setApplyId(each.getApplyId()); card.setApplyId(each.getApplyId());
...@@ -2294,18 +2293,21 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2294,18 +2293,21 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode)); request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额 //查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo); BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) { if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR); 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); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
boolean check = this.checkSvcComPay(partnerId, storeId); 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) { if (check) {
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付 //混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
Integer svcTotalAmount = amount1 + vamount; Integer svcTotalAmount = amount1 + vamount;
//获取实际配送费 //获取实际配送费
Integer deliveryAmount = 0; Integer deliveryAmount = 0;
...@@ -2325,22 +2327,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2325,22 +2327,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
BigDecimal bigDecimal = new BigDecimal(svcPayAmount); BigDecimal bigDecimal = new BigDecimal(svcPayAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr); shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} else { } else {
//获取实际配送费 //获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY); throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L); shoppingCartGoodsResponseVo.setTotalAmount(0L);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} }
} }
...@@ -2360,24 +2362,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2360,24 +2362,26 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setCardCodes(Arrays.asList(cardCode)); request.setCardCodes(Arrays.asList(cardCode));
//查询svc卡金额 //查询svc卡金额
com.freemud.application.sdk.api.base.BaseResponse<SVCCardAmountResponse> response = paymentNewService.querySVCCardAmount(request, trackingNo); BaseResponse<SVCCardAmountResponse> response = svcAppClient.batchQueryCardAmount(request);
if (response == null) { if (response == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR); 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); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
boolean check = this.checkSvcComPay(partnerId, storeId); 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) { if (check) {
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付 //混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
Integer svcTotalAmount = amount1 + vamount; Integer svcTotalAmount = amount1 + vamount;
//获取实际配送费 //获取实际配送费
Integer deliveryAmount = 0; Integer deliveryAmount = 0;
Integer svcPayAmount = 0; Integer svcPayAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
//Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
...@@ -2391,22 +2395,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -2391,22 +2395,22 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
BigDecimal bigDecimal = new BigDecimal(svcPayAmount); BigDecimal bigDecimal = new BigDecimal(svcPayAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr); shoppingCartGoodsResponseVo.setSvcPayAmount(amountStr);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); shoppingCartGoodsResponseVo.setSvcDiscountDesc(svcDesc + amountStr);
} else { } else {
//获取实际配送费 //获取实际配送费
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getResult().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getResult().getCardSimpleInfos().get(0).getVamount();
if (orderAmount > amount1 + vamount) { if (orderAmount > amount1 + vamount) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY); throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); BigDecimal bigDecimal = new BigDecimal(orderAmount);
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
shoppingCartGoodsResponseVo.setTotalAmount(0L); 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