Commit 05b05abd by zhiheng.zhang

华莱士更新

parent a3e37daf
......@@ -36,7 +36,6 @@ public enum OrderSourceType {
JUBAOPEN("mtjbp", "美团聚宝盆", 20),
DIANPING("dp", "美团点评", 21),
KOUBEI("koubeiwaimai", "口碑外卖", 22),
MALL("mall", "非码Mall", 23),
SAASMALL("saasmall", "微商城", 23),
DPZHCT("dpzhct", "美团点评智慧餐厅", 24),
FMWD("fmwd", "非码微店", 25),
......
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
......@@ -80,4 +81,11 @@ public class UpdateDeliveryInfoByIdRequest extends BaseConfig {
*/
private String exceptionDesc;
/**
* 操作类型 0 = 发货 1=更改物流信息
*/
private int opType;
private OrderTaskReq orderTask;
}
......@@ -1067,6 +1067,22 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
expressReq.setOrderSubState(request.getOrderSubState());
expressReq.setExceptionDesc(request.getExceptionDesc());
expressReq.setExceptionId(request.getExceptionId());
expressReq.setOpType(request.getOpType());
if(null !=request.getOrderClient() && OrderClientType.SAASMALL.getIndex() == request.getOrderClient() && 0 == request.getOpType()){
OrderTaskReq orderTask = new OrderTaskReq();
orderTask.setTaskType(5);
orderTask.setTimeout(1);
//1000*60*60*24*15 毫秒(15天)
// long timeout = 1296000000;
long timeout = 3600000;
long timeMillis = System.currentTimeMillis();
Date processingDate = new Date(timeMillis + timeout - 60000);
Date taskTime = new Date(timeMillis + timeout);
orderTask.setTaskTime(DateUtil.convert2String(taskTime, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
//处理时间,当前时间加15天减1分钟
orderTask.setProcessingTime(DateUtil.convert2String(processingDate, DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
expressReq.setOrderTaskReq(orderTask);
}
com.freemud.application.sdk.api.ordercenter.response.BaseResponse response = orderSdkService.updateDeliveryInfo(expressReq, request.getTrackingNo());
OrderBaseResponse baseResponse = new OrderBaseResponse();
baseResponse.setErrcode(response.getCode() != null ? Integer.parseInt(response.getCode()) : null);
......
......@@ -405,4 +405,13 @@ public class OrderController {
return orderservice.queryTodayOrders(queryOrderByConditionsRequestVo);
}
/**
* 订单确认收货
*/
@ApiAnnotation(logMessage = "receive")
@PostMapping("/receive")
public BaseResponse orderReceive(@Validated @LogParams @RequestBody OrderReceiveRequestVO request) {
return mallOrderService.orderReceive(request);
}
}
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class OrderReceiveRequestVO {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
/**
* 商户ID
*/
@NotEmpty(message = "商户号不能为空")
private String partnerId;
/**
* 门店id
*/
private String shopId;
/**
* 订单ID
*/
@NotEmpty(message = "订单号不能为空")
private String oid;
/**
* 渠道类型 OrderChannelType
*/
private String channelType;
}
......@@ -172,7 +172,7 @@ public enum ResponseResult {
ORDER_CANCEL_ERROR_ESTIMATE_TIME("45068", "预计送达还剩30分钟,无法取消"),
STORE_SELF_ERROR("45069", "请选择截止营业时间大于45分钟下单"),
COUPON_INVALID("45070", "券已锁定,请先支付或取消待支付订单"),
ORDER_RECEIVE_ERR("45071", "确认收货失败,请稍后再试"),
/**
* 支付
......
......@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.ConfirmOrderDto;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateOrderVo;
import cn.freemud.entities.vo.OrderAffirmRequestVO;
import cn.freemud.entities.vo.OrderReceiveRequestVO;
import cn.freemud.entities.vo.PaysuccessNoticeMessage;
import cn.freemud.entities.vo.encircle.CreateReserveOrderVo;
import cn.freemud.entities.vo.encircle.EmptyTableNumberVo;
......@@ -38,4 +39,10 @@ public interface MallOrderService {
*/
String paySuccessCallback(PaysuccessNoticeMessage message, ConfirmOrderDto confirmOrderDto, Map<String, QueryOrdersResponseDto.DataBean.OrderBean> orderBeans);
/**
* 订单确认完成
*/
BaseResponse orderReceive(OrderReceiveRequestVO requestVO);
}
......@@ -47,12 +47,15 @@ import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseD
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
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.NewOrderStatus;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.application.sdk.api.ordercenter.request.OrderChangeStateReq;
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.POSOrderOperationBaseReq;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
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;
......@@ -121,6 +124,9 @@ public class MallOrderServiceImpl implements MallOrderService {
private OrderSdkService orderSdkService;
@Autowired
private EcologyAdminApplicationClient ecologyAdminApplicationClient;
@Autowired
private OrderSdkAdapter orderSdkAdapter;
/**
* 创建订单
......@@ -142,7 +148,7 @@ public class MallOrderServiceImpl implements MallOrderService {
// 查询购物车(内部校验券点餐方式,券是否可用) 校验当前订单类型的下单参数
ShoppingCartGoodsDto shoppingCartGoodsDto = checkMallOrder.getShoppingCartGoodsDto(createOrderVo);
// 查询商城的配送模板信息,校验订单是否满足配送条件
checkMallOrder.checkOrderByDelivery(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto.getTotalAmount(), trackingNo);
// checkMallOrder.checkOrderByDelivery(createOrderVo, userLoginInfoDto, storeResponseDto, shoppingCartGoodsDto.getTotalAmount(), trackingNo);
OrderExtInfoDto extInfo = this.getExtInfo(userLoginInfoDto, storeResponseDto, createOrderVo);
return this.sdkCreateOrder(createOrderVo, storeResponseDto, shoppingCartGoodsDto, userLoginInfoDto, extInfo);
}
......@@ -476,13 +482,6 @@ public class MallOrderServiceImpl implements MallOrderService {
orderRefund(orderBean, "接单失败");
return gson.toJson(message);
}
// 创建配送单
boolean createSuccess = this.createDelivery(orderBean, LogTreadLocal.getTrackingNo());
if(!createSuccess) {
// 创建配送单发送失败 则进行取消订单并退款
orderRefund(orderBean, "运单不足,配送失败");
return gson.toJson(message);
}
return sendPaySuccessNoticeMessage();
}
......@@ -764,4 +763,53 @@ public class MallOrderServiceImpl implements MallOrderService {
return thirdProductPropertyId;
}
/**
* 订单确认收货
*/
@Override
public BaseResponse orderReceive(OrderReceiveRequestVO requestVO) {
BaseResponse result = new BaseResponse();
try {
String trackingNo = LogTreadLocal.getTrackingNo();
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(requestVO.getOid());
baseQueryOrderRequest.setTrackingNo(trackingNo);
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
// 判断订单信息是否存在
BaseResponse baseResponse = this.checkOrder(response, requestVO.getPartnerId());
if (baseResponse != null) {
return baseResponse;
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
//判断订单是否已经完成
if (OrderStatus.COMPLETE.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_REPEAT_DO_COMPLETE);
}
//已取消的订单不能操作
if (OrderStatus.CALCEL.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_HAS_CANCELED);
}
//非商城订单不允许操作
if (!OrderSourceType.SAASMALL.getCode().equals(orderBean.getSource())) {
return ResponseUtil.error(ResponseResult.ORDER_MALL_NOT_MATCH);
}
/**
* 修改配送状态
*/
OrderChangeStateReq request = new OrderChangeStateReq();
request.setOrderCode(baseQueryOrderRequest.getOrderId());
request.setOrderState(NewOrderStatus.COMPLETE.getIndex());
request.setOperator(baseQueryOrderRequest.getOperator());
request.setRemark("已完成");
com.freemud.application.sdk.api.ordercenter.response.BaseResponse orderCenterResponse = orderSdkService.updateOrderState(request, baseQueryOrderRequest.getTrackingNo());
result.setCode(orderCenterResponse.getCode());
result.setMessage(orderCenterResponse.getMessage());
}catch (Exception e){
result.setCode(ResponseResult.ORDER_RECEIVE_ERR.getCode());
result.setMessage(ResponseResult.ORDER_RECEIVE_ERR.getMessage());
}
return result;
}
}
......@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Component
public class MallOrderAdapter {
public class SaasMallOrderAdapter {
/**
* 接单request
......
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.MallOrderAdapter;
import cn.freemud.management.adapter.WaimaiSdkAdapter;
import cn.freemud.management.adapter.SaasMallOrderAdapter;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.*;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.takeaway.request.order.*;
import com.freemud.application.sdk.api.takeaway.service.WaimaiOrderService;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -36,9 +30,6 @@ import javax.annotation.Resource;
*/
@Service
public class MallOrderMangerServiceImpl implements OrderManagerService {
@Resource
private MallOrderAdapter mallOrderAdapter;
@Autowired
private MallOrderHandle mallOrderHandle;
@Autowired
......
......@@ -12,6 +12,7 @@
*/
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq;
import lombok.Data;
@Data
......@@ -62,4 +63,14 @@ public class OrderExpressReq {
*/
private String exceptionDesc;
/**
* 操作类型 0 = 发货 1=更改物流信息
*/
private int opType;
/**
* 定时任务
*/
private OrderTaskReq orderTaskReq;
}
......@@ -27,6 +27,7 @@ public class OrderTaskReq {
//2 超时回调
//3 拉单队列
//4 申请退款48小时未处理自动回调
//5 15天自动确认收货
private Integer taskType;
private Integer timeout;
......
......@@ -175,7 +175,7 @@ public class ShoppingCartController {
if (instanceByRequest instanceof ShoppingCartNewServiceImpl && SDKCommonBaseContextWare.getBean(ShoppingCartNewServiceImpl.class).newShoppingCartGray(shoppingCartInfoRequestVo.getPartnerId(), shoppingCartInfoRequestVo.getShopId())){
return shoppingCartDemoController.getShoppingCartGoodsApportion(getShoppingCartGoodsApportionRequestVo);
} else {
return instanceByRequest. getShoppingCartGoods(shoppingCartInfoRequestVo, getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
return instanceByRequest.getShoppingCartGoods(shoppingCartInfoRequestVo, getShoppingCartGoodsApportionRequestVo.getPremiumExchangeActivity());
}
}
......
......@@ -20,9 +20,16 @@ public class QueryDeliveryTemplateRequestVo {
private String province;
public QueryDeliveryTemplateRequestVo(String partnerId,String province){
private Integer orderAmount;
private Integer count;
public QueryDeliveryTemplateRequestVo(String partnerId,String province,Integer orderAmount,Integer count){
this.partnerId = partnerId;
this.province = province;
this.orderAmount = orderAmount;
this.count = count;
}
}
package cn.freemud.entities.vo;
import com.freemud.application.sdk.api.storecenter.request.template.DeliveryTemplateDetailRequest;
import lombok.Data;
import java.math.BigDecimal;
......@@ -21,49 +22,18 @@ public class QueryDeliveryTemplateResponseVo {
private String msg;
private List<DispatchCost> data;
private DeliveryTemplateInfoVo data;
@Data
public static class DispatchCost {
public static class DeliveryTemplateInfoVo {
/**
* 增加的运费
* 运费
*/
private Integer addCost;
private Integer freight;
/**
* 首个配送件数 对应的运费金额
* 是否包邮 -> true:是; false:否
*/
private Integer firstCost;
/**
* 首个配送件数
*/
private Integer firstStandard;
/**
* 最小包邮金额
*/
private Integer hasAmountForDeliveryFree;
/**
* 0: 无最小金额包邮配置 1:存在最金额配置
*/
private Integer hasMinAmount;
/**
* 0: 无最小件数包邮配置 1:存在最小件数配置
*/
private Integer hasMinCount;
/**
* 最小包邮件数
*/
private Integer minCountForDeliveryFree;
private boolean isDispatchFree;
}
/**
* 是否包邮 -> true:是; false:否
*/
private boolean isDispatchFree;
}
......@@ -104,6 +104,7 @@ public enum ResponseResult {
SHOPPING_CART_QTY_LIMIT_ERR("44035", "该商品单次购买数量限制为10,请知晓"),
SHOPPING_CART_SEED_COUPON_VALID("44037","券商品数量不可大于券数量"),
SHOPPING_CART_MATERIA_QTY_LIMIT_ERR("44038", "商品加料超过最大限制"),
SHOPPING_CART_QUERY_DELIVERY_TEMPLATE_ERR("44039", "获取配送模板异常"),
/**
* 订单状态码
......
......@@ -136,9 +136,10 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
addShoppingCartGoodsRequestVo.setShopId(storeId);
//清空临时购物车
// 构造请求参数,进行清空购物车
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = assortmentSdkService.getNowBuyCartParamDto(addShoppingCartGoodsRequestVo.getBuyType(),partnerId, storeId, userId);
shoppingCartBaseService.clear(cartParamDto, LogThreadLocal.getTrackingNo());
if(ShoppingCartConstant.NOW_BUY_TYPE == addShoppingCartGoodsRequestVo.getBuyType()) {
com.freemud.sdk.api.assortment.shoppingcart.domain.CartParamDto cartParamDto = assortmentSdkService.getNowBuyCartParamDto(addShoppingCartGoodsRequestVo.getBuyType(), partnerId, storeId, userId);
shoppingCartBaseService.clear(cartParamDto, LogThreadLocal.getTrackingNo());
}
/**
* 不支持优惠券
*/
......@@ -343,7 +344,11 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
//1.5.4 多规格的sku商品计算包装费
//checkSkuOnVersion(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo);
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
if(ShoppingCartConstant.NOW_BUY_TYPE == shoppingCartInfoRequestVo.getBuyType()) {
assortmentSdkService.setNowBuyShoppingCart(shoppingCartInfoRequestVo.getBuyType(),partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
}else {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
}
ArrayList<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) {
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
......@@ -475,32 +480,30 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
String menuType = shoppingCartInfoRequestVo.getMenuType();
Integer orderType = shoppingCartInfoRequestVo.getOrderType();
List<ShoppingCartInfoRequestVo.SendGoods> sendGoodsList = shoppingCartInfoRequestVo.getSendGoods();
List<CartGoods> cartGoodsList = new ArrayList<>();
// 获取购物车商品
List<CartGoods> cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService);
if(ShoppingCartConstant.NOW_BUY_TYPE == shoppingCartInfoRequestVo.getBuyType()) {
cartGoodsList = assortmentSdkService.getNowBuyShoppingCart(ShoppingCartConstant.NOW_BUY_TYPE,partnerId, storeId, userId, null, "", shoppingCartBaseService);
}else{
cartGoodsList = assortmentSdkService.getShoppingCart(partnerId, storeId, userId, null, "", shoppingCartBaseService);
}
if (cartGoodsList == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_GETINFO_INVAILD);
cartGoodsList = new ArrayList<>();
}
// check购物车中所有商品(商品是否存在,价格变动,券是否支持当前点餐方式)
// check购物车中所有商品
CheckCartRequest checkCartRequest = assortmentSdkService.checkShoppingCartSdk(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo, shoppingCartInfoRequestVo.getOrderType(), "", BusinessTypeEnum.SAAS_MALL.getName() ,shoppingCartBaseService);
com.freemud.sdk.api.assortment.shoppingcart.domain.ShoppingCartGoodsResponseVo cartGoodsResponseVo = checkCartRequest.getShoppingCartGoodsResponseVo();
//商品不再售卖状态或价格变动,直接返回报错
if (cartGoodsResponseVo != null) {
if (cartGoodsResponseVo.getCartGoodsStates() != null && cartGoodsResponseVo.getCartGoodsStates().isHasInvalidGoods()) {
return ResponseUtil.error(ResponseResult.STORE_ITEM_CHECK_INVAILD);
}
if (cartGoodsResponseVo.getCartGoodsStates() != null && cartGoodsResponseVo.getCartGoodsStates().isPriceChanged()) {
return ResponseUtil.error(ResponseResult.SHOPPING_CART_ACTIVITY_CHANGE);
}
shoppingCartGoodsResponseVo.setToastMsg(cartGoodsResponseVo.getToastMsg());
if (checkCartRequest.getShoppingCartGoodsResponseVo() != null) {
shoppingCartGoodsResponseVo.setToastMsg(checkCartRequest.getShoppingCartGoodsResponseVo().getToastMsg());
}
cartGoodsList = JSONArray.parseArray(JSONObject.toJSONString(checkCartRequest.getCartGoodsList()), CartGoods.class);
// 多规格的sku商品计算包装费
//this.checkSkuOnVersion(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo);
//1.5.4 多规格的sku商品计算包装费
//checkSkuOnVersion(cartGoodsList, partnerId, storeId, shoppingCartGoodsResponseVo);
// 重新存储最新购物车
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
if(ShoppingCartConstant.NOW_BUY_TYPE == shoppingCartInfoRequestVo.getBuyType()) {
assortmentSdkService.setNowBuyShoppingCart(shoppingCartInfoRequestVo.getBuyType(),partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
}else {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, cartGoodsList, assortmentCustomerInfoVo.getSessionId(), "", this.shoppingCartBaseService);
}
ArrayList<CalculationSharingDiscountRequestDto.CalculationDiscountCoupon> coupons = new ArrayList<>();
if (StringUtils.isNotEmpty(couponCode)) {
CalculationSharingDiscountRequestDto.CalculationDiscountCoupon coupon = new CalculationSharingDiscountRequestDto.CalculationDiscountCoupon();
......@@ -510,7 +513,11 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
}
buildCoupons(coupons,shoppingCartInfoRequestVo.getCouponCodes());
Long deliveryAmount =0L;
Long deliveryAmount = calculateDeliveryAmount(partnerId, shoppingCartInfoRequestVo,cartGoodsList);
ActivityQueryDto activityQueryDto = activityAdapter.getActivityQueryDto(partnerId, storeId, userId, appId, shoppingCartInfoRequestVo.getOrderType());
CouponPromotionVO couponPromotionVO = couponAdapter.getCouponPromotionVO(shoppingCartInfoRequestVo, userLoginInfoDto);
List<ShoppingCartInfoRequestVo.SendGoods> sendGoods = new ArrayList<>();
......@@ -553,7 +560,6 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
, storeId);
buildShoppingCartGoodsResponse(shoppingCartGoodsResponseVo,calculationSharingDiscountResult,shoppingCartInfoRequestVo.getFlag(),partnerId);
//设置均摊信息
updateShoppingCartGoodsApportion(shoppingCartGoodsResponseVo, null, shoppingCartGoodsDto, premiumExchangeActivity, shoppingCartInfoRequestVo);
......@@ -890,64 +896,20 @@ public class ShoppingCartMallServiceImpl implements ShoppingCartNewService {
return deliveryAmount;
}
log.info("获取配送配逻辑 tackingNo:{},partnerId:{},province", LogThreadLocal.getTrackingNo(), shoppingCartInfoRequestVo.getPartnerId(),shoppingCartInfoRequestVo.getProvince());
return getDeliveryAmount(shoppingCartInfoRequestVo.getPartnerId(),shoppingCartInfoRequestVo.getProvince(),cartGoodsList);
}
/**
* 查询配送费
*
* @return
*/
private Integer getDeliveryAmount( String partnerId, String province) {
String trackingNo = LogThreadLocal.getTrackingNo();
Integer amount = 0;
QueryDeliveryTemplateRequestVo requestVo = new QueryDeliveryTemplateRequestVo(partnerId, province);
QueryDeliveryTemplateResponseVo responseVo = deliveryFeiginClient.queryDeliveryTemplate(requestVo);
//查询会员后货地址经纬度
com.freemud.application.sdk.api.base.BaseResponse<QueryReceiveAddressResponse> queryReceiveAddressResponse = memberCenterService.queryReceiveAddressById(queryReceive, trackingNo);
if (!ResponseResult.SUCCESS.getCode().equals(queryReceiveAddressResponse.getCode()) || queryReceiveAddressResponse.getData() == null) {
throw new ServiceException(ResponseResult.USER_GETRECEIVEADDRESS_ERROR);
}
StoreInfoRequest request = new StoreInfoRequest();
request.setPartnerId(partnerId);
request.setStoreCode(storeId);
//查询门店信息,获取门店经纬度
StoreResponse storeResponse = storeCenterService.getStoreInfo(request, trackingNo);
if (storeResponse == null || storeResponse.getStatusCode() != 100 || storeResponse.getBizVO() == null) {
throw new ServiceException(ResponseResult.STORE_NOT_FOUND);
}
//查询门店外卖配送配置
AssortmentOpenPlatformPartnerStoreDeliveryConfig deliveryConfig = deliveryConfigManager.findByPartnerIdAndStoreCode(partnerId, storeId);
if (deliveryConfig == null) {
throw new ServiceException(ResponseResult.STORE_ITEM_NOT_DELIVERY);
}
StoreDeliveryInfoDto storeDeliveryInfoDto = new StoreDeliveryInfoDto();
storeDeliveryInfoDto.setPartnerId(partnerId);
storeDeliveryInfoDto.setStoreId(storeId);
storeDeliveryInfoDto.setStoreName(storeResponse.getBizVO().getStoreName());
storeDeliveryInfoDto.setDeliveryLimitAmount(deliveryConfig == null ? 0 : deliveryConfig.getDeliveryLimitAmount());
storeDeliveryInfoDto.setDeliveryAmount(deliveryConfig == null ? 0 : deliveryConfig.getDeliveryAmount());
storeDeliveryInfoDto.setDefaultDeliveryRange(deliveryConfig == null ? 0L : deliveryConfig.getDefaultDeliveryRange());
storeDeliveryInfoDto.setAddRangeAmount(deliveryConfig == null ? 0L : deliveryConfig.getAddRangeAmount());
storeDeliveryInfoDto.setAddRangeCount(deliveryConfig == null ? 0L : deliveryConfig.getAddRangeCount());
storeDeliveryInfoDto.setPoint2DList(getDeliveryPoint2DList(storeResponse.getBizVO().getDistributionScope()));
storeDeliveryInfoDto.setDeliveryHoursDay(storeResponse.getBizVO().getDeliveryHoursDay());
storeDeliveryInfoDto.setLongitude(storeResponse.getBizVO().getLongitude());
storeDeliveryInfoDto.setLatitude(storeResponse.getBizVO().getLatitude());
storeDeliveryInfoDto.setScopeConfig(storeResponse.getBizVO().getScopeConfig());
if (StringUtils.isNotEmpty(storeResponse.getBizVO().getDeliveryRadius())) {
storeDeliveryInfoDto.setDeliveryRadius(Integer.valueOf(storeResponse.getBizVO().getDeliveryRadius()));
} else {
storeDeliveryInfoDto.setDeliveryRadius(0);
Long orderAmount = 0L ;
if(null != cartGoodsList && cartGoodsList.size()>0){
orderAmount = cartGoodsList.stream().mapToLong(CartGoods::getAmount).sum();
}
QueryDeliveryTemplateRequestVo requestVo = new QueryDeliveryTemplateRequestVo(partnerId, shoppingCartInfoRequestVo.getProvince(),Integer.valueOf(orderAmount.toString()),cartGoodsList.size());
QueryDeliveryTemplateResponseVo queryDeliveryTemplateResponseVo = deliveryFeiginClient.queryDeliveryTemplate(requestVo);
if (!ResponseResult.SUCCESS.getCode().equals(queryDeliveryTemplateResponseVo.getCode().toString()) || queryDeliveryTemplateResponseVo.getData() == null) {
throw new ServiceException(ResponseResult.SHOPPING_CART_QUERY_DELIVERY_TEMPLATE_ERR);
}
boolean isDispatchFree = queryDeliveryTemplateResponseVo.getData().isDispatchFree();
if(!isDispatchFree) {
deliveryAmount = Long.valueOf(queryDeliveryTemplateResponseVo.getData().getFreight());
}
storeDeliveryInfoDto.setEnableTakeaway(true);
String userLongitude = queryReceiveAddressResponse.getData().getLongitude();
String userLatitude = queryReceiveAddressResponse.getData().getLatitude();
amount = storeService.getUserRealDeliveryAmount(storeDeliveryInfoDto, userLongitude, userLatitude).intValue();
return amount;
return deliveryAmount;
}
}
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