Commit 7e17bcbb by xiaoer.li@freemud.com

混合支付Beta

parent f0439a5c
...@@ -262,6 +262,7 @@ public class OrderSdkAdapter { ...@@ -262,6 +262,7 @@ public class OrderSdkAdapter {
//订单重量 //订单重量
Double orderWeight = sumOrderWeight(requestVO.getProducts()); Double orderWeight = sumOrderWeight(requestVO.getProducts());
request.setWeight(orderWeight); request.setWeight(orderWeight);
request.setOrderPayItemCreateReqList(requestVO.getOrderPayItemCreateReqList());
return request; return request;
} }
...@@ -1170,10 +1171,30 @@ public class OrderSdkAdapter { ...@@ -1170,10 +1171,30 @@ public class OrderSdkAdapter {
data.setExpressChannelName(orderInfoReqs.getExpressChannelName()); data.setExpressChannelName(orderInfoReqs.getExpressChannelName());
//发票信息 //发票信息
data.setOrderInvoice(orderInfoReqs.getOrderInvoice()); data.setOrderInvoice(orderInfoReqs.getOrderInvoice());
//todo:混合支付
if (CollectionUtils.isNotEmpty(orderInfoReqs.getOrderPayItemCreateReqList())) {
data.setOrderPayItem(this.getOrderItemPayList(orderInfoReqs.getOrderPayItemCreateReqList()));
}
return data; return data;
} }
/**
* 混合支付转换
* @param OrderPayItemReqs
*/
private List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> getOrderItemPayList(List<OrderPayItemReqs> OrderPayItemReqs) {
List<QueryOrdersResponse.DataBean.OrderBean.OrderPayItem> OrderPayItemList = new ArrayList<>(2);
for (OrderPayItemReqs orderPayItemReq : OrderPayItemReqs) {
QueryOrdersResponse.DataBean.OrderBean.OrderPayItem orderPayItem = new QueryOrdersResponse.DataBean.OrderBean.OrderPayItem();
orderPayItem.setOrderCode(orderPayItemReq.getOrderCode());
orderPayItem.setOrderPayItemCode(orderPayItemReq.getOrderPayItemCode());
orderPayItem.setPayAmount(orderPayItemReq.getPayAmount());
orderPayItem.setPayChannelName(orderPayItemReq.getPayChannelName());
orderPayItem.setPayChannelType(orderPayItemReq.getPayChannelType());
OrderPayItemList.add(orderPayItem);
}
return OrderPayItemList;
}
public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) { public QueryOrdersResponse convent2QueryOrdersResponse(BaseResponse<QueryOrderForUserResp> baseResponse) {
QueryOrdersResponse response = new QueryOrdersResponse(); QueryOrdersResponse response = new QueryOrdersResponse();
response.setErrcode(Integer.parseInt(baseResponse.getCode())); response.setErrcode(Integer.parseInt(baseResponse.getCode()));
......
...@@ -2,11 +2,10 @@ package com.freemud.sdk.api.assortment.order.request.order; ...@@ -2,11 +2,10 @@ package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType; import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq; import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest; import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.config.BaseConfig; import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
...@@ -167,7 +166,7 @@ public class BaseCreateOrderRequest extends BaseConfig { ...@@ -167,7 +166,7 @@ public class BaseCreateOrderRequest extends BaseConfig {
* 收货地址Id * 收货地址Id
*/ */
private String receiveId; private String receiveId;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
@Data @Data
public static class DeliveryTypeInfo { public static class DeliveryTypeInfo {
/** /**
......
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
import java.util.List;
@Data
public class CombPayRequest {
private List<PayPlatformVO> platforms;
/**
* 用户标识
*/
private String open_id;
/**
* 回调通知地址
*/
private String notify_url;
/**
* 是否需要开发票:1为需要
*/
private Integer invoice_flag;
/**
* 支付总金额,以分为单位
*/
private Long amount;
/**
* 会员支付金额,以分为单位
*/
private Long vip_amount;
/**
* 不可打折金额,以分为单位
*/
private Integer undis_amount;
/**
* 订单描述
*/
private String body;
/**
* 外部交易流水号,由上游系统生成,需保证唯一
*/
private String out_order_no;
private List<ProductVO> products;
private String goodsTag;
/**
* 商户编号(由非码提供)
*/
private String partner_id;
/**
* 商家门店号(在线支付需要提前定义)
*/
private String store_id;
/**
* 业务日期
*/
private String business_date;
/**
* 营业员编号(可以使用固定值)
*/
private String operator_id = "1";
/**
* 商家POS机编号(可以使用固定值,扫码付必传)
*/
private String station_id = "1";;
private String appId;
private String payCode;
private String payTimeOutTime;
private String ebCode;
private String cardCode;
private Boolean disable_service_goods_tag = false;
}
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
@Data
public class PayPlatformVO {
private String ebcode;
private Long amount;
}
package com.freemud.sdk.api.assortment.order.request.payment;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ProductVO {
private String id;
private Integer quantity;
private Integer seq;
private Long price;
private String name;
private String salesType = "NORMAL";
}
...@@ -377,6 +377,10 @@ public class QueryOrdersResponse { ...@@ -377,6 +377,10 @@ public class QueryOrdersResponse {
*/ */
private OrderInvoice orderInvoice; private OrderInvoice orderInvoice;
/**
* 混合支付list
*/
private List<OrderPayItem> orderPayItem;
@NoArgsConstructor @NoArgsConstructor
@Data @Data
...@@ -714,6 +718,23 @@ public class QueryOrdersResponse { ...@@ -714,6 +718,23 @@ public class QueryOrdersResponse {
// 扩展字段 // 扩展字段
private String extInfo; private String extInfo;
} }
@NoArgsConstructor
@Data
public static class OrderPayItem {
private Long orderId;
/**
* 订单号
*/
private String orderCode;
private Integer payChannelType;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
} }
} }
} }
...@@ -17,6 +17,7 @@ public class ResponseCodeConstant { ...@@ -17,6 +17,7 @@ public class ResponseCodeConstant {
// 电子风味卡,密码错误或者余额不足,需要特殊处理 // 电子风味卡,密码错误或者余额不足,需要特殊处理
public final static String PASSWORD_WRONG = "8200407"; public final static String PASSWORD_WRONG = "8200407";
public final static String NOT_SUFFICIENT_FUND = "8200407"; public final static String NOT_SUFFICIENT_FUND = "8200407";
public final static Integer PAYMENT_RESPONSE_SUCCESS = 200;
private final static Set<Object> successResponseCodeSet = new HashSet<>(); private final static Set<Object> successResponseCodeSet = new HashSet<>();
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
package cn.freemud.entities.vo; package cn.freemud.entities.vo;
import cn.freemud.entities.dto.UserDeliveryInfoDto; import cn.freemud.entities.dto.UserDeliveryInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto; import cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto;
...@@ -23,6 +24,7 @@ import org.hibernate.validator.constraints.NotEmpty; ...@@ -23,6 +24,7 @@ import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -248,6 +250,18 @@ public class CreateOrderVo { ...@@ -248,6 +250,18 @@ public class CreateOrderVo {
private UnionPayCard unionPayCard; private UnionPayCard unionPayCard;
/** /**
* 混合支付
*/
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
/**
* svc支付金额
*/
private BigDecimal svcAmount;
/**
* 现金支付金额
*/
private BigDecimal cashAmount;
/**
* 电子风味卡 * 电子风味卡
*/ */
@Data @Data
......
package cn.freemud.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum PayChannelType {
WECHAT((byte)1,"10211","微信"),
SVC((byte)2,"10102","储值卡"),
ALIPAY((byte)3,"10300","支付宝"),
COMB((byte)4,"","混合支付"),
USVCP((byte)5,"10556", "电子风味卡支付");
private Byte index;
private String ebcode;
private String name;
public static final String API_DESC = "订单支付渠道类型 1:微信 2:储值卡 3:支付宝 4:混合支付,5:电子风味卡支付";
public static PayChannelType getByIndex(byte index) {
for (PayChannelType payType : values()) {
if (payType.getIndex().equals(index)) {
return payType;
}
}
return null;
}
}
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
*/ */
package cn.freemud.service.impl; package cn.freemud.service.impl;
import cn.freemud.base.constant.Version; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.ResponseCodeConstant; import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.constant.StoreConstant; import cn.freemud.constant.StoreConstant;
...@@ -21,19 +21,14 @@ import cn.freemud.entities.dto.order.BusinessDate; ...@@ -21,19 +21,14 @@ 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.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag; import cn.freemud.enums.*;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult;
import cn.freemud.interceptor.ServiceException; import cn.freemud.interceptor.ServiceException;
import cn.freemud.manager.StoreTableNumberManager; import cn.freemud.manager.StoreTableNumberManager;
import cn.freemud.service.CouponService; import cn.freemud.service.CouponService;
import cn.freemud.service.adapter.OrderCheckAdapter; import cn.freemud.service.adapter.OrderCheckAdapter;
import cn.freemud.service.thirdparty.ShoppingCartClient; import cn.freemud.service.thirdparty.ShoppingCartClient;
import cn.freemud.service.thirdparty.StockClient;
import cn.freemud.utils.LogUtil; import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformIappWxappConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig; import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerStoreDeliveryConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo; import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
...@@ -41,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp ...@@ -41,7 +36,6 @@ import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformIapp
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager; import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerStoreDeliveryConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.application.sdk.api.base.BaseResponse; import com.freemud.application.sdk.api.base.BaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.log.LogThreadLocal; import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest; import com.freemud.application.sdk.api.membercenter.request.QueryReceiveAddressRequest;
import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest; import com.freemud.application.sdk.api.membercenter.request.StatisticalPropertyRequest;
...@@ -49,12 +43,14 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI ...@@ -49,12 +43,14 @@ import com.freemud.application.sdk.api.membercenter.response.GetSvcInfoByMemberI
import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse; import com.freemud.application.sdk.api.membercenter.response.QueryReceiveAddressResponse;
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.storecenter.request.QueryDeliveryRequest; import com.freemud.application.sdk.api.storecenter.request.QueryDeliveryRequest;
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.QueryDeliverDetailResponse; import com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse; import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import cn.freemud.enums.CouponReqTypeEnum;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.Gson; import com.google.gson.Gson;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -65,6 +61,7 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -65,6 +61,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.awt.geom.Point2D; import java.awt.geom.Point2D;
import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
...@@ -103,14 +100,15 @@ public class CheckOrder { ...@@ -103,14 +100,15 @@ public class CheckOrder {
// private OrderAdapter orderAdapter; // private OrderAdapter orderAdapter;
@Autowired @Autowired
private StoreServiceImpl storeService; private StoreServiceImpl storeService;
@Autowired
private StockClient stockClient;
@Autowired
private ItemServiceImpl itemService;
@Autowired @Autowired
private CouponService couponService; private CouponService couponService;
private static Gson gson = new Gson(); private static Gson gson = new Gson();
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private OrderAdapter orderAdapter;
/** /**
* 下单会员相关校验 * 下单会员相关校验
*/ */
...@@ -749,4 +747,44 @@ public class CheckOrder { ...@@ -749,4 +747,44 @@ public class CheckOrder {
// } // }
} }
/**
* 混合支付
* @param createOrderVo
* @param shoppingCartGoodsDto
* @param trackingNo
* @return
*/
public boolean checkSvcPay(CreateOrderVo createOrderVo,ShoppingCartGoodsDto shoppingCartGoodsDto,String trackingNo) {
if (StringUtils.isBlank(createOrderVo.getCardCode())) {
return false;
}
SVCCardAmountRequest request = new SVCCardAmountRequest();
request.setPartnerId(createOrderVo.getPartnerId());
request.setCardCodes(Arrays.asList(createOrderVo.getCardCode()));
BaseResponse<SVCCardAmountResponse> svcCardAmount = paymentNewService.querySVCCardAmount(request, trackingNo);
if (svcCardAmount==null || svcCardAmount.getData()==null ||!ResponseResult.SUCCESS.getCode().equals(svcCardAmount.getCode())) {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
}
Integer svcAmount = 0 ;
Integer svcVAmount = 0 ;
Long totalVAmount = shoppingCartGoodsDto.getTotalAmount();
if (svcCardAmount.getData().getData().getCardSimpleInfos().size()>0) {
svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount();
svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount();
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalVAmount> svcAmount + svcVAmount){
BigDecimal total = new BigDecimal(totalVAmount);
BigDecimal svcAmounts = new BigDecimal(svcAmount + svcVAmount);
BigDecimal cashAmout = total.subtract(svcAmounts);
createOrderVo.setOrderPayItemCreateReqList(orderAdapter.setOrderPayItem(cashAmout,svcAmounts,createOrderVo.getPayChannelType()));
createOrderVo.setPayChannelType(PayChannelType.COMB.getIndex());
createOrderVo.setCashAmount(cashAmout);
createOrderVo.setSvcAmount(svcAmounts);
return true;
}
}
return false;
}
} }
...@@ -177,7 +177,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService { ...@@ -177,7 +177,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
} }
try { try {
ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message); ConfirmOrderDto confirmOrderDto = orderAdapter.convent2ConfirmOrderDto(message);
// 通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值 // 蜜雪专用:通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId())); String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(confirmOrderDto.getOrderId()));
if (StringUtils.isNotBlank(orderId)) { if (StringUtils.isNotBlank(orderId)) {
log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId); log.info("从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), confirmOrderDto.getOrderId(), orderId);
......
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PaymentClient
* @Package cn.freemud.service.thirdparty
* @Description: 支付服务
* @author: liming.guo
* @date: 2018/5/12519:24
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.pay.CombPayResponse;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "payment-center-application-api",url="${saas.paymentcenter.application.api.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface ComPayClient {
/**
* 统一下单
*/
@PostMapping("/payment/application/pay")
CombPayResponse combPay(@RequestBody CombPayRequest combPayRequest, @RequestHeader("partnerId") String partnerId);
}
...@@ -214,5 +214,5 @@ public class CreateOrderRequest extends BaseRequest { ...@@ -214,5 +214,5 @@ public class CreateOrderRequest extends BaseRequest {
private String appId; private String appId;
private Byte payChannelType; private Byte payChannelType;
private List<OrderPayItemCreateReq> orderPayItemCreateReqList;
} }
package com.freemud.application.sdk.api.ordercenter.request.create;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class OrderPayItemCreateReq {
private Long id;
private Long orderId;
private String orderCode;
private String partnerId;
private String storeId;
private Integer payChannelType;
private String payChannelName;
/**
* 支付渠道码
*/
private String payEbCode;
private String operator;
private BigDecimal payAmount;
}
\ No newline at end of file
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
package com.freemud.application.sdk.api.ordercenter.response.orderInfo; package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq; import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderTraceInfoResp;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -271,4 +270,9 @@ public class OrderInfoReqs { ...@@ -271,4 +270,9 @@ public class OrderInfoReqs {
//支付渠道类型 //支付渠道类型
private String payChannelType; private String payChannelType;
/**
* 支付信息
*/
private List<OrderPayItemReqs> orderPayItemCreateReqList;
} }
package com.freemud.application.sdk.api.ordercenter.response.orderInfo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: com.freemud.application.sdk.api.ordercenter.request OrderPayItemReq
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2020/11/5
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
@NoArgsConstructor
public class OrderPayItemReqs {
private Long id;
private Long orderId;
/**
* 订单号
*/
private String orderCode;
/**
* 商户号
*/
private String partnerId;
/**
* 门店ID
*/
private String storeId;
/**
* 支付类型
*/
private Integer payChannelType;
private String ebCode;
private String payChannelName;
/**
* 支付交易号
*/
private String orderPayItemCode;
private BigDecimal payAmount;
}
...@@ -15,6 +15,7 @@ package cn.freemud.entities.vo; ...@@ -15,6 +15,7 @@ package cn.freemud.entities.vo;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
@Data @Data
...@@ -140,5 +141,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV ...@@ -140,5 +141,9 @@ public class ShoppingCartGoodsResponseVo extends ShoppingCartGoodsBaseResponseV
* 麦咖啡-咖啡月卡价格 * 麦咖啡-咖啡月卡价格
*/ */
private Long payCardFee; private Long payCardFee;
/**
* svc卡支付金额
*/
private BigDecimal svcPayAmount;
} }
...@@ -1637,20 +1637,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1637,20 +1637,32 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR); throw new ServiceException(ResponseResult.USER_SVC_CARD_ERROR);
} }
//获取实际配送费 //获取实际配送费
Integer deliveryAmount = 0;
if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) { if (StringUtils.isNotBlank(receiveId) && shoppingCartGoodsResponseVo.getDiscountDeliveryAmount() != null) {
// Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId); //Integer deliveryAmount = getDeliveryAmount(receiveId, partnerId, storeId);
Integer deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue(); deliveryAmount = shoppingCartGoodsResponseVo.getDiscountDeliveryAmount().intValue();
orderAmount += deliveryAmount; orderAmount += deliveryAmount;
} }
//混合支付无需校验svc卡余额,但是配送和包装费不计算在svc卡支付
Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount(); Integer amount1 = response.getData().getData().getCardSimpleInfos().get(0).getAmount();
Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount(); Integer vamount = response.getData().getData().getCardSimpleInfos().get(0).getVamount();
BigDecimal svcPayAmount = BigDecimal.ZERO;
//本金+赠送金额
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);
svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue());
} }
BigDecimal bigDecimal = new BigDecimal(orderAmount); else {
String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString(); svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(0L); shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue());
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr); }
shoppingCartGoodsResponseVo.setSvcPayAmount(svcPayAmount);
shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + svcPayAmount);
//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);
} }
/** /**
......
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