Commit aa93903b by huiyang.chen

Merge branch 'feature-2020/8/6-McCafe-会阳' into develop

# Conflicts:
#	order-application-service/src/main/java/cn/freemud/OrderApplication.java
#	order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
parents 60fab572 391633f5
......@@ -2359,6 +2359,14 @@ public class OrderSdkAdapter {
}
public BaseOrderResponse convent2UpdatePickUpGoodNo(BaseResponse baseResponse) {
BaseOrderResponse baseOrderResponse = new BaseOrderResponse();
baseOrderResponse.setErrcode(baseResponse.getCode() != null ? Integer.parseInt(baseResponse.getCode()) : 500);
baseOrderResponse.setErrmsg(baseResponse.getMessage());
return baseOrderResponse;
}
public SdkUpdateAbnormalState convert2SdkUpdateAbnormalState(AssortmentUpdateDeliveryAbnormalRequest request) {
SdkUpdateAbnormalState result = new SdkUpdateAbnormalState();
result.setOrderClient(OrderClientType.SAAS.getIndex());
......
package com.freemud.sdk.api.assortment.order.service;
import com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq;
import com.freemud.application.sdk.api.ordercenter.request.QueryAfterSalesOrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp;
import com.freemud.sdk.api.assortment.order.request.order.*;
......@@ -311,4 +312,11 @@ public interface OrderCenterSdkService {
*/
BaseOrderResponse updateDownstreamThirdOrderCode(AssortmentSdkUpdateDownstreamThirdOrderCodeRequest assortmentSdkUpdateDownstreamThirdOrderCodeRequest);
/**
* 修改桌号、取餐码
* @param orderModifyRelatingCodeReq
* @return
*/
BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo);
}
......@@ -1461,6 +1461,11 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2NewOrderUpdateThirdOrderCode(orderSdkService.updateDownstreamThirdOrderCode(updateDownstreamOrderCodeReq, assortmentSdkUpdateDownstreamThirdOrderCodeRequest.getTrackingNo()));
}
@Override
public BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo) {
return orderSdkAdapter.convent2UpdatePickUpGoodNo(orderSdkService.updatePickUpGoodNo(orderModifyRelatingCodeReq, trackingNo));
}
private void setTimeout(BaseQueryOrderRequest baseQueryOrderRequest,POSOrderOperationBaseReq request){
String partnerId = baseQueryOrderRequest.getPartnerId();
String storeCode = baseQueryOrderRequest.getShopId();
......
......@@ -29,10 +29,16 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import tk.mybatis.spring.annotation.MapperScan;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@ServletComponentScan
@ImportAutoConfiguration(classes = {DataSourcesConfig.class})
@EnableSwagger2
......@@ -43,7 +49,7 @@ import tk.mybatis.spring.annotation.MapperScan;
@ComponentScan({"cn.freemud", "com.freemud"})
@MapperScan({"cn.freemud.*.dao","com.freemud.sdk.api.assortment.orderdistributor.mapper","com.freemud.api.assortment.datamanager.manager",
"com.freemud.api.assortment.datamanager.queue.dao","com.freemud.api.assortment.datamanager.rbac.dao","com.freemud.api.assortment.datamanager.queue.entity"})
@EnableFeignClients({"cn.freemud.service.thirdparty","com.freemud.sdk.api.assortment.message","cn.freemud.service.mccafe.thirdparty"})
@EnableFeignClients({"cn.freemud.service.thirdparty","com.freemud.sdk.api.assortment.message",,"cn.freemud.service.mccafe.thirdparty""cn.freemud.management.thirdparty"})
@EnableAutoConfiguration
public class OrderApplication {
public static void main(String[] args) {
......@@ -76,4 +82,20 @@ public class OrderApplication {
return requestTemplate -> requestTemplate.header("x-tranaction-id", LogThreadLocal.getTrackingNo());
}
@EnableAsync
@Configuration
class TaskPoolConfig {
@Bean("couponExecutor")
public Executor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(8);
executor.setMaxPoolSize(10);
executor.setQueueCapacity(20000);
executor.setKeepAliveSeconds(60);
executor.setThreadNamePrefix("CouponExecutor-");
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
}
......@@ -105,6 +105,10 @@ public class OrderAdapter {
private String backOrdersChangeOrderStatusConsumerQueue;
@Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange;
@Value("${macafe.waimai.tag}")
private String maCafeWaimaiTag;
@Value("${macafe.pick.tag}")
private String maCafePickTag;
@Autowired
private ShoppingCartAdapter shoppingCartAdapter;
@Autowired
......@@ -791,6 +795,9 @@ public class OrderAdapter {
if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()});
}
if (QueryOrderStatus.ORDER_CANCEL.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
queryOrdersDto.setStatus(new Integer[]{OrderStatus.CALCEL.getCode()});
}
}
// 兼容历史版本,如果传参是4 查询拆程4和5
......@@ -894,6 +901,12 @@ public class OrderAdapter {
responseVo.setTakeOut(0);
responseVo.setTakeOutDesc("");
}
//配置麦咖啡文案
if (OrderType.TAKE_OUT.getCode().equals(ordersBean.getType())){
responseVo.setMcCafeOrderTag(maCafeWaimaiTag);
}else {
responseVo.setMcCafeOrderTag(maCafePickTag);
}
responseVo.setTableNumber(ordersBean.getBarCounter());
responseVo.setPayStatus(ordersBean.getPayStatus());
responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus()))
......
......@@ -151,6 +151,15 @@ public class OrderController {
}
/**
* 查询麦咖啡订单列表
*/
@ApiAnnotation(logMessage = "maCafeQueryOrders")
@PostMapping("/maCafeQueryOrders")
public BaseResponse maCafeQueryOrders(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.queryOrders(queryOrderVo);
}
/**
* 围餐-预览订单
* @param queryOrderVo
* @return
......@@ -193,6 +202,16 @@ public class OrderController {
return orderservice.queryOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType());
}
/**
* 麦咖啡 获取订单详情
*/
@ApiAnnotation(logMessage = "mcCafeQueryOrderById")
@PostMapping("/mcCafeQueryOrderById")
public BaseResponse mcCafeQueryOrderById(@Validated @LogParams @RequestBody MaCafeQueryOrderVo queryOrderVo) {
return orderservice.mcCafeQueryOrderById(queryOrderVo);
}
/**
* 取消支付删除订单
*/
......@@ -313,4 +332,24 @@ public class OrderController {
public BaseResponse queryOrderByConditions(@Validated @LogParams @RequestBody QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo) {
return orderservice.queryOrderByConditions(queryOrderByConditionsRequestVo);
}
/**
* 麦咖啡催单
*/
@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);
}
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
/**
* 查询省份对应配送费价格请求参数对象
* @version V1.0
* @author: kai.ding
* @date:
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* All rights Reserved, Designed By www.freemud.cn
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class OrderRemindRequestDto {
/**
* 催单内容
*/
private String content;
/**
* 配送渠道
*/
private String deliveryChannel;
private String deliveryId;
/**
* ECP 订单编号
*/
private String displayOrderId;
/**
* 订单id
*/
private String orderKey;
/**
* Ecp 通用门店ID
*/
private String storeId;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
/**
* 查询省份对应配送费价格请求参数对象
* @version V1.0
* @author: kai.ding
* @date:
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* All rights Reserved, Designed By www.freemud.cn
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class QueryLocusRiderTrackDto {
/**
* 配送渠道
*/
private String deliveryChannel;
/**
* 订单编号
*/
private String orderId;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
/**
* 查询省份对应配送费价格请求参数对象
* @version V1.0
* @author: kai.ding
* @date:
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* All rights Reserved, Designed By www.freemud.cn
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class ResRiderTrackDto {
/**
* 收货人地址维度(高德地图坐标)
*/
private String receiverLat;
/**
* 收货人地址经度(高德地图坐标)
*/
private String receiverLng;
/**
* 骑士最新位置纬度(高德地图坐标)
*/
private String riderLat;
/**
* 骑士最新位置经度(高德地图坐标)
*/
private String riderLng;
/**
* 门店所在位置纬度(高德地图坐标)
*/
private String storeLat;
/**
* 门店所在位置经度(高德地图坐标)
*/
private String storeLng;
}
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class FreeRiderPositionVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
@NotEmpty(message = "订单ID 不能为空")
private String oid;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: QueryOrderVo
* @Package cn.freemud.entities.vo
* @Description:
* @author: liming.guo
* @date: 2018/5/22 17:35
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class MaCafeQueryOrderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
/**
* 商户ID
*/
private String partnerId;
/**
* 订单ID
*/
private String oid;
/**
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 ,6 已取消
*/
private Integer queryOrderStatus;
/**
* 查询订单状态 1 外卖 4 门店自提
*/
private Integer queryOrderType;
/**
* 每页显示几条数据
*/
private Integer pageSize;
/**
* 第几页
*/
private Integer pageNumber;
private String startDate;
private String endDate;
/**
* 渠道信息 saas; img; iwc; saasmall
*/
private String channelType;
}
......@@ -205,6 +205,10 @@ public class QueryOrderResponseVo {
* 退款文案提示 若48小时后商家未处理,自动同意/拒绝退款
*/
private String refundTips;
/*
* 麦咖啡 外卖单或者自提单文案提示
*/
private String mcCafeOrderTag;
/**
* 退款单
*/
......
......@@ -31,7 +31,7 @@ public class QueryOrderVo {
@ApiModelProperty(value = "订单编号")
private String oid;
/**
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 ,6 已取消
*/
private Integer queryOrderStatus;
/**
......
package cn.freemud.entities.vo;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
@Data
public class ReminderVo {
@NotEmpty(message = "sessionId 不能为空")
private String sessionId;
@NotEmpty(message = "订单ID 不能为空")
private String oid;
}
......@@ -19,7 +19,8 @@ public enum QueryOrderStatus {
FINISH(2, "已完成"),
ALL_BILL(3, "全部"),
REFUND_BILL(4, "退款"),
NO_PAY(5, "待支付");
NO_PAY(5, "待支付"),
ORDER_CANCEL(6, "已取消");
private Integer code;
......
......@@ -195,6 +195,10 @@ public enum ResponseResult {
*/
DELIVERY_QUERY_ERROR("50024","查询配送单失败"),
DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"),
DELIVERY_REMINDER_ORDER_ERROR("53013", "订单状态不是配送中,不能催单"),
DELIVERY_QUERY_RIDER_STATUS_ERROR("53014", "订单状态不是配送中,不能查询骑手位置"),
DELIVERY_REMINDER_ERROR("53015","催单失败"),
DELIVERY_QUERY_RIDER_ERROR("53016","查询骑手位置失败"),
/**
* 配送信息
......
......@@ -115,4 +115,11 @@ public interface Orderservice {
* @return
*/
BaseResponse queryOrderByConditions(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo);
BaseResponse reminder(ReminderVo reminderVo);
BaseResponse listFreeRider(FreeRiderPositionVo vo);
BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo);
}
......@@ -48,10 +48,7 @@ import cn.freemud.service.CouponActivityService;
import cn.freemud.service.OrderAdapterService;
import cn.freemud.service.Orderservice;
import cn.freemud.service.thirdparty.*;
import cn.freemud.utils.BeanUtil;
import cn.freemud.utils.LogUtil;
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;
......@@ -126,6 +123,7 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
......@@ -133,6 +131,7 @@ import org.springframework.stereotype.Service;
import tk.mybatis.mapper.util.StringUtil;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
......@@ -160,6 +159,7 @@ public class OrderServiceImpl implements Orderservice {
@Value("${mq.cloud_print_exchange}")
private String cloud_print_exchange;
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
......@@ -241,6 +241,8 @@ public class OrderServiceImpl implements Orderservice {
private OrderDownLoadSdkService orderDownLoadSdkService;
@Autowired
private OrderSdkAdapter orderSdkAdapter;
@Autowired
private DeliveryFeiginClient deliveryFeiginClient;
@Override
public BaseResponse checkBeforeCreateOrder(CheckBeforeCreateOrderRequestVo requestVo) {
......@@ -1001,6 +1003,119 @@ 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.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();
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);
//麦咖啡 预约外卖单重新封装取餐时间
if (OrderType.TAKE_OUT.getCode().equals(queryOrderResponseVo.getOrderType()) && queryOrderResponseVo.getTakeMealType() == 1 && StringUtils.isNotEmpty(queryOrderResponseVo.getReserveDeliveryTime())) {
Date reserveDeliveryTime = DateUtil.convert2Date(queryOrderResponseVo.getReserveDeliveryTime(), "yyyy-MM-dd HH:mm:ss");
queryOrderResponseVo.setReserveDeliveryTime(formatSpecialDate(reserveDeliveryTime));
}
//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") ;
}
/**
* 如果有第三方配送,返回值添加第三方配送信息
*/
......@@ -2475,4 +2590,72 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.success(responseVos);
}
/**
* 催单
* @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(userLoginInfoDto.getStoreId());
QueryDeliveryAmountResponseDto responseDto = deliveryFeiginClient.orderRemind(dto);
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);
}
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(vo.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_QUERY_RIDER_STATUS_ERROR);
}
QueryLocusRiderTrackDto dto =new QueryLocusRiderTrackDto();
dto.setDeliveryChannel("CanDao");
dto.setOrderId(vo.getOid());
BaseResponse<ResRiderTrackDto> responses = deliveryFeiginClient.listFreeRider(dto);
if(responses == null || RESPONSE_SUCCESS_CODE != Integer.valueOf(responses.getCode()) || responses.getResult() ==null ) {
return ResponseUtil.error(ResponseResult.DELIVERY_QUERY_RIDER_ERROR);
}
return ResponseUtil.success();
}
}
package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountRequestDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.delivery.*;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -11,4 +11,10 @@ public interface DeliveryFeiginClient {
@PostMapping("/deliveryLogisticsAmount/queryDeliveryAmount")
QueryDeliveryAmountResponseDto queryDeliveryAmount(@RequestBody QueryDeliveryAmountRequestDto request);
@PostMapping("/delivery/orderRemind")
QueryDeliveryAmountResponseDto orderRemind(@RequestBody OrderRemindRequestDto request);
@PostMapping("/delivery/listFreeRider")
BaseResponse<ResRiderTrackDto> listFreeRider(@RequestBody QueryLocusRiderTrackDto request);
}
package cn.freemud.utils;
import java.util.Calendar;
import java.util.Date;
public class DateUtils {
/**
* 对传入的时间翻译星期
* @param date
* @return
*/
public static String getDayWeek(Date date){
if (date == null ){
return null;
}
String[] week={"(周一)","(周二)","(周三)","(周四)","(周五)","(周六)","(周日)"};
Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
int w = calendar.get(Calendar.DAY_OF_WEEK) -1 ;
if (w < 0 ){
w =0;
}
return week[w];
}
}
......@@ -32,6 +32,12 @@
</dependency>
<dependency>
<artifactId>couponcenter-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.9.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version>
......
package cn.freemud.management.adapter;
import cn.freemud.base.constant.Version;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.coupon.MCCafeTransactionVo;
import cn.freemud.management.enums.ActivityTypeEnum;
import cn.freemud.management.enums.CouponReqTypeEnum;
import cn.freemud.management.enums.MCCafeChannelEnum;
import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import com.freemud.sdk.api.assortment.order.enums.OldOrderAccountType;
import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.enums.QueryOrderAccountType;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class McCafeCouponAdapter {
public List<MCCafeCouponRequest> convertOrderBean2CouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
List<QueryOrdersResponse.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.COUPON)
|| getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList) ) {
return null;
}
List<MCCafeCouponRequest> list = new ArrayList<>();
accountList.forEach(accountBean -> list.add(convert2MCCafeCouponRequest(orderBean, accountBean)));
return list;
}
public MCCafeCouponRequest convert2MCCafeCouponRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean) {
List<MCCafeProductRedeemVo> products = new ArrayList<>();
//商品券核销核销参数
if (QueryOrderAccountType.PRODUCT_COUPON.equals(accountBean.getType())) {
for (int i = 0; i < orderBean.getProductList().size(); i++) {
QueryOrdersResponse.DataBean.OrderBean.ProductBean productBean = orderBean.getProductList().get(i);
String pid = StringUtils.isNotBlank(productBean.getSpecification()) ? productBean.getSpecification() : productBean.getProductId();
if (!org.springframework.util.CollectionUtils.isEmpty(productBean.getDiscountList())) {
List<QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount> discounts = productBean.getDiscountList().stream().
filter(productDiscount -> productDiscount.getDiscountId().equals(accountBean.getAccountId())).collect(Collectors.toList());
for (QueryOrdersResponse.DataBean.OrderBean.ProductBean.ProductDiscount productDiscount : discounts) {
if (productDiscount.getDiscountType() == null || productDiscount.getDiscountType() == 0) {
continue;
}
MCCafeProductRedeemVo mcCafeProductRedeemVo = new MCCafeProductRedeemVo();
mcCafeProductRedeemVo.setPid(pid);
mcCafeProductRedeemVo.setKeyProductCode(productBean.getCustomerCode());
mcCafeProductRedeemVo.setCustomer_code(productBean.getCustomerCode());
mcCafeProductRedeemVo.setConsume_num(productDiscount.getDiscountQty());
mcCafeProductRedeemVo.setSeq(i + 1);
products.add(mcCafeProductRedeemVo);
}
}
}
}
MCCafeCouponRequest mcCafeCouponRequest = new MCCafeCouponRequest();
mcCafeCouponRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponRequest.setReqtype(CouponReqTypeEnum.REDEEM.getCode());
mcCafeCouponRequest.setPartnerId(Integer.parseInt(orderBean.getCompanyId()));
mcCafeCouponRequest.setStore_id(orderBean.getShopId());
mcCafeCouponRequest.setStation_id("-1");
mcCafeCouponRequest.setOperator_id("-1");
// 订单号
mcCafeCouponRequest.setTrans_id(orderBean.getOid());
mcCafeCouponRequest.setChannel(OrderClientType.ALIPAY.getIndex().toString().equals(orderBean.getOrderClient())?MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
List<MCCafeTransactionVo> transactions = new ArrayList<>();
MCCafeTransactionVo mcCafeTransactionVo = new MCCafeTransactionVo();
mcCafeTransactionVo.setCode(accountBean.getAccountId());
mcCafeTransactionVo.setTotalAmount(-accountBean.getPrice());
if (CollectionUtils.isNotEmpty(products)) {
mcCafeTransactionVo.setProducts(products);
}
transactions.add(mcCafeTransactionVo);
mcCafeCouponRequest.setTransactions(transactions);
mcCafeCouponRequest.setSign("skip");
mcCafeCouponRequest.setAppFlag("kgd.Y");
mcCafeCouponRequest.setBusiness_date(cn.freemud.base.util.DateUtil.convert2Str(new Date(), cn.freemud.base.util.DateUtil.FORMAT_yyyyMMdd));
return mcCafeCouponRequest;
}
/**
* 获取聚合订单活动类型
*/
public QueryOrderAccountType getQueryOrderAccountType(OldOrderAccountType oldOrderAccountType) {
return QueryOrderAccountType.getByCode(oldOrderAccountType.getMessage());
}
/**
* 将促销的枚举 ActivityTypeEnum 和orderAccountType 关联映射
*/
public OldOrderAccountType getOrderAccountType(Integer activityType) {
if (ActivityTypeEnum.TYPE_1.getCode().equals(activityType) || ActivityTypeEnum.TYPE_11.getCode().equals(activityType) || ActivityTypeEnum.TYPE_12.getCode().equals(activityType) || ActivityTypeEnum.TYPE_13.getCode().equals(activityType)) {
return OldOrderAccountType.BUY_DISCOUNT;
}
if (ActivityTypeEnum.TYPE_3.getCode().equals(activityType)) {
return OldOrderAccountType.COUPON;
}
if (ActivityTypeEnum.TYPE_2.getCode().equals(activityType) || ActivityTypeEnum.TYPE_21.getCode().equals(activityType)) {
return OldOrderAccountType.DISCOUNT_AMOUNT;
}
if (ActivityTypeEnum.TYPE_81.getCode().equals(activityType)) {
return OldOrderAccountType.PREMIUM_EXCHANGE;
}
if (ActivityTypeEnum.TYPE_32.getCode().equals(activityType)) {
return OldOrderAccountType.PRODUCT_COUPON;
}
if (ActivityTypeEnum.TYPE_31.getCode().equals(activityType)) {
return OldOrderAccountType.DISCOUNT_COUPON;
}
if (ActivityTypeEnum.TYPE_PACKAGE.getCode().equals(activityType)) {
return OldOrderAccountType.PACK_AMOUNT;
}
if (ActivityTypeEnum.TYPE_DELIVERY.getCode().equals(activityType)) {
return OldOrderAccountType.DELIVERY_AMOUNT;
}
if (ActivityTypeEnum.TYPE_61.getCode().equals(activityType)) {
return OldOrderAccountType.BUYM_SENDN;
}
if (ActivityTypeEnum.TYPE_53.getCode().equals(activityType)) {
return OldOrderAccountType.SECOND_DISCOUNT;
}
if (ActivityTypeEnum.TYPE_211.getCode().equals(activityType)) {
return OldOrderAccountType.SET_MEAL;
}
if (ActivityTypeEnum.TYPE_104.getCode().equals(activityType)) {
return OldOrderAccountType.XY_DISCOUNT;
}
if (ActivityTypeEnum.TYPE_14.getCode().equals(activityType)) {
return OldOrderAccountType.FULL_DISTRIBUTION_FEE;
}
if (ActivityTypeEnum.TYPE_320.getCode().equals(activityType)){
return OldOrderAccountType.MEMBER_PRICE_DISCOUNT;
}
return OldOrderAccountType.BUYM_SENDN;
}
public List<MCCafeCouponLockRequest> convertOrderBean2UnlockCoupon(QueryOrdersResponse.DataBean.OrderBean orderBean) {
if (null == orderBean || CollectionUtils.isEmpty(orderBean.getAccountList())) {
return null;
}
List<QueryOrdersResponse.DataBean.OrderBean.AccountBean> accountList = orderBean.getAccountList().stream().filter(
account -> (getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.COUPON)
|| getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.PRODUCT_COUPON)
|| getQueryOrderAccountType(getOrderAccountType(account.getType())).equals(QueryOrderAccountType.DISCOUNT_COUPON)) && account.getPrice() != 0l).collect(Collectors.toList());
if (CollectionUtils.isEmpty(accountList) ) {
return null;
}
List<MCCafeCouponLockRequest> list = new ArrayList<>();
accountList.forEach(accountBean -> list.add(convert2MCCafeCouponLockRequest(orderBean, accountBean)));
return list;
}
public MCCafeCouponLockRequest convert2MCCafeCouponLockRequest(QueryOrdersResponse.DataBean.OrderBean orderBean, QueryOrdersResponse.DataBean.OrderBean.AccountBean accountBean) {
MCCafeCouponLockRequest mcCafeCouponLockRequest = new MCCafeCouponLockRequest();
mcCafeCouponLockRequest.setVer(Integer.valueOf(Version.VERSION_1));
mcCafeCouponLockRequest.setReqType(CouponReqTypeEnum.UNLOCK.getCode());
mcCafeCouponLockRequest.setPartnerId(orderBean.getCompanyId());
mcCafeCouponLockRequest.setStoreId(orderBean.getShopId());
// 订单号
mcCafeCouponLockRequest.setTransId(orderBean.getOid());
mcCafeCouponLockRequest.setCoupon(accountBean.getAccountId());
mcCafeCouponLockRequest.setOfferId(accountBean.getAccountId());
mcCafeCouponLockRequest.setNumber("1");
mcCafeCouponLockRequest.setChannel(OrderSourceType.ALIPAY.getCode().equals(orderBean.getSource())?
MCCafeChannelEnum.MOCOFFEE_ZFB.getName():MCCafeChannelEnum.MOCOFFEE_WX.getName());
mcCafeCouponLockRequest.setOperatorId("-1");
mcCafeCouponLockRequest.setStationId("-1");
mcCafeCouponLockRequest.setSign("skip");
return mcCafeCouponLockRequest;
}
}
package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.McCafeOperateType;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.adapter.OrderManagerAdapter;
......@@ -63,4 +65,22 @@ public class OrderManagerController {
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
}
@ApiAnnotation(logMessage = "麦咖啡订单入机")
@ApiOperation(value = "麦咖啡订单入机", notes = "麦咖啡订单入机", produces = "application/json")
@PostMapping("/mcCafe/statusOperate")
public BaseResponse mcCafeDeliveryCreate(@Validated @LogParams @RequestBody McCafeOrderManagerRequest request) {
McCafeOperateType byOpType = McCafeOperateType.getByOpType(request.getOperateType());
if (byOpType==null){
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
switch (byOpType) {
case ORDER_SUCCESS:
return orderManagerAdapter.mcCafeOrderSuccess(request);
case ORDER_REFUND:
return orderManagerAdapter.mcCafeOrderRefund(request);
default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
}
}
package cn.freemud.management.entities.dto.request.coupon;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: CouponCodeVerificationReqVO
* @Package cn.freemud.entities.dto
* @Description:
* @author: biao.zhang
* @date: 2018/7/17 14:45
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Data
public class MCCafeCouponLockRequest {
private Integer ver;
/**
* 71 核销
* 89 锁定
* 90 解锁
*/
private Integer reqType;
/**
* 核销渠道
* 1:线下Pos
* 2:线上
* 3:pickup:麦当劳点餐
* 4:delivery:麦当劳外送
* 5:mccafe:麦当劳咖啡
* 6:mc_dessert麦当劳甜品站
* 7:SOK
* 8:ECP/CMA
* 9:mcd_alipay:麦当劳支付宝点餐
*/
private String channel;
//商户编号
private String partnerId;
//商家门店号
private String storeId;
//营业员编号
private String operatorId;
//POS机编号
private String stationId;
//交易序号
private String transId;
//券编号
private String coupon;
//三方券号
private String offerId;
//锁定/解锁次数
private String number;
private String appFlag;
private String businessDate;
//----非必传---
//预约订单时间,为空则为及时单,如:2020-06-17 12:00:00
private String advancedOrderTime;
//签名
private String sign;
private List<MCCafeTransactionVo> transactions;
}
package cn.freemud.management.entities.dto.request.coupon;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MCCafeCouponRequest {
/**
* 接口版本
*/
@NotNull
private Integer ver;
/**
* kdg.Y 开个店渠道且需要回调三方
* kgd.N 开个店渠道且不需要回调三方
*/
private String appFlag;
/**
* 需要查询的券码,仅供查询券使用
*/
private String coupon;
/**
* 请求操作类型,0是卡券查询,2是卡券交易查询,3是卡券冲正,71是卡券核销
*/
@NotNull(message = "操作不能为空")
private Integer reqtype;
/**
* 商家门店号
*/
@NotBlank(message = "商家门店号不能为空")
private String store_id;
/**
* 子品牌 ID 可以为空
*/
private String organize_id;
/**
* 组织机构ID(注意和channle的区别)
*/
private List<String> channel_ids;
/**
* 组织机构code(注意和channle的区别)
*/
private List<String> channel_codes;
/**
* 商家POS机编号
*/
@NotBlank(message = "商家POS机编号不能为空")
private String station_id;
/**
* 营业员编号
*/
@NotBlank(message = "营业员编号不能为空")
private String operator_id;
/**
* 商户编号
*/
@NotNull(message = "商户编号不能为空")
private Integer partnerId;
private Integer checkValue;
private Integer clientReqCount;
/**
* POS交易序号
*/
private String trans_id;
/**
* 营业日
*/
private String business_date;
/**
* 优惠券列表
*/
private List<MCCafeTransactionVo> transactions;
/**
* 签名
*/
private String sign;
/**
* 追加key
*/
private String appSecret;
private String openid;
private String transactionuuid;
private String status;
private Boolean isManual;
private String channel;
}
package cn.freemud.management.entities.dto.request.coupon;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class MCCafeProductRedeemVo {
private String pid;
/**
* 第三方商品编号 有的话会校验
*/
private String customer_code;
private Integer seq;
private Integer consume_num;
private Integer gid;
private Integer DiscountAmount;
private String brand_code;
private String pcata;
private BigDecimal redeem_price;
//键位商品编号
private String keyProductCode;
}
package cn.freemud.management.entities.dto.request.coupon;
import lombok.Data;
import java.util.List;
@Data
public class MCCafeTransactionVo {
private Integer pay_amount;
private String code;
private String ebcode;
/**
* 优惠总金额,由第三方计算,单位分
*/
private Long totalAmount;
private List<MCCafeProductRedeemVo> products;
}
package cn.freemud.management.entities.dto.request.delivery;
import lombok.Data;
@Data
public class DeliveryOrderHaltedRequest {
//订单原因
private String haltedReason;
//订单ID
private String orderKey;
//ECP通用门店
private String storeId;
}
package cn.freemud.management.entities.dto.request.order;
import cn.freemud.management.enums.OperateType;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.Size;
@Data
public class McCafeOrderManagerRequest {
/**
* 商户号
*/
@NotEmpty(message = "商户号不允许为null")
private String partnerId;
/**
* 门店号
*/
private String storeId;
/**
* 取餐码
*/
private String pickUpGoodsNo;
/**
* 订单号
*/
@NotEmpty(message = "订单号不允许为nul")
private String orderId;
/**
* 订单操作类型
* @see OperateType
*/
@NotEmpty(message = "操作类型不能为空")
private String operateType;
/**
* 操作人
* pos
* 开放平台
* 小助手
* 系统自动履单
*/
@NotEmpty(message = "操作人不能为空")
private String operator;
}
package cn.freemud.management.enums;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ActivitySprint
* @Package cn.freemud.enums
* @Description: 简单描述下这个类是做什么用的
* @author: biao.zhang
* @date: 2018/12/9 17:58
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum ActivityTypeEnum {
TYPE_1(1, "整单满减"),
TYPE_11(11, "每满减"),
TYPE_12(12, "阶梯满减"),
TYPE_13(13, "新用户立减"),
TYPE_14(14, "满减配送费"),
TYPE_104(104,"x件y折"),
/**
* 限时特价
*/
TYPE_2(2, "单品特价"),
TYPE_21(21, "单品折扣"),
/**
* 优惠券
*/
TYPE_3(3, "代金券"),
TYPE_31(31, "折扣券"),
TYPE_32(32, "商品券"),
TYPE_5(5, "整单满金额折"),
TYPE_51(51, "每满金额折"),
TYPE_52(52, "阶梯满金额折"),
TYPE_53(53, "第M件/杯N折"),
TYPE_6(6, "买M赠N"),
TYPE_61(61, "单品买M赠N"),
TYPE_7(7, "满额赠券"),
TYPE_8(8, "满N件换购"),
/**
* 加价购
*/
TYPE_81(81, "满额换购"),
TYPE_82(82, "满额阶梯换购(满多少金额,加价换购)"),
TYPE_100(100, "阶梯满数量打折"),
TYPE_101(101, "整单满数量打折"),
TYPE_102(102, "阶梯单品满数量打折"),
TYPE_103(103, "阶梯单品满数量减N元"),
TYPE_200(200, "X元Y件"),
TYPE_PACKAGE(900, "包装费"),
TYPE_DELIVERY(901, "配送费"),
TYPE_211(211, "套餐优惠"),
TYPE_320(320, "会员价优惠");
private Integer code;
private String desc;
ActivityTypeEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package cn.freemud.management.enums;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: PayRefundStatus
* @Package cn.freemud.enums
* @Description:
* @author: jiaxin.liu
* @date: 2019/5/27 15:09
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum CouponReqTypeEnum {
QUERY(0,"查询"),
CANCEL_REDEEM(3,"冲正"),
REDEEM(71,"核销"),
LOCK(89,"锁定"),
UNLOCK(90,"解锁"),
;
private Integer code;
private String desc;
CouponReqTypeEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static CouponReqTypeEnum getByCode(Integer code) {
if (code == null) {
return null;
}
for (CouponReqTypeEnum payStatus : values()) {
if (payStatus.getCode().equals(code)) {
return payStatus;
}
}
return null;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderChannelType
* @Package cn.freemud.enums
* @Description:
* @author: liming.guo
* @date: 2018/7/3 15:06
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.enums;
public enum MCCafeChannelEnum {
MOCOFFEE_WX(1, "mocoffee_wx", "麦咖啡微信小程序"),
MOCOFFEE_ZFB(2, "mocoffee_zfb", "麦咖啡支付宝小程序"),
;
private int code;
private String name;
private String desc;
MCCafeChannelEnum(int code, String name, String desc) {
this.code = code;
this.name = name;
this.desc = desc;
}
public static MCCafeChannelEnum getByCode(int code) {
for (MCCafeChannelEnum type : values()) {
if (type.getCode() == code) {
return type;
}
}
return null;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.freemud.management.enums;
import org.apache.commons.lang.StringUtils;
public enum McCafeOperateType {
ORDER_SUCCESS("orderSuccess","入机成功"),
ORDER_REFUND("orderRefund","入机失败");
/**
* 操作类型
*/
private String opType;
/**
* 操作名称
*/
private String opName;
McCafeOperateType(String opType, String opName) {
this.opType = opType;
this.opName = opName;
}
public String getOpType() {
return opType;
}
public void setOpType(String opType) {
this.opType = opType;
}
public String getOpName() {
return opName;
}
public void setOpName(String opName) {
this.opName = opName;
}
public static McCafeOperateType getByOpType(String opType){
if (StringUtils.isEmpty(opType)) {
return null;
}
for (McCafeOperateType operateType : values()) {
if (operateType.getOpType().equals(opType)) {
return operateType;
}
}
return null;
}
}
package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
......@@ -19,6 +20,14 @@ public interface OrderManagerService {
BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/**
* 麦咖啡接单
* @param request 请求参数
* @param orderBean 订单实体
* @return
*/
BaseResponse mcCafeOrderConfirm(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/**
* 制作完成
* @param request
* @param orderBean
......@@ -51,6 +60,14 @@ public interface OrderManagerService {
BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/**
* 麦咖啡拒单
* @param request
* @param orderBean
* @return
*/
BaseResponse mcCafeOrderReject(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
/**
* 同意退款
* @param request
* @param orderBean
......
package cn.freemud.management.service.adapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType;
......@@ -197,5 +198,37 @@ public class OrderManagerAdapter {
}
/**
* 麦咖啡入机成功操作
* @param request
* @return
*/
public BaseResponse mcCafeOrderSuccess(McCafeOrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
//订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderConfirmTakeVerify(orderBean, null);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return verifyResponse;
}
return orderBeanFactory.getOrderManagerService(orderBean).mcCafeOrderConfirm(request, orderBean);
}
/**
* 麦咖啡入机失败操作
* @param request
* @return
*/
public BaseResponse mcCafeOrderRefund(McCafeOrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
//订单接单参数校验
BaseResponse verifyResponse = orderVerifyHandle.orderConfirmTakeVerify(orderBean, null);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return verifyResponse;
}
return orderBeanFactory.getOrderManagerService(orderBean).mcCafeOrderReject(request, orderBean);
}
}
package cn.freemud.management.service.handle;
import cn.freemud.management.adapter.McCafeCouponAdapter;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponRequest;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Slf4j
public class CouponHandle {
public final static Integer RESPONSE_SUCCESS = 100;
@Autowired
private McCafeCouponAdapter mcCafeCouponAdapter;
@Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
/**
* 异步核销券码
* @param orderBean
*/
@Async("couponExecutor")
public void asyncVerificationCoupon(QueryOrdersResponse.DataBean.OrderBean orderBean){
List<MCCafeCouponRequest> list = mcCafeCouponAdapter.convertOrderBean2CouponLockRequest(orderBean);
if (CollectionUtils.isNotEmpty(list)) {
for (MCCafeCouponRequest mcCafeCouponRequest: list) {
//重试3次
for (int i = 2; i >= 0; i--) {
CouponRedeemResponse redeem = couponOfflineMCCafeClient.redeem(mcCafeCouponRequest);
if (RESPONSE_SUCCESS.equals(redeem.getStatusCode())) {
break;
}
if (i == 0 && !RESPONSE_SUCCESS.equals(redeem.getStatusCode())) {
log.error("核销券码异常,入参{},出参:{}", JSONObject.toJSONString(mcCafeCouponRequest), JSONObject.toJSON(redeem));
}
}
}
}
}
/**
* 解锁券码
* @param orderBean
*/
public void unlock(QueryOrdersResponse.DataBean.OrderBean orderBean){
List<MCCafeCouponLockRequest> list = mcCafeCouponAdapter.convertOrderBean2UnlockCoupon(orderBean);
if (CollectionUtils.isNotEmpty(list)) {
for (MCCafeCouponLockRequest mcCafeCouponLockRequest: list) {
//重试3次
for (int i = 2; i >= 0; i--) {
CouponBaseResponse response = couponOfflineMCCafeClient.unlock(mcCafeCouponLockRequest);
if (RESPONSE_SUCCESS.equals(response.getStatusCode())) {
break;
}
if (i == 0 && !RESPONSE_SUCCESS.equals(response.getStatusCode())) {
log.error("解锁券码异常,入参{},出参:{}", JSONObject.toJSONString(mcCafeCouponLockRequest), JSONObject.toJSON(response));
}
}
}
}
}
}
......@@ -3,13 +3,16 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.DeliverySdkAdapter;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.DeliveryServiceException;
import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
......@@ -56,6 +59,8 @@ public class DeliveryHandle {
private DeliverySdkAdapter deliverySdkAdapter;
@Autowired
private OrderBaseService orderBaseService;
@Autowired
private DeliveryMCCafeClient deliveryMCCafeClient;
/**
......@@ -121,6 +126,28 @@ public class DeliveryHandle {
return ResponseUtil.success();
}
/**
* 配送停单
*
* @param data
* @return
*/
public BaseResponse haltedDelivery(QueryOrdersResponse.DataBean.OrderBean data) {
if (data.getType() == 1 && data.getAddInfo() != null && ObjectUtils.equals(data.getAddInfo().getDeliveryType(), THIRD)) {
DeliveryOrderHaltedRequest deliveryOrderHaltedRequest =new DeliveryOrderHaltedRequest();
deliveryOrderHaltedRequest.setHaltedReason("foe入机失败");
deliveryOrderHaltedRequest.setOrderKey(data.getOid());
deliveryOrderHaltedRequest.setStoreId(data.getShopId());
DeliveryResponseDto deliveryResponse = deliveryMCCafeClient.halted(deliveryOrderHaltedRequest);
if (deliveryResponse == null || !StringUtils.equals(ResponseResult.SUCCESS.getCode(), deliveryResponse.getCode()+"")) {
return ResponseUtil.error(ResponseResult.DELIVERY_CANCEL_ORDER_ERROR);
}
}
return ResponseUtil.success();
}
/**
* 校验是否要创建配送单
......
package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult;
......@@ -60,6 +61,17 @@ public class SaasOrderHandle {
}
/**
* 更新取餐码
* @param request
* @param orderBean
* @return
*/
public BaseResponse updatePickUpGoodNo(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//todo 更新取餐码
return ResponseUtil.success();
}
/**
* 订单制作完成
*
* @param request
......
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.adapter.McCafeCouponAdapter;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
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;
......@@ -10,20 +13,22 @@ 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.DeliveryHandle;
import cn.freemud.management.service.handle.PaymentHandle;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.service.handle.*;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService;
import com.freemud.sdk.api.assortment.message.enums.OrderType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -51,6 +56,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
private StockHandle stockHandle;
@Autowired
private DeliveryHandle deliveryHandle;
@Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
@Autowired
private McCafeCouponAdapter mcCafeCouponAdapter;
@Autowired
private CouponHandle couponHandle;
/**
......@@ -75,6 +86,36 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
/**
* 麦咖啡接单
*
* @param request 请求参数
* @param orderBean 订单实体
* @return
*/
@Override
public BaseResponse mcCafeOrderConfirm(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
OrderManagerRequest orderManagerRequest =new OrderManagerRequest();
BeanUtils.copyProperties(request,orderManagerRequest);
// 订单接单
saasOrderHandle.orderConfirm(orderManagerRequest, orderBean);
//支付成功已经 创建配送单
if (!Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
if (StringUtils.isNotEmpty(request.getPickUpGoodsNo())){
//更新取餐码
saasOrderHandle.updatePickUpGoodNo(request,orderBean);
}
// 异步核销券码
couponHandle.asyncVerificationCoupon(orderBean);
}
return ResponseUtil.success();
}
/**
* 制作完成
*
* @param request
......@@ -149,6 +190,39 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
}
/**
* 麦咖啡拒单
*
* @param request
* @param orderBean
* @return
*/
@Override
public BaseResponse mcCafeOrderReject(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
OrderManagerRequest orderManagerRequest =new OrderManagerRequest();
BeanUtils.copyProperties(request,orderManagerRequest);
//根据是否是外卖单来判断
if (Objects.equals(orderBean.getOrderType(), OrderType.TAKE_OUT.getCode())) {
// 订单接单
BaseResponse<OrderManagerResponse> orderManagerResponseBaseResponse = mcCafeOrderConfirm(request, orderBean);
if (ResponseResult.SUCCESS.equals(orderManagerResponseBaseResponse.getCode())){
//通知配送服务停单
deliveryHandle.haltedDelivery(orderBean);
}
}else {
//支付退款
PayRefundResponse refundResponse = paymentHandle.refund(orderManagerRequest, orderBean);
//订单拒单
saasOrderHandle.orderReject(orderManagerRequest, refundResponse, orderBean);
//冲正库存
stockHandle.revert(orderManagerRequest, orderBean);
// 券码解冻
couponHandle.unlock(orderBean);
}
return ResponseUtil.success();
}
/**
* 同意退款
*
* @param request
......
......@@ -3,6 +3,7 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.WaimaiSdkAdapter;
import cn.freemud.management.entities.dto.request.order.McCafeOrderManagerRequest;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.ResponseResult;
......@@ -55,6 +56,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success();
}
@Override
public BaseResponse mcCafeOrderConfirm(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
return null;
}
/**
* 制作完成
*
......@@ -118,6 +124,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success();
}
@Override
public BaseResponse mcCafeOrderReject(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
return null;
}
/**
* 同意退款
*
......
package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.coupon.MCCafeCouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "COUPONMCCafe",url="http://coupon-api-gateway-koderover-dev-coupon.api-ingress.sandload.cn")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CouponOfflineMCCafeClient {
// 核销优惠券
@PostMapping("/mccafe/redeem")
CouponRedeemResponse redeem(MCCafeCouponRequest mcCafeConponRequest);
@PostMapping("/mccafe/cancelRedeem")
CouponRedeemResponse cancelRedeem(MCCafeCouponRequest mcCafeConponRequest);
@PostMapping("/mccafe/query")
CouponQueryResponse query(MCCafeCouponRequest mcCafeConponRequest);
// 优惠券锁定
@PostMapping("/mccafe/lock")
CouponBaseResponse lock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
//优惠券解锁
@PostMapping("/mccafe/unlock")
CouponBaseResponse unlock(MCCafeCouponLockRequest MCCafeCouponLockRequest);
}
package cn.freemud.management.thirdparty;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderHaltedRequest;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "DeliveryMaCafe",url="http://coupon-api-gateway-koderover-dev-coupon.api-ingress.sandload.cn")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface DeliveryMCCafeClient {
// 配送停单
@PostMapping("/delivery/halted")
DeliveryResponseDto halted(DeliveryOrderHaltedRequest deliveryOrderHaltedRequest);
}
......@@ -207,5 +207,10 @@ public class InterfaceAddressConstant {
*/
public static final String PARKING_V2_CANCEL = "/parking/v2/cancel";
/**
* 修改桌号、取餐码
*/
public static final String UPDATE_PICKUP_GOODNO = "/order/v2/updatePickUpGoodNo";
}
/*
* Copyright (c) 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package com.freemud.application.sdk.api.ordercenter.request;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @author qi.xu 2018/09/05 10:30
*/
@Getter
@Setter
@ToString
public class OrderModifyRelatingCodeReq {
/**
* 商户号
*/
private String partnerId;
/**
* 操作人
*/
private String operator;
/**
*订单编号
*/
private String orderCode;
/**
* 取货号 取餐号
*/
private String pickUpGoodsNo;
}
......@@ -804,4 +804,17 @@ public class OrderSdkService {
return responseHandle(responseDTO);
}
/**
* 修改桌号、取餐码
* @param request
* @param trackingNo
* @return
*/
public BaseResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq request, String trackingNo) {
OrderBaseResp responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, UPDATE_PICKUP_GOODNO,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp>() {
});
return responseHandle(responseDTO);
}
}
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