Commit 06866e3f by zhiheng.zhang

券码核销添加

parent 46f8b977
......@@ -1488,6 +1488,9 @@ public class OrderSdkAdapter {
type = 2;
}
break;
case MALL:
type = 3;
break;
default:
break;
}
......
......@@ -2,6 +2,6 @@ package com.freemud.sdk.api.assortment.order.enums;
public enum QueryOrderType {
TAKE_OUT, COLLECT_GOODS, EAT_IN;
TAKE_OUT, COLLECT_GOODS, EAT_IN,MALL;
}
package cn.freemud.adapter;
import cn.freemud.entities.dto.StoreDeliveryInfoDto;
import cn.freemud.entities.dto.UserDeliveryInfoDto;
import cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.SubtractStockVO;
import cn.freemud.enums.*;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.QueryDeliveryType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderType;
import com.freemud.sdk.api.assortment.order.enums.QueryPayType;
import com.freemud.sdk.api.assortment.order.request.order.BaseCreateOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderProductRequest;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@Component
public class MallOrderAdapter {
@Autowired
private OrderAdapter orderAdapter;
public BaseCreateOrderRequest convent2CreateOrderDto(CreateOrderVo createOrderVo, ShoppingCartGoodsDto shoppingCartGoodsDto) {
UserDeliveryInfoDto deliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
BaseCreateOrderRequest createOrderDto = getCreateOrderDto(createOrderVo);
long deliveryAmount = 0;
if(deliveryInfoDto != null) {
deliveryAmount = deliveryInfoDto.getRealDeliveryAmount();
}
Long packageAmount = shoppingCartGoodsDto.getPackageAmount() == null ? 0L : shoppingCartGoodsDto.getPackageAmount();
createOrderDto.setAmount(shoppingCartGoodsDto.getTotalAmount() + deliveryAmount + packageAmount);
// 解析购物车信息
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtos = shoppingCartGoodsDto.getProducts();
List<CreateOrderProductRequest> products = new ArrayList<>();
ArrayList<CreateOrderAccountRequest> orderAccountDtos = new ArrayList<>();
// 根据购物车商品信息获取优惠信息
int orderAccountIndex = 0;
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto : cartGoodsDetailDtos) {
Integer qty = cartGoodsDetailDto.getQty();
if (qty > 0) {
CreateOrderProductRequest createOrderProductDto = orderAdapter.convent2OrderProduct(cartGoodsDetailDto);
createOrderProductDto.setIgnoreProductPrice(1);
products.add(createOrderProductDto);
if (CollectionUtils.isNotEmpty(cartGoodsDetailDto.getActivityDiscountsDtos())) {
createOrderProductDto.setAccounts(orderAdapter.getAccounts(createOrderProductDto, cartGoodsDetailDto.getActivityDiscountsDtos()));
}
}
}
createOrderDto.setProducts(products);
if (deliveryAmount > 0) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("配送费")
.price(deliveryAmount)
.accountType(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(OrderAccountType.DELIVERY_AMOUNT.getCode())))
.sequence(orderAccountIndex++)
.build();
orderAccountDtos.add(createOrderAccountDto);
}
if (packageAmount > 0) {
CreateOrderAccountRequest createOrderAccountDto = CreateOrderAccountRequest.builder()
.accountId("")
.name("包装费")
.price(packageAmount)
.accountType(orderAdapter.getQueryOrderAccountType(OldOrderAccountType.getByCode(OrderAccountType.PACK_AMOUNT.getCode())))
.sequence(orderAccountIndex++)
.build();
orderAccountDtos.add(createOrderAccountDto);
}
createOrderDto.setAccounts(CollectionUtils.isNotEmpty(orderAccountDtos) ? orderAccountDtos : Collections.emptyList());
//设置库存扣减
if (CollectionUtils.isNotEmpty(shoppingCartGoodsDto.getStocks())) {
List<ActivityUpdateStockRequest.StockBeanDto> stocks = new ArrayList<>();
for (SubtractStockVO stockVO : shoppingCartGoodsDto.getStocks()) {
ActivityUpdateStockRequest.StockBeanDto stockBeanDto = new ActivityUpdateStockRequest.StockBeanDto();
stockBeanDto.setActivityCode(stockVO.getActivityCode());
stockBeanDto.setActivityStock(stockVO.getActivityStock() == null ? 1 : stockVO.getActivityStock());
if (CollectionUtils.isNotEmpty(stockVO.getGoodsStock())) {
List<GoodsStockDTO> goodsStockDTOS = new ArrayList<>();
stockVO.getGoodsStock().forEach(goods -> {
GoodsStockDTO goodsStockDTO = new GoodsStockDTO();
goodsStockDTO.setBenefitSeq(goods.getBenefitSeq());
goodsStockDTO.setGoodsId(goods.getGoodsId());
int stock = goods.getStock() == null ? 1 : goods.getStock();
goodsStockDTO.setStock(ActivityTypeEnum.TYPE_53.getCode().equals(stockVO.getActivityType()) ? 1 : stock);
goodsStockDTOS.add(goodsStockDTO);
});
stockBeanDto.setGoodsStock(goodsStockDTOS);
}
stocks.add(stockBeanDto);
}
ActivityUpdateStockRequest activityUpdateStockRequest = new ActivityUpdateStockRequest();
activityUpdateStockRequest.setStock(stocks);
createOrderDto.setActivityUpdateStockRequest(activityUpdateStockRequest);
}
return createOrderDto;
}
public BaseCreateOrderRequest getCreateOrderDto(CreateOrderVo createOrderVo) {
UserDeliveryInfoDto userDeliveryInfoDto = createOrderVo.getUserDeliveryInfoDto();
String remark = StringUtils.isNotBlank(createOrderVo.getOrderRemark()) ? createOrderVo.getOrderRemark() : "";
BaseCreateOrderRequest createOrderDto = new BaseCreateOrderRequest();
createOrderDto.setCompanyId(createOrderVo.getPartnerId());
createOrderDto.setShopId(createOrderVo.getShopId());
createOrderDto.setThirdShopId(createOrderVo.getThirdShopId());
createOrderDto.setShopName(createOrderVo.getStoreName());
createOrderDto.setUserId(createOrderVo.getUserId());
createOrderDto.setUserName(userDeliveryInfoDto.getReceiveUserName());
createOrderDto.setPhone(userDeliveryInfoDto.getReceiveMobile());
createOrderDto.setAddress(userDeliveryInfoDto.getReceiveAddress());
createOrderDto.setLatitude(userDeliveryInfoDto.getUserLatitude());
createOrderDto.setLongitude(userDeliveryInfoDto.getUserLongitude());
createOrderDto.setOrderType(QueryOrderType.TAKE_OUT);
createOrderDto.setPayType(QueryPayType.ONLINE_PAY);
createOrderDto.setSource(OrderSourceType.SAASMALL.getCode());
createOrderDto.setSourceName(OrderSourceType.SAASMALL.getDesc());
createOrderDto.setOrderClient(OrderClientType.SAASMALL);
createOrderDto.setRemark(remark);
createOrderDto.setGmtExpect(null);
BaseCreateOrderRequest.DeliveryTypeInfo deliveryTypeInfo = new BaseCreateOrderRequest.DeliveryTypeInfo();
deliveryTypeInfo.setDeliveryType(QueryDeliveryType.THIRD);
createOrderDto.setAddInfo(deliveryTypeInfo);
createOrderDto.setAmount(0L);
createOrderDto.setBarCounter(createOrderVo.getTableNumber());
createOrderDto.setProvince(userDeliveryInfoDto.getReceiveProvince());
createOrderDto.setCity(userDeliveryInfoDto.getReceiveCity());
createOrderDto.setRegion(userDeliveryInfoDto.getReceiveRegion());
createOrderDto.setMenuType(BusinessTypeEnum.SAAS_MALL.getName());
return createOrderDto;
}
/**
* 计算用户收货地址实际配送费
*
* @param storeDeliveryInfoDto 门店配送信息
* @param userLongitude 用户地址经度
* @param userLatitude 用户地址维度
* @return
*/
public Long getUserRealDeliveryAmount(StoreDeliveryInfoDto storeDeliveryInfoDto, String userLongitude, String userLatitude) {
return 0L;
}
}
......@@ -663,6 +663,8 @@ public class OrderAdapter {
} else {
orderType = OrderType.COLLECT_GOODS.getCode();
}
}else if (Objects.equals(createOrderVo.getOrderType(), OrderType.MALL.getCode())) {
orderType = OrderType.MALL.getCode();
} else {
throw new ServiceException(ResponseResult.PARAMETER_MISSING, "非法的订单类型");
}
......@@ -2905,6 +2907,9 @@ public class OrderAdapter {
if (OldOrderType.COLLECT_GOODS.getCode().equals(oldOrderType)) {
return QueryOrderType.COLLECT_GOODS;
}
if (OldOrderType.MALL.getCode().equals(oldOrderType)) {
return QueryOrderType.MALL;
}
if (OldOrderType.EAT_IN.getCode().equals(oldOrderType)) {
return QueryOrderType.EAT_IN;
}
......
......@@ -2,7 +2,6 @@ package cn.freemud.service.impl;
import cn.freemud.adapter.DeliveryAdapter;
import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter;
import cn.freemud.adapter.MallOrderAdapter;
import cn.freemud.adapter.OrderAdapter;
import cn.freemud.amqp.Header;
import cn.freemud.amqp.MQAction;
......@@ -43,7 +42,6 @@ import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.AssortmentOpenPlatformWxappManager;
......@@ -85,7 +83,6 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -95,8 +92,6 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
@Slf4j
@Service
public class MallOrderServiceImpl implements MallOrderService {
......@@ -122,7 +117,7 @@ public class MallOrderServiceImpl implements MallOrderService {
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private MallOrderAdapter mallOrderAdapter;
private OrderAdapter mallOrderAdapter;
@Autowired
private ItemServiceImpl itemService;
@Autowired
......@@ -269,7 +264,7 @@ public class MallOrderServiceImpl implements MallOrderService {
OrderExtendedReq orderExtendedReq = orderAdapter.saveStoreInfo(storeResponseDto);
//创建普通订单
Function<Object, CreateOrderResponse> createOrder = (var -> {
BaseCreateOrderRequest baseCreateOrderRequest = mallOrderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto);
BaseCreateOrderRequest baseCreateOrderRequest = mallOrderAdapter.convent2CreateOrderDto(createOrderVo, shoppingCartGoodsDto,storeResponseDto);
//查询第三方商品编号
baseCreateOrderRequest = getProductCustomerCode(baseCreateOrderRequest);
//保存门店渠道信息
......@@ -530,9 +525,9 @@ public class MallOrderServiceImpl implements MallOrderService {
//支付回掉成功标记
redisCache.save(RedisKeyConstant.KGD_PAYMENT_CALLBACK_FMID + message.getOut_trade_no(), message.getOut_trade_no(), 10L, TimeUnit.MINUTES);
if (message.getSource() != null && message.getSource().equals(PaySuccessSource.OUTSIDE.getSource())) {
log.info("调用券码核销==" + message.getTrans_id());
log.info("微商城调用券码核销==" + message.getTrans_id());
verificationCoupon(message.getTrans_id());
log.info("调用券码结束==" + message.getTrans_id());
log.info("微商城调用券码结束==" + message.getTrans_id());
}
orderIds.add(orderBean.getOid());
......@@ -950,6 +945,7 @@ public class MallOrderServiceImpl implements MallOrderService {
private String verificationCoupon(String transId) {
String orderId = redisCache.getValue(RedisUtil.getPaymentTransIdOrderKey(transId));
log.info("mallOrderService verificationCoupon,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), transId, orderId);
if (StringUtils.isNotBlank(orderId)) {
log.info("mallOrderService从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}", LogTreadLocal.getTrackingNo(), transId, orderId);
transId = orderId;
......
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