Commit 3030cee3 by 徐康

查询最近一单数据

parent c3f45d59
......@@ -98,7 +98,8 @@ public class WebAspect {
}
List<String> unauthorizedUrls = Arrays.asList(getNotFilterUrl(CommonRedisKeyConstant.SAAS_NOT_AUTHORIZED_URL, NOT_AUTHORIZED_KEY).split(","));
List<String> mcCafeUnauthorizedUrls = Arrays.asList("/MCoffee/mcCafePaySuccessCallback","/openStoreMCCafeQueryPaymentCallback","/MCoffee/mcCafeRefund",
"/maCafeQueryOrders","/mcCafeQueryOrderById","/reminder","/listFreeRider","/mcCafePollingPickUpCode","/mcCafe/statusOperate","/MCoffee/mcCafeRefundNotifyCallback");
"/maCafeQueryOrders","/mcCafeQueryOrderById","/reminder","/listFreeRider","/mcCafePollingPickUpCode","/mcCafe/statusOperate",
"/MCoffee/mcCafeRefundNotifyCallback","mcCafeQueryRecentOrder");
if (!unauthorizedUrls.contains(requestUrl) && StringUtils.isEmpty(userInfo.getUnionId())
&& mcCafeUnauthorizedUrls.stream().noneMatch(o -> requestUrl.contains(o))) {
throw new CommonServiceException(CommonResponseResult.USER_UNAUTHORIZED);
......
package cn.freemud.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.vo.*;
import cn.freemud.monitorcenter.tools.HealthUtil;
import cn.freemud.service.MCCafeOrderService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class McCafeController {
@Autowired
private Orderservice orderservice;
@Autowired
private MCCafeOrderService mcCafeOrderService;
@Autowired
private OrderAdapterService orderAdapterService;
/**
* 麦咖啡创建订单
*/
@ApiAnnotation(logMessage = "createMCCafeOrder")
@PostMapping("/MCoffee/createMCCafeOrder")
public BaseResponse createOrderMCCafe(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) {
return orderAdapterService.createMCCafeOrder(createOrderVo);
}
/**
* 麦咖啡订单支付成功后通知
*/
@ApiAnnotation(logMessage = "mcCafePaySuccessCallback")
@PostMapping({"/MCoffee/mcCafePaySuccessCallback","/openStoreMCCafeQueryPaymentCallback"})
public String mcCafePaySuccessCallback(@LogParams @RequestBody NewPaysuccessNoticeMessage message) {
return mcCafeOrderService.mcCafePaySuccessCallback(message);
}
/**
* 查询麦咖啡订单列表
*/
@ApiAnnotation(logMessage = "maCafeQueryOrders")
@PostMapping("/maCafeQueryOrders")
public BaseResponse maCafeQueryOrders(@Validated @LogParams @RequestBody McCafeQueryOrderVo queryOrderVo) {
return mcCafeOrderService.mcCafeQueryOrders(queryOrderVo);
}
/**
* 麦咖啡 获取订单详情
*/
@ApiAnnotation(logMessage = "mcCafeQueryOrderById")
@PostMapping("/mcCafeQueryOrderById")
public BaseResponse mcCafeQueryOrderById(@Validated @LogParams @RequestBody MaCafeQueryOrderVo queryOrderVo) {
return mcCafeOrderService.mcCafeQueryOrderById(queryOrderVo);
}
/**
* 麦咖啡用户申请退款
*/
@ApiAnnotation(logMessage = "mcCafeRefund")
@PostMapping("/MCoffee/mcCafeRefund")
public BaseResponse mcCafeRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return mcCafeOrderService.orderRefund(orderRefundVo);
}
/**
* 退款回掉通知
*/
@ApiAnnotation(logMessage = "mcCafeRefundNotifyCallback")
@PostMapping("/MCoffee/mcCafeRefundNotifyCallback")
public String mcCafeRefundNotifyCallback(@LogParams @RequestBody RefundNotifyCallbackRequestVo requestVo) {
return mcCafeOrderService.mcCafeRefundNotifyCallback(requestVo);
}
/**
* 根据订单号查询订单状态和取餐码
*/
@ApiAnnotation(logMessage = "mcCafePollingPickUpCode")
@PostMapping("/mcCafePollingPickUpCode")
public BaseResponse mcCafePollingPickUpCode(@Validated @LogParams @RequestBody MaCafeQueryOrderVo vo) {
return mcCafeOrderService.mcCafePollingPickUpCode(vo);
}
/**
* 麦咖啡催单
*/
@ApiAnnotation(logMessage = "reminder")
@PostMapping("/reminder")
public BaseResponse reminder(@Validated @LogParams @RequestBody ReminderVo reminderVo) {
return mcCafeOrderService.reminder(reminderVo);
}
/**
* 麦咖啡根据订单号查询骑手位置
*/
@ApiAnnotation(logMessage = "listFreeRider")
@PostMapping("/listFreeRider")
public BaseResponse listFreeRider(@Validated @LogParams @RequestBody FreeRiderPositionVo vo) {
return mcCafeOrderService.listFreeRider(vo);
}
/**
* 查询麦咖啡最近已完成的一单
*/
@ApiAnnotation(logMessage = "mcCafeQueryRecentOrder")
@PostMapping("/mcCafeQueryRecentOrder")
public BaseResponse mcCafeQueryRecentOrder(@Validated @LogParams @RequestBody McCafeQueryOrderVo queryOrderVo) {
return mcCafeOrderService.mcCafeQueryRecentOrder(queryOrderVo);
}
}
......@@ -97,15 +97,6 @@ public class OrderController {
}
/**
* 麦咖啡创建订单
*/
@ApiAnnotation(logMessage = "createMCCafeOrder")
@PostMapping("/MCoffee/createMCCafeOrder")
public BaseResponse createOrderMCCafe(@Validated @LogParams @RequestBody CreateOrderVo createOrderVo) {
return orderAdapterService.createMCCafeOrder(createOrderVo);
}
/**
* 扫脸支付下单
*/
@ApiAnnotation(logMessage = "scanFaceCreateOrder")
......@@ -142,15 +133,6 @@ public class OrderController {
}
/**
* 麦咖啡订单支付成功后通知
*/
@ApiAnnotation(logMessage = "mcCafePaySuccessCallback")
@PostMapping({"/MCoffee/mcCafePaySuccessCallback","/openStoreMCCafeQueryPaymentCallback"})
public String mcCafePaySuccessCallback(@LogParams @RequestBody NewPaysuccessNoticeMessage message) {
return mcCafeOrderService.mcCafePaySuccessCallback(message);
}
/**
* 退款回掉通知
*/
@ApiAnnotation(logMessage = "refundNotifyCallback")
......@@ -169,15 +151,6 @@ public class OrderController {
}
/**
* 查询麦咖啡订单列表
*/
@ApiAnnotation(logMessage = "maCafeQueryOrders")
@PostMapping("/maCafeQueryOrders")
public BaseResponse maCafeQueryOrders(@Validated @LogParams @RequestBody McCafeQueryOrderVo queryOrderVo) {
return orderservice.mcCafeQueryOrders(queryOrderVo);
}
/**
* 围餐-预览订单
* @param queryOrderVo
* @return
......@@ -224,15 +197,6 @@ public class OrderController {
/**
* 麦咖啡 获取订单详情
*/
@ApiAnnotation(logMessage = "mcCafeQueryOrderById")
@PostMapping("/mcCafeQueryOrderById")
public BaseResponse mcCafeQueryOrderById(@Validated @LogParams @RequestBody MaCafeQueryOrderVo queryOrderVo) {
return orderservice.mcCafeQueryOrderById(queryOrderVo);
}
/**
* 取消支付订单
*/
@ApiAnnotation(logMessage = "cancelPayOrder")
......@@ -270,24 +234,6 @@ public class OrderController {
}
/**
* 麦咖啡用户申请退款
*/
@ApiAnnotation(logMessage = "mcCafeRefund")
@PostMapping("/MCoffee/mcCafeRefund")
public BaseResponse mcCafeRefund(@Validated @LogParams @RequestBody OrderRefundVo orderRefundVo) {
return mcCafeOrderService.orderRefund(orderRefundVo);
}
/**
* 退款回掉通知
*/
@ApiAnnotation(logMessage = "mcCafeRefundNotifyCallback")
@PostMapping("/MCoffee/mcCafeRefundNotifyCallback")
public String mcCafeRefundNotifyCallback(@LogParams @RequestBody RefundNotifyCallbackRequestVo requestVo) {
return mcCafeOrderService.mcCafeRefundNotifyCallback(requestVo);
}
/**
* 获取订单排队号
*/
@ApiAnnotation(logMessage = "queueIndex")
......@@ -373,33 +319,6 @@ public class OrderController {
}
/**
* 麦咖啡催单
*/
@ApiAnnotation(logMessage = "reminder")
@PostMapping("/reminder")
public BaseResponse reminder(@Validated @LogParams @RequestBody ReminderVo reminderVo) {
return orderservice.reminder(reminderVo);
}
/**
* 麦咖啡根据订单号查询骑手位置
*/
@ApiAnnotation(logMessage = "listFreeRider")
@PostMapping("/listFreeRider")
public BaseResponse listFreeRider(@Validated @LogParams @RequestBody FreeRiderPositionVo vo) {
return orderservice.listFreeRider(vo);
}
/**
* 根据订单号查询订单状态和取餐码
*/
@ApiAnnotation(logMessage = "mcCafePollingPickUpCode")
@PostMapping("/mcCafePollingPickUpCode")
public BaseResponse mcCafePollingPickUpCode(@Validated @LogParams @RequestBody MaCafeQueryOrderVo vo) {
return orderservice.mcCafePollingPickUpCode(vo);
}
/**
* timeOutRefund
* @param timeOutOrderVo
* @return
......
package cn.freemud.entities.vo.mccafe;
import cn.freemud.entities.vo.CartGoods;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* All rights Reserved, Designed By sunary.site
*
* @version v1.0
* @Title: IntelliJ IDEA
* @Package cn.freemud.service.impl.mcoffee.entity
* @Description: 请简单描述下这个类是做什么用的
* @author: yu.sun
* @date: 2021-01-26 09:50:21
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
*/
@Data
public class RecentGoodsInfoVo {
@NotEmpty(message = "spuId不能为空")
private String spuId;
private String skuId;
/**
* 数量
*/
@NotNull(message = "商品数量不可为空")
private Integer qty;
/**
* 操作类型 1= 添加商品券 2=加价购
*/
private Integer operationType;
/**
* 套餐名称
*/
private String groupName;
/**
* 1.6.0 版本增加 分类名
*/
private String categoryName;
/**
* 商品额外的属性
*/
private List<CartGoodsExtra> extra;
/**
* 套餐固定商品
*/
private List<ComboxGoodsVo> productComboList;
/**
* 套餐可选商品
*/
private List<ComboxGoodsVo> productGroupList;
/**
* 加料
*/
private List<MaterialGoodsVo> productMaterialList;
/**
* 麦咖啡定制属性
*/
private List<SpecialExtra> specialExtra;
@Data
public final static class ComboxGoodsVo {
/**
* 麦咖啡多规格商品spuid
*/
private String spuId;
private String skuId;
private Integer qty;
/**
* 商品组Id
*/
private String productGroupId;
/**
* 麦咖啡空键位
*/
private String emptyKey;
/**
* 商品额外的属性
*/
List<CartGoods.CartGoodsExtra> extra;
private List<SpecialExtra> specialExtra;
/**
* 麦咖啡多规格商品加料
*/
private List<MaterialGoodsVo> productMaterialList;
}
@Data
public final static class MaterialGoodsVo {
/**
* 加料商品ID
*/
private String spuId;
/**
* 加料商品组ID
*/
private String groupId;
/**
* 数量
*/
private Integer qty;
/**
* 麦咖啡入机键位
*/
private String customerCode;
}
@Data
public final static class SpecialExtra {
/**
* 属性Id
*/
private String attributeId;
/**
* 属性名
*/
private String attributeName;
private String attributeForeignName;
/**
* 麦咖啡特定属性入机code
*/
private String specialCode;
}
@Data
public final static class CartGoodsExtra {
/**
* 属性Id
*/
private String attributeId;
/**
* 属性名
*/
private String attributeName;
private String attributeForeignName;
}
}
......@@ -40,5 +40,19 @@ public interface MCCafeOrderService {
*/
String mcCafeRefundNotifyCallback(RefundNotifyCallbackRequestVo message);
BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo);
BaseResponse mcCafeQueryOrders(McCafeQueryOrderVo queryOrderVo);
BaseResponse mcCafePollingPickUpCode(MaCafeQueryOrderVo vo);
BaseResponse reminder(ReminderVo reminderVo);
BaseResponse listFreeRider(FreeRiderPositionVo vo);
/**
* 查询麦咖啡最近已完成的一单
*/
BaseResponse mcCafeQueryRecentOrder(McCafeQueryOrderVo queryOrderVo);
}
......@@ -127,16 +127,6 @@ public interface Orderservice {
*/
BaseResponse queryOrderByConditions(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo);
BaseResponse reminder(ReminderVo reminderVo);
BaseResponse listFreeRider(FreeRiderPositionVo vo);
BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo);
BaseResponse mcCafeQueryOrders(McCafeQueryOrderVo queryOrderVo);
BaseResponse mcCafePollingPickUpCode(MaCafeQueryOrderVo vo);
/**
* 通过订单号查询订单详情
*
......
......@@ -23,10 +23,11 @@ import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.RedisKeyConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto;
import cn.freemud.entities.dto.delivery.*;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.product.AttributeValue;
......@@ -39,6 +40,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.dto.user.SendCouponForqujiaDtoResponseDto;
import cn.freemud.entities.dto.user.SendCouponForqujiaRequestDto;
import cn.freemud.entities.vo.*;
import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
......@@ -50,15 +52,13 @@ import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient;
import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.RedisUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.ValidationCode;
import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
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.manager.cache.CacheOpenPlatformPartnerWxappConfigManager;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
......@@ -83,7 +83,9 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.CodePayResp
import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmountResponse;
import com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService;
import com.freemud.application.sdk.api.service.EmailAlertService;
import com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
......@@ -94,6 +96,7 @@ import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRe
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
......@@ -117,6 +120,8 @@ import ma.glasnost.orika.impl.DefaultMapperFactory;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
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;
......@@ -148,6 +153,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
private String cloud_print_exchange;
@Value("${saas.order.delivery.mcCafe.callBackUrl}")
private String deliveryCallBackUrl;
@Value("${mcCafe.quickOrder.interval}")
private String quickOrderInterval;
@Autowired
private DeliveryFeiginClient deliveryFeiginClient;
......@@ -160,8 +167,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private OrderServiceImpl orderService;
@Autowired
private PromotionActivityClient promotionActivityClient;
@Autowired
private ShoppingCartClient shoppingCartClient;
@Autowired
private CustomerApplicationClient customerApplicationClient;
......@@ -170,17 +175,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private BuriedPointService buriedPointService;
@Autowired
private CouponActivityService couponActivityService;
@Autowired
private MessageNoticeAdapter messageNoticeAdapter;
@Autowired
private OrderAdapter orderAdapter;
@Autowired
private ActivityAdapter activityAdapter;
@Autowired
private CouponAdapter couponAdapter;
@Autowired
private MealCacheManager mealCacheManager;
//聚合订单服务
@Autowired
private OrderCenterSdkService orderCenterSdkService;
......@@ -192,8 +189,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private StoreCenterService storeCenterService;
@Autowired
private DeliveryService deliveryService;
@Autowired
private MQService mqService;
@Autowired
@Qualifier("messageTemplatePushOrderService")
......@@ -201,8 +196,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
@Autowired
private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private CheckMCCafeOrder checkMCCafeOrder;
......@@ -213,12 +206,8 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private PaymentNewService paymentNewService;
@Autowired
private ActivityApplicationClient activityApplicationClient;
@Autowired
private AssortmentOpenPlatformWxappAuthorizerManager wxappAuthorizerManager;
@Autowired
private CacheOpenPlatformPartnerWxappConfigManager cacheOpenPlatformPartnerWxappConfigManager;
@Autowired
private OrderAdapterService orderAdapterService;
@Autowired
private AssortmentOpenPlatformPartnerManager assortmentOpenPlatformPartnerManager;
......@@ -235,7 +224,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
@Autowired
private CustomerExtendClient customerExtendClient;
@Autowired
private CacheOpenApiEncryptManager cacheOpenApiEncryptManager;
private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager;
private static MapperFacade mapper = new DefaultMapperFactory.Builder().build().getMapperFacade();
......@@ -1369,6 +1358,426 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return newSendPaySuccessNoticeMessage();
}
/**
* 麦咖啡查询订单详情
*
* @param queryOrderVo
* @return
*/
@Override
public BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String oid = queryOrderVo.getOid();
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryMCCafeOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
String storeId = orderBean.getShopId();
StoreInfoRequest request = new StoreInfoRequest();
request.setPartnerId(queryOrderVo.getPartnerId());
request.setStoreCode(storeId);
StoreResponse storeInfo = storeCenterService.getStoreInfo(request, LogTreadLocal.getTrackingNo());
if (storeInfo != null && storeInfo.getBizVO() != null) {
StoreResponse.BizVO storeResponseDto = storeInfo.getBizVO();
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setLatitude(Double.valueOf(storeResponseDto.getLatitude()));
orderBean.setLongitude(Double.valueOf(storeResponseDto.getLongitude()));
}
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response1 = new QueryOrderQueueIndexResponse();
response1.setErrcode(baseOrderResponse.getErrcode());
response1.setErrmsg(baseOrderResponse.getErrmsg());
if (RESPONSE_SUCCESS_CODE.equals(response1.getErrcode())) {
String queueIndex = response1.getData() == null ? "" : response1.getData().toString();
orderBean.setQueueIndex(queueIndex);
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
// 查询订单的操作状态
OrderStatusTrackingInfoResponse statusTrackingInfoByOid = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var1);
String string2 = JSONObject.toJSONString(statusTrackingInfoByOid);
JSONObject jsonObject2 = JSONObject.parseObject(string2);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject2.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(Collections.singletonList(orderBean), userInfo.getWxAppId(), userInfo.getIappId());
if (CollectionUtils.isEmpty(queryOrderResponseVos)) {
throw new ServiceException(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrderResponseVo queryOrderResponseVo = queryOrderResponseVos.get(0);
Optional<ProductVo> productVoOptional = queryOrderResponseVo.getProducts().stream()
.filter(o -> StringUtils.isNotBlank(o.getSplitIndex()))
.findFirst();
Map<String, Integer> existMap = new HashMap<>();
if (productVoOptional.isPresent()) {
int size = queryOrderResponseVo.getProducts().size();
List<ProductVo> productVoList = new ArrayList<>();
for (int i = 0; i < size; i++) {
ProductVo productVo = queryOrderResponseVo.getProducts().get(i);
if (StringUtils.isBlank(productVo.getSplitIndex())) {
productVoList.add(productVo);
} else {
if (existMap.get(productVo.getSplitIndex()) == null) {
existMap.put(productVo.getSplitIndex(), productVoList.size());
productVoList.add(productVo);
} else {
ProductVo productVoExists = productVoList.get(existMap.get(productVo.getSplitIndex()));
productVoExists.setOriginalTotalAmount(productVoExists.getOriginalTotalAmount() + productVo.getOriginalTotalAmount());
productVoExists.setSaleTotalAmount(productVoExists.getSaleTotalAmount() + productVo.getSaleTotalAmount());
productVoExists.setQty(productVoExists.getQty() + productVo.getQty());
}
}
}
queryOrderResponseVo.setProducts(productVoList);
}
//麦咖啡 预约外卖单重新封装取餐时间
if (OrderType.TAKE_OUT.getCode().equals(queryOrderResponseVo.getOrderType()) && StringUtils.isNotEmpty(queryOrderResponseVo.getReserveDeliveryTime())) {
Date reserveDeliveryTime = DateUtil.convert2Date(queryOrderResponseVo.getReserveDeliveryTime(), "yyyy-MM-dd HH:mm:ss");
queryOrderResponseVo.setReserveDeliveryTime(formatSpecialDate(reserveDeliveryTime));
}
if (OrderStatus.TAKE_ORDER.getCode().equals(queryOrderResponseVo.getOrderStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(queryOrderResponseVo.getOrderStatus())) {
queryOrderResponseVo.setTakeCode("");
}
queryOrderResponseVo.setOrderTypeDesc(Optional.ofNullable(McCafeOrderTypeGather.getByCode(queryOrderResponseVo.getOrderType()))
.map(McCafeOrderTypeGather::getDesc).orElse(""));
queryOrderResponseVo.setIsCouponOrder(queryOrderResponseVo.getProducts().stream()
.filter(o -> !ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).findAny().isPresent() ? 0 : 1);
//48小时自动退款描述
if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig() != null
&& queryOrderResponseVo.getRefundStatus() != null && queryOrderResponseVo.getRefundStatus() == 1) {
Integer automaticRefund = storeInfo.getBizVO().getStoreConfig().getAutomaticRefund();
if (automaticRefund != null && automaticRefund == 1) {
queryOrderResponseVo.setRefundTips("若48小时内未成功退款,请联系商家人工处理");
} else {
queryOrderResponseVo.setRefundTips("若48小时内未成功退款,请联系商家人工处理");
}
}
return ResponseUtil.success(queryOrderResponseVo);
}
@Override
public BaseResponse mcCafeQueryOrders(McCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isBlank(queryOrderVo.getStartDate())) {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -1), "yyyy-MM-dd"));
}
if (StringUtils.isBlank(queryOrderVo.getEndDate())) {
queryOrderVo.setEndDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd"));
}
if (CollectionUtils.isEmpty(queryOrderVo.getQueryOrderStatus())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单状态不能为空");
}
if (CollectionUtils.isNotEmpty(queryOrderVo.getQueryOrderType())) {
if (CollectionUtils.isEmpty(OrderType.getByCode(queryOrderVo.getQueryOrderType()))) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单类型不存在");
}
}
String partnerId = queryOrderVo.getPartnerId();
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
Date startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
Date endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
String userId = userLoginInfoDto.getMemberId();
queryOrderVo.setStartDate(startDateStr);
queryOrderVo.setEndDate(endDateStr);
QueryOrderVo vo = new QueryOrderVo();
BeanUtils.copyProperties(queryOrderVo, vo);
String channelType = this.getQueryOrderChannelType(vo, userLoginInfoDto);
QueryOrdersDto queryOrdersDto = orderAdapter.convent2QueryOrdersDtoMcCafe(queryOrderVo, userId, channelType);
QueryOrdersResponse queryOrderResponse;
try {
QueryOrdersRequest queryOrdersRequest2 = new QueryOrdersRequest();
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogTreadLocal.getTrackingNo());
queryOrderResponse = orderCenterSdkService.queryMCCafeOrders(queryOrdersRequest2);
} catch (Exception e) {
LogUtil.error("queryOrders_error", gson.toJson(queryOrdersDto), e);
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
if (queryOrderResponse == null || !RESPONSE_SUCCESS_CODE.equals(queryOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
Map<String, Object> responseMap = Maps.newTreeMap();
//用户无订单数据
if (queryOrderResponse.getData() == null || queryOrderResponse.getData().getCount() == 0) {
responseMap.put("count", 0);
responseMap.put("list", new ArrayList<QueryOrderResponseVo>());
return ResponseUtil.success(responseMap);
}
List<QueryOrdersResponse.DataBean.OrderBean> orders = queryOrderResponse.getData().getOrders();
Set<String> shopIds = new HashSet<>();
// 过滤待支付订单
if (CollectionUtils.isNotEmpty(orders)) {
for (QueryOrdersResponse.DataBean.OrderBean orderBean : orders) {
if (!(OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()) || PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus()))) {
shopIds.add(orderBean.getShopId());
}
}
}
String storeCodes = "";
for (String shopId : shopIds) {
storeCodes = shopId + "," + storeCodes;
}
GetListByCodesRequest request = new GetListByCodesRequest();
request.setPartnerId(partnerId);
request.setStoreCodes(storeCodes);
// 查询多个门店信息
GetListByCodesResponse storeInfoResponse = storeCenterService.getListByCodes(request, LogTreadLocal.getTrackingNo());
Map<String, StoreResponse.BizVO> storeMap = new HashMap<>();
if (storeInfoResponse != null && storeInfoResponse.getBizVO() != null && storeInfoResponse.getBizVO().getList() != null) {
for (StoreResponse.BizVO bizVO : storeInfoResponse.getBizVO().getList()) {
storeMap.put(bizVO.getStoreCode(), bizVO);
}
}
if (CollectionUtils.isNotEmpty(orders)) {
orders.forEach(orderBean -> {
StoreResponse.BizVO storeResponseDto = storeMap.get(orderBean.getShopId());
if (storeResponseDto != null) {
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setLatitude(Double.valueOf(storeResponseDto.getLatitude()));
orderBean.setLongitude(Double.valueOf(storeResponseDto.getLongitude()));
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
orderBean.setQueueIndex("");
// 查询待取餐订单才需要查询排队人数和订单状态扭转记录
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(orderBean.getOrderType())) {
// 查询订单的排队人数
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response = new QueryOrderQueueIndexResponse();
response.setErrcode(baseOrderResponse.getErrcode());
response.setErrmsg(baseOrderResponse.getErrmsg());
response.setData(baseOrderResponse.getData() == null ? 0 : Integer.parseInt(baseOrderResponse.getData()));
if (RESPONSE_SUCCESS_CODE.equals(response.getErrcode())) {
String queueIndex = response.getData() == null ? "" : response.getData().toString();
orderBean.setQueueIndex(queueIndex);
}
// 查询订单的操作状态
BaseQueryOrderRequest var2 = new BaseQueryOrderRequest();
var2.setOrderId(orderBean.getOid());
var2.setTrackingNo(LogTreadLocal.getTrackingNo());
OrderStatusTrackingInfoResponse orderStatusTrackingInfoResponse = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var2);
String string = JSONObject.toJSONString(orderStatusTrackingInfoResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
}
if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
orderBean.setOtherCode("");
}
});
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(orders, userLoginInfoDto.getWxAppId(), userLoginInfoDto.getIappId());
responseMap.put("count", queryOrderResponse.getData() == null ? 0 : queryOrderResponse.getData().getCount());
responseMap.put("list", queryOrderResponseVos);
//只有有订单时才显示用户自定义取餐信息
if (CollectionUtils.isNotEmpty(queryOrderResponseVos)) {
responseMap.put("definitionMsg", getDefinitionMsg(queryOrderVo.getPartnerId()));
}
return ResponseUtil.success(responseMap);
}
/**
* 获取商户自定义提示信息配置
*
* @param partnerId
* @return
*/
public String getDefinitionMsg(String partnerId) {
String definitionMsgKey = "partner_definition_msg";
AssortmentOpenPlatformPartnerConfig partnerConfig = openPlatformPartnerConfigManager.selectPartnerConfigByPartnerKey(partnerId, definitionMsgKey, 1);
if (partnerConfig == null) {
return null;
}
return partnerConfig.getPartnerValue();
}
/**
* 如果有第三方配送,返回值添加第三方配送信息
*/
private void hasThirdDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean) {
String deliveryId = orderBean.getAddInfo().getDeliveryId();
if ("0".equals(deliveryId)) {
return;
}
// String trackingNo = LogTreadLocal.getTrackingNo();
QueryDeliveryBaseRequest queryDeliveryBaseRequest = new QueryDeliveryBaseRequest();
queryDeliveryBaseRequest.setDeliveryId(deliveryId);
queryDeliveryBaseRequest.setOpenDistance(1);
//变更查询配送信息换新接口 wanghanghang 20210129
//【ID1021981】C端小程序配送显示骑手、商家坐标地图、配送距离以及骑手姓名电话,支持直接拨打
DeliveryBaseResponse<DeliveryStatusAndRiderPositionDto> deliveryBaseResponse = deliveryFeiginClient.getDeliveryStatusAndRiderPosition(queryDeliveryBaseRequest);
// DeliveryResponseDto<DeliveryInfoDto> delivery = deliveryService.deliveryOrderOne(deliveryId, trackingNo);
if (RESPONSE_SUCCESS_CODE.equals(deliveryBaseResponse.getCode()) && deliveryBaseResponse.getData() != null) {
DeliveryStatusAndRiderPositionDto result = deliveryBaseResponse.getData();
orderBean.setDeliverStatus(result.getDevlieryStatus());
orderBean.setRiderName(result.getRiderName());
orderBean.setRiderPhone(result.getRiderPhone());
orderBean.setReceiveTime(result.getReceiveTime());
orderBean.setDepatchTime(result.getDepatchTime());
orderBean.setArriveShopTime(result.getArriveShopTime());
orderBean.setSendTime(result.getSendTime());
orderBean.setCompleteTime(result.getCompleteTime());
/** 只有配送状态是2 3 4 5时,返回三方坐标信息
* 此处如果是外卖单,则需要返回门店经纬度/用户经纬度/骑手经纬度
* 门店经纬度 = 配送返回信息为准,外卖单独新增门店经纬度字段,和配送信息接口统一 /queryOrderRider
* wanghanghang 20210129
*/
if (result.getDevlieryStatus().equals(DeliveryStatus.ALLOTRIDER.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERARRIVESTORE.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERGETMEAL.getCode()) ||
result.getDevlieryStatus().equals(DeliveryStatus.RIDERSTARTDELIVERY.getCode())
) {
orderBean.getAddInfo().setDeliverStatus(result.getDevlieryStatus());
orderBean.getAddInfo().setDistance(deliveryBaseResponse.getData().getDistance());
orderBean.getAddInfo().setDuration(deliveryBaseResponse.getData().getDuration());
orderBean.getAddInfo().setStoreDistance(deliveryBaseResponse.getData().getStoreDistance());
orderBean.getAddInfo().setStoreDuration(deliveryBaseResponse.getData().getStoreDuration());
orderBean.getAddInfo().setRiderName(result.getRiderName());
orderBean.getAddInfo().setRiderPhone(result.getRiderPhone());
orderBean.getAddInfo().setOrderId(orderBean.getOid());
orderBean.getAddInfo().setStorePhone(result.getStorePhone());
//门店经纬度
if (deliveryBaseResponse.getData().getStorePoint() != null) {
String[] storePoint = deliveryBaseResponse.getData().getStorePoint().split(",");
orderBean.getAddInfo().setShopLongitude(storePoint[0]);
orderBean.getAddInfo().setShopLatitude(storePoint[1]);
}
//骑手经纬度
if (deliveryBaseResponse.getData().getCurrentPoint() != null) {
String[] currentPoint = deliveryBaseResponse.getData().getCurrentPoint().split(",");
orderBean.getAddInfo().setRiderLongitude(currentPoint[0]);
orderBean.getAddInfo().setRiderLatitude(currentPoint[1]);
}
//用户经纬度
if (deliveryBaseResponse.getData().getDestPoint() != null) {
String[] destPoint = deliveryBaseResponse.getData().getDestPoint().split(",");
orderBean.getAddInfo().setDestLongitude(destPoint[0]);
orderBean.getAddInfo().setDestLatitude(destPoint[1]);
}
}
}
}
private void orderStatusTracking(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid) {
List<OrderStatusTrackingInfoDto.OrderStatusTrackingInfo> data = orderStatusTrackingInfoByOid.getData();
if (CollectionUtils.isNotEmpty(data)) {
for (OrderStatusTrackingInfoDto.OrderStatusTrackingInfo orderStatusTrackingInfo : data) {
Integer status = orderStatusTrackingInfo.getStatus();
String statusTime = orderStatusTrackingInfo.getStatusTime();
switch (status) {
case 1:
orderBean.setOperateTakeOrderTime(statusTime);
break;
case 2:
orderBean.setOperateWaitPayTime(statusTime);
break;
case 3:
orderBean.setOperateReceiptTime(statusTime);
break;
case 4:
orderBean.setOperateDistributionTime(statusTime);
break;
case 5:
orderBean.setOperateCompleteTime(statusTime);
break;
case 6:
orderBean.setOperateCalcelTime(statusTime);
break;
case 7:
orderBean.setOperatePefuseTime(statusTime);
break;
case 31:
orderBean.setOperateCompleteMakeTime(statusTime);
break;
default:
break;
}
}
}
}
public static String formatSpecialDate(Date date) {
if (date == null) {
return null;
}
DateTime now = new DateTime();
DateTime today_start = new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0);
DateTime today_end = today_start.plusDays(1);
DateTime tomorrow_start = today_start.plusDays(2);
if (date.after(today_start.toDate()) && date.before(today_end.toDate())) {
return String.format("%s", new DateTime(date).toString("HH:mm"));
} else if (date.after(today_end.toDate()) && date.before(tomorrow_start.toDate())) {
return String.format("明天%s%s", DateUtils.getDayWeek(date), new DateTime(date).toString("HH:mm"));
}
return new DateTime(date).toString("yyyy-MM-dd") + DateUtils.getDayWeek(date) + new DateTime(date).toString("HH:mm");
}
/**
* 取消配送
*
......@@ -1573,36 +1982,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
}
/**
* 开通会员卡
*
* @param partnerId 商户号
* @param ruleId 会员规则ID
* @param oid 订单号
* @param userId 用户ID
*/
private void activateMemberCard(String partnerId, String ruleId, String oid, String userId) {
PurchasePaidRequestDto purchasePaidRequestDto = new PurchasePaidRequestDto();
purchasePaidRequestDto.setPartnerId(partnerId);
purchasePaidRequestDto.setOperatorType(0);
purchasePaidRequestDto.setRuleId(ruleId);
purchasePaidRequestDto.setOrderId(oid);
purchasePaidRequestDto.setMemberId(userId);
// 尝试三次开通会员卡,中途成功则跳出
int count = 3;
for (int i = 1; i <= count; i++) {
BaseResponse baseResponse = customerApplicationClient.purchasePaid(purchasePaidRequestDto);
// 不以响应码为判断是否开通会员卡成功的标准
if (baseResponse != null && "SUCCESS".equals(baseResponse.getResult())) {
break;
}
// 尝试开通会员卡失败三次
if (i >= count) {
LogUtil.error("尝试开通会员卡失败" + count + "次", JSON.toJSONString(purchasePaidRequestDto), JSON.toJSONString(baseResponse));
}
}
}
/**
* 随单购月卡调会员发券与更新订单使用的优惠券与买的优惠券
* @param orderBean
*/
......@@ -1849,4 +2228,195 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
return true;
}
@Override
public BaseResponse mcCafePollingPickUpCode(MaCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String oid = queryOrderVo.getOid();
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
OrderViewStatusDto orderViewStatusDesc = orderAdapter.getOrderViewStatusDesc(orderBean, userLoginInfoDto.getWxAppId());
Map<String, Object> responseMap = Maps.newTreeMap();
responseMap.put("orderStatus", orderViewStatusDesc.getOrderStatus());
responseMap.put("takeCode", "");
responseMap.put("queueIndex", "");
String extInfo = orderBean.getExtInfo();
OrderExtInfoDto orderExtInfoDto = null;
if (StringUtils.isNotBlank(extInfo)) {
orderExtInfoDto = gson.fromJson(extInfo, OrderExtInfoDto.class);
}
responseMap.put("payVoucher", orderExtInfoDto != null ? orderExtInfoDto.getPayTransId() : "");
//非外卖单才获取取餐码和排队人数
if (!OrderType.TAKE_OUT.getCode().equals(orderBean.getType())) {
if (!(OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()))) {
responseMap.put("takeCode", orderBean.getOtherCode());
}
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response1 = new QueryOrderQueueIndexResponse();
response1.setErrcode(baseOrderResponse.getErrcode());
response1.setErrmsg(baseOrderResponse.getErrmsg());
if (RESPONSE_SUCCESS_CODE.equals(response1.getErrcode())) {
String queueIndex = response1.getData() == null ? "" : response1.getData().toString();
responseMap.put("queueIndex", queueIndex);
}
}
return ResponseUtil.success(responseMap);
}
/**
* 催单
*
* @param reminderVo
* @return
*/
@Override
public BaseResponse reminder(ReminderVo reminderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(reminderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(reminderVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
//判断订单状态
if (!cn.freemud.management.enums.OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_REMINDER_ORDER_ERROR);
}
//调用配送服务进行催单
OrderRemindRequestDto dto = new OrderRemindRequestDto();
dto.setOrderKey(reminderVo.getOid());
dto.setStoreId(orderBean.getShopId());
dto.setDeliveryChannel("CanDao");
dto.setDisplayOrderId(orderBean.getDownstreamThirdOrderCode());
if (orderBean.getAddInfo() != null) {
dto.setDeliveryId(orderBean.getAddInfo().getDeliveryId());
}
QueryDeliveryAmountResponseDto responseDto = deliveryFeiginClient.orderRemind(dto);
if (null != responseDto && 120 == responseDto.getCode()) {
return ResponseUtil.error("120", responseDto.getMsg());
}
if (responseDto == null || RESPONSE_SUCCESS_CODE != responseDto.getCode()) {
return ResponseUtil.error(ResponseResult.DELIVERY_REMINDER_ERROR);
}
return ResponseUtil.success();
}
/**
* 查询骑手位置
*
* @param vo
* @return
*/
@Override
public BaseResponse listFreeRider(FreeRiderPositionVo vo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(vo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
QueryLocusRiderTrackDto dto = new QueryLocusRiderTrackDto();
dto.setDeliveryChannel("CanDao");
dto.setOrderId(vo.getOid());
MCCafeDeliveryBaseResponse<ResRiderTrackDto> responses = deliveryFeiginClient.listFreeRider(dto);
if (responses == null || RESPONSE_SUCCESS_CODE != Integer.valueOf(responses.getCode()) || responses.getData() == null) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
return ResponseUtil.success(responses.getData());
}
@Override
public BaseResponse mcCafeQueryRecentOrder(McCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addDays(new Date(), -Integer.valueOf(quickOrderInterval)), "yyyy-MM-dd"));
queryOrderVo.setEndDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd"));
queryOrderVo.setQueryOrderStatus(Arrays.asList(OldOrderStatus.COMPLETE.getCode()));
queryOrderVo.setQueryOrderType(Arrays.asList(OldOrderType.TAKE_OUT.getCode(), OldOrderType.COLLECT_GOODS.getCode(), OldOrderType.EAT_IN.getCode()));
queryOrderVo.setPartnerId(queryOrderVo.getPartnerId());
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
Date startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
Date endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
String userId = userLoginInfoDto.getMemberId();
queryOrderVo.setStartDate(startDateStr);
queryOrderVo.setEndDate(endDateStr);
queryOrderVo.setPageNumber(1);
queryOrderVo.setPageSize(1);
QueryOrderVo vo =new QueryOrderVo();
BeanUtils.copyProperties(queryOrderVo,vo);
String channelType = this.getQueryOrderChannelType(vo, userLoginInfoDto);
QueryOrdersDto queryOrdersDto = orderAdapter.convent2QueryOrdersDtoMcCafe(queryOrderVo, userId, channelType);
QueryOrdersResponse queryOrderResponse;
try {
QueryOrdersRequest queryOrdersRequest2 = new QueryOrdersRequest();
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogTreadLocal.getTrackingNo());
queryOrderResponse = orderCenterSdkService.queryMCCafeOrders(queryOrdersRequest2);
} catch (Exception e) {
LogUtil.error("queryOrders_error", gson.toJson(queryOrdersDto), e);
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
if (queryOrderResponse == null || !RESPONSE_SUCCESS_CODE.equals(queryOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
//用户无订单数据
if (queryOrderResponse.getData() == null || queryOrderResponse.getData().getCount() == 0) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
return ResponseUtil.success(queryOrderResponse.getData().getOrders().get(0).getOid());
}
/**
* 历史判断围餐是从userLoginInfoDto判断iappid的。
* 商城订单从前端传channelType区分,
* 默认点餐
*/
private String getQueryOrderChannelType(QueryOrderVo queryOrderVo, AssortmentCustomerInfoVo userLoginInfoDto) {
String channelType = OrderChannelType.SAAS.getCode();
if (IappIdType.WC_XCX.getCode().equals(userLoginInfoDto.getIappId())) {
channelType = OrderChannelType.IWC.getCode();
} else if (OrderChannelType.SAASMALL.getCode().equals(queryOrderVo.getChannelType())) {
channelType = OrderChannelType.SAASMALL.getCode();
} else if (UserLoginChannelEnum.APP.getCode().equals(userLoginInfoDto.getChannel())) {
channelType = OrderChannelType.APP.getCode();
} else if (OrderChannelType.BEAUTIFUL.getCode().equals(queryOrderVo.getChannelType())) {
channelType = OrderChannelType.BEAUTIFUL.getCode();
}
return channelType;
}
}
......@@ -269,8 +269,6 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private AssortmentOpenPlatformWxappManager openPlatformWxappManager;
@Autowired
private AssortmentOpenPlatformPartnerConfigManager openPlatformPartnerConfigManager;
@Autowired
private AssortmentCustomerInfoManager customerInfoManager;
@Autowired
private CheckOrder checkOrder;
......@@ -1117,206 +1115,6 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responseMap);
}
@Override
public BaseResponse mcCafeQueryOrders(McCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isBlank(queryOrderVo.getStartDate())) {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -1), "yyyy-MM-dd"));
}
if (StringUtils.isBlank(queryOrderVo.getEndDate())) {
queryOrderVo.setEndDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd"));
}
if (CollectionUtils.isEmpty(queryOrderVo.getQueryOrderStatus())) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单状态不能为空");
}
if (CollectionUtils.isNotEmpty(queryOrderVo.getQueryOrderType())) {
if (CollectionUtils.isEmpty(OrderType.getByCode(queryOrderVo.getQueryOrderType()))) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单类型不存在");
}
}
String partnerId = queryOrderVo.getPartnerId();
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
Date startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
Date endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
String userId = userLoginInfoDto.getMemberId();
queryOrderVo.setStartDate(startDateStr);
queryOrderVo.setEndDate(endDateStr);
QueryOrderVo vo = new QueryOrderVo();
BeanUtils.copyProperties(queryOrderVo, vo);
String channelType = this.getQueryOrderChannelType(vo, userLoginInfoDto);
QueryOrdersDto queryOrdersDto = orderAdapter.convent2QueryOrdersDtoMcCafe(queryOrderVo, userId, channelType);
QueryOrdersResponse queryOrderResponse;
try {
QueryOrdersRequest queryOrdersRequest2 = new QueryOrdersRequest();
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogTreadLocal.getTrackingNo());
queryOrderResponse = orderCenterSdkService.queryMCCafeOrders(queryOrdersRequest2);
} catch (Exception e) {
LogUtil.error("queryOrders_error", gson.toJson(queryOrdersDto), e);
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
if (queryOrderResponse == null || !RESPONSE_SUCCESS_CODE.equals(queryOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
Map<String, Object> responseMap = Maps.newTreeMap();
//用户无订单数据
if (queryOrderResponse.getData() == null || queryOrderResponse.getData().getCount() == 0) {
responseMap.put("count", 0);
responseMap.put("list", new ArrayList<QueryOrderResponseVo>());
return ResponseUtil.success(responseMap);
}
List<QueryOrdersResponse.DataBean.OrderBean> orders = queryOrderResponse.getData().getOrders();
Set<String> shopIds = new HashSet<>();
// 过滤待支付订单
if (CollectionUtils.isNotEmpty(orders)) {
for (QueryOrdersResponse.DataBean.OrderBean orderBean : orders) {
if (!(OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()) || PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus()))) {
shopIds.add(orderBean.getShopId());
}
}
}
String storeCodes = "";
for (String shopId : shopIds) {
storeCodes = shopId + "," + storeCodes;
}
GetListByCodesRequest request = new GetListByCodesRequest();
request.setPartnerId(partnerId);
request.setStoreCodes(storeCodes);
// 查询多个门店信息
GetListByCodesResponse storeInfoResponse = storeCenterService.getListByCodes(request, LogTreadLocal.getTrackingNo());
Map<String, StoreResponse.BizVO> storeMap = new HashMap<>();
if (storeInfoResponse != null && storeInfoResponse.getBizVO() != null && storeInfoResponse.getBizVO().getList() != null) {
for (StoreResponse.BizVO bizVO : storeInfoResponse.getBizVO().getList()) {
storeMap.put(bizVO.getStoreCode(), bizVO);
}
}
if (CollectionUtils.isNotEmpty(orders)) {
orders.forEach(orderBean -> {
StoreResponse.BizVO storeResponseDto = storeMap.get(orderBean.getShopId());
if (storeResponseDto != null) {
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setLatitude(Double.valueOf(storeResponseDto.getLatitude()));
orderBean.setLongitude(Double.valueOf(storeResponseDto.getLongitude()));
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
orderBean.setQueueIndex("");
// 查询待取餐订单才需要查询排队人数和订单状态扭转记录
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(orderBean.getOrderType())) {
// 查询订单的排队人数
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response = new QueryOrderQueueIndexResponse();
response.setErrcode(baseOrderResponse.getErrcode());
response.setErrmsg(baseOrderResponse.getErrmsg());
response.setData(baseOrderResponse.getData() == null ? 0 : Integer.parseInt(baseOrderResponse.getData()));
if (RESPONSE_SUCCESS_CODE.equals(response.getErrcode())) {
String queueIndex = response.getData() == null ? "" : response.getData().toString();
orderBean.setQueueIndex(queueIndex);
}
// 查询订单的操作状态
BaseQueryOrderRequest var2 = new BaseQueryOrderRequest();
var2.setOrderId(orderBean.getOid());
var2.setTrackingNo(LogTreadLocal.getTrackingNo());
OrderStatusTrackingInfoResponse orderStatusTrackingInfoResponse = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var2);
String string = JSONObject.toJSONString(orderStatusTrackingInfoResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
}
if (OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus())) {
orderBean.setOtherCode("");
}
});
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(orders, userLoginInfoDto.getWxAppId(), userLoginInfoDto.getIappId());
responseMap.put("count", queryOrderResponse.getData() == null ? 0 : queryOrderResponse.getData().getCount());
responseMap.put("list", queryOrderResponseVos);
//只有有订单时才显示用户自定义取餐信息
if (CollectionUtils.isNotEmpty(queryOrderResponseVos)) {
responseMap.put("definitionMsg", getDefinitionMsg(queryOrderVo.getPartnerId()));
}
return ResponseUtil.success(responseMap);
}
@Override
public BaseResponse mcCafePollingPickUpCode(MaCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String oid = queryOrderVo.getOid();
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
OrderViewStatusDto orderViewStatusDesc = orderAdapter.getOrderViewStatusDesc(orderBean, userLoginInfoDto.getWxAppId());
Map<String, Object> responseMap = Maps.newTreeMap();
responseMap.put("orderStatus", orderViewStatusDesc.getOrderStatus());
responseMap.put("takeCode", "");
responseMap.put("queueIndex", "");
String extInfo = orderBean.getExtInfo();
OrderExtInfoDto orderExtInfoDto = null;
if (StringUtils.isNotBlank(extInfo)) {
orderExtInfoDto = gson.fromJson(extInfo, OrderExtInfoDto.class);
}
responseMap.put("payVoucher", orderExtInfoDto != null ? orderExtInfoDto.getPayTransId() : "");
//非外卖单才获取取餐码和排队人数
if (!OrderType.TAKE_OUT.getCode().equals(orderBean.getType())) {
if (!(OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()))) {
responseMap.put("takeCode", orderBean.getOtherCode());
}
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response1 = new QueryOrderQueueIndexResponse();
response1.setErrcode(baseOrderResponse.getErrcode());
response1.setErrmsg(baseOrderResponse.getErrmsg());
if (RESPONSE_SUCCESS_CODE.equals(response1.getErrcode())) {
String queueIndex = response1.getData() == null ? "" : response1.getData().toString();
responseMap.put("queueIndex", queueIndex);
}
}
return ResponseUtil.success(responseMap);
}
@Override
public BaseResponse queryCollageOrderById(Integer operation, String sessionId, String oid, String partnerId, String channel) {
......@@ -1701,157 +1499,6 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(queryOrderResponseVo);
}
/**
* 麦咖啡查询订单详情
*
* @param queryOrderVo
* @return
*/
@Override
public BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userInfo == null || StringUtils.isEmpty(userInfo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
String oid = queryOrderVo.getOid();
if (StringUtils.isBlank(oid)) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "oid不能为空");
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryMCCafeOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
String storeId = orderBean.getShopId();
StoreInfoRequest request = new StoreInfoRequest();
request.setPartnerId(queryOrderVo.getPartnerId());
request.setStoreCode(storeId);
StoreResponse storeInfo = storeCenterService.getStoreInfo(request, LogTreadLocal.getTrackingNo());
if (storeInfo != null && storeInfo.getBizVO() != null) {
StoreResponse.BizVO storeResponseDto = storeInfo.getBizVO();
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setLatitude(Double.valueOf(storeResponseDto.getLatitude()));
orderBean.setLongitude(Double.valueOf(storeResponseDto.getLongitude()));
}
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogTreadLocal.getTrackingNo());
BaseOrderResponse baseOrderResponse = orderCenterSdkService.queryOrderQueueIndex(var1);
QueryOrderQueueIndexResponse response1 = new QueryOrderQueueIndexResponse();
response1.setErrcode(baseOrderResponse.getErrcode());
response1.setErrmsg(baseOrderResponse.getErrmsg());
if (RESPONSE_SUCCESS_CODE.equals(response1.getErrcode())) {
String queueIndex = response1.getData() == null ? "" : response1.getData().toString();
orderBean.setQueueIndex(queueIndex);
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
// 查询订单的操作状态
OrderStatusTrackingInfoResponse statusTrackingInfoByOid = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var1);
String string2 = JSONObject.toJSONString(statusTrackingInfoByOid);
JSONObject jsonObject2 = JSONObject.parseObject(string2);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject2.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(Collections.singletonList(orderBean), userInfo.getWxAppId(), userInfo.getIappId());
if (CollectionUtils.isEmpty(queryOrderResponseVos)) {
throw new ServiceException(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrderResponseVo queryOrderResponseVo = queryOrderResponseVos.get(0);
Optional<ProductVo> productVoOptional = queryOrderResponseVo.getProducts().stream()
.filter(o -> StringUtils.isNotBlank(o.getSplitIndex()))
.findFirst();
Map<String, Integer> existMap = new HashMap<>();
if (productVoOptional.isPresent()) {
int size = queryOrderResponseVo.getProducts().size();
List<ProductVo> productVoList = new ArrayList<>();
for (int i = 0; i < size; i++) {
ProductVo productVo = queryOrderResponseVo.getProducts().get(i);
if (StringUtils.isBlank(productVo.getSplitIndex())) {
productVoList.add(productVo);
} else {
if (existMap.get(productVo.getSplitIndex()) == null) {
existMap.put(productVo.getSplitIndex(), productVoList.size());
productVoList.add(productVo);
} else {
ProductVo productVoExists = productVoList.get(existMap.get(productVo.getSplitIndex()));
productVoExists.setOriginalTotalAmount(productVoExists.getOriginalTotalAmount() + productVo.getOriginalTotalAmount());
productVoExists.setSaleTotalAmount(productVoExists.getSaleTotalAmount() + productVo.getSaleTotalAmount());
productVoExists.setQty(productVoExists.getQty() + productVo.getQty());
}
}
}
queryOrderResponseVo.setProducts(productVoList);
}
//麦咖啡 预约外卖单重新封装取餐时间
if (OrderType.TAKE_OUT.getCode().equals(queryOrderResponseVo.getOrderType()) && StringUtils.isNotEmpty(queryOrderResponseVo.getReserveDeliveryTime())) {
Date reserveDeliveryTime = DateUtil.convert2Date(queryOrderResponseVo.getReserveDeliveryTime(), "yyyy-MM-dd HH:mm:ss");
queryOrderResponseVo.setReserveDeliveryTime(formatSpecialDate(reserveDeliveryTime));
}
if (OrderStatus.TAKE_ORDER.getCode().equals(queryOrderResponseVo.getOrderStatus())
|| OrderStatus.WAIT_PAY.getCode().equals(queryOrderResponseVo.getOrderStatus())) {
queryOrderResponseVo.setTakeCode("");
}
queryOrderResponseVo.setOrderTypeDesc(Optional.ofNullable(McCafeOrderTypeGather.getByCode(queryOrderResponseVo.getOrderType()))
.map(McCafeOrderTypeGather::getDesc).orElse(""));
queryOrderResponseVo.setIsCouponOrder(queryOrderResponseVo.getProducts().stream()
.filter(o -> !ProductTypeEnum.getVirtualProductType().contains(o.getProductType())).findAny().isPresent() ? 0 : 1);
//48小时自动退款描述
if (storeInfo != null && storeInfo.getBizVO() != null && storeInfo.getBizVO().getStoreConfig() != null
&& queryOrderResponseVo.getRefundStatus() != null && queryOrderResponseVo.getRefundStatus() == 1) {
Integer automaticRefund = storeInfo.getBizVO().getStoreConfig().getAutomaticRefund();
if (automaticRefund != null && automaticRefund == 1) {
queryOrderResponseVo.setRefundTips("若48小时内未成功退款,请联系商家人工处理");
} else {
queryOrderResponseVo.setRefundTips("若48小时内未成功退款,请联系商家人工处理");
}
}
return ResponseUtil.success(queryOrderResponseVo);
}
public static String formatSpecialDate(Date date) {
if (date == null) {
return null;
}
System.out.println(new DateTime(date).toString("yyyy-MM-dd HH:mm"));
DateTime now = new DateTime();
DateTime today_start = new DateTime(now.getYear(), now.getMonthOfYear(), now.getDayOfMonth(), 0, 0, 0);
DateTime today_end = today_start.plusDays(1);
System.out.println(new DateTime(today_end).toString("yyyy-MM-dd HH:mm"));
DateTime tomorrow_start = today_start.plusDays(2);
System.out.println(new DateTime(tomorrow_start).toString("yyyy-MM-dd HH:mm"));
if (date.after(today_start.toDate()) && date.before(today_end.toDate())) {
return String.format("%s", new DateTime(date).toString("HH:mm"));
} else if (date.after(today_end.toDate()) && date.before(tomorrow_start.toDate())) {
return String.format("明天%s%s", DateUtils.getDayWeek(date), new DateTime(date).toString("HH:mm"));
}
return new DateTime(date).toString("yyyy-MM-dd") + DateUtils.getDayWeek(date) + new DateTime(date).toString("HH:mm");
}
/**
* 如果有第三方配送,返回值添加第三方配送信息
*/
......@@ -3817,72 +3464,6 @@ public class OrderServiceImpl implements Orderservice {
}).getPartnerValue();
}
/**
* 催单
*
* @param reminderVo
* @return
*/
@Override
public BaseResponse reminder(ReminderVo reminderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(reminderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(reminderVo.getOid());
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
QueryOrdersResponse.DataBean.OrderBean orderBean = response.getData();
//判断订单状态
if (!cn.freemud.management.enums.OrderStatus.DISTRIBUTION.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.DELIVERY_REMINDER_ORDER_ERROR);
}
//调用配送服务进行催单
OrderRemindRequestDto dto = new OrderRemindRequestDto();
dto.setOrderKey(reminderVo.getOid());
dto.setStoreId(orderBean.getShopId());
dto.setDeliveryChannel("CanDao");
dto.setDisplayOrderId(orderBean.getDownstreamThirdOrderCode());
if (orderBean.getAddInfo() != null) {
dto.setDeliveryId(orderBean.getAddInfo().getDeliveryId());
}
QueryDeliveryAmountResponseDto responseDto = deliveryFeiginClient.orderRemind(dto);
if (null != responseDto && 120 == responseDto.getCode()) {
return ResponseUtil.error("120", responseDto.getMsg());
}
if (responseDto == null || RESPONSE_SUCCESS_CODE != responseDto.getCode()) {
return ResponseUtil.error(ResponseResult.DELIVERY_REMINDER_ERROR);
}
return ResponseUtil.success();
}
/**
* 查询骑手位置
*
* @param vo
* @return
*/
@Override
public BaseResponse listFreeRider(FreeRiderPositionVo vo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(vo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
QueryLocusRiderTrackDto dto = new QueryLocusRiderTrackDto();
dto.setDeliveryChannel("CanDao");
dto.setOrderId(vo.getOid());
MCCafeDeliveryBaseResponse<ResRiderTrackDto> responses = deliveryFeiginClient.listFreeRider(dto);
if (responses == null || RESPONSE_SUCCESS_CODE != Integer.valueOf(responses.getCode()) || responses.getData() == null) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
return ResponseUtil.success(responses.getData());
}
public void buildQueryOrderResponseVo(QueryOrderResponseVo queryOrderResponseVo, QueryOrderByIdResponse response, String partnerId) {
if (null == response || response.getData() == null || !ObjectUtils.equals(response.getErrcode(), RESPONSE_SUCCESS_CODE)) {
......
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