Commit cbccda8a by chongfu.liang

农工商卖券

parent d4b4fc33
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.17-RELEASE</version> <version>2.0.24-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -10,4 +10,10 @@ public class CommonRedisKeyConstant { ...@@ -10,4 +10,10 @@ public class CommonRedisKeyConstant {
* 不需要授权得url * 不需要授权得url
*/ */
public final static String SAAS_NOT_AUTHORIZED_URL = "saas:micro:not:authorized:url"; public final static String SAAS_NOT_AUTHORIZED_URL = "saas:micro:not:authorized:url";
/**
* 农工商流水号
*/
public final static String NGS_FLOWNO_PARTNER_DATE_NO = "ngs:flowno:partner:date:no";
} }
...@@ -2232,7 +2232,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2232,7 +2232,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse = uSvcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard()); orderPayResponse = uSvcPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getUnionPayCard());
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId()); String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime); orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime, createPrepayRequestDto.getOrderExtInfoDTO());
} else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) { } else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
//svc卡支付 //svc卡支付
orderPayResponse = svcPay(cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo()); orderPayResponse = svcPay(cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo());
...@@ -2394,10 +2394,13 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2394,10 +2394,13 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getCode(), ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getMessage(), null); return ResponseUtil.error(ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getCode(), ResponseResultEnum.PAY_UNIFIED_ORDER_ERROR.getMessage(), null);
} }
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime) { public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime, OrderExtInfoDto orderExtInfoDto) {
OrderPayResponse orderPayResponse; OrderPayResponse orderPayResponse;
try { try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime); UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
if (orderExtInfoDto != null && StringUtils.isNotBlank(orderExtInfoDto.getStationId())) {
request.setStationId(orderExtInfoDto.getStationId());
}
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo); com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) { if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase)); log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
...@@ -2870,7 +2873,7 @@ public class OrderServiceImpl implements Orderservice { ...@@ -2870,7 +2873,7 @@ public class OrderServiceImpl implements Orderservice {
//唤起微信支付 //唤起微信支付
if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) { if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) {
String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId()); String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId());
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid(), partnerPayOvertime); orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid(), partnerPayOvertime, null);
return orderPayResponse; return orderPayResponse;
} }
//储值卡支付 //储值卡支付
......
...@@ -4,6 +4,7 @@ import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter; ...@@ -4,6 +4,7 @@ import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter;
import cn.freemud.adapter.OrderAdapter; import cn.freemud.adapter.OrderAdapter;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.CommonRedisKeyConstant;
import cn.freemud.entities.dto.ConfirmOrderDto; import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto; import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto; import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
...@@ -61,9 +62,13 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -61,9 +62,13 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -99,13 +104,21 @@ public class SellCouponOrderServiceImpl { ...@@ -99,13 +104,21 @@ public class SellCouponOrderServiceImpl {
private OrderAdapter orderAdapter; private OrderAdapter orderAdapter;
@Autowired @Autowired
private OrderSdkAdapter orderSdkAdapter; private OrderSdkAdapter orderSdkAdapter;
@Autowired
private static RedisTemplate redisTemplate;
@Value("${coupon.app.id}") @Value("${coupon.app.id}")
private String appId; private String appId;
@Value("#{${ngs.virtual.store.idmap:null}}")
private Map<String, String> storeIdMap;
@Value("${ngs.partnerId.easy}")
private String easyPartnerId;
@Value("${ngs.partnerId.supermarket}")
private String supermarketPartnerId;
private final String SUCCESS = "100"; private final String SUCCESS = "100";
private final String ngsCouponProductId = "76161384"; private final String ngsCouponProductId = "76161384";
...@@ -217,8 +230,6 @@ public class SellCouponOrderServiceImpl { ...@@ -217,8 +230,6 @@ public class SellCouponOrderServiceImpl {
// 查询用户信息、校验svc卡 // 查询用户信息、校验svc卡
AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMemberNew(requestVo.getSessionId(), requestVo.getCardCode()); AssortmentCustomerInfoVo userLoginInfoDto = checkOrder.checkOrderByMemberNew(requestVo.getSessionId(), requestVo.getCardCode());
// TODO 通过活动号查询金额
String activityCode = requestVo.getActivityCode();
String trackingNo = LogThreadLocal.getTrackingNo(); String trackingNo = LogThreadLocal.getTrackingNo();
String partnerId = userLoginInfoDto.getPartnerId(); String partnerId = userLoginInfoDto.getPartnerId();
...@@ -238,7 +249,6 @@ public class SellCouponOrderServiceImpl { ...@@ -238,7 +249,6 @@ public class SellCouponOrderServiceImpl {
createPrepayRequestDto.setTransId(orderInfoReqsBaseResponse.getResult().getOrderCode()); createPrepayRequestDto.setTransId(orderInfoReqsBaseResponse.getResult().getOrderCode());
createPrepayRequestDto.setWxAppId(userLoginInfoDto.getWxAppId()); createPrepayRequestDto.setWxAppId(userLoginInfoDto.getWxAppId());
createPrepayRequestDto.setOpenId(userLoginInfoDto.getOpenId()); createPrepayRequestDto.setOpenId(userLoginInfoDto.getOpenId());
// createPrepayRequestDto.setFaceCode(null);
createPrepayRequestDto.setCardCode(requestVo.getCardCode()); createPrepayRequestDto.setCardCode(requestVo.getCardCode());
createPrepayRequestDto.setPayCode(null); createPrepayRequestDto.setPayCode(null);
createPrepayRequestDto.setFatherOrderBean(createOrderResponse.getData()); createPrepayRequestDto.setFatherOrderBean(createOrderResponse.getData());
...@@ -265,11 +275,48 @@ public class SellCouponOrderServiceImpl { ...@@ -265,11 +275,48 @@ public class SellCouponOrderServiceImpl {
orderExtInfoDto.setSessionKey(userLoginInfoDto.getSessionKey()); orderExtInfoDto.setSessionKey(userLoginInfoDto.getSessionKey());
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId()); orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
String date = DateUtil.convert2String(new Date(), "yyyy-MM-dd");
String key = this.getFolwNo(partnerId, date);
int flowno = 0;
if (redisTemplate.opsForValue().setIfAbsent(key, 0)) {
redisTemplate.expire(key, 24, TimeUnit.HOURS);
} else {
flowno = redisTemplate.opsForValue().increment(key, 1).intValue();
}
String stationid = getStationId(date, partnerId, flowno);
orderExtInfoDto.setStationId(stationid);
createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto); createPrepayRequestDto.setOrderExtInfoDTO(orderExtInfoDto);
return orderservice.createPrepayOrder(createPrepayRequestDto); return orderservice.createPrepayOrder(createPrepayRequestDto);
} }
private String getStationId(String date, String partnerId, int flowno) {
String stationid = "";
int length = String.valueOf(flowno).length();
if (easyPartnerId.equals(partnerId)){
stationid = date + "6600000001";
for (int i = 0; i < 5 - length; i++){
stationid += "0";
}
stationid += flowno;
} else if (supermarketPartnerId.equals(partnerId)) {
stationid = date + "9988800001";
for (int i = 0; i < 5 - length; i++){
stationid += "0";
}
stationid += flowno;
}
return stationid;
}
private String getFolwNo(String partnerId, String date){
return CommonRedisKeyConstant.NGS_FLOWNO_PARTNER_DATE_NO + ":" + partnerId + ":" + date;
}
/** /**
* 批量查询活动详情 * 批量查询活动详情
* *
...@@ -447,6 +494,9 @@ public class SellCouponOrderServiceImpl { ...@@ -447,6 +494,9 @@ public class SellCouponOrderServiceImpl {
private CreateOrderRequest ngsConvent2NEWCreateOrderRequest(NgsSellCouponCreateOrderVo requestVo, AssortmentCustomerInfoVo userLoginInfoDto){ private CreateOrderRequest ngsConvent2NEWCreateOrderRequest(NgsSellCouponCreateOrderVo requestVo, AssortmentCustomerInfoVo userLoginInfoDto){
CreateOrderRequest request = new CreateOrderRequest(); CreateOrderRequest request = new CreateOrderRequest();
Integer orderClient = OrderClientType.SAAS.getIndex(); Integer orderClient = OrderClientType.SAAS.getIndex();
if(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel())){ if(UserLoginChannelEnum.ALIPAY.getCode().equals(userLoginInfoDto.getChannel())){
...@@ -458,7 +508,7 @@ public class SellCouponOrderServiceImpl { ...@@ -458,7 +508,7 @@ public class SellCouponOrderServiceImpl {
String partnerId = userLoginInfoDto.getPartnerId(); String partnerId = userLoginInfoDto.getPartnerId();
request.setOrderClient(orderClient); request.setOrderClient(orderClient);
request.setPartnerId(partnerId); request.setPartnerId(partnerId);
request.setStoreId(null); // TODO 虚拟门店 request.setStoreId(storeIdMap.get(partnerId));
//买券虚拟订单 //买券虚拟订单
request.setBizType(6); request.setBizType(6);
//1:线上支付 2:线下支付 //1:线上支付 2:线下支付
...@@ -474,6 +524,8 @@ public class SellCouponOrderServiceImpl { ...@@ -474,6 +524,8 @@ public class SellCouponOrderServiceImpl {
request.setPayChannelName("储值卡支付"); request.setPayChannelName("储值卡支付");
} }
// TODO 商品信息 从券码查 // TODO 商品信息 从券码查
// TODO 通过活动号查询金额
String activityCode = requestVo.getActivityCode();
// GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean = productInfosResponse.getProducts().get(0); // GetMenuCategoryInfoResponse.RootNodeBean.ChildrenBeanFirst.ChildrenBeanSecond.ProductBean productBean = productInfosResponse.getProducts().get(0);
//订单原始金额,单位分 //订单原始金额,单位分
//用户在界面上看到的支付金额 //用户在界面上看到的支付金额
...@@ -544,7 +596,6 @@ public class SellCouponOrderServiceImpl { ...@@ -544,7 +596,6 @@ public class SellCouponOrderServiceImpl {
request.setAppId(userLoginInfoDto.getWxAppId()); request.setAppId(userLoginInfoDto.getWxAppId());
return request; return request;
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment