Commit 257b7f5a by shuhu.hou@freemud.cn

Merge branch 'feature/20200325_oms接单'

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	order-application-service/pom.xml
parents 829b8dac cb46b96e
...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO; import com.freemud.application.sdk.api.couponcenter.offline.domain.ProductRedeemVO;
import com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO; import com.freemud.application.sdk.api.couponcenter.offline.domain.TransactionVO;
import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest; import com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest; import com.freemud.application.sdk.api.membercenter.request.UserScoreRequest;
import com.freemud.application.sdk.api.ordercenter.enums.*; import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.*; import com.freemud.application.sdk.api.ordercenter.request.*;
...@@ -48,6 +49,21 @@ public class OrderSdkAdapter { ...@@ -48,6 +49,21 @@ public class OrderSdkAdapter {
private static final int STACK_SUB = 1; private static final int STACK_SUB = 1;
public BaseQueryOrderRequest getOrderConfirmRequest(String operator, QueryOrdersResponse.DataBean.OrderBean orderBean){
BaseQueryOrderRequest orderRequest = new BaseQueryOrderRequest();
orderRequest.setOrderId(orderBean.getOid());
orderRequest.setShopId(orderBean.getShopId());
orderRequest.setHasSelfDelivery(true);
orderRequest.setPartnerId(orderBean.getCompanyId());
orderRequest.setOrderType(getNewOrderTypeEnum(orderBean.getType(), orderBean.getGmtExpect()));
if(orderBean.getGmtExpect() != null && orderBean.getGmtExpect() != 0){
orderRequest.setExpectTime(cn.freemud.base.util.DateUtil.convert2String(new Date(orderBean.getGmtExpect()), cn.freemud.base.util.DateUtil.FORMAT_YYYY_MM_DD_HHMMSS));
}
orderRequest.setOperator(operator);
orderRequest.setTrackingNo(LogThreadLocal.getTrackingNo());
return orderRequest;
}
public CancelOrderRequest convent2CancelOrderRequest(String orderId, String partnerId, AfterSalesType afterSalesType, public CancelOrderRequest convent2CancelOrderRequest(String orderId, String partnerId, AfterSalesType afterSalesType,
String reason, String trackingNo, Long refund_id) { String reason, String trackingNo, Long refund_id) {
CancelOrderRequest cancelOrderRequest = new CancelOrderRequest(); CancelOrderRequest cancelOrderRequest = new CancelOrderRequest();
......
...@@ -84,6 +84,11 @@ ...@@ -84,6 +84,11 @@
<artifactId>deliverycenter-sdk</artifactId> <artifactId>deliverycenter-sdk</artifactId>
<version>1.5.RELEASE</version> <version>1.5.RELEASE</version>
</dependency> </dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>takeawaycenter-sdk</artifactId>
<version>1.2.3-SNAPSHOT</version>
</dependency>
<!-- 商户门店sdk --> <!-- 商户门店sdk -->
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -31,11 +31,34 @@ ...@@ -31,11 +31,34 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>takeawaycenter-sdk</artifactId>
<version>1.2.3-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>1.2.3.RELEASE</version> <version>1.3.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<artifactId>structure-center-sdk</artifactId>
<groupId>com.freemud.application.service.sdk</groupId>
<version>1.2-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.freemud.sdk.api.assortment</groupId>
<artifactId>assortment-messagepush-sdk</artifactId>
<version>2.6.3.RELEASE</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
...@@ -47,7 +70,8 @@ ...@@ -47,7 +70,8 @@
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
<artifactId>deliverycenter-sdk</artifactId> <artifactId>deliverycenter-sdk</artifactId>
<version>1.1.3-SNAPSHOT</version> <version>1.5.RELEASE</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>cn.freemud.commons</groupId> <groupId>cn.freemud.commons</groupId>
......
package cn.freemud.management.adapter;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class DeliverySdkAdapter {
/**
* 创建配送单请求对象
*
* @param order
* @param storeInfo
* @param deliveryCallBackUrl
* @return
*/
public CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(QueryOrdersResponse.DataBean.OrderBean order
, StoreResponse storeInfo, String deliveryCallBackUrl) {
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1));
deliveryOrderRequestDto.setSerialNumber(order.getDaySeq().toString());
deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark());
deliveryOrderRequestDto.setOrderTotalAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setPartnerId(order.getCompanyId());
deliveryOrderRequestDto.setOrderChannel(order.getSource());
deliveryOrderRequestDto.setStoreId(storeInfo.getBizVO().getStoreId());
deliveryOrderRequestDto.setStoreCode(storeInfo.getBizVO().getStoreCode());
StringBuffer address = new StringBuffer(storeInfo.getBizVO().getCity())
.append(storeInfo.getBizVO().getProvince())
.append(storeInfo.getBizVO().getRegion())
.append(storeInfo.getBizVO().getAddress());
deliveryOrderRequestDto.setStoreAddress(address.toString());
deliveryOrderRequestDto.setStoreLng(new BigDecimal(storeInfo.getBizVO().getLongitude()));
deliveryOrderRequestDto.setStoreLat(new BigDecimal(storeInfo.getBizVO().getLatitude()));
deliveryOrderRequestDto.setStorePhone(storeInfo.getBizVO().getPhone());
deliveryOrderRequestDto.setStoreName(order.getShopName());
deliveryOrderRequestDto.setCityName(storeInfo.getBizVO().getCity());
deliveryOrderRequestDto.setReceiverName(order.getUserName());
deliveryOrderRequestDto.setReceiverPrimaryPhone(order.getPhone());
deliveryOrderRequestDto.setReceiverAddress(order.getAddress());
deliveryOrderRequestDto.setReceiverLng(new BigDecimal(order.getLongitude()));
deliveryOrderRequestDto.setReceiverLat(new BigDecimal(order.getLatitude()));
deliveryOrderRequestDto.setOrderTime(new Date(order.getGmtCreate()));
deliveryOrderRequestDto.setCallbackUrl(deliveryCallBackUrl);
// 预约单预计送到时间
if (order.getGmtExpect() != null && order.getGmtExpect() != 0) {
deliveryOrderRequestDto.setExpectTime(new Date(order.getGmtExpect()));
}
deliveryOrderRequestDto.setIsPre(order.getGmtExpect() != null ? 1 : 0);
List<CreateDeliveryOrderRequestDto.DeliveryProductInfo> productInfos = new ArrayList<>();
order.getProductList().forEach(productList -> {
if (productList.getPrice() > 0) {
CreateDeliveryOrderRequestDto.DeliveryProductInfo deliveryProductInfo = new CreateDeliveryOrderRequestDto.DeliveryProductInfo();
deliveryProductInfo.setProductCode(productList.getProductId());
deliveryProductInfo.setProductName(productList.getProductName());
deliveryProductInfo.setProductNumber(productList.getNumber());
deliveryProductInfo.setProductPrice(productList.getPrice().intValue());
productInfos.add(deliveryProductInfo);
}
});
deliveryOrderRequestDto.setProductInfos(productInfos);
return deliveryOrderRequestDto;
}
}
package cn.freemud.management.adapter;
import cn.freemud.management.enums.OperateType;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.sdk.api.assortment.message.enums.MessageEventType;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Component;
@Component
public class MessagePushAdapter {
public PushMessageNoticeDto convent2PushMessageNoticeDto(Integer targetType, String partnerId,
String storeId, String userId, String oid, Integer deliveryStatus, Integer cmdType) {
PushMessageNoticeDto pushMessageNoticeDto = new PushMessageNoticeDto();
pushMessageNoticeDto.setPartnerId(partnerId);
pushMessageNoticeDto.setStoreId(storeId);
pushMessageNoticeDto.setTargetId(userId);
pushMessageNoticeDto.setTargetType(targetType);
pushMessageNoticeDto.setCmd(cmdType);
pushMessageNoticeDto.setTtl(0);
pushMessageNoticeDto.setVer("1");
PushMessageNoticeDto.Message message = new PushMessageNoticeDto.Message();
message.setType(1);
if (targetType == 2) {
PushMessageNoticeDto.Message.Content content = new PushMessageNoticeDto.Message.Content();
content.setOid(oid);
content.setDeliveryStatus(deliveryStatus);
message.setContent(content);
}
pushMessageNoticeDto.setData(JSONObject.toJSONString(message));
return pushMessageNoticeDto;
}
public MessageTemplateRequest<MessagePushOrderTemplateRequest> convent2MessageTemplateRequest(QueryOrdersResponse.DataBean.OrderBean order, String reason, OperateType opType) {
OrderExtInfoDto extInfo = JSONObject.parseObject(order.getExtInfo(), OrderExtInfoDto.class);
if (extInfo==null){
return null;
}
MessageTemplateRequest<MessagePushOrderTemplateRequest> messageTemplateRequest = new MessageTemplateRequest<>();
messageTemplateRequest.setAppId(extInfo.getAppid());
messageTemplateRequest.setPartnerId(order.getCompanyId());
MessagePushOrderTemplateRequest messagePushOrderTemplateRequest = new MessagePushOrderTemplateRequest();
messagePushOrderTemplateRequest.setAddress(order.getAddress());
messagePushOrderTemplateRequest.setDaySeq(order.getDaySeq());
messagePushOrderTemplateRequest.setGmtExpect(order.getGmtExpect());
messagePushOrderTemplateRequest.setShopName(order.getShopName());
messagePushOrderTemplateRequest.setOpenId(extInfo.getOpenid());
messagePushOrderTemplateRequest.setGmtCreate(order.getGmtCreate());
messagePushOrderTemplateRequest.setOrderId(order.getOid());
messagePushOrderTemplateRequest.setPrepayId(extInfo.getPrepayId());
messagePushOrderTemplateRequest.setFormId(extInfo.getFormId());
messagePushOrderTemplateRequest.setOrderType(order.getType());
messagePushOrderTemplateRequest.setOtherCode(order.getOtherCode());
messagePushOrderTemplateRequest.setAmount(Double.valueOf(order.getAmount()));
messagePushOrderTemplateRequest.setReason(reason);
messageTemplateRequest.setData(messagePushOrderTemplateRequest);
MessageEventType messageEventType = null;
switch (opType) {
case ORDER_REJECT:
messageEventType = MessageEventType.REJECTORDER;
break;
case ORDER_DONE:
messageEventType = MessageEventType.DONEORDER;
break;
case ORDER_SEND:
//外卖订单送出发微信模板消息
if (ObjectUtils.equals(1, order.getType())) {
messageEventType = MessageEventType.DELIVERYORDER;
} else {
messageEventType = MessageEventType.APPRAISEORDER;
}
break;
case ORDER_AFFIRM:
messageEventType = MessageEventType.APPRAISEORDER;
break;
case ORDER_REJECT_REFUND:
messageEventType = MessageEventType.REFUNDREJECTORDER;
break;
default:
messageEventType = null;
}
messageTemplateRequest.setMessageEventType(messageEventType);
return messageTemplateRequest;
}
}
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.DeliveryOrderRequest; import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderRequest;
import cn.freemud.management.service.OrderDeliveryService; import cn.freemud.management.service.impl.OrderDeliveryService;
import com.freemud.application.sdk.api.log.ApiAnnotation; import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams; import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
......
package cn.freemud.management.controller;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.adapter.OrderManagerAdapter;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.log.ApiAnnotation;
import com.freemud.application.sdk.api.log.LogParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderManagerController
* @Package cn.freemud.management.controller
* @Description:
* @author: shuhu.hou
* @date: 2020/3/26 16:09
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Slf4j
@RequestMapping("/order")
@RestController
@Validated
public class OrderManagerController {
@Autowired
private OrderManagerAdapter orderManagerAdapter;
@ApiAnnotation(logMessage = "订单履单")
@ApiOperation(value = "订单履单", notes = "订单履单", produces = "application/json")
@PostMapping("/statusOperate")
public BaseResponse deliveryCreate(@Validated @LogParams @RequestBody OrderManagerRequest request) {
OperateType byOpType = OperateType.getByOpType(request.getOperateType());
if (byOpType==null){
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
switch (byOpType) {
case ORDER_CONFIRM:
return orderManagerAdapter.orderConfirmTake(request);
case ORDER_REJECT:
return orderManagerAdapter.orderReject(request);
default:
return ResponseUtil.error(ResponseResult.ORDER_OPERATE_TYPE_NOT_VALIDATE);
}
}
}
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 OrderManagerRequest {
/**
* 商户号
*/
@NotEmpty(message = "商户号不允许为null")
private String partnerId;
/**
* 门店号
*/
private String storeId;
/**
* 订单号
*/
@NotEmpty(message = "订单号不允许为nul")
private String orderId;
@Size(max=50,message = "原因不能超过50个字符")
private String reason;
/**
* 订单操作类型
* @see OperateType
*/
@NotEmpty(message = "操作类型不能为空")
private String operateType;
/**
* 操作人
* pos
* 开放平台
* 小助手
* 系统自动履单
*/
@NotEmpty(message = "操作人不能为空")
private String operator;
}
package cn.freemud.management.entities.dto.response.order;
import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.RefundStatus;
import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.constraints.Size;
@Data
public class OrderManagerResponse {
/**
* 预订单打印时间{1:提醒时打印;2:接单时打印} 默认为1
*/
private String orderPrintConfig;
/**
* 订单预约时间
*/
private Long gmtExpect;
/**
* 订单状态
* 1=下单,2=待支付,3=接单,4=配送中,5=完成,6=取消,7=拒单,31=制作完成
* @see OrderStatus
*/
private Integer status;
/**
* 订单退款状态
* 1 申请退款 2 同意退款 3 已退货 4 退款完成 5 拒绝退款
* @see RefundStatus
*/
private Integer refundStatus;
public OrderManagerResponse(){
}
public OrderManagerResponse(String orderPrintConfig, Long gmtExpect){
this.orderPrintConfig=orderPrintConfig;
this.gmtExpect=gmtExpect;
}
public OrderManagerResponse(OrderStatus status, RefundStatus refundStatus){
if (status!=null){
this.status=status.getCode();
}
if (refundStatus!=null){
this.refundStatus=refundStatus.getCode();
}
}
public OrderManagerResponse(String orderPrintConfig, Long gmtExpect, RefundStatus refundStatus){
this.orderPrintConfig=orderPrintConfig;
this.gmtExpect=gmtExpect;
if (refundStatus!=null){
this.refundStatus=refundStatus.getCode();
}
}
}
package cn.freemud.management.enums;
public enum MessageCenterCmdType {
JIEDAN_DAYIN_TIXING(1, "推送接单-打印-提醒 消息"),
DAYIN(2, "推送接单-打印消息"),
TIXING_DAYIN(3, "推送提醒-打印消息"),
TIXING(4, "推送提醒消息"),
JIEDAN(5, "推送接单消息"),
RIDER_STATUS(6, "推送配送员状态");
private Integer cmd;
private String des;
MessageCenterCmdType(Integer cmd, String des) {
this.cmd = cmd;
this.des = des;
}
public Integer getCmd() {
return cmd;
}
public void setCmd(Integer cmd) {
this.cmd = cmd;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
}
package cn.freemud.management.enums;
import org.apache.commons.lang.StringUtils;
public enum OperateType {
ORDER_CONFIRM("orderConfirm","接单"),
ORDER_REJECT("orderReject","拒单"),
ORDER_DONE("orderDone","制作完成"),
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款");
/**
* 操作类型
*/
private String opType;
/**
* 操作名称
*/
private String opName;
OperateType(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 OperateType getByOpType(String opType){
if (StringUtils.isEmpty(opType)) {
return null;
}
for (OperateType operateType : values()) {
if (operateType.getOpType().equals(opType)) {
return operateType;
}
}
return null;
}
}
package cn.freemud.management.enums;
public enum OrderSource {
BDWM("bdwm", "百度外卖"),
JDWM("jdwm", "京东到家"),
MTWM("mtwm", "美团外卖"),
SDG("sdg", "闪电购"),
ELEME("eleme", "饿了么外卖"),
FMWD("fmwd", "非码微店"),
MALL("mall", "非码Mall"),
SAAS("saas", "saas点餐"),
ALIPAY("alipay", "支付宝");
private String source;
private String sourceName;
OrderSource(String source, String sourceName) {
this.source = source;
this.sourceName = sourceName;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getSourceName() {
return sourceName;
}
public void setSourceName(String sourceName) {
this.sourceName = sourceName;
}
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderType
* @Package cn.freemud.enums
* @Description: 订单状态
* @author: liming.guo
* @date: 2018/5/21 14:43
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.enums;
public enum OrderStatus {
TAKE_ORDER(1, "下单"),
WAIT_PAY(2, "待支付"),
RECEIPT(3, "接单"),
DISTRIBUTION(4, "配送中"),
COMPLETE(5, "完成"),
CALCEL(6, "取消"),
REFUSE(7,"拒单"),
COMPLETE_MAKE(31, "制作完成");
private Integer code;
private String desc;
OrderStatus(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static Integer[] getAllCodes() {
Integer[] codeArray = new Integer[values().length];
int i = 0;
for (OrderStatus orderStatus : values()) {
codeArray[i] = orderStatus.getCode();
i++;
}
return codeArray;
}
public static OrderStatus getByCode(Integer code) {
if (code == null) {
return null;
}
for (OrderStatus orderStatus : values()) {
if (orderStatus.getCode().equals(code)) {
return orderStatus;
}
}
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: OrderType
* @Package cn.freemud.enums
* @Description: 订单状态
* @author: liming.guo
* @date: 2018/5/21 14:43
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package cn.freemud.management.enums;
public enum RefundStatus {
APPLY_REFUND(1, "申请退款"),
AGREE_REFUND(2, "同意退款"),
ALREADY_REFUND(3, "已退货"),
COMPLETE_REFUND(4, "退款完成"),
REFUSE_REFUND(5, "拒绝退款");
private Integer code;
private String desc;
RefundStatus(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public static RefundStatus getByCode(Integer code) {
for (RefundStatus status : values()) {
if (status.getCode().equals(code)) {
return status;
}
}
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;
}
}
package cn.freemud.management.enums;
/**
* 状态码
*
* @author liming.guo
* @date 2018/05/10
*/
public enum ResponseResult {
/**
* 通用信息返回
*/
SUCCESS("100", "ok"),
SYSTEM_ERROR("50001", "系统内部错误"),
SYSTEM_BUSINESS_ERROR("50002", "系统业务错误"),
NOT_LOGIN("40001", "用户未登录"),
PARAMETER_MISSING("40002", "缺少必要参数"),
OPERATE_TOO_OFTEN("40003", "忙不过来了,请稍后再试"),
/**
* 用户信息状态码
*/
SESSION_INVAILD("41000", "用户sessionId已过期"),
USER_GETPHONE_ERROR("41002", "获取用户手机号失败"),
USER_SIGNATURE_ERROR("41003", "签名信息错误"),
USER_REGISTER_ERROR("41004", "用户注册失败"),
USER_CODE_INVAILD("41005", "无效的code信息"),
USER_EDIT_MOBILE_ERROR("41007", "修改手机号错误"),
USER_GETRECEIVEADDRESS_ERROR("41008", "获取收货地址异常"),
USER_UPDATERECEIVEADDRESS_ERROR("41009", "修改收货地址异常"),
USER_ADDRECEIVEADDRESS_ERROR("41010", "新增收货地址异常"),
USER_DELETERECEIVEADDRESS_ERROR("41011", "删除收货地址异常"),
USER_SVC_CARD_ERROR("41012", "用户卡号异常"),
/**
* 验证码 状态码
*/
SMSCODE_SEND_ERROR("42001", "验证码发送失败"),
SMSCODE_EXIST("42002", "验证码已发送,请注意查收"),
SMSCODE_ERROR("42003", "验证码错误,请核对后重新输入"),
/**
* 门店状态码
*/
STORE_IMG_NOT_FOUND("43001", "查询图片数据不存在"),
STORE_ITEM_QUERY_ERROR("43002", "查询门店商品信息失败"),
STORE_ITEM_NOT_FOUND("43003", "门店商品信息不存在"),
STORE_NOT_FOUND("43004", "门店不存在"),
STORE_ITEM_CHECK_VAILD_ERROR("43005", "门店商品校验失败"),
STORE_ITEM_CHECK_INVAILD("43006", "商品无效"),
STORE_ITEM_CHECK_DISCOUNT_CHANGE("43010", "商品限购活动已变更"),
STORE_ITEM_CHECK_CLOSE("43007", "门店已打烊,请预约点餐"),
STORE_ITEM_STOP_BUSINESS("43010", "门店已停业"),
STORE_ITEM_NOT_DELIVERY("43008", "门店不支持外卖配送"),
STORE_ITEM_NOT_IN_DELIVERY_LIMIT_AMOUNT("43009", "订单金额未满足门店起送费"),
STORE_BUSINESS_HOUR_ERROR("43010", "门店营业时间错误"),
STORE_NOT_ENABLE_COLLECT_GOODS("43011","门店不支持到店"),
STORE_NOT_TABLE_INFO("43012","查询桌号失败"),
STORE_DISCONTENT_DELIVERY_FEE("43013","不满足起送金额"),
STORE_BIND_MALL_NOT_FOUND("43014","商城门店存在"),
/**
* 购物车状态码
*/
SHOPPING_CART_GETINFO_ERROR("44001", "查询购物车信息失败"),
SHOPPING_CART_GETINFO_INVAILD("44002", "购物车信息不存在"),
SHOPPING_CART_ADD_ERROR("44003", "添加购物车失败"),
SHOPPING_CART_ADD_INVAILD("44004", "购物车商品不能为空"),
SHOPPING_CART_UPDATE_ERROR("44005", "更新购物车失败"),
SHOPPING_CART_CLEAR_ERROR("44006", "清空购车失败"),
SHOPPING_CART_ACTIVITY_CHANGE("44007", "商品价格有变动,将按照最新活动价格计算哦"),
SHOPPING_CART_ACTIVITY_UNDERSTOCK("44008", "特价商品库存不足超出部分按照原价购买"),
SHOPPING_CART_ATTRIBUTE_NOT_EXISTS("44009", "商品属性不存在"),
SHOPPING_CART_COUPON_NOT_EXIST("44010", "商品券不存在"),
SHOPPING_CART_SENDGOODS_NOT_EXIST("44011", "加价购商品不存在"),
SHOPPING_CART_STOCK_NOT_HAVE("44012", "商品库存不足"),
/**
* 订单状态码
*/
ORDER_CREATE_ERROR("45001", "订单创建失败"),
ORDER_PAYACCESS_ERROR("45002", "订单支付成功确认失败"),
ORDER_QUERYORDER_ERROR("45003", "查询订单失败"),
ORDER_DELETE_ERROR("45004", "删除订单失败"),
ORDER__ERRORREFUND("45005", "订单申请退款失败"),
ORDER_PAY_GETPRE_MESSAGE_ERROR("45006", "获取预支付信息失败"),
ORDER_EDIT_ERROR("45007", "修改订单错误"),
ORDER_COPY_ERROR("45008", "订单复制失败"),
ORDER_CANCEL_ERROR("45009", "取消订单失败"),
ORDER_QUERY_QUEUE_INDEX_ERROR("45010", "查询订单排队号失败"),
ORDER_TAKEMEALTIME_INVAILD("45011", "你的取餐时间穿越了,请重新选择!"),
ORDER_TAKE_OUT_ADDRESS_INVAILD("45012", "外卖配送地址无效"),
ORDER_TAKE_OUT_ADDRESS_NOT_DELIVERY("45013", "收货地址超过配送范围"),
ORDER_QUERY_QUANTITYR_ERROR("45014", "获取当前门店制作中订单失败"),
ORDER_CREATE_VERIFICATION_ERROR("45015", "限时特价商品核销失败"),
ORDER_CREATE_TAKEMEALTIME_ERROR("45016", "取餐时间不正确"),
ORDER_CREATE_TIME_NOT_DELIVERY("45017", "不在外卖配送时间范围内"),
ORDER_CREATE_FORMID_ISNULL("45018", "0元购formId不能为空"),
ORDER_GET_PAY_EB_CODE_ERROR("45019", "没有配置支付payEbCode"),
ORDER_WXAPP_NOT_ENABLE_COLLECT_GOODS("45020","小程序未开通到店自取"),
PAY_AMOUNT_ERROR("45021","订单支付金额不能小于0"),
ORDER_NOT_EXIST("45022","订单不存在"),
ORDER_HAD_EVALUATE("45023","订单已评价"),
ENCIRCLEORDER_TABLENUMBER_LOCK_ERROR("45025","调用基础服务清台失败"),
ENCIRCLEORDER_TABLENUMBER_LOCK_USERINFO_ERROR("45026","开台获取用户信息失败"),
ENCIRCLEORDER_TABLENUMBER_LOCK_FAILED("45027","开台失败"),
ENCIRCLEORDER_PRE_PAYMENT_LOCK("45028","你的订单正在下单支付,无需再支付,请查看"),
//ENCIRCLEORDER_PRE_PAYMENT_SUCCESS("45028","订单已支付"),
ENCIRCLEORDER_PRE_PAYMENT_CLOSE_FAILED("45029","关闭预支付订单失败"),
ENCIRCLEORDER_UPDATE_ORDER_LOCK("45030","有小伙伴正在下单,请稍后下单"),
ORDER_COMPAR_PRODUCTS_CHANGE("45031", "订单价格变动,总金额:¥ "),
CALL_STORE_CHANGE_TABLENUMBER_ERROR("45032","调用门店服务修改桌号状态失败"),
QUERY_STORE_TABLEWARE_ERROR("45033","查询门店服务餐具错误"),
CREATE_GROUP_ORDER_ERROR_START("45034","围餐开台创建订单失败"),
ORDER_CREATE_OPERATION_ERROR("45035","操作类型未定义"),
ORDER_INFO_NOT_WEIGHT_ERROR("45036","订单中包含未称重商品"),
ORDER_CODE_EMPTY("45037","订单号不能传空"),
CREATE_ORDER_CHECK_SESSION_ERROR("45037","sessionId 不能为空"),
CREATE_ORDER_CHECK_STORE_ERROR("45038","门店ID 不能为空"),
CREATE_ORDER_CHECK_ORDERTYPE_ERROR("45039","下单类型不能为空"),
ORDER_PRE_PAYMENT_LOCK("45040","订单正在支付"),
ORDER_NOT_ALLOW_REFUND("45100", "暂不支持已完成订单申请订单退款"),
QUERY_TABLESTATUS_ACTIVEFLAG_ERROR("45041","桌号禁用"),
PREVIEWORDER_UPDATE_ORDERPRICE_ERROR("45042","修改订单失败"),
UPDATE_ORDER_INFO_ERROR("45043","下单失败"),
CLEAR_SHOPPING_INFO_ERROR("45044","操作购物车失败"),
ORDER_CREATE_TABLE_ERROR("45046","开台异常"),
ORDER_TABLE_BINDING_ERROR("45047","用户未绑定桌号"),//改code与前端有强关联,不可重复
ENCIRCLEORDER_TABLENUMBER_LOCK("45048","当前桌号正在开台或已开台"),
ENCIRCLEORDER_PRE_PAYMENT_SUCCESS("45049","订单已支付"),
CLEAR_SHOPPING_INFO_SYSTEM_ERROR("45048","清空购物车异常"),
ORDER_PARTNER_ID_NOT_MATCTH("45050","商户不匹配"),
ORDER_STORE_ID_NOT_MATCTH("45051","门店不匹配"),
ORDER_REPEAT_DO_COMPLETE("45052", "重复操作,订单已经完成"),
ORDER_HAS_CANCELED("45053", "订单已经被取消"),
ORDER_MALL_NOT_MATCH("45054", "非商城订单,无法操作"),
AFFIRM_ORDER_FAIL("45055", "确认订单失败"),
ORDER_CANNOT_CONFIRM("45056", "该笔订单不是新订单,不能接单"),
ORDER_ACCEPT_FAILED("45057", "接单失败"),
ORDER_ACCEPT_FAILED_CREATE_DELIVERY_FAILED("45058", "创建配送单失败导致接单失败"),
ORDER_OPERATE_TYPE_NOT_VALIDATE("45059","订单操作类型(operateType)不支持"),
/**
* 支付
*/
PAY_BACKEND_CONFIG_ERROR("58003", "支付交易异常"),
/**
* 优惠券活动
*/
COUPON_QUERY_ERROR("46001", "获取优惠券信息失败"),
COUPON_FULL_ACTIVITY_ERROR("46009", "获取满减信息失败"),
COUPON_GETINFO_INVAILD("46002", "优惠券信息不存在"),
COUPON_NOT_REACH_CONDITION("46003", "不满足券的指定消费金额"),
ACTIVITY_NOT_EXIST("46004", "错过是最美好的相遇!您访问的活动不存在"),
ACTIVITY_QUERY_ERROR("46005", "活动查询失败"),
COUPON_GET_ERROR("46006", "优惠券领取失败"),
ACTIVITY_JOIN_FAIL("46007", "参加活动失败"),
COUPON_NOT_SHARED("46008", "券不可与其他活动同享"),
COUPON_NOT_ADD_WEIXIN_CARD("46009", "该优化券不能加入微信卡包"),
COUPON_SHOP_NOTSUPPORT("46010","优惠券在当前门店不可用"),
COUPON_ORDER_WAY_ERROR("46011", "您选择得优惠券不适用该点餐方式"),
COUPON_VERIFICATION_FAIL("46012","优惠券核销失败"),
COUPON_CALLBACK_FAIL("46013","优惠券移除卡包失败"),
/**
* 加价购商品
*/
PREMIUM_EXCHANGE_ACTIVITY_NOT_EXIST("47001", "换购商品已失效啦,请重新下单"),
PREMIUM_EXCHANGE_SKU_DEFICIENCY("47002", "您选择的换购商品库存不足,请重新下单"),
/**
* 微信卡券
*/
WEICHAT_SHOP_NOTSUPPORT("48001","当前门店不可用"),
WEICHAT_NOT_PRODUCTCARD("48002","不是商品券不用加入购物车"),
WEICHAT_PRODUCT_NOEXIST("48003","商品不存在"),
/**
* 配送单
*/
DELIVERY_QUERY_ERROR("50024","查询配送单失败"),
DELIVERY_CANCEL_ORDER_ERROR("53012", "取消配送单失败"),
DELIVERY_CREATE_ORDER_ERROR("53013", "创建配送单失败"),
/**
* 配送信息
*/
DELIVERY_INFO_NOT_DELIVERY("60001", "当前地址不可配送"),
DELIVERY_INFO_ERROR("60002","配送地址不正确"),
DELIVERY_CREATE_ERROR("60003","运单不足,配送失败"),
;
private String code;
private String message;
/**
* @param code 状态码
* @param message 提示信息
*/
ResponseResult(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static ResponseResult getResponseResult(String code) {
ResponseResult[] values = ResponseResult.values();
for (ResponseResult value : values) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}
}
package cn.freemud.management.service; package cn.freemud.management.service;
import cn.freemud.management.adapter.MessagePushAdapter;
import cn.freemud.management.enums.DeliveryStatus; import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.enums.MessageCenterCmdType;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.OrderSource;
import com.freemud.application.sdk.api.log.ErrorLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest;
import com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest;
import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushService;
import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest; import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest; import com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest;
...@@ -8,30 +19,62 @@ import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdRespons ...@@ -8,30 +19,62 @@ import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdRespons
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
@Slf4j @Slf4j
public class OrderBaseService { public class OrderBaseService {
private static final int SUCCESS = 100;
@Autowired @Autowired
private OrderCenterSdkService orderCenterSdkService; private OrderCenterSdkService orderCenterSdkService;
@Autowired
private MessageCenterClient messageCenterClient;
@Autowired
private MessagePushAdapter messagePushAdapter;
@Autowired
@Qualifier("messageTemplatePushOrderService")
private IMessageTemplatePushService<MessagePushOrderTemplateRequest> messageTemplatePushService;
public QueryOrdersResponse.DataBean.OrderBean getByOrderCode(String orderCode) { public QueryOrdersResponse.DataBean.OrderBean getByOrderCode(String orderCode) {
BaseQueryOrderRequest queryRequest = new BaseQueryOrderRequest();
queryRequest.setOrderId(orderCode);
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(queryRequest);
if (ObjectUtils.notEqual(response.getErrcode(), SUCCESS) || response.getData() == null) {
return null;
}
return response.getData();
}
public void sendMessage(QueryOrdersResponse.DataBean.OrderBean orderBean, OperateType opType, String reason) {
//发送消息到pos消息中心
PushMessageNoticeDto pushMessageNoticeDto1 = null;
try {
pushMessageNoticeDto1 = messagePushAdapter.convent2PushMessageNoticeDto(2, orderBean.getCompanyId(), orderBean.getShopId(), null, orderBean.getOid(), null, MessageCenterCmdType.JIEDAN_DAYIN_TIXING.getCmd());
messageCenterClient.createMessage(pushMessageNoticeDto1, LogThreadLocal.getTrackingNo());
} catch (Exception e) {
ErrorLog.printErrorLog("sendMessageCenterError", "", pushMessageNoticeDto1, e);
}
//发送微信模板消息
if (orderBean.getExtInfo() != null && !(OrderSource.SAAS.getSource().equals(orderBean.getSource()) || OrderSource.ALIPAY.getSource().equals(orderBean.getSource()))) {
return;
}
MessageTemplateRequest<MessagePushOrderTemplateRequest> messageTemplateRequest = null;
try { try {
BaseQueryOrderRequest queryRequest = new BaseQueryOrderRequest(); messageTemplateRequest = messagePushAdapter.convent2MessageTemplateRequest(orderBean, reason, opType);
queryRequest.setOrderId(orderCode); if (messageTemplateRequest!=null && messageTemplateRequest.getMessageEventType() != null) {
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(queryRequest); this.messageTemplatePushService.sendTemplateMsg(messageTemplateRequest);
if (response.getErrcode() == 100) {
return response.getData();
} }
return response.getData(); } catch (Exception e) {
} catch (Exception ex) { ErrorLog.printErrorLog("sendTemplateMsgError", "", messageTemplateRequest, e);
ex.printStackTrace();
return null;
} }
} }
/** /**
......
package cn.freemud.management.service;
import cn.freemud.base.entity.BaseResponse;
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;
/**
* 订单操作接口
*/
public interface OrderManagerService {
/**
* 接单
* @param request 请求参数
* @param orderBean 订单实体
* @return
*/
BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean);
}
package cn.freemud.management.service.adapter;
import cn.freemud.management.enums.OrderSource;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.service.impl.SaasOrderMangerServiceImpl;
import cn.freemud.management.service.impl.WaimaiOrderMangerServiceImpl;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
/**
* 根据渠道获取渠道操作实体类
*/
@Service
public class OrderBeanFactory {
@Autowired
private ApplicationContext applicationContext;
public OrderManagerService getOrderManagerService(QueryOrdersResponse.DataBean.OrderBean orderBean){
String source = orderBean.getSource();
if (OrderSource.BDWM.getSource().equals(source) || OrderSource.JDWM.getSource().equals(source)
|| OrderSource.MTWM.getSource().equals(source) || OrderSource.ELEME.getSource().equals(source)){
return applicationContext.getBean(WaimaiOrderMangerServiceImpl.class);
}
return applicationContext.getBean(SaasOrderMangerServiceImpl.class);
}
}
package cn.freemud.management.service.adapter;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.impl.OrderVerifyService;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class OrderManagerAdapter {
@Autowired
private OrderVerifyService orderVerifyService;
@Autowired
private OrderBaseService orderBaseService;
@Autowired
private OrderBeanFactory orderBeanFactory;
/**
* 接单
*
* @param request
* @return
*/
public BaseResponse<OrderManagerResponse> orderConfirmTake(OrderManagerRequest request) {
//查询订单
QueryOrdersResponse.DataBean.OrderBean orderBean = orderBaseService.getByOrderCode(request.getOrderId());
//订单接单参数校验
BaseResponse verifyResponse = orderVerifyService.orderConfirmTakeVerify(orderBean, request);
if (ObjectUtils.notEqual(verifyResponse.getCode(), ResponseResult.SUCCESS.getCode())) {
return verifyResponse;
}
return orderBeanFactory.getOrderManagerService(orderBean).orderConfirm(request, orderBean);
}
/**
* 拒单
* @param request
* @return
*/
public BaseResponse orderReject(OrderManagerRequest request) {
return null;
}
}
package cn.freemud.management.service; 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.entities.DeliveryOrderRequest; import cn.freemud.management.adapter.DeliverySdkAdapter;
import cn.freemud.management.entities.dto.request.delivery.DeliveryOrderRequest;
import cn.freemud.management.enums.DeliveryStatus; import cn.freemud.management.enums.DeliveryStatus;
import cn.freemud.management.util.CheckException; import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.util.CommonResp; import cn.freemud.management.util.CommonResp;
import cn.freemud.management.util.ResponseUtil;
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;
...@@ -17,7 +20,6 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse; ...@@ -17,7 +20,6 @@ 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.order.enums.OrderSourceType; import com.freemud.sdk.api.assortment.order.enums.OrderSourceType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse; import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.google.common.base.Throwables;
import javafx.util.Pair; import javafx.util.Pair;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
...@@ -26,11 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -26,11 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Slf4j @Slf4j
@Service @Service
public class OrderDeliveryService { public class OrderDeliveryService {
...@@ -41,6 +38,8 @@ public class OrderDeliveryService { ...@@ -41,6 +38,8 @@ public class OrderDeliveryService {
private DeliveryService deliveryService; private DeliveryService deliveryService;
@Autowired @Autowired
private OrderBaseService orderBaseService; private OrderBaseService orderBaseService;
@Autowired
private DeliverySdkAdapter deliverySdkAdapter;
@Value("${saas.order.delivery.callBackUrl}") @Value("${saas.order.delivery.callBackUrl}")
private String deliveryCallBackUrl; private String deliveryCallBackUrl;
...@@ -59,18 +58,8 @@ public class OrderDeliveryService { ...@@ -59,18 +58,8 @@ public class OrderDeliveryService {
if (null == orderBean) { if (null == orderBean) {
return CommonResp.fail("订单不存在"); return CommonResp.fail("订单不存在");
} }
Pair<Boolean, String> pair = checkOrderOfDelivery(orderBean); Pair<Boolean, String> delivery = this.createDelivery(orderBean, null, operator);
if (!pair.getKey()) { return delivery.getKey()? ResponseUtil.success():ResponseUtil.error(ResponseResult.DELIVERY_CREATE_ORDER_ERROR);
log.info("无需创建配送单({}),{}", orderBean.getOid(), pair.getValue());
return CommonResp.success(pair.getValue());
}
try {
this.createDelivery(orderBean, operator);
} catch (CheckException e) {
log.error("创建配送单失败({}),trace:{}", orderCode, Throwables.getStackTraceAsString(e));
return CommonResp.fail(e.getMessage());
}
return CommonResp.success();
} }
/** /**
...@@ -79,15 +68,19 @@ public class OrderDeliveryService { ...@@ -79,15 +68,19 @@ public class OrderDeliveryService {
* @param orderBean * @param orderBean
* @return * @return
*/ */
public Boolean createDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean, String operator) { public Pair<Boolean, String> createDelivery(QueryOrdersResponse.DataBean.OrderBean orderBean,StoreResponse storeInfo, String operator) {
StoreInfoRequest storeInfoRequestDto = new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()); Pair<Boolean, String> pair = checkOrderOfDelivery(orderBean);
StoreResponse storeInfo = storeCenterService.getStoreInfo(storeInfoRequestDto, LogTreadLocal.getTrackingNo()); if (!pair.getKey()) {
if (SUCCESS != storeInfo.getStatusCode() || storeInfo.getBizVO() == null) { return new Pair<>(true, "该订单不是外卖类型订单,无需创建配送单");
throw new CheckException("查询门店信息失败"); }
if (storeInfo==null){
storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), LogTreadLocal.getTrackingNo());
if (SUCCESS != storeInfo.getStatusCode() || storeInfo.getBizVO() == null) {
return new Pair<>(false, "获取门店信息失败");
}
} }
// 调用配送系统创建配送单 // 调用配送系统创建配送单
CreateDeliveryOrderRequestDto requestDto = buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl); CreateDeliveryOrderRequestDto requestDto = deliverySdkAdapter.buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl);
CreateDeliveryOrderResponseDto deliveryResponse = deliveryService.deliveryOrderAdd(requestDto, LogTreadLocal.getTrackingNo()); CreateDeliveryOrderResponseDto deliveryResponse = deliveryService.deliveryOrderAdd(requestDto, LogTreadLocal.getTrackingNo());
if (StringUtils.isBlank(operator)) { if (StringUtils.isBlank(operator)) {
...@@ -97,11 +90,11 @@ public class OrderDeliveryService { ...@@ -97,11 +90,11 @@ public class OrderDeliveryService {
if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode() || deliveryResponse.getData() == null) { if (deliveryResponse == null || SUCCESS != deliveryResponse.getCode() || deliveryResponse.getData() == null) {
String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : ""; String deliveryId = deliveryResponse != null && deliveryResponse.getData() != null ? deliveryResponse.getData().getDeliveryId() : "";
orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator); orderBaseService.updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator);
throw new CheckException("创建配送单信息失败,配送状态更新为配送异常"); return new Pair<>(true, "创建配送单信息失败,配送状态更新为配送异常");
} }
// 创建配送单成功 // 创建配送单成功
orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), operator); orderBaseService.updateDeliverySuccess(orderBean.getOid(), deliveryResponse.getData().getDeliveryId(), operator);
return true; return new Pair<>(true, "创建配送单成功");
} }
/** /**
...@@ -129,64 +122,6 @@ public class OrderDeliveryService { ...@@ -129,64 +122,6 @@ public class OrderDeliveryService {
return new Pair<>(true, "success"); return new Pair<>(true, "success");
} }
/**
* 创建配送单请求对象
*
* @param order
* @param storeInfo
* @param deliveryCallBackUrl
* @return
*/
private CreateDeliveryOrderRequestDto buildDeliveryOrderRequestDto(QueryOrdersResponse.DataBean.OrderBean order
, StoreResponse storeInfo, String deliveryCallBackUrl) {
CreateDeliveryOrderRequestDto deliveryOrderRequestDto = new CreateDeliveryOrderRequestDto();
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1));
deliveryOrderRequestDto.setSerialNumber(order.getDaySeq().toString());
deliveryOrderRequestDto.setOrderId(order.getOid());
deliveryOrderRequestDto.setOrderRemark(order.getRemark());
deliveryOrderRequestDto.setOrderTotalAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setOrderActualAmount(order.getAmount().intValue());
deliveryOrderRequestDto.setPartnerId(order.getCompanyId());
deliveryOrderRequestDto.setOrderChannel(order.getSource());
deliveryOrderRequestDto.setStoreId(storeInfo.getBizVO().getStoreId());
deliveryOrderRequestDto.setStoreCode(storeInfo.getBizVO().getStoreCode());
StringBuffer address = new StringBuffer(storeInfo.getBizVO().getCity())
.append(storeInfo.getBizVO().getProvince())
.append(storeInfo.getBizVO().getRegion())
.append(storeInfo.getBizVO().getAddress());
deliveryOrderRequestDto.setStoreAddress(address.toString());
deliveryOrderRequestDto.setStoreLng(new BigDecimal(storeInfo.getBizVO().getLongitude()));
deliveryOrderRequestDto.setStoreLat(new BigDecimal(storeInfo.getBizVO().getLatitude()));
deliveryOrderRequestDto.setStorePhone(storeInfo.getBizVO().getPhone());
deliveryOrderRequestDto.setStoreName(order.getShopName());
deliveryOrderRequestDto.setCityName(storeInfo.getBizVO().getCity());
deliveryOrderRequestDto.setReceiverName(order.getUserName());
deliveryOrderRequestDto.setReceiverPrimaryPhone(order.getPhone());
deliveryOrderRequestDto.setReceiverAddress(order.getAddress());
deliveryOrderRequestDto.setReceiverLng(new BigDecimal(order.getLongitude()));
deliveryOrderRequestDto.setReceiverLat(new BigDecimal(order.getLatitude()));
deliveryOrderRequestDto.setOrderTime(new Date(order.getGmtCreate()));
deliveryOrderRequestDto.setCallbackUrl(deliveryCallBackUrl);
// 预约单预计送到时间
if (order.getGmtExpect() != null && order.getGmtExpect() != 0) {
deliveryOrderRequestDto.setExpectTime(new Date(order.getGmtExpect()));
}
deliveryOrderRequestDto.setIsPre(order.getGmtExpect() != null ? 1 : 0);
List<CreateDeliveryOrderRequestDto.DeliveryProductInfo> productInfos = new ArrayList<>();
order.getProductList().forEach(productList -> {
if (productList.getPrice() > 0) {
CreateDeliveryOrderRequestDto.DeliveryProductInfo deliveryProductInfo = new CreateDeliveryOrderRequestDto.DeliveryProductInfo();
deliveryProductInfo.setProductCode(productList.getProductId());
deliveryProductInfo.setProductName(productList.getProductName());
deliveryProductInfo.setProductNumber(productList.getNumber());
deliveryProductInfo.setProductPrice(productList.getPrice().intValue());
productInfos.add(deliveryProductInfo);
}
});
deliveryOrderRequestDto.setProductInfos(productInfos);
return deliveryOrderRequestDto;
}
/** /**
* 取消外卖配送单 * 取消外卖配送单
......
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.enums.OrderStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import com.freemud.application.sdk.api.ordercenter.enums.OperateType;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderVerifyService
* @Package cn.freemud.management.service.impl
* @Description:
* @author: shuhu.hou
* @date: 2020/3/26 16:04
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public class OrderVerifyService {
/**
* 接单校验
*
* @param orderBean
* @param request
* @return
*/
public BaseResponse orderConfirmTakeVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (orderBean == null) {
return ResponseUtil.error(ResponseResult.ORDER_NOT_EXIST);
}
if (!OrderStatus.TAKE_ORDER.getCode().equals(orderBean.getStatus())) {
return ResponseUtil.error(ResponseResult.ORDER_CANNOT_CONFIRM);
}
return commonVerify(orderBean, request);
}
private BaseResponse commonVerify(QueryOrdersResponse.DataBean.OrderBean orderBean, OrderManagerRequest request) {
if (ObjectUtils.notEqual(orderBean.getCompanyId(), request.getPartnerId())) {
return ResponseUtil.error(ResponseResult.ORDER_PARTNER_ID_NOT_MATCTH);
}
//开放平台不传入门店
if (ObjectUtils.notEqual(request.getOperator(), OperateClient.OPEN_PLATFORM.getOpName()) && ObjectUtils.notEqual(orderBean.getShopId(), request.getStoreId())) {
return ResponseUtil.error(ResponseResult.ORDER_STORE_ID_NOT_MATCTH);
}
return ResponseUtil.success();
}
}
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.OperateType;
import cn.freemud.management.enums.RefundStatus;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderBaseService;
import cn.freemud.management.service.OrderManagerService;
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.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import javafx.util.Pair;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: rrr
* @Package cn.freemud.management.service.impl
* @Description: saas订单履单操作
* @author: shuhu.hou
* @date: 2020/3/26 16:01
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public class SaasOrderMangerServiceImpl implements OrderManagerService {
@Autowired
private OrderSdkAdapter orderSdkAdapter;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
@Autowired
private OrderDeliveryService orderDeliveryService;
@Autowired
private OrderBaseService orderBaseService;
@Autowired
private StoreCenterService storeCenterService;
/**
* 接单
* @param request 请求参数
* @param orderBean 订单实体
* @return
*/
@Override
public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
//退款状态
RefundStatus refundStatus = CollectionUtils.isEmpty(orderBean.getRefundList()) ? null : RefundStatus.getByCode(orderBean.getRefundList().get(0).getStatus());
//订单接单
BaseQueryOrderRequest orderConfirmRequest = orderSdkAdapter.getOrderConfirmRequest(request.getOperator(), orderBean);
BaseOrderResponse confirmOrderResponse = orderCenterSdkService.orderConfirmTake(orderConfirmRequest);
//获取门店信息
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()),"");
if (ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),storeInfo.getStatusCode().toString()) || storeInfo.getBizVO() == null) {
return ResponseUtil.error(ResponseResult.STORE_NOT_FOUND);
}
//处理1秒重复接单问题 订单服务接单返回20067重复操作,20018状态机不支持认为接单成功
if ("20067".equals(confirmOrderResponse.getErrcode().toString()) || "20018".equals(confirmOrderResponse.getErrcode().toString()) || "50002".equals(confirmOrderResponse.getErrcode().toString()) ) {
return ResponseUtil.success(new OrderManagerResponse(storeInfo.getBizVO().getOrderPrintConfig(),orderBean.getGmtExpect(),refundStatus));
}
if( ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),confirmOrderResponse.getErrcode().toString())){
return ResponseUtil.error(ResponseResult.ORDER_ACCEPT_FAILED);
}
//创建配送单
Pair<Boolean, String> deliveryResponse = orderDeliveryService.createDelivery(orderBean, storeInfo, request.getOperator());
if (!deliveryResponse.getKey()){
return ResponseUtil.error(ResponseResult.ORDER_ACCEPT_FAILED_CREATE_DELIVERY_FAILED);
}
// 推送pos消息中心
orderBaseService.sendMessage(orderBean, OperateType.ORDER_CONFIRM,request.getReason());
return ResponseUtil.success(new OrderManagerResponse(storeInfo.getBizVO().getOrderPrintConfig(),orderBean.getGmtExpect(),refundStatus));
}
}
package cn.freemud.management.service.impl;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.management.entities.dto.response.order.OrderManagerResponse;
import cn.freemud.management.enums.ResponseResult;
import cn.freemud.management.service.OrderManagerService;
import cn.freemud.management.util.ResponseUtil;
import com.freemud.application.sdk.api.takeaway.request.order.PlatformOrderRequest;
import com.freemud.application.sdk.api.takeaway.service.WaimaiOrderService;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: rrr
* @Package cn.freemud.management.service.impl
* @Description: 外卖订单履单操作
* @author: shuhu.hou
* @date: 2020/3/26 16:01
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Service
public class WaimaiOrderMangerServiceImpl implements OrderManagerService {
@Autowired
private WaimaiOrderService waimaiOrderService;
@Override
public BaseResponse<OrderManagerResponse> orderConfirm(OrderManagerRequest request, QueryOrdersResponse.DataBean.OrderBean orderBean) {
PlatformOrderRequest platformOrderRequest = new PlatformOrderRequest();
platformOrderRequest.setPlatformOrderId(orderBean.getCustomerOrder());
platformOrderRequest.setChannel(orderBean.getSource());
platformOrderRequest.setCompanyId(orderBean.getCompanyId());
platformOrderRequest.setOrderId(orderBean.getOid());
platformOrderRequest.setShopId(orderBean.getShopId());
platformOrderRequest.setOperator(request.getOperator());
com.freemud.application.sdk.api.base.BaseResponse waimaiBaseResponse = waimaiOrderService.confirm(platformOrderRequest, LogTreadLocal.getTrackingNo());
if(ObjectUtils.notEqual(ResponseResult.SUCCESS.getCode(),waimaiBaseResponse.getCode())){
return ResponseUtil.error(ResponseResult.ORDER_ACCEPT_FAILED);
}
return ResponseUtil.success();
}
}
package cn.freemud.management.util;
import cn.freemud.base.constant.Version;
import cn.freemud.base.entity.BaseResponse;
import cn.freemud.management.enums.ResponseResult;
/**
* @title: ResponseUtil
* @package: cn.freemud.utils
* @author: jiale<loverichy8 @ gmail.com>
* @date: 2017/11/29
* @description:
*/
public class ResponseUtil {
/**
* @param <T>
* @return
*/
public static <T> BaseResponse<T> success() {
return new BaseResponse<>(Version.VERSION_1, ResponseResult.SUCCESS.getCode(),"success");
}
/**
* @param t
* @param <T>
* @return
*/
public static <T> BaseResponse<T> success(T t) {
return new BaseResponse<>(ResponseResult.SUCCESS.getCode(), "success", Version.VERSION_1, t);
}
public static <T> BaseResponse<T> error(ResponseResult status) {
return new BaseResponse<>(Version.VERSION_1, status.getCode(), status.getMessage());
}
/**
* @param code
* @return
*/
public static <T> BaseResponse<T> error(String code) {
return new BaseResponse<>(Version.VERSION_1, code);
}
/**
* @param code
* @param message
* @return
*/
public static <T> BaseResponse<T> error(String code, String message) {
return new BaseResponse<>(Version.VERSION_1, code, message);
}
public static <T> BaseResponse<T> error(String code, String message, T t) {
return new BaseResponse<>(code, message, Version.VERSION_1, t);
}
public static <T> BaseResponse<T> error(ResponseResult status, T t) {
return new BaseResponse<>(status.getCode(), status.getMessage(), Version.VERSION_1, t);
}
}
package com.freemud.application.sdk.api.ordercenter.config;
import com.freemud.application.sdk.api.config.CenterConfigProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderManagerCenterProperties
* @Package com.freemud.application.sdk.api.ordercenter.config
* @Description:
* @author: shuhu.hou
* @date: 2020/4/2 14:55
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Component
@ConfigurationProperties(prefix = "order.manager")
public class OrderManagerCenterProperties extends CenterConfigProperties {
}
...@@ -158,4 +158,8 @@ public class InterfaceAddressConstant { ...@@ -158,4 +158,8 @@ public class InterfaceAddressConstant {
* 根据用户ID 查询30分钟内未支付并且有券的 订单 * 根据用户ID 查询30分钟内未支付并且有券的 订单
*/ */
public static final String QUERY_ORDER_WITH_COUPON="order/v2/queryOrderWithCoupon"; public static final String QUERY_ORDER_WITH_COUPON="order/v2/queryOrderWithCoupon";
/**
* 订单管理
*/
public static final String STATUS_OPERATE="order/statusOperate";
} }
package com.freemud.application.sdk.api.ordercenter.enums;
import org.apache.commons.lang.StringUtils;
public enum OperateClient {
POS("pos","pos"),
ASSISTANT_SERVICE("assistant_service","小助手"),
OPEN_PLATFORM("open_platform","开放平台"),
TASK_CENTER("task_center","自动任务");
/**
* 操作类型
*/
private String opType;
/**
* 操作名称
*/
private String opName;
OperateClient(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 OperateClient getByOpType(String opType){
if (StringUtils.isEmpty(opType)) {
return null;
}
for (OperateClient operateType : values()) {
if (operateType.getOpType().equals(opType)) {
return operateType;
}
}
return null;
}
}
package com.freemud.application.sdk.api.ordercenter.enums;
import org.apache.commons.lang.StringUtils;
public enum OperateType {
ORDER_CONFIRM("orderConfirm","接单"),
ORDER_REJECT("orderReject","拒单"),
ORDER_DONE("orderDone","制作完成"),
ORDER_SEND("orderSend","送出"),
ORDER_AFFIRM("orderAffirm","完成"),
ORDER_AGREE_REFUND("orderAgreeRefund","同意退款"),
ORDER_REJECT_REFUND("orderRejectRefund","拒绝退款");
/**
* 操作类型
*/
private String opType;
/**
* 操作名称
*/
private String opName;
OperateType(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 OperateType getByOpType(String opType){
if (StringUtils.isEmpty(opType)) {
return null;
}
for (OperateType operateType : values()) {
if (operateType.getOpType().equals(opType)) {
return operateType;
}
}
return null;
}
}
package com.freemud.application.sdk.api.ordercenter.request;
import com.freemud.application.sdk.api.ordercenter.enums.OperateClient;
import com.freemud.application.sdk.api.ordercenter.enums.OperateType;
import lombok.Data;
@Data
public class OrderManagerRequest {
/**
* 商户号
*/
private String partnerId;
/**
* 门店号
*/
private String storeId;
/**
* 订单号
*/
private String orderId;
/**
* 退款原因
*/
private String reason;
/**
* 订单操作类型
*/
private String operateType;
/**
* 操作人
* pos
* 开放平台
* 小助手
* 系统自动履单
*/
private String operator;
public OrderManagerRequest(){
}
public OrderManagerRequest(String partnerId, String storeId, String orderId, OperateClient operateClient, OperateType operateType){
this.partnerId=partnerId;
this.storeId=storeId;
this.orderId=orderId;
this.operateType=operateType.getOpType();
this.operator=operateClient.getOpName();
}
public OrderManagerRequest(String partnerId, String storeId, String orderId, OperateClient operateClient, OperateType operateType, String reason){
this.partnerId=partnerId;
this.storeId=storeId;
this.orderId=orderId;
this.operateType=operateType.getOpType();
this.operator=operateClient.getOpName();
this.reason=reason;
}
}
package com.freemud.application.sdk.api.ordercenter.response;
import lombok.Data;
@Data
public class OrderManagerResponse {
/**
* 预订单打印时间{1:提醒时打印;2:接单时打印} 默认为1
*/
private String orderPrintConfig;
/**
* 订单预约时间
*/
private Long gmtExpect;
/**
* 订单状态
* 1=下单,2=待支付,3=接单,4=配送中,5=完成,6=取消,7=拒单,31=制作完成
*/
private Integer status;
/**
* 订单退款状态
* 1 申请退款 2 同意退款 3 已退货 4 退款完成 5 拒绝退款
*/
private Integer refundStatus;
}
/*
package com.freemud.application.sdk.api.ordercenter.service;
import com.freemud.application.sdk.api.base.BaseRequest;
import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant;
import com.freemud.application.sdk.api.ordercenter.enums.ResponseResultEnum;
import com.freemud.application.sdk.api.ordercenter.request.OrderManagerRequest;
import com.freemud.application.sdk.api.ordercenter.response.BaseResponse;
import com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp;
import com.freemud.application.sdk.api.ordercenter.response.OrderManagerResponse;
import com.freemud.application.sdk.api.ordercenter.util.ResponseUtil;
import com.freemud.application.sdk.api.util.RequestThirdPartyUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.Objects;
*/
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: OrderManagerSdkService
* @Package com.freemud.application.sdk.api.ordercenter.service
* @Description:
* @author: shuhu.hou
* @date: 2020/3/27 16:18
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*//*
@Service
@Slf4j
public class OrderManagerSdkService {
@Autowired
@Qualifier("orderManagerRestTemplate")
private RestTemplate restTemplate;
@Autowired
private OrderManagerCenterProperties orderManagerCenterProperties;
public static final String SUCCESS_RESPONSE_CODE = "100";
*/
/**
* 根据综合条件查询订单
*//*
public BaseResponse<OrderManagerResponse> statusOperate(OrderManagerRequest request) {
OrderBaseResp<OrderManagerResponse> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, InterfaceAddressConstant.STATUS_OPERATE,
createBaseRequest(request, ""), new ParameterizedTypeReference<OrderBaseResp<OrderManagerResponse>>() {
});
return responseHandle(responseDTO);
}
private <T> BaseResponse<T> responseHandle(OrderBaseResp<T> responseDTO) {
if (responseDTO == null) {
return ResponseUtil.error(ResponseResultEnum.SYSTEM_BUSINESS_ERROR.getCode(), ResponseResultEnum.SYSTEM_BUSINESS_ERROR.getMessage());
}
if (!Objects.equals(SUCCESS_RESPONSE_CODE, responseDTO.getCode())) {
return ResponseUtil.error(ResponseResultEnum.SYSTEM_BUSINESS_ERROR.getCode(), responseDTO.getMessage());
}
BaseResponse<T> result = new BaseResponse<>();
result.setCode(responseDTO.getCode());
result.setMessage(responseDTO.getMessage());
result.setResult(responseDTO.getResult());
result.setVer(responseDTO.getVer());
return result;
}
private <T> BaseRequest<T> createBaseRequest(T req, String trackingNo) {
BaseRequest<T> request = new BaseRequest<>();
request.setRequestBody(req);
request.setAppName(orderManagerCenterProperties.getAppName());
request.setBaseUrl(orderManagerCenterProperties.getBaseUrl());
request.setTrackingNo(trackingNo);
return request;
}
}
*/
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