Commit 2485b18b by 徐康

对接配送

parent c911c0c8
......@@ -2690,6 +2690,9 @@ public class OrderSdkAdapter {
if (0 != product.getTax()){
extInfo.setTax(product.getTax());
}
if (StringUtils.isNotEmpty(product.getTaxId())){
extInfo.setTaxId(product.getTaxId());
}
extInfo.setStapleFood(product.getStapleFood());
//if (product.getStapleFood()!=null && product.getStapleFood()>0) {
// extInfo.setStapleFood(1);
......
......@@ -167,4 +167,6 @@ public class CreateOrderProductRequest extends BaseConfig {
/** 商品税率**/
private double tax;
private String taxId;
}
......@@ -63,4 +63,6 @@ public class OrderProductAddInfoDto extends BaseConfig {
private String thirdCensusCategoryId;
private double tax;
private String taxId;
}
......@@ -42,7 +42,7 @@ import tk.mybatis.spring.annotation.MapperScan;
@ComponentScan({"cn.freemud", "com.freemud"})
@MapperScan({"cn.freemud.*.dao","com.freemud.sdk.api.assortment.orderdistributor.mapper","com.freemud.api.assortment.datamanager.manager",
"com.freemud.api.assortment.datamanager.queue.dao","com.freemud.api.assortment.datamanager.rbac.dao","com.freemud.api.assortment.datamanager.queue.entity"})
@EnableFeignClients({"cn.freemud.service.thirdparty","com.freemud.sdk.api.assortment.message","cn.freemud.service.mccafe.thirdparty"})
@EnableFeignClients({"cn.freemud.service.thirdparty","com.freemud.sdk.api.assortment.message","cn.freemud.service.mccafe.thirdparty","cn.freemud.management.thirdparty"})
@EnableAutoConfiguration
public class OrderApplication {
public static void main(String[] args) {
......
......@@ -15,10 +15,10 @@ package cn.freemud.adapter;
import cn.freemud.base.constant.Version;
import cn.freemud.base.util.DateUtil;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeRequestDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardCodeResponseDto;
import cn.freemud.entities.dto.openplatform.AddWeixinCardJudgeRequestDto;
......
......@@ -5,11 +5,15 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.vo.CreateDeliveryVo;
import cn.freemud.entities.vo.ProductInfo;
import cn.freemud.enums.DeliveryChannelEnum;
import cn.freemud.enums.OrderSourceType;
import cn.freemud.enums.OrderType;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderProductRequest;
import com.freemud.sdk.api.assortment.order.request.order.OrderProductAddInfoDto;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
......@@ -99,6 +103,8 @@ public class DeliveryAdapter {
SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
CreateDeliveryVo deliveryOrderRequestDto = new CreateDeliveryVo();
OrderExtInfoDto orderExtInfoDto = JSON.parseObject(order.getExtInfo(), OrderExtInfoDto.class);
deliveryOrderRequestDto.setInvoiceTitle(orderExtInfoDto.getInvoiceTitle());
deliveryOrderRequestDto.setDepatchWeight(new BigDecimal(1));
deliveryOrderRequestDto.setSerialNumber(order.getOtherCode());
deliveryOrderRequestDto.setOrderId(order.getOid());
......@@ -165,13 +171,16 @@ public class DeliveryAdapter {
deliveryProductInfo.setProductPrice(productList.getPrice().intValue());
//餐道使用
deliveryProductInfo.setCumulatedTotal(productList.getNumber() * productList.getPrice().intValue());
deliveryProductInfo.setTaxId(10);
deliveryProductInfo.setTaxRate(6);
OrderProductAddInfoDto orderProductAddInfoDto = JSON.parseObject(productList.getAddInfo(), OrderProductAddInfoDto.class);
deliveryProductInfo.setTaxId(orderProductAddInfoDto.getTaxId());
deliveryProductInfo.setTaxRate(orderProductAddInfoDto.getTax());
deliveryProductInfo.setParentCode(Long.valueOf(productList.getParentProductId()));
productInfos.add(deliveryProductInfo);
}
});
deliveryOrderRequestDto.setProductInfos(productInfos);
deliveryOrderRequestDto.setOrderSource(OrderSourceType.ALIPAY.getCode().equals(order.getSource())?"Alipay":"freemud");
return deliveryOrderRequestDto;
}
......
......@@ -1920,6 +1920,7 @@ public class OrderAdapter {
createOrderProductDemoDto.setStapleFood(0);
createOrderProductDemoDto.setCategory(cartGoodsDetailDto.getClassificationId());
createOrderProductDemoDto.setTax(cartGoodsDetailDto.getTax());
createOrderProductDemoDto.setTaxId(cartGoodsDetailDto.getTaxId());
return createOrderProductDemoDto;
}
......
......@@ -18,4 +18,8 @@ public class CancelDeliveryRequest {
private String receiveOrderType;
private String storeId;
private String deliveryId;
private String reviewId;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
* 查询省份对应配送费价格响应对象
* @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 CancelDeliveryResponseDto {
private Integer code;
private String msg;
private Object data;
@Data
public static class QueryDeliveryAmountResult {
private Long id;
/**
* 商户ID
*/
private String partnerId;
/**
* 配送费 单位:分
*/
private BigDecimal deliveryAmount;
/**
* 收件人省份编码
*/
private String provinceCode;
/**
* 收件人省份
*/
private String sendProvince;
/**
* 状态 1启用 2禁用
*/
private Integer status;
}
}
package cn.freemud.entities.dto.delivery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import javax.validation.Valid;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* Created by freemudadmin on 2018/10/31.
*/
@Data
@ApiModel(value = "CreateDeliveryVo",description = "创建配送单请求参数")
public class CreateDeliveryVo {
/**
* 商品信息
*/
@ApiModelProperty(value = "商品信息")
@NotEmpty(message = "productInfos不能为空")
@Valid
private List<ProductInfo> productInfos;
/**
* 取餐号
*/
@ApiModelProperty(value = "取餐号")
@NotBlank(message = "serialNumber不能为空")
private String serialNumber;
/**
* 订单编号
*/
@ApiModelProperty(value = "订单编号")
@NotBlank(message = "orderId不能为空")
private String orderId;
/**
* 订单备注
*/
@ApiModelProperty(value = "订单备注")
private String orderRemark;
/**
* 订单来源 美团 ,饿了么,百度,口碑 等(中文)
*/
@ApiModelProperty(value = "订单来源 美团 ,饿了么,百度,口碑 等(中文)")
private String orderSource;
/**
* 订单总金额(分)
*/
@ApiModelProperty(value = "订单总金额(分)")
@NotNull(message = "orderTotalAmount不能为空")
@Min(value = 1, message = "orderTotalAmount不能小于1")
private Integer orderTotalAmount;
/**
* 订单实付金额(分)
*/
@ApiModelProperty(value = "订单实付金额(分)")
@NotNull(message = "orderActualAmount不能为空")
@Min(value = 1, message = "orderActualAmount不能小于1")
private Integer orderActualAmount;
/**
* 订单重量(kg)
*/
@ApiModelProperty(value = "订单重量(kg)")
private BigDecimal depatchWeight;
/**
* 发票抬头
*/
@ApiModelProperty(value = "发票抬头")
private String invoiceTitle;
/**
* 商户id
*/
@ApiModelProperty(value = "商户id")
@NotBlank(message = "partnerId不能为空")
private String partnerId;
/**
* 商户信息备注
*/
@ApiModelProperty(value = "商户信息备注")
private String partnerRemark;
/**
* 订单渠道
*/
@ApiModelProperty(value = "订单渠道")
@NotBlank(message = "orderChannel不能为空")
private String orderChannel;
/**
* 配送渠道
*/
@ApiModelProperty(value = "配送渠道")
private String deliveryChannel;
/**
* 是否预约单 0否 1是
*/
@ApiModelProperty(value = "是否预约单 :0否 1是")
@NotNull(message = "isPre不能为空")
@Min(value = 0,message = "isPre不能小于0")
@Max(value = 1,message = "isPre不能大于1")
private Integer isPre;
/**
* 门店id(非码)
*/
@ApiModelProperty(value = "门店id")
@NotBlank(message = "storeId不能为空")
private String storeId;
/**
* 第三方门店id
*/
@ApiModelProperty(value = "第三方门店id")
@NotBlank(message = "storeCode不能为空")
private String storeCode;
/**
* 门店名称
*/
@ApiModelProperty(value = "门店名称")
@NotBlank(message = "storeName不能为空")
private String storeName;
/**
* 门店地址
*/
@ApiModelProperty(value = "门店地址")
@NotBlank(message = "storeAddress不能为空")
private String storeAddress;
@ApiModelProperty(value = "门店所在区")
private String storeArea;
@ApiModelProperty(value = "门店所在市")
private String storeCity;
@ApiModelProperty(value = "门店所在省")
private String storeProvince;
/**
* 门店经度
*/
@ApiModelProperty(value = "门店经度")
@NotNull(message = "storeLng不能为空")
private BigDecimal storeLng;
/**
* 门店纬度
*/
@ApiModelProperty(value = "门店纬度")
@NotNull(message = "storeLat不能为空")
private BigDecimal storeLat;
/**
* 门店电话
*/
@ApiModelProperty(value = "门店电话")
@NotBlank(message = "storePhone不能为空")
private String storePhone;
/**
* 门店联系人
*/
@ApiModelProperty(value = "门店联系人")
private String storeContact;
/**
* 收货人姓名
*/
@ApiModelProperty(value = "收货人姓名")
@NotBlank(message = "receiverName不能为空")
private String receiverName;
/**
* 收货人联系方式
*/
@ApiModelProperty(value = "收货人联系方式")
@NotBlank(message = "receiverPrimaryPhone不能为空")
private String receiverPrimaryPhone;
/**
* 收货人备用联系方式
*/
@ApiModelProperty(value = "收货人备用联系方式")
private String receiverSecondPhone;
/**
* 收货人地址
*/
@ApiModelProperty(value = "收货人地址")
@NotBlank(message = "receiverAddress不能为空")
private String receiverAddress;
/**
* 收货人经度
*/
@ApiModelProperty(value = "收货人经度")
@NotNull(message = "receiverLng不能为空")
private BigDecimal receiverLng;
/**
* 收货人纬度
*/
@ApiModelProperty(value = "收货人纬度")
@NotNull(message = "receiverLat不能为空")
private BigDecimal receiverLat;
/**
* 所在城市
*/
@ApiModelProperty(value = "所在城市")
@NotBlank(message = "cityName不能为空")
private String cityName;
@ApiModelProperty(value = "所在省份")
private String provinceName;
@ApiModelProperty(value = "所在区")
private String areaName;
/**
* 配送服务代码(飞速达:4002;快速达:4011;及时达:4012;集中送:4013)
*/
@ApiModelProperty(value = "配送服务代码(飞速达:4002;快速达:4011;及时达:4012;集中送:4013)")
private Integer deliveryServiceCode;
/**
* 商品类型 1送餐; 2送药; 3百货;4脏衣收; 5干净衣派;6生鲜; 7保单;8饮品;9现场勘查;99其他
*/
@ApiModelProperty(value = "商品类型 1送餐; 2送药; 3百货;4脏衣收; 5干净衣派;6生鲜; 7保单;8饮品;9现场勘查;99其他")
private Integer productType;
@ApiModelProperty(value = "回调地址")
@NotBlank(message = "callbackUrl不能为空")
private String callbackUrl;
@ApiModelProperty(value = "用户下单时间")
@NotNull(message = "orderTime不能为空")
private Date orderTime;
@ApiModelProperty(value = "用户期望送达时间")
private Date expectTime;
@ApiModelProperty(value = "微信token 渠道为微信物流时必传")
private String accessToken;
@ApiModelProperty(value = "小程序openid 渠道为微信物流时必传")
private String openId;
@ApiModelProperty(value = "商家小程序的路径,建议为订单页面 渠道为微信物流时必传")
private String wxaPath;
@ApiModelProperty(value = "小程序appId 渠道为微信物流时必传")
private String wxAppId;
@ApiModelProperty(value = "微信物流公司id")
private String wxCompanyId;
@ApiModelProperty(value = "微信物流公司快递编码")
private String wxBizId;
@ApiModelProperty(value = "微信物流公司服务类型ID")
private Integer serviceType;
@ApiModelProperty(value = "微信物流公司服务类型名称")
private String serviceName;
@ApiModelProperty(value = "非码运单号")
private String deliveryId;
@ApiModelProperty(value = "是否大订单 : 0-否 , 1-是")
private Integer isLargeOrder;
@ApiModelProperty(value = "是否实时送达: 0-否 , 1-是")
private Integer isImmediateDelivery;
@ApiModelProperty(value = "预计送达时间-UTC 时间")
private String expectDeliveryTimeByUTC;
@ApiModelProperty(value = "餐品总额(单位:分)")
private Integer productTotal;
@ApiModelProperty(value = "是否支付: 0-否 , 1-是 ")
private Integer isPayed;
@ApiModelProperty(value = "付款类型")
private String tenderType;
@ApiModelProperty(value = "启用新版税率规则计算开票:0-关闭,1-开启")
private Integer taxFlag;
@ApiModelProperty(value = "配送费(单位:分)")
private Integer deliveryTotal;
@ApiModelProperty(value = "订单显示ID(餐道专用)")
private String displayOrderId;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class MCCafeDeliveryBaseResponse<T> {
private String code;
private String msg;
private T data;
}
package cn.freemud.entities.dto.delivery;
import lombok.Data;
@Data
public class MCCafeDeliveryGetStoreIdResponse {
private Integer storeId;
private String storeName;
}
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: ItemJson
* @Package com.freemud.o2o.dto
* @Description:
* @author: canlong.wu
* @date: 2018/6/20 15:29
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
package cn.freemud.entities.dto.delivery;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@Data
@ApiModel(value = "ProductInfo",description = "商品信息")
public class ProductInfo {
/**
* 商品编号
*/
@ApiModelProperty(value = "商品编号")
@NotBlank(message = "productCode不能为空")
private String productCode;
// ----
@ApiModelProperty(value = "归属餐品 ID(一般套餐或者特殊要求时,该 ID 指向主餐品 ID) 0或者-1代表一级餐品数据; 一份餐品数据存在多级")
private Long parentCode;
@ApiModelProperty(value = "税率代码:10-餐品费用,13-非餐品费用;仅 taxFlag=1 改字段生效,具体税率代码参考麦 中定义")
private Integer taxId;
@ApiModelProperty(value = "税率:餐品费用-6,非餐品费用-13;仅 taxFlag=1 改字段生效,具体税率值参考麦中 定义")
private Integer taxRate;
@ApiModelProperty(value = "优惠金额 单位:分")
private Long discountAmount;
// ---
/**
* 商品名称
*/
@ApiModelProperty(value = "商品名称")
@NotBlank(message = "productName不能为空")
private String productName;
/**
* 商品数量
*/
@ApiModelProperty(value = "商品数量")
@NotNull(message = "productNumber不能为空")
@Min(value = 1,message = "productNumber不能小于1")
private Integer productNumber;
/**
* 商品价格(分)
*/
@ApiModelProperty(value = "商品价格(分)")
@NotNull(message = "productPrice不能为空")
//@Min(value = 1,message = "productPrice不能小于1")
private Integer productPrice;
/**
* 商品尺寸
*/
@ApiModelProperty(value = "商品尺寸")
private Integer productSize;
@ApiModelProperty(value = "商品图片 微信物流必传")
private String productImg;
/**
* 商品备注
*/
@ApiModelProperty(value = "商品备注")
private String productRemark;
@ApiModelProperty(value = "小计(单位分)")
private Integer cumulatedTotal;
@ApiModelProperty(value = "分组名称,如果订单采用分组形式,该参数为比传")
private String GroupName;
}
......@@ -204,6 +204,8 @@ public class ShoppingCartGoodsDto {
*/
private double tax;
private String taxId;
/**
* 配料或属性
*/
......
......@@ -213,7 +213,12 @@ public class CreateOrderVo {
/**
* 是否需要开发票,1 需要 0不需要
*/
private Integer needInvoice;
private Integer isInvoice;
/**
* 发票抬头
*/
private String invoiceTitle;
/**
* 微信配送地址信息
......
......@@ -20,12 +20,12 @@ public class ProductInfo {
* "税率代码:10-餐品费用,13-非餐品费用;仅 taxFlag=1 改字段生效,具体税率代码参考麦 中定义")(麦咖啡餐道专用)
*
*/
private Integer taxId;
private String taxId;
/**
* 税率:餐品费用-6,非餐品费用-13;仅 taxFlag=1 改字段生效,具体税率值参考麦中 定义 (麦咖啡餐道专用)
*/
private Integer taxRate;
private Double taxRate;
/**
* "优惠金额 单位:分"
......
......@@ -16,6 +16,7 @@ public enum ResponseResult {
NOT_LOGIN("40001", "用户未登录"),
PARAMETER_MISSING("40002", "缺少必要参数"),
OPERATE_TOO_OFTEN("40003", "忙不过来了,请稍后再试"),
LOGIN_STORE_ERROR("40004", "登录门店异常"),
/**
* 用户信息状态码
......@@ -151,6 +152,7 @@ public enum ResponseResult {
ORDER_TAKE_MEAL_TIME_ERROR("450062", "你的到店取餐时间异常,请重新选择!"),
ORDER_MEALTIME_MISSING("450063", "你的取餐方式或取餐时间异常,请重新选择!"),
ORDER_TAKE_OUT_TIME_ERROR("450062", "你的外卖送达时间异常,请重新选择!"),
ORDER_TAKE_OUT_ADDRESS_NOT_VALID("45063", "收货地址校验失败"),
/**
* 支付
......
......@@ -26,6 +26,8 @@ import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.PayAccessResponse;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean;
import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.order.CreateOrderOperateDto;
import cn.freemud.entities.dto.order.CreatePrepayRequestDto;
import cn.freemud.entities.dto.product.AttributeValue;
......@@ -37,7 +39,6 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.*;
import cn.freemud.interceptor.ServiceException;
import cn.freemud.management.entities.dto.request.order.OrderManagerRequest;
import cn.freemud.redis.RedisCache;
import cn.freemud.service.*;
import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient;
......@@ -48,6 +49,7 @@ import cn.freemud.utils.ValidationCode;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.freemud.api.assortment.datamanager.entity.db.*;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.manager.*;
......@@ -59,8 +61,6 @@ import com.freemud.application.sdk.api.constant.ResponseResultEnum;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto;
import com.freemud.application.sdk.api.deliverycenter.dto.CancelDeliveryOrderRequestDto;
import com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto;
import com.freemud.application.sdk.api.deliverycenter.service.DeliveryService;
import com.freemud.application.sdk.api.log.ApiLog;
import com.freemud.application.sdk.api.log.LogThreadLocal;
......@@ -87,8 +87,6 @@ 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.message.service.IMessageTemplatePushService;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import com.freemud.sdk.api.assortment.order.enums.OldOrderStatus;
import com.freemud.sdk.api.assortment.order.enums.OldOrderType;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.response.order.*;
......@@ -106,12 +104,13 @@ import com.freemud.sdk.api.assortment.payment.service.StandardPaymentService;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import lombok.Data;
import lombok.ToString;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.bouncycastle.cert.ocsp.Req;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
......@@ -794,6 +793,9 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
orderExtInfoDto.setSessionKey(createOrderVo.getSessionKey());
orderExtInfoDto.setFormId(createOrderVo.getFormId());
orderExtInfoDto.setFromAppId(userLoginInfoDto.getWxAppId());
orderExtInfoDto.setIsInvoice(createOrderVo.getIsInvoice());
orderExtInfoDto.setInvoiceTitle(createOrderVo.getInvoiceTitle());
orderExtInfoDto.setNeedTableware(createOrderVo.getNeedTableware());
if (StringUtils.isNotBlank(createOrderVo.getScene())) {
orderExtInfoDto.setScene(createOrderVo.getScene());
}
......@@ -884,11 +886,6 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
// TODO 记录一下核销失败的券
}
//调用基础订单接口更新信息
UpdateDownstreamOrderCodeReq updateDownstreamOrderCodeReq = new UpdateDownstreamOrderCodeReq();
updateDownstreamOrderCodeReq.setOrderCode(orderBean.getOid());
orderSdkService.updateDownstreamThirdOrderCode(updateDownstreamOrderCodeReq, LogThreadLocal.getTrackingNo());
} else if(OldOrderType.COLLECT_GOODS.getCode().equals(orderBean.getType()) || OldOrderType.EAT_IN.getCode().equals(orderBean.getType())) {
List<CouponBaseResponse> couponBaseResponseList = couponClientService.lockBatch(orderBean);
......@@ -985,12 +982,20 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
requestDto.setOpenId(orderExtInfoDto != null ? orderExtInfoDto.getOpenid() : "");
buriedPointService.BuriedPointPayment(requestDto, orderBean);
if(OldOrderType.TAKE_OUT.equals(orderBean.getOrderType())) {
//调用基础订单接口更新信息
UpdateDownstreamOrderCodeReq updateDownstreamOrderCodeReq = new UpdateDownstreamOrderCodeReq();
updateDownstreamOrderCodeReq.setOrderCode(orderBean.getOid());
com.freemud.application.sdk.api.ordercenter.response.BaseResponse baseResponse = orderSdkService.updateDownstreamThirdOrderCode(updateDownstreamOrderCodeReq, LogThreadLocal.getTrackingNo());
LinkedHashMap<String, String> linkedHashMap = (LinkedHashMap) baseResponse.getResult();
//获取门店信息
StoreResponse storeInfo = storeCenterService.getStoreInfo(new StoreInfoRequest(orderBean.getCompanyId(), orderBean.getShopId()), "");
if (storeInfo == null || ObjectUtils.notEqual(cn.freemud.management.enums.ResponseResult.SUCCESS.getCode(), storeInfo.getStatusCode().toString()) || storeInfo.getBizVO() == null) {
return sendPaySuccessNoticeMessage();
}
CreateDeliveryVo createDeliveryVo = deliveryAdapter.buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl,null);
CreateDeliveryVo createDeliveryVo = deliveryAdapter.buildDeliveryOrderRequestDto(orderBean, storeInfo, deliveryCallBackUrl, linkedHashMap.get("downstreamThirdOrderCode"));
//创建配送单
CreateDeliveryOrderResponseDto deliveryResponse = deliveryFeiginClient.deliveryOrderAdd(createDeliveryVo);
//创建配送单失败,更新订单为异常单
......@@ -1000,6 +1005,7 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
updateDeliveryAbnormal(orderBean.getCompanyId(), orderBean.getOid(), deliveryId, operator);
return sendPaySuccessNoticeMessage();
}
}
//支付回掉成功标记
redisCache.save(RedisKeyConstant.KGD_PAYMENT_CALLBACK_FMID + message.getOut_trade_no(), message.getOut_trade_no(), 10L, TimeUnit.MINUTES);
......@@ -1229,10 +1235,12 @@ public class MCCafeOrderServiceImpl implements MCCafeOrderService {
.orderCancelCode("4")
.orderCancelDescription("用户申请退款")
.storeId(orderBean.getShopId())
.deliveryId(orderBean.getAddInfo().getDeliveryId())
.reviewId(orderBean.getOid().substring(0, 20))
.receiveOrderType(receiveOrderType).build();
BaseResponseDto deliveryBaseResponse = deliveryFeiginMCCafeClient.cancelRequest(cancelDeliveryRequest);
CancelDeliveryResponseDto deliveryBaseResponse = deliveryFeiginMCCafeClient.cancelRequest(cancelDeliveryRequest);
if (deliveryBaseResponse == null || !ResponseConstant.SUCCESS_RESPONSE_CODE.equals(deliveryBaseResponse.getErrcode())) {
if (deliveryBaseResponse == null || !ResponseConstant.SUCCESS_RESPONSE_CODE.equals(deliveryBaseResponse.getCode())) {
LogUtil.error("申请取消配送单失败", cancelDeliveryRequest, deliveryBaseResponse);
baseResponseDto.setErrcode(100);
baseResponseDto.setErrcode(baseResponseDto.getErrcode());
......
......@@ -26,6 +26,7 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.Arrays;
......@@ -50,6 +51,9 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
private static Gson gson = new Gson();
@Value("${mccafe.partner.id}")
private String mcCafePartnerId;
@Autowired
private EncircleOrderService encircleOrderService;
@Autowired
......@@ -134,6 +138,9 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if (assortmentCustomerInfoVo == null || StringUtils.isEmpty(assortmentCustomerInfoVo.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if(!mcCafePartnerId.equals(assortmentCustomerInfoVo.getPartnerId())) {
return ResponseUtil.error(ResponseResult.LOGIN_STORE_ERROR);
}
// 扩展字段中存储 sessionKey
createOrderVo.setSessionKey(assortmentCustomerInfoVo.getSessionKey());
......
......@@ -4,8 +4,8 @@ import cn.freemud.entities.dto.QueryOrdersResponseDto;
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 cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
......
......@@ -6,15 +6,14 @@ import cn.freemud.base.constant.Version;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.QueryOrdersResponseDto;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.enums.MCCafeChannelEnum;
import cn.freemud.enums.OrderAccountType;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.service.mccafe.CouponClientService;
import cn.freemud.service.mccafe.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.utils.LogUtil;
import com.alibaba.fastjson.JSON;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
......@@ -26,7 +25,6 @@ import com.freemud.sdk.api.assortment.order.request.order.CreateOrderAccountRequ
import com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......
......@@ -2,15 +2,18 @@ package cn.freemud.service.mccafe.thirdparty;
import cn.freemud.entities.dto.BaseResponseDto;
import cn.freemud.entities.dto.CancelDeliveryRequest;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountRequestDto;
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
import cn.freemud.entities.dto.CreateOrderRequestDto;
import cn.freemud.entities.dto.delivery.*;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(name = "DELIVERYCENTER", url = "${delivery.center.baseUrl}")
import java.util.List;
@FeignClient(name = "DELIVERYMCCAFECENTER", url = "${delivery.center.baseUrl}")
public interface DeliveryFeiginMCCafeClient {
@PostMapping("/delivery/cancelRequest")
BaseResponseDto cancelRequest(@RequestBody CancelDeliveryRequest request);
@PostMapping("/delivery/cancel")
CancelDeliveryResponseDto cancelRequest(@RequestBody CancelDeliveryRequest request);
}
package cn.freemud.service.mccafe.thirdparty;
import cn.freemud.entities.dto.CancelDeliveryRequest;
import cn.freemud.entities.dto.CreateOrderRequestDto;
import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto;
import cn.freemud.entities.dto.delivery.MCCafeDeliveryBaseResponse;
import cn.freemud.entities.dto.delivery.MCCafeDeliveryGetStoreIdResponse;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient(name = "DELIVERYSERVICEMCCAFECENTER", url = "${delivery.mcCafe.feign.url}")
public interface DeliveryServiceFeiginMCCafeClient {
@PostMapping("/delivery/client")
MCCafeDeliveryBaseResponse client(@RequestBody CreateOrderRequestDto request);
}
......@@ -2,25 +2,22 @@ package cn.freemud.service;
import cn.freemud.OrderApplication;
import cn.freemud.base.constant.Version;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.entities.dto.BaseResponseDto;
import cn.freemud.entities.dto.QueryOrderByIdResponseDto;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeProductRedeemVo;
import cn.freemud.entities.dto.coupon.MCCafeTransactionVo;
import cn.freemud.enums.ReceiveOrderEnum;
import cn.freemud.service.impl.MCCafeOrderServiceImpl;
import cn.freemud.entities.dto.CancelDeliveryRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeProductRedeemVo;
import cn.freemud.management.entities.dto.request.order.MCCafeTransactionVo;
import cn.freemud.entities.dto.delivery.CancelDeliveryResponseDto;
import cn.freemud.management.thirdparty.CouponOfflineMCCafeClient;
import cn.freemud.service.mccafe.thirdparty.DeliveryFeiginMCCafeClient;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
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 cn.freemud.enums.CouponReqTypeEnum;
import cn.freemud.service.mccafe.thirdparty.CouponOfflineMCCafeClient;
import com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest;
import com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.request.UpdateDownstreamOrderCodeReq;
import com.freemud.application.sdk.api.ordercenter.service.OrderSdkService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -28,6 +25,7 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@RunWith(SpringRunner.class)
......@@ -38,10 +36,10 @@ public class CouponActivityServiceTest {
private CouponOfflineMCCafeClient offlineMCCafeClient;
@Autowired
private MCCafeOrderServiceImpl mcCafeOrderService;
private DeliveryFeiginMCCafeClient deliveryFeiginMCCafeClient;
@Autowired
private OrderCenterSdkService orderCenterSdkService;
private OrderSdkService orderSdkService;
@Test
public void redeemTest() {
......@@ -172,16 +170,30 @@ public class CouponActivityServiceTest {
}
@Test
public void cancelDelivery() {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId("18551043261893838300001");
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
QueryOrderByIdResponse queryOrderByIdResponse = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
String string = JSONObject.toJSONString(queryOrderByIdResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
QueryOrderByIdResponseDto orderByIdResponseDto = jsonObject.toJavaObject(QueryOrderByIdResponseDto.class);
BaseResponseDto baseResponseDto = mcCafeOrderService.cancelDelivery(orderByIdResponseDto.getData(), ReceiveOrderEnum.NOT_RECEIVE_ORDER.getDesc());
System.out.println(JSON.toJSONString(baseResponseDto));
public void cancelDeliveryTest() {
CancelDeliveryRequest cancelDeliveryRequest = CancelDeliveryRequest.builder()
.displayOrderId("1450026-10/07/2020-6667")
.orderId("77777*2020-08-06#66667")
.orderCancelCode("4")
.orderCancelDescription("用户申请退款")
.storeId("99992")
.deliveryId("742092795987337216f5")
.reviewId("77777*2020-08-06#66")
.receiveOrderType("receivedOrder").build();
CancelDeliveryResponseDto deliveryBaseResponse = deliveryFeiginMCCafeClient.cancelRequest(cancelDeliveryRequest);
System.out.println(JSON.toJSONString(cancelDeliveryRequest));
System.out.println(JSON.toJSONString(deliveryBaseResponse));
}
@Test
public void updateDownstreamThirdOrderCodeTest() {
UpdateDownstreamOrderCodeReq updateDownstreamOrderCodeReq = new UpdateDownstreamOrderCodeReq();
updateDownstreamOrderCodeReq.setOrderCode("18551836670069965100006");
com.freemud.application.sdk.api.ordercenter.response.BaseResponse baseResponse = orderSdkService.updateDownstreamThirdOrderCode(updateDownstreamOrderCodeReq, LogThreadLocal.getTrackingNo());
LinkedHashMap<String, String> linkedHashMap = (LinkedHashMap) baseResponse.getResult();
System.out.println(linkedHashMap.get("downstreamThirdOrderCode"));
}
}
\ No newline at end of file
......@@ -33,6 +33,13 @@
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>couponcenter-sdk</artifactId>
<version>1.9.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.freemud.application.service.sdk</groupId>
<artifactId>sdk-common-base</artifactId>
<version>1.3.9-SNAPSHOT</version>
<scope>provided</scope>
......
package cn.freemud.entities.dto.coupon;
package cn.freemud.management.entities.dto.request.order;
import lombok.AllArgsConstructor;
import lombok.Builder;
......
package cn.freemud.service.mccafe.thirdparty;
package cn.freemud.management.thirdparty;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponLockRequest;
import cn.freemud.management.entities.dto.request.order.MCCafeCouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponQueryResponse;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse;
import cn.freemud.entities.dto.coupon.MCCafeCouponLockRequest;
import cn.freemud.entities.dto.coupon.MCCafeCouponRequest;
import com.freemud.application.sdk.api.couponcenter.offline.response.CouponBaseResponse;
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="${saas.couponofflineclient.feign.url}")
@FeignClient(name = "COUPONMCCafe",url="${saas.couponadapterclient.feign.url}")
@RequestMapping(produces = {"application/json;charset=UTF-8"})
public interface CouponOfflineMCCafeClient {
......
......@@ -153,4 +153,19 @@ public class OrderExtInfoDto {
* 停车场订单手机号
*/
private String mobile;
/**
* 是否需要餐具,1 需要 0不需要
*/
private Integer needTableware;
/**
* 是否需要开发票,1 需要 0不需要
*/
private Integer isInvoice;
/**
* 发票抬头
*/
private String invoiceTitle;
}
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