Commit 2653a0d9 by chongfu.liang

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

parents e70703f6 0c5b3919
......@@ -37,6 +37,7 @@ import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderItemR
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderSettlementResp;
import com.freemud.sdk.api.assortment.orderdistributor.request.DisRequest;
import com.freemud.sdk.api.assortment.orderdistributor.service.OrderDistributionService;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
......@@ -141,7 +142,8 @@ public class OrderCallBackMQService {
}
try {
OrderInfoReqs orderInfoReqs = JSONObject.parseObject(body.getContent(), OrderInfoReqs.class);
if (orderInfoReqs != null && OrderClientType.SAAS.getIndex().equals(orderInfoReqs.getOrderClient()) &&
List<Integer> allowOrderClientList = Lists.newArrayList(OrderClientType.SAAS.getIndex(), OrderClientType.ALIPAY.getIndex());
if (orderInfoReqs != null && allowOrderClientList.contains(orderInfoReqs.getOrderClient()) &&
((body.getOperateType() == 0 && NewOrderStatus.PENDING_PAYMENT.getIndex().equals(orderInfoReqs.getOrderState())) ||
(body.getOperateType() == 1 && NewOrderStatus.PLACE_AN_ORDER.getIndex().equals(orderInfoReqs.getOrderState())))) {
return orderInfoReqs;
......
......@@ -2778,7 +2778,7 @@ public class OrderAdapter {
public CreatePrepayRequestDto convertToCreatePrepayRequestDto(String partnerId, String wxAppId, String openId,
String faceCode, String cardCode, String payCode, QueryOrdersResponse.DataBean.OrderBean fatherOrderBean,
QueryOrdersResponse.DataBean.OrderBean productOrderBean, long totalAmount, int cardAmount, OrderExtInfoDto orderExtInfoDTO,
String transId){
String transId, OrderClientType orderClient){
CreatePrepayRequestDto requestDto = new CreatePrepayRequestDto();
requestDto.setPartnerId(partnerId);
requestDto.setWxAppId(wxAppId);
......@@ -2792,6 +2792,7 @@ public class OrderAdapter {
requestDto.setCardAmount(cardAmount);
requestDto.setOrderExtInfoDTO(orderExtInfoDTO);
requestDto.setTransId(transId);
requestDto.setOrderClient(orderClient);
return requestDto;
}
......@@ -2802,7 +2803,7 @@ public class OrderAdapter {
createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(),
createOrderOperateDto.getTotalAmount() == null ? 0 : createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount() == null ? 0 : createOrderOperateDto.getCardAmount(), orderExtInfoDTO,
createOrderOperateDto.getFatherOrderBean().getOid());
createOrderOperateDto.getFatherOrderBean().getOid(), null);
}
/**
......
package cn.freemud.entities.dto.order;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.Data;
......@@ -54,4 +55,6 @@ public class CreatePrepayRequestDto {
* 交易请求号
*/
private String transId;
private OrderClientType orderClient;
}
......@@ -141,6 +141,7 @@ public enum ResponseResult {
ORDER_HAS_PAID("45057", "订单已支付或已完成"),
ORDER_PRE_PAYMENT_CLOSE_FAILED("45058","关闭预支付订单失败"),
ORDER_OWNER_ERROR("45059","订单归属错误"),
ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT("45060", "订单非待支付状态, 创建预支付失败"),
/**
* 支付
......
......@@ -11,14 +11,7 @@ import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.CreateOrderResponseVo;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.CreatePrepayVo;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.enums.OrderBeanType;
import cn.freemud.enums.PayStatus;
import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TradeState;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.AppOrderService;
......@@ -31,6 +24,7 @@ import com.freemud.application.sdk.api.base.SDKCommonBaseContextWare;
import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQueryRequest;
......@@ -59,10 +53,10 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
public class AppOrderServiceImpl implements AppOrderService {
......@@ -133,7 +127,7 @@ public class AppOrderServiceImpl implements AppOrderService {
String transId = createPrepayVo.getOrderCode() + redisService.increment(RedisUtil.getPaymentTransIdSequenceKey(createPrepayVo.getOrderCode()), 1, TimeUnit.DAYS);
CreatePrepayRequestDto createPrepayRequestDto = orderAdapter.convertToCreatePrepayRequestDto(createPrepayVo.getPartnerId(), createPrepayVo.getPayAppId(), createPrepayVo.getOpenId(), faceCode,
cardCode, createPrepayVo.getPayCode(), createOrderOperateDto.getFatherOrderBean(), createOrderOperateDto.getProductOrderBean(), createOrderOperateDto.getTotalAmount(),
createOrderOperateDto.getCardAmount(), extInfo, transId);
createOrderOperateDto.getCardAmount(), extInfo, transId, OrderClientType.APP);
redisService.savePaymentTransIdOrder(RedisUtil.getPaymentTransIdOrderKey(transId), productOrderBean.getOid(), 30L, TimeUnit.MINUTES);
return orderservice.createPrepayOrder(createPrepayRequestDto);
}
......@@ -193,9 +187,10 @@ public class AppOrderServiceImpl implements AppOrderService {
}
private void checkOrderBefore(CreatePrepayVo createPrepayVo, QueryOrdersResponse.DataBean.OrderBean orderBean) {
if(!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())){
throw new ServiceException(ResponseResult.ORDER_HAS_PAID);
if (!PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus()) || !OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
throw new ServiceException(ResponseResult.ORDER_STATUS_PRE_PAYMENT_NOT_SUPPORT);
}
OrderExtInfoDto extInfo = JSONObject.parseObject(orderBean.getExtInfo(), OrderExtInfoDto.class);
if(extInfo == null || StringUtils.isBlank(extInfo.getSessionId()) || !extInfo.getSessionId().equals(createPrepayVo.getSessionId())) {
throw new ServiceException(ResponseResult.ORDER_OWNER_ERROR);
......
......@@ -1717,7 +1717,7 @@ public class OrderServiceImpl implements Orderservice {
orderPayResponse = getOrderPayResponse(paymentRequest, createPrepayRequestDto.getFatherOrderBean());
}
if (orderPayResponse == null) {
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode);
return failPreOrderPay(LogThreadLocal.getTrackingNo(), createPrepayRequestDto.getProductOrderBean(), cardCode, createPrepayRequestDto.getOrderClient());
}
createOrderResponse = orderAdapter.convent2CreateFatherSonOrderResponseVo(orderPayResponse, createPrepayRequestDto.getProductOrderBean());
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, createPrepayRequestDto.getOrderExtInfoDTO(), createPrepayRequestDto.getProductOrderBean(), LogThreadLocal.getTrackingNo());
......@@ -1794,13 +1794,16 @@ public class OrderServiceImpl implements Orderservice {
return orderPayResponse;
}
private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode) {
private BaseResponse failPreOrderPay(String trackingNo, QueryOrdersResponse.DataBean.OrderBean orderBean, String cardCode, OrderClientType orderClient) {
List<OrderClientType> notCancelOrderClientList = Lists.newArrayList(OrderClientType.APP);
if(!notCancelOrderClientList.contains(orderClient)) {
//失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderBean.getOid(), orderBean.getCompanyId(),
AfterSalesType.SYSTEM_CANCEL, "获取预支付失败", trackingNo, null);
orderCenterSdkService.orderCancel(cancelOrderRequest);
// TODO: 2019/9/10 hubowen mq推送变更
backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
}
//svc 卡支付失败
if (StringUtils.isNotBlank(cardCode)) {
return ResponseUtil.error(ResponseResultEnum.PAY_BACKEND_CONFIG_ERROR.getCode(), ResponseResultEnum.PAY_BACKEND_CONFIG_ERROR.getMessage(), null);
......@@ -2124,7 +2127,7 @@ public class OrderServiceImpl implements Orderservice {
if(createOrderVo.getFaceCode() != null){
createOrderVo.setCardCode(createOrderVo.getFaceCode());
}
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode());
return failPreOrderPay(LogThreadLocal.getTrackingNo(), productOrderBean, createOrderVo.getCardCode(), null);
}
//更新订单extinfo信息
BaseResponse baseEditResponse = this.updateOrderInfo(orderPayResponse, orderExtInfoDTO, productOrderBean, LogThreadLocal.getTrackingNo());
......
......@@ -45,7 +45,7 @@
<dependency>
<groupId>cn.freemud</groupId>
<artifactId>assortment-shoppingcart-sdk</artifactId>
<version>1.1.4-SNAPSHOT</version>
<version>1.1.5-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
......
......@@ -48,6 +48,8 @@ public class ShoppingCartConvertAdapter {
cartGoodsDetailDto.setSkuName(product.getSkuName());
cartGoodsDetailDto.setPicture(getProductsVo != null ? getProductsVo.getSpuPicture() : "");
cartGoodsDetailDto.setActivityType(ActivityTypeEnum.TYPE_81.getCode());
cartGoodsDetailDto.setClassificationId(getProductsVo.getCategory());
cartGoodsDetailDto.setClassificationName(getProductsVo.getCategoryName());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> cartGoodsExtraList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(product.getAttributes())) {
for (CreateOrderVo.PremiumExchangeActivity.Product.Attribute attribute : product.getAttributes()) {
......@@ -323,6 +325,8 @@ public class ShoppingCartConvertAdapter {
cartGoods.setCreateTimeMili(cartGood.getCreateTimeMili());
cartGoods.setSkuName(cartGood.getSkuName());
cartGoods.setSkuName(cartGood.getSkuName());
cartGood.setClassificationId(cartGood.getClassificationId());
cartGood.setClassificationName(cartGood.getClassificationName());
cartGoods.setActivityType(ActivityTypeEnum.TYPE_61.getCode());
return cartGoods;
}
......
......@@ -88,6 +88,8 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
cartGoods.setUnit(product.getUnit());
cartGoods.setWeight(product.getWeight());
cartGoods.setQty(sendGoods.getSendNumber());
cartGoods.setClassificationId(product.getCategory());
cartGoods.setClassificationName(product.getCategoryName());
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGoods.setNodeId(sendActivity.getActivityCode());
cartGoodsList.add(cartGoods);
......
......@@ -221,7 +221,9 @@ public class BuySendPromotionService implements IPromotionService {
}
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGoods = sendGoodsMap.get(cartGood.getSpuId());
CartGoods cartGoods = shoppingCartConvertAdapter.convent2CartGoods(cartGood, sendGoods.getNowPrice());
cartGoods.setQty(sendGoods.getSendNumber() > 0 ? sendGoods.getSendNumber() : SEND_NUMBER);
cartGoods.setQty(SEND_NUMBER);
cartGoods.setClassificationId(cartGood.getClassificationId());
cartGoods.setClassificationName(cartGood.getClassificationName());
newCartGoodsList.add(cartGoods);
}
......
......@@ -9,16 +9,19 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.GetUserScoreUseDetailRequest;
import cn.freemud.entities.dto.user.GetUserScoreUserDetailResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import cn.freemud.service.thirdparty.CustomScoreClient;
import cn.freemud.utils.LogUtil;
import com.freemud.application.sdk.api.constant.FMStatusCode;
import com.freemud.application.sdk.api.log.ErrorLog;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
/**
......@@ -66,15 +69,28 @@ public class CustomerScoreService implements IPromotionService {
customerScoreVo.setReduceAmount(getValue(userScoreUseDetail.getResult().getReduceAmount()));
customerScoreVo.setReducePriceLimit(getValue(userScoreUseDetail.getResult().getReducePriceLimit()));
customerScoreVo.setOverlayOffers(userScoreUseDetail.getResult().getOverlayOffers());
customerScoreVo.setScoreReduceState(getValue(userScoreUseDetail.getResult().getScoreState()));
// 是否可优惠同享{0所有订单均可抵扣,1仅限原价订单才可抵扣(享受了促销活动、或使用了优惠券,不能进行积分抵扣
if (getValue(userScoreUseDetail.getResult().getOverlayOffers()) == 0) {
customerScoreVo.setScoreReduceState(getValue(userScoreUseDetail.getResult().getScoreState()));
} else {
if (StringUtils.isNotBlank(shoppingCartInfoRequestVo.getCouponCode()) || (calculationDiscountResult != null && calculationDiscountResult.getTotalDiscountAmount().intValue() > 0)) {
//积分抵扣开关禁用
if (StringUtils.isNotBlank(shoppingCartInfoRequestVo.getCouponCode()) || (calculationDiscountResult != null && calculationDiscountResult.getTotalDiscountAmount().intValue() > 0)
|| (calculationDiscountResult != null && !CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()))) {
int type81 = 0;
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount : calculationDiscountResult.getDiscounts()) {
if (ActivityTypeEnum.TYPE_81.getCode().equals(discount.getType())) {
type81 = 1;
break;
}
}
//积分抵扣开关禁用 过滤换购
if (type81 == 0 || (type81 == 1 && !CollectionUtils.isEmpty(shoppingCartInfoRequestVo.getSendGoods()))
|| (type81 == 1 && calculationDiscountResult.getDiscounts().size() > 1)) {
customerScoreVo.setScoreReduceState(5);
userScoreUseDetail.getResult().setScoreState(5);
discountAmount = 0;
customerScoreVo.setReduceAmount(0);
}
}
}
......
......@@ -417,7 +417,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if ((CollectionUtils.isEmpty(availableStocks.getResult())) || (qty > availableStocks.getResult().get(0).getQty())) {
Integer stock = 0;
if ((stock = availableStocks.getResult().get(0).getQty()) > 0) {
throw new BizServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE, "仅剩" + stock + "件");
throw new BizServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE, "仅剩" + stock + "件库存了");
}
throw new ServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE);
}
......@@ -1220,7 +1220,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
|| availableStocks.getResult().get(0).getQty() < qty)) {
Integer stock = 0;
if ((stock = availableStocks.getResult().get(0).getQty()) > 0) {
throw new BizServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE, "仅剩" + stock + "件");
throw new BizServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE, "仅剩" + stock + "件库存了");
}
throw new ServiceException(ResponseResult.SHOPPING_CART_STOCK_NOT_HAVE);
}
......@@ -1534,12 +1534,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
*/
private Integer checkSkuQty(List<CartGoods> allCartGoodsList, CartGoods cartGoods) {
Integer qty = 0;
if (allCartGoodsList == null) {
if (CollectionUtils.isEmpty(allCartGoodsList)) {
qty = cartGoods.getQty();
} else {
qty = cartGoods.getQty();
for (CartGoods goods : allCartGoodsList) {
if (goods.getSkuId().equals(cartGoods.getSkuId()) && goods.getSpuId().equals(cartGoods.getSpuId())) {
qty = qty + cartGoods.getQty();
qty += goods.getQty();
}
}
}
......
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