Commit 7c2f87a5 by zhiheng.zhang

Merge remote-tracking branch 'origin/qa' into qa

parents c010847f 0511fc0c
......@@ -2582,6 +2582,7 @@ public class OrderSdkAdapter {
index++;
material.setOpid(index);
material.setSpecification(material.getProductId());
material.setSpecificationName(material.getProductName());
updateOrderItemAndSettlement(orderItemList, orderSettlementCreateReqList, material, partnerId, partnerProductId, true);
}
}
......
......@@ -119,7 +119,7 @@
<dependency>
<artifactId>assortment-data-manager</artifactId>
<groupId>com.freemud.sdk.api.assortment</groupId>
<version>4.6.8.RELEASE</version>
<version>5.1.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.freemud.commons</groupId>
......@@ -315,12 +315,12 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>paymentcenter-sdk</artifactId>
<version>2.7.1.RELEASE</version>
<version>2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-payment-sdk</artifactId>
<version>2.5.5-RELEASE</version>
<version>2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
......
......@@ -17,9 +17,9 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.CustomerScoreConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.order.CreateOrderAccountDto;
import cn.freemud.entities.dto.order.CreateOrderProductDto;
import cn.freemud.entities.dto.order.*;
import cn.freemud.entities.dto.promotion.OrderBeanRequest;
import cn.freemud.entities.dto.promotion.ShoppingCartGoodsResponse;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
......@@ -28,23 +28,24 @@ import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.PreviewOrderInfoVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.*;
import cn.freemud.enums.OrderChannelType;
import cn.freemud.enums.OrderSourceType;
import cn.freemud.enums.OrderType;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.QueryOrderStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.request.wechat.dto.SignMessageBuilder;
import cn.freemud.service.impl.OrderCommonService;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.QrCodeUtil;
import cn.freemud.utils.RSAUtils;
import cn.freemud.utils.WebUtil;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
......@@ -53,6 +54,7 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
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.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
......@@ -2385,10 +2387,14 @@ public class OrderAdapter {
return createOrder;
}
public UnifiedOrderRequest convent2UnifiedOrderRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, Long amount, Integer cardAmount, String transId) {
return convent2UnifiedOrderRequest(orderBean, paymentRequest, amount, cardAmount, transId, null);
}
/**
* 支付信息转换
*/
public UnifiedOrderRequest convent2UnifiedOrderRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, Long amount, Integer cardAmount, String transId) {
public UnifiedOrderRequest convent2UnifiedOrderRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, Long amount, Integer cardAmount, String transId, String partnerPayOvertime) {
UnifiedOrderRequest orderPayDto = new UnifiedOrderRequest();
orderPayDto.setPartnerId(orderBean.getCompanyId());
orderPayDto.setBody(paymentRequest.getPrincipalName());
......@@ -2402,6 +2408,7 @@ public class OrderAdapter {
orderPayDto.setUndisAmount(1L);
orderPayDto.setVipAmount(Long.valueOf(cardAmount));
orderPayDto.setAppId(paymentRequest.getWxAppId());
orderPayDto.setPayTimeOutTime(StringUtils.defaultIfBlank(partnerPayOvertime, "30"));
List<UnifiedOrderRequest.ProductBean> productBeans = new ArrayList<UnifiedOrderRequest.ProductBean>();
if (CollectionUtils.isNotEmpty(orderBean.getProductList())) {
orderBean.getProductList().forEach(orderProductBean -> {
......@@ -3043,7 +3050,6 @@ public class OrderAdapter {
return gson.toJson(map);
}
public Integer getNewOrderClient(String name) {
String _name = OrderSourceType.SAAS.getCode();
Integer orderClientType;
......
......@@ -56,4 +56,9 @@ public class RedisKeyConstant {
* 点餐门店绑定的商城门店redis的key前缀
*/
public final static String OPENSTORE_MICROMALL_BIND_STOREID_PREFIX = "openstore:micromall:bind:storeId:";
/**
* 商户订单支付超时时间设置key
*/
public final static String PARTNER_PAY_OVERTIME = "partner_pay_overtime";
}
......@@ -24,8 +24,8 @@ import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.OrderRefundConstant;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto;
import cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto;
......@@ -58,8 +58,12 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.*;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
import com.freemud.api.assortment.datamanager.manager.AssortmentCloudPrinterManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformPartnerConfigManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappAuthorizerManager;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
......@@ -78,8 +82,8 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
......@@ -109,6 +113,7 @@ import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.util.LockUtils;
import com.freemud.sdk.api.assortment.order.vo.ProductGroupVo;
import com.freemud.sdk.api.assortment.orderdistributor.entity.dto.PaymentMqMessageDto;
import com.freemud.sdk.api.assortment.orderdistributor.service.PaymentQueueService;
......@@ -121,6 +126,7 @@ import com.google.common.collect.Maps;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
......@@ -129,9 +135,12 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil;
import java.lang.reflect.InvocationTargetException;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
......@@ -160,7 +169,6 @@ public class OrderServiceImpl implements Orderservice {
@Value("${mq.cloud_print_exchange}")
private String cloud_print_exchange;
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
......@@ -512,6 +520,7 @@ public class OrderServiceImpl implements Orderservice {
/**
* 开通会员卡
*
* @param partnerId 商户号
* @param ruleId 会员规则ID
* @param oid 订单号
......@@ -2125,7 +2134,8 @@ public class OrderServiceImpl implements Orderservice {
if (totalAmount < 0) {
throw new ServiceException(ResponseResult.PAY_AMOUNT_ERROR);
} else if (totalAmount > 0 && StringUtils.isBlank(cardCode)) {
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId);
String partnerPayOvertime = this.getPartnerPayOvertime(createPrepayRequestDto.getPartnerId());
orderPayResponse = getPreOrderPay(createPrepayRequestDto.getFatherOrderBean(), paymentRequest, LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getCardAmount(), transId, partnerPayOvertime);
} else if (totalAmount > 0 && StringUtils.isNotBlank(cardCode)) {
//svc卡支付
orderPayResponse = svcPay(cardCode, createPrepayRequestDto.getFatherOrderBean(), paymentRequest, transId, LogThreadLocal.getTrackingNo());
......@@ -2228,9 +2238,9 @@ public class OrderServiceImpl implements Orderservice {
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) {
public OrderPayResponse getPreOrderPay(QueryOrdersResponse.DataBean.OrderBean orderBean, PaymentRequest paymentRequest, String trackingNo, Integer cardAmount, String transId, String partnerPayOvertime) {
try {
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId);
UnifiedOrderRequest request = orderAdapter.convent2UnifiedOrderRequest(orderBean, paymentRequest, orderBean.getAmount(), cardAmount, transId, partnerPayOvertime);
com.freemud.application.sdk.api.base.BaseResponse<UnifiedOrderResponse> responseBase = standardPaymentService.unifiedOrder(request, trackingNo);
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(responseBase.getCode())) {
log.error("支付SDK返回信息错误,trackingNo:{} request:{} response:{}", trackingNo, JSONObject.toJSONString(request), JSONObject.toJSONString(responseBase));
......@@ -2672,7 +2682,8 @@ public class OrderServiceImpl implements Orderservice {
}
//唤起微信支付
if (totalAmount > 0 && StringUtils.isBlank(createOrderVo.getCardCode()) && StringUtils.isBlank(createOrderVo.getFaceCode())) {
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid());
String partnerPayOvertime = this.getPartnerPayOvertime(createOrderVo.getPartnerId());
orderPayResponse = getPreOrderPay(fatherBeanListOne, paymentRequest, LogThreadLocal.getTrackingNo(), cardAmount, fatherBeanListOne.getOid(), partnerPayOvertime);
return orderPayResponse;
}
//储值卡支付
......@@ -2893,4 +2904,19 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responses.getResult());
}
/**
* 获取商户支付超时时间
* @param partnerId 商户Id
* @return 超时时间
*/
private String getPartnerPayOvertime(String partnerId) {
return Optional.ofNullable(openPlatformPartnerConfigManager.selectPartnerConfigByPartnerKey(partnerId, RedisKeyConstant.PARTNER_PAY_OVERTIME))
.orElseGet(() -> {
AssortmentOpenPlatformPartnerConfig config = new AssortmentOpenPlatformPartnerConfig();
config.setPartnerValue("30");
openPlatformPartnerConfigManager.addPartnerConfig(partnerId, RedisKeyConstant.PARTNER_PAY_OVERTIME, config);
return config;
}).getPartnerValue();
}
}
......@@ -10,6 +10,7 @@ import cn.freemud.entities.vo.*;
import cn.freemud.enums.GoodsTypeEnum;
import cn.freemud.service.IPromotionService;
import lombok.Data;
import lombok.extern.log4j.Log4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -29,6 +30,7 @@ import java.util.List;
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service("MaterialPromotionService")
@Log4j
public class MaterialPromotionService implements IPromotionService {
@Autowired
private ShoppingCartConvertAdapter shoppingCartConvertAdapter;
......@@ -77,9 +79,9 @@ public class MaterialPromotionService implements IPromotionService {
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
HashMap<String, MaterialApportion> map = getApportionGoodsDetail(calculationDiscountResult);
System.out.println("updateShoppingCartGoodsApportion->map:" + map);
log.info("updateShoppingCartGoodsApportion->map:" + map);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = shoppingCartGoodsDto.getProducts();
System.out.println("updateShoppingCartGoodsApportion->product:" + products);
log.info("updateShoppingCartGoodsApportion->product:" + products);
if (map.size() > 0) {
String pk = "";
for (ShoppingCartGoodsDto.CartGoodsDetailDto product : products) {
......@@ -87,7 +89,8 @@ public class MaterialPromotionService implements IPromotionService {
for (ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods materialGoods : product.getMaterialList()) {
pk = shoppingCartConvertAdapter.jointPk(product.getCartGoodsUid(), materialGoods.getSpuId());
MaterialApportion material = map.get(pk);
if (material != null && material.getApportionAmount().intValue() == 0) continue;
if ((material == null) || (material != null && material.getApportionAmount().intValue() == 0))
continue;
List<ActivityDiscountsDto> activityDiscountsDtos = materialGoods.getActivityDiscountsDtos();
if (CollectionUtils.isEmpty(activityDiscountsDtos)) {
activityDiscountsDtos = new ArrayList<>();
......@@ -116,7 +119,7 @@ public class MaterialPromotionService implements IPromotionService {
for (ShoppingCartGoodsDto.CartGoodsDetailDto.MaterialGoods materialGoods : product.getMaterialList()) {
product.setSalePrice(product.getSalePrice() + materialGoods.getSalePrice());//现金
product.setOriginalPrice(product.getOriginalPrice() + materialGoods.getOriginalPrice());
product.setTotalDiscountAmount(product.getTotalDiscountAmount() + materialGoods.getTotalDiscountAmount() * product.getQty());
product.setTotalDiscountAmount(product.getTotalDiscountAmount() + materialGoods.getTotalDiscountAmount());
product.setProductType(GoodsTypeEnum.MATERIAL.getGoodsType());
}
}
......
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