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 { ...@@ -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) { public SdkUpdateAbnormalState convert2SdkUpdateAbnormalState(AssortmentUpdateDeliveryAbnormalRequest request) {
SdkUpdateAbnormalState result = new SdkUpdateAbnormalState(); SdkUpdateAbnormalState result = new SdkUpdateAbnormalState();
result.setOrderClient(OrderClientType.SAAS.getIndex()); result.setOrderClient(OrderClientType.SAAS.getIndex());
......
package com.freemud.sdk.api.assortment.order.service; 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.request.QueryAfterSalesOrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp; import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp;
import com.freemud.sdk.api.assortment.order.request.order.*; import com.freemud.sdk.api.assortment.order.request.order.*;
...@@ -311,4 +312,11 @@ public interface OrderCenterSdkService { ...@@ -311,4 +312,11 @@ public interface OrderCenterSdkService {
*/ */
BaseOrderResponse updateDownstreamThirdOrderCode(AssortmentSdkUpdateDownstreamThirdOrderCodeRequest assortmentSdkUpdateDownstreamThirdOrderCodeRequest); BaseOrderResponse updateDownstreamThirdOrderCode(AssortmentSdkUpdateDownstreamThirdOrderCodeRequest assortmentSdkUpdateDownstreamThirdOrderCodeRequest);
/**
* 修改桌号、取餐码
* @param orderModifyRelatingCodeReq
* @return
*/
BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo);
} }
...@@ -1461,6 +1461,11 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -1461,6 +1461,11 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2NewOrderUpdateThirdOrderCode(orderSdkService.updateDownstreamThirdOrderCode(updateDownstreamOrderCodeReq, assortmentSdkUpdateDownstreamThirdOrderCodeRequest.getTrackingNo())); 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){ private void setTimeout(BaseQueryOrderRequest baseQueryOrderRequest,POSOrderOperationBaseReq request){
String partnerId = baseQueryOrderRequest.getPartnerId(); String partnerId = baseQueryOrderRequest.getPartnerId();
String storeCode = baseQueryOrderRequest.getShopId(); String storeCode = baseQueryOrderRequest.getShopId();
......
...@@ -29,10 +29,16 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient; ...@@ -29,10 +29,16 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients; import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy; 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 springfox.documentation.swagger2.annotations.EnableSwagger2;
import tk.mybatis.spring.annotation.MapperScan; import tk.mybatis.spring.annotation.MapperScan;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@ServletComponentScan @ServletComponentScan
@ImportAutoConfiguration(classes = {DataSourcesConfig.class}) @ImportAutoConfiguration(classes = {DataSourcesConfig.class})
@EnableSwagger2 @EnableSwagger2
...@@ -43,7 +49,7 @@ import tk.mybatis.spring.annotation.MapperScan; ...@@ -43,7 +49,7 @@ import tk.mybatis.spring.annotation.MapperScan;
@ComponentScan({"cn.freemud", "com.freemud"}) @ComponentScan({"cn.freemud", "com.freemud"})
@MapperScan({"cn.freemud.*.dao","com.freemud.sdk.api.assortment.orderdistributor.mapper","com.freemud.api.assortment.datamanager.manager", @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"}) "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 @EnableAutoConfiguration
public class OrderApplication { public class OrderApplication {
public static void main(String[] args) { public static void main(String[] args) {
...@@ -76,4 +82,20 @@ public class OrderApplication { ...@@ -76,4 +82,20 @@ public class OrderApplication {
return requestTemplate -> requestTemplate.header("x-tranaction-id", LogThreadLocal.getTrackingNo()); 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 { ...@@ -105,6 +105,10 @@ public class OrderAdapter {
private String backOrdersChangeOrderStatusConsumerQueue; private String backOrdersChangeOrderStatusConsumerQueue;
@Value("${program.backorders_notify_activity_exchange}") @Value("${program.backorders_notify_activity_exchange}")
private String backOrdersNotifyActivityExchange; private String backOrdersNotifyActivityExchange;
@Value("${macafe.waimai.tag}")
private String maCafeWaimaiTag;
@Value("${macafe.pick.tag}")
private String maCafePickTag;
@Autowired @Autowired
private ShoppingCartAdapter shoppingCartAdapter; private ShoppingCartAdapter shoppingCartAdapter;
@Autowired @Autowired
...@@ -791,6 +795,9 @@ public class OrderAdapter { ...@@ -791,6 +795,9 @@ public class OrderAdapter {
if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderDto.getQueryOrderStatus())) { if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()}); 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 // 兼容历史版本,如果传参是4 查询拆程4和5
...@@ -894,6 +901,12 @@ public class OrderAdapter { ...@@ -894,6 +901,12 @@ public class OrderAdapter {
responseVo.setTakeOut(0); responseVo.setTakeOut(0);
responseVo.setTakeOutDesc(""); responseVo.setTakeOutDesc("");
} }
//配置麦咖啡文案
if (OrderType.TAKE_OUT.getCode().equals(ordersBean.getType())){
responseVo.setMcCafeOrderTag(maCafeWaimaiTag);
}else {
responseVo.setMcCafeOrderTag(maCafePickTag);
}
responseVo.setTableNumber(ordersBean.getBarCounter()); responseVo.setTableNumber(ordersBean.getBarCounter());
responseVo.setPayStatus(ordersBean.getPayStatus()); responseVo.setPayStatus(ordersBean.getPayStatus());
responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus())) responseVo.setPayStatusDesc(Optional.ofNullable(PayStatus.getByCode(ordersBean.getPayStatus()))
......
...@@ -151,6 +151,15 @@ public class OrderController { ...@@ -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 * @param queryOrderVo
* @return * @return
...@@ -193,6 +202,16 @@ public class OrderController { ...@@ -193,6 +202,16 @@ public class OrderController {
return orderservice.queryOrderById(queryOrderVo.getOperation(),queryOrderVo.getSessionId(), queryOrderVo.getOid(),queryOrderVo.getPartnerId(),queryOrderVo.getChannelType()); 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 { ...@@ -313,4 +332,24 @@ public class OrderController {
public BaseResponse queryOrderByConditions(@Validated @LogParams @RequestBody QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo) { public BaseResponse queryOrderByConditions(@Validated @LogParams @RequestBody QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo) {
return orderservice.queryOrderByConditions(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 { ...@@ -205,6 +205,10 @@ public class QueryOrderResponseVo {
* 退款文案提示 若48小时后商家未处理,自动同意/拒绝退款 * 退款文案提示 若48小时后商家未处理,自动同意/拒绝退款
*/ */
private String refundTips; private String refundTips;
/*
* 麦咖啡 外卖单或者自提单文案提示
*/
private String mcCafeOrderTag;
/** /**
* 退款单 * 退款单
*/ */
......
...@@ -31,7 +31,7 @@ public class QueryOrderVo { ...@@ -31,7 +31,7 @@ public class QueryOrderVo {
@ApiModelProperty(value = "订单编号") @ApiModelProperty(value = "订单编号")
private String oid; private String oid;
/** /**
* 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 * 订单状态 enum queryOrderStatus 全部订单 1 待取餐 2 已完成 3 全部 4.退款,5 待支付 ,6 已取消
*/ */
private Integer queryOrderStatus; 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 { ...@@ -19,7 +19,8 @@ public enum QueryOrderStatus {
FINISH(2, "已完成"), FINISH(2, "已完成"),
ALL_BILL(3, "全部"), ALL_BILL(3, "全部"),
REFUND_BILL(4, "退款"), REFUND_BILL(4, "退款"),
NO_PAY(5, "待支付"); NO_PAY(5, "待支付"),
ORDER_CANCEL(6, "已取消");
private Integer code; private Integer code;
......
...@@ -195,6 +195,10 @@ public enum ResponseResult { ...@@ -195,6 +195,10 @@ public enum ResponseResult {
*/ */
DELIVERY_QUERY_ERROR("50024","查询配送单失败"), DELIVERY_QUERY_ERROR("50024","查询配送单失败"),
DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"), 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 { ...@@ -115,4 +115,11 @@ public interface Orderservice {
* @return * @return
*/ */
BaseResponse queryOrderByConditions(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo); BaseResponse queryOrderByConditions(QueryOrderByConditionsRequestVo queryOrderByConditionsRequestVo);
BaseResponse reminder(ReminderVo reminderVo);
BaseResponse listFreeRider(FreeRiderPositionVo vo);
BaseResponse mcCafeQueryOrderById(MaCafeQueryOrderVo queryOrderVo);
} }
package cn.freemud.service.thirdparty; package cn.freemud.service.thirdparty;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountRequestDto; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto; import cn.freemud.entities.dto.delivery.*;
import org.springframework.cloud.netflix.feign.FeignClient; import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -11,4 +11,10 @@ public interface DeliveryFeiginClient { ...@@ -11,4 +11,10 @@ public interface DeliveryFeiginClient {
@PostMapping("/deliveryLogisticsAmount/queryDeliveryAmount") @PostMapping("/deliveryLogisticsAmount/queryDeliveryAmount")
QueryDeliveryAmountResponseDto queryDeliveryAmount(@RequestBody QueryDeliveryAmountRequestDto request); 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 @@ ...@@ -32,6 +32,12 @@
</dependency> </dependency>
<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> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId> <artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version> <version>1.3.9-SNAPSHOT</version>
......
package cn.freemud.management.controller; package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse; 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.request.order.OrderManagerRequest;
import cn.freemud.management.enums.McCafeOperateType;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.adapter.OrderManagerAdapter; import cn.freemud.management.service.adapter.OrderManagerAdapter;
...@@ -63,4 +65,22 @@ public class OrderManagerController { ...@@ -63,4 +65,22 @@ public class OrderManagerController {
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE); 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; package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse; 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.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
...@@ -19,6 +20,14 @@ public interface OrderManagerService { ...@@ -19,6 +20,14 @@ public interface OrderManagerService {
BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean); 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 request
* @param orderBean * @param orderBean
...@@ -51,6 +60,14 @@ public interface OrderManagerService { ...@@ -51,6 +60,14 @@ public interface OrderManagerService {
BaseResponse<OrderManagerResponse> orderReject(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean); 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 request
* @param orderBean * @param orderBean
......
package cn.freemud.management.service.adapter; package cn.freemud.management.service.adapter;
import cn.freemud.base.entity.BaseResponse; 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.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType; import cn.freemud.management.enums.OperateType;
...@@ -197,5 +198,37 @@ public class OrderManagerAdapter { ...@@ -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; ...@@ -3,13 +3,16 @@ package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.DeliverySdkAdapter; 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.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.DeliveryStatus; import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.DeliveryServiceException; import cn.freemud.management.intercept.DeliveryServiceException;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.thirdparty.DeliveryMCCafeClient;
import cn.freemud.management.util.ResponseUtil; 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.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto; import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto; import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
...@@ -56,6 +59,8 @@ public class DeliveryHandle { ...@@ -56,6 +59,8 @@ public class DeliveryHandle {
private DeliverySdkAdapter deliverySdkAdapter; private DeliverySdkAdapter deliverySdkAdapter;
@Autowired @Autowired
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
@Autowired
private DeliveryMCCafeClient deliveryMCCafeClient;
/** /**
...@@ -121,6 +126,28 @@ public class DeliveryHandle { ...@@ -121,6 +126,28 @@ public class DeliveryHandle {
return ResponseUtil.success(); 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; package cn.freemud.management.service.handle;
import cn.freemud.base.entity.BaseResponse; 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.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
...@@ -60,6 +61,17 @@ public class SaasOrderHandle { ...@@ -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 * @param request
......
package cn.freemud.management.service.impl; package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; 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.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.entities.dto.response.pay.PayRefundResponse; import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
...@@ -10,20 +13,22 @@ import cn.freemud.management.enums.ResponseResult; ...@@ -10,20 +13,22 @@ import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.intercept.OrderServiceException; import cn.freemud.management.intercept.OrderServiceException;
import cn.freemud.management.service.OrderBaseService; import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService; import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.handle.DeliveryHandle; import cn.freemud.management.service.handle.*;
import cn.freemud.management.service.handle.PaymentHandle; import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.management.service.handle.SaasOrderHandle;
import cn.freemud.management.service.handle.StockHandle;
import cn.freemud.management.util.ResponseUtil; import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest; 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.response.StoreResponse;
import com.freemud.application.sdk.api.storecenter.service.StoreCenterService; 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 com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils; 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
* *
...@@ -51,6 +56,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -51,6 +56,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
private StockHandle stockHandle; private StockHandle stockHandle;
@Autowired @Autowired
private DeliveryHandle deliveryHandle; private DeliveryHandle deliveryHandle;
@Autowired
private CouponOfflineMCCafeClient couponOfflineMCCafeClient;
@Autowired
private McCafeCouponAdapter mcCafeCouponAdapter;
@Autowired
private CouponHandle couponHandle;
/** /**
...@@ -75,6 +86,36 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -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 * @param request
...@@ -149,6 +190,39 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService { ...@@ -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 * @param request
......
...@@ -3,6 +3,7 @@ package cn.freemud.management.service.impl; ...@@ -3,6 +3,7 @@ package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse; import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal; import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.adapter.WaimaiSdkAdapter; 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.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse; import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.ResponseResult; import cn.freemud.management.enums.ResponseResult;
...@@ -55,6 +56,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService { ...@@ -55,6 +56,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); return ResponseUtil.success();
} }
@Override
public BaseResponse mcCafeOrderConfirm(McCafeOrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
return null;
}
/** /**
* 制作完成 * 制作完成
* *
...@@ -118,6 +124,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService { ...@@ -118,6 +124,11 @@ public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
return ResponseUtil.success(); 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 { ...@@ -207,5 +207,10 @@ public class InterfaceAddressConstant {
*/ */
public static final String PARKING_V2_CANCEL = "/parking/v2/cancel"; 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 { ...@@ -804,4 +804,17 @@ public class OrderSdkService {
return responseHandle(responseDTO); 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