Commit 08d0017f by ping.wu

app下单修改

parent 3db4296a
......@@ -64,7 +64,7 @@ public class ShoppingCartGoodsDto {
*/
List<ActivityDiscountsDto> activityDiscountsDtos;
/**
* 库存
* 活动库存
*/
private List<SubtractStockVO> stocks;
......
......@@ -6,6 +6,7 @@ import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
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.enums.PayStatus;
......@@ -13,9 +14,12 @@ import cn.freemud.enums.ResponseResult;
import cn.freemud.enums.TradeState;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.service.AppOrderService;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.ResponseUtil;
import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
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.paymentcenter.client.request.PaymentCloseUnifiedOrderRequest;
......@@ -23,6 +27,10 @@ import com.freemud.application.sdk.api.paymentcenter.client.request.PaymentQuery
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentCloseUnifiedOrderResponse;
import com.freemud.application.sdk.api.paymentcenter.client.response.PaymentQueryResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import com.freemud.application.sdk.api.productcenter.domain.ProductInfosDTO;
import com.freemud.application.sdk.api.productcenter.request.product.GetProductRequest;
import com.freemud.application.sdk.api.productcenter.service.ProductService;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
......@@ -40,7 +48,10 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service
public class AppOrderServiceImpl implements AppOrderService {
......@@ -108,10 +119,10 @@ public class AppOrderServiceImpl implements AppOrderService {
* APP下单,下单带商品信息,不经过购物车服务,不唤起支付
*/
@Override
public BaseResponse createOrder(AppCreateOrderVo createOrderVo,AssortmentCustomerInfoVo customerInfo) {
public BaseResponse createOrder(AppCreateOrderVo createOrderReq,AssortmentCustomerInfoVo customerInfo) {
String trackingNo = LogThreadLocal.getTrackingNo();
String partnerId = createOrderVo.getPartnerId();
String shopId = createOrderVo.getShopId();
String partnerId = createOrderReq.getPartnerId();
String shopId = createOrderReq.getShopId();
// 获取门店信息
StoreInfoRequest storeInfoRequest = new StoreInfoRequest(partnerId, shopId,null);
StoreResponse storeResponse = storeCenterService.getStoreInfo(storeInfoRequest, trackingNo);
......@@ -119,11 +130,25 @@ public class AppOrderServiceImpl implements AppOrderService {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
// 查询门店信息 营业时间、营业状态,服务器当前时间在营业时间内 点餐桌号
checkOrder.checkOrderByStore(storeResponse.getBizVO(),createOrderVo.getTakeMealTime());
checkOrder.checkOrderProduct(createOrderVo.getOrderProducts(),createOrderVo.getMenuType());
return null;
checkOrder.checkOrderByStore(storeResponse.getBizVO(),createOrderReq.getTakeMealTime());
// 查商品服务确定金额
ShoppingCartGoodsDto shoppingCartGoodsDto = checkOrderProduct(partnerId,shopId,createOrderReq.getOrderProducts(),createOrderReq.getMenuType());
CreateOrderVo createOrderVo = new CreateOrderVo();
BeanUtil.convertBean(createOrderReq,createOrderVo);
// 查询小程序自提外卖配置信息 校验当前订单类型的下单参数 校验外卖是否满足起送条件
Integer pushOrderTime = checkOrder.checkOrderByOrderType(createOrderVo, customerInfo, storeResponse.getBizVO(),shoppingCartGoodsDto.getTotalAmount(), trackingNo);
//1.5.4版本,商品库存校验与扣库存
//List<String> stockProductIds = checkOrder.getStockProductIdList(createOrderVo, shoppingCartGoodsDto);
OrderExtInfoDTO extInfo = orderservice.getExtInfo(customerInfo, storeResponse.getBizVO(), pushOrderTime, createOrderVo);
//创建订单
CreateOrderOperateDto createOrderOperateDto = orderservice.sdkCreateOrder(createOrderVo, storeResponse.getBizVO(), shoppingCartGoodsDto, customerInfo);
BaseResponse baseResponse = this.updateOrderExtInfo(createOrderOperateDto.getProductOrderBean(), extInfo, trackingNo);
if(baseResponse != null) {
return baseResponse;
}
//返回没创建预支付的结果
CreateOrderResponseVo responseVo = orderAdapter.convent2CreateFatherSonOrderNoPayResponseVo(createOrderOperateDto.getProductOrderBean());
return ResponseUtil.success(responseVo);
}
......@@ -218,4 +243,174 @@ public class AppOrderServiceImpl implements AppOrderService {
}
}
}
/**
* 查询商品信息
*/
public ShoppingCartGoodsDto checkOrderProduct(String partnerId, String shopId, List<OrderProductVo> orderProducts, String menuType) {
ShoppingCartGoodsDto shoppingCartGoodsDto = new ShoppingCartGoodsDto();
List<String> spuIds = new ArrayList<>();
for (OrderProductVo op : orderProducts) {
if (StringUtils.isNotBlank(op.getSkuId())) {
spuIds.add(op.getSpuId());
}
}
if (CollectionUtils.isEmpty(spuIds)) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
//去重
List<String> result = spuIds.stream().distinct().collect(Collectors.toList());
GetProductRequest getProductInfoDto = new GetProductRequest();
getProductInfoDto.setPartnerId(partnerId);
getProductInfoDto.setShopId(shopId);
getProductInfoDto.setProductInfoType(2);
getProductInfoDto.setProductIds(result);
getProductInfoDto.setChannel(menuType);
ProductService productService = SDKCommonBaseContextWare.getBean(ProductService.class);
com.freemud.application.sdk.api.base.BaseResponse<ProductInfosDTO> productInfosDTOBaseResponse = productService.listProductInfoByIdList(getProductInfoDto, LogThreadLocal.getTrackingNo());
if (!Objects.equals(ResponseResultEnum.SUCCESS.getCode(), productInfosDTOBaseResponse.getCode()) || productInfosDTOBaseResponse.getData() == null) {
throw new ServiceException(ResponseResult.SYSTEM_BUSINESS_ERROR);
}
List<ProductBeanDTO> productBeanDTOS = productInfosDTOBaseResponse.getData().getProducts();
//包装费
Long packageAmount = 0L;
//原总价
Long originalTotalAmount = 0L;
//总价
Long totalAmount = 0L;
int sequence = 0;
List<ShoppingCartGoodsDto.CartGoodsDetailDto> products = new ArrayList<>();
for (OrderProductVo op : orderProducts) {
sequence += 1;
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
//单品
if (StringUtils.isNotBlank(op.getSpuId()) && op.getSpuId().equals(op.getSkuId())) {
for (ProductBeanDTO productBeanDTO : productBeanDTOS) {
if (op.getSpuId().equals(productBeanDTO.getPid())) {
cartGoodsDetailDto.setSpuId(productBeanDTO.getPid());
cartGoodsDetailDto.setSkuId(productBeanDTO.getPid());
cartGoodsDetailDto.setSpuName(productBeanDTO.getName());
cartGoodsDetailDto.setSkuName(productBeanDTO.getName());
cartGoodsDetailDto.setOriginalPrice(productBeanDTO.getOriginalPrice());
originalTotalAmount += productBeanDTO.getOriginalPrice() * op.getQty();
totalAmount += productBeanDTO.getFinalPrice() * op.getQty();
packageAmount += productBeanDTO.getPackPrice() * op.getQty();
cartGoodsDetailDto.setPicture(productBeanDTO.getPicture());
cartGoodsDetailDto.setQty(op.getQty());
cartGoodsDetailDto.setTotalDiscountAmount(0);
cartGoodsDetailDto.setHasProductCoupon(false);
cartGoodsDetailDto.setStockLimit(productBeanDTO.getStockLimit() == 1);
cartGoodsDetailDto.setWeight(productBeanDTO.getWeight());
cartGoodsDetailDto.setSequence(sequence);
cartGoodsDetailDto.setUnit(productBeanDTO.getUnit());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> extraList = new ArrayList<>();
for (OrderProductExtraVo orderProductExtraVo : op.getExtra()) {
ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra cartGoodsExtra = new ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra();
cartGoodsExtra.setAttributeId(orderProductExtraVo.getAttributeId());
cartGoodsExtra.setAttributeName(orderProductExtraVo.getAttributeName());
extraList.add(cartGoodsExtra);
}
cartGoodsDetailDto.setExtraList(extraList);
cartGoodsDetailDto.setActivityDiscountsDtos(null);
cartGoodsDetailDto.setComboProducts(null);
break;
}
}
}
//多规格商品
if (StringUtils.isNotBlank(op.getSpuId()) && !op.getSpuId().equals(op.getSkuId())) {
for (ProductBeanDTO productBeanDTO : productBeanDTOS) {
if (op.getSpuId().equals(productBeanDTO.getPid())) {
cartGoodsDetailDto.setSpuId(productBeanDTO.getPid());
cartGoodsDetailDto.setSpuName(productBeanDTO.getName());
for (ProductBeanDTO.SkuProductBean skuProductBean : productBeanDTO.getSkuList()) {
if (op.getSkuId().equals(skuProductBean.getSkuId())) {
cartGoodsDetailDto.setSkuId(skuProductBean.getSkuId());
cartGoodsDetailDto.setSkuName(skuProductBean.getProductName());
cartGoodsDetailDto.setOriginalPrice(skuProductBean.getOriginalPrice());
originalTotalAmount += skuProductBean.getOriginalPrice() * op.getQty();
totalAmount += skuProductBean.getFinalPrice() * op.getQty();
packageAmount += skuProductBean.getPackPrice() * op.getQty();
cartGoodsDetailDto.setStockLimit(skuProductBean.getStockLimit() == 1);
break;
}
}
cartGoodsDetailDto.setPicture(productBeanDTO.getPicture());
cartGoodsDetailDto.setQty(op.getQty());
cartGoodsDetailDto.setTotalDiscountAmount(0);
cartGoodsDetailDto.setHasProductCoupon(false);
cartGoodsDetailDto.setWeight(productBeanDTO.getWeight());
cartGoodsDetailDto.setSequence(sequence);
cartGoodsDetailDto.setUnit(productBeanDTO.getUnit());
List<ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra> extraList = new ArrayList<>();
for (OrderProductExtraVo orderProductExtraVo : op.getExtra()) {
ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra cartGoodsExtra = new ShoppingCartGoodsDto.CartGoodsDetailDto.CartGoodsExtra();
cartGoodsExtra.setAttributeId(orderProductExtraVo.getAttributeId());
cartGoodsExtra.setAttributeName(orderProductExtraVo.getAttributeName());
extraList.add(cartGoodsExtra);
}
cartGoodsDetailDto.setExtraList(extraList);
cartGoodsDetailDto.setActivityDiscountsDtos(null);
cartGoodsDetailDto.setComboProducts(null);
break;
}
}
}
if(StringUtils.isNotBlank(cartGoodsDetailDto.getSpuId()))
products.add(cartGoodsDetailDto);
}
shoppingCartGoodsDto.setProducts(products);
shoppingCartGoodsDto.setOriginalTotalAmount(originalTotalAmount);
shoppingCartGoodsDto.setTotalAmount(totalAmount);
// shoppingCartGoodsDto.setTotalDiscountAmount(0L);
shoppingCartGoodsDto.setPackageAmount(packageAmount);
//积分抵扣
shoppingCartGoodsDto.setScoreReduceAmount(0L);
shoppingCartGoodsDto.setReduceScore(0L);
// shoppingCartGoodsDto.setMemberCardAmount(0);
//结算页购买会员卡
shoppingCartGoodsDto.setCardOriginalAmount(0);
shoppingCartGoodsDto.setCardDiscountAmount(0);
//活动优惠
List<ActivityDiscountsDto> activityDiscountsDtos = new ArrayList<>();
shoppingCartGoodsDto.setActivityDiscountsDtos(activityDiscountsDtos);
//活动库存
List<SubtractStockVO> stocks = new ArrayList<>();
shoppingCartGoodsDto.setStocks(stocks);
//收货地址获取
shoppingCartGoodsDto.setDeliveryAmount(0L);
//满额减配送费活动
shoppingCartGoodsDto.setDiscountDeliveryAmount(0L);
// shoppingCartGoodsDto.setThresholdAmount(0L);
// shoppingCartGoodsDto.setDiscountDeliveryActivityCode(null);
return shoppingCartGoodsDto;
}
}
......@@ -21,10 +21,7 @@ import cn.freemud.entities.db.StoreTableNumber;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.GetMemberCouponRequestVo;
import cn.freemud.entities.vo.OrderProductVo;
import cn.freemud.entities.vo.ShoppingCartInfoRequestVo;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.CouponFlag;
import cn.freemud.enums.CreateOrderType;
import cn.freemud.enums.ResponseResult;
......@@ -497,11 +494,4 @@ public class CheckOrder {
}
}
public void checkOrderProduct(List<OrderProductVo> orderProducts,String menuType){
}
}
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