Commit 85c91ee7 by 刘鹏飞

Merge remote-tracking branch 'origin/feature/3month-刘鹏飞'

parents 1efaf2d4 f563596e
......@@ -15,6 +15,7 @@ package cn.freemud.adapter;
import cn.freemud.base.log.LogTreadLocal;
import cn.freemud.base.util.DateUtil;
import cn.freemud.constant.CustomerScoreConstant;
import cn.freemud.constant.ResponseCodeConstant;
import cn.freemud.entities.dto.*;
import cn.freemud.entities.dto.activity.ShareDiscountActivityDto;
import cn.freemud.entities.dto.order.*;
......@@ -46,6 +47,7 @@ import cn.freemud.utils.*;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig;
import com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo;
import com.freemud.api.assortment.datamanager.enums.IappIdType;
......@@ -53,12 +55,16 @@ import com.freemud.api.assortment.datamanager.manager.cache.CacheOpenPlatformPar
import com.freemud.application.sdk.api.log.LogThreadLocal;
import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import com.freemud.application.sdk.api.ordercenter.enums.*;
import com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq;
import com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq;
import com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO;
import com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest;
import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter;
import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.*;
import com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest;
......@@ -143,6 +149,9 @@ public class OrderAdapter {
@Autowired
private RedisCache redisCache;
@Autowired
private OrderSdkAdapter orderSdkAdapter;
/**
* @param createOrderVo
* @param shoppingCartGoodsDto
......@@ -3794,4 +3803,184 @@ public class OrderAdapter {
activityUpdateStockRequest.setActivityList(CollectionUtils.isNotEmpty(activityList) ? activityList : null);
return activityUpdateStockRequest;
}
public OrderConditionsReq convent2QueryOrdersDtoES(OrderConditionsReq query, String memberId, String channelType, Integer queryOrderStatus,Integer queryOrderType) {
OrderConditionsReq queryOrdersDto = new OrderConditionsReq();
queryOrdersDto.setUserId(memberId);
queryOrdersDto.setPartnerId(query.getPartnerId());
queryOrdersDto.setPageSize(query.getPageSize() != null ? query.getPageSize() : 10);
queryOrdersDto.setPageNum(query.getPageNum() != null ? query.getPageNum() : 1);
queryOrdersDto.setStartTimestamp(query.getStartTimestamp());
queryOrdersDto.setEndTimestamp(query.getEndTimestamp());
List<Integer> orderClients = new ArrayList<>();
if(OrderChannelType.IWC.getCode().equals(channelType)) {
orderClients.add(OrderClientType.WAI_MEAL.getIndex());
//queryOrdersDto.setSource(new String[]{"meals"});
} else if(OrderChannelType.SAASMALL.getCode().equals(channelType)) {
orderClients.add(OrderClientType.SAASMALL.getIndex());
//queryOrdersDto.setSource(new String[]{"saasmall"});
} else if(OrderChannelType.APP.getCode().equals(channelType)){
orderClients.add(OrderClientType.APP.getIndex());
//queryOrdersDto.setSource(new String[]{"app"});
} else {
orderClients.add(OrderClientType.SAAS.getIndex());
//queryOrdersDto.setSource(new String[]{"saas"});
}
orderClients.add(OrderClientType.TIKTOKPAY.getIndex());
orderClients.add(OrderClientType.ALIPAY.getIndex());
queryOrdersDto.setOrderClients(orderClients);
List<Integer> payStatus = Arrays.asList(PayStatus.HAVE_PAID.getCode(), PayStatus.HAVE_REFUND.getCode(), PayStatus.COMPLETE.getCode());
queryOrdersDto.setPayStatuses(payStatus);
//queryOrdersDto.setPayStatus((Integer[]) payStatus.toArray());
//TODO 查询退款的待确定
if (queryOrderStatus != null) {
if (QueryOrderStatus.ALL_BILL.getCode().equals(queryOrderStatus)) {
List<Integer> orderStatuses = new ArrayList<>();
Collections.addAll(orderStatuses, OrderStatus.getAllCodes());
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(OrderStatus.getAllCodes());
}
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(queryOrderStatus)) {
Integer[] statuses = new Integer[]{OrderStatus.TAKE_ORDER.getCode(), OrderStatus.RECEIPT.getCode(),
OrderStatus.DISTRIBUTION.getCode(), OrderStatus.COMPLETE_MAKE.getCode()};
List<Integer> orderStatuses = new ArrayList<>();
Collections.addAll(orderStatuses, statuses);
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(statuses);
}
if (QueryOrderStatus.FINISH.getCode().equals(queryOrderStatus)) {
List<Integer> orderStatuses = new ArrayList<>();
orderStatuses.add(OrderStatus.COMPLETE.getCode());
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(new Integer[]{OrderStatus.COMPLETE.getCode()});
}
if (QueryOrderStatus.REFUND_BILL.getCode().equals(queryOrderStatus)) {
//Integer[] statuses = new Integer[]{RefundStatus.APPLY_REFUND.getCode(), RefundStatus.AGREE_REFUND.getCode(), RefundStatus.COMPLETE_REFUND.getCode()};
//queryOrdersDto.setRefundStatus(statuses);
}
if (QueryOrderStatus.NO_PAY.getCode().equals(queryOrderStatus)) {
List<Integer> payStatuses = new ArrayList<>();
payStatuses.add(PayStatus.NOT_PAY.getCode());
queryOrdersDto.setPayStatuses(payStatuses);
//queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()});
}
if (QueryOrderStatus.ORDER_CANCEL.getCode().equals(queryOrderStatus)) {
List<Integer> orderStatuses = new ArrayList<>();
orderStatuses.add(OrderStatus.CALCEL.getCode());
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(new Integer[]{OrderStatus.CALCEL.getCode()});
}
if (QueryOrderStatus.ORDER_CANCEL_MIXUE.getCode().equals(queryOrderStatus)) {
List<Integer> orderStatuses = new ArrayList<>();
orderStatuses.add(OrderStatus.CALCEL.getCode());
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(new Integer[]{OrderStatus.CALCEL.getCode()});
List<Integer> payStatuses = new ArrayList<>();
payStatuses.add(PayStatus.NOT_PAY.getCode());
queryOrdersDto.setPayStatuses(payStatuses);
//queryOrdersDto.setPayStatus(new Integer[]{PayStatus.NOT_PAY.getCode()});
}
}
// 兼容历史版本,如果传参是4 查询拆程4和5
List<Integer> orderTypes = new ArrayList<>();
if (queryOrderType != null) {
if (Objects.equals(queryOrderType, OrderType.COLLECT_GOODS.getCode())) {
orderTypes.add(OrderType.COLLECT_GOODS.getCode());
orderTypes.add(OrderType.EAT_IN.getCode());
//queryOrdersDto.setType(new Integer[]{OrderType.COLLECT_GOODS.getCode(), OrderType.EAT_IN.getCode()});
} else {
orderTypes.add(queryOrderType);
//queryOrdersDto.setType(new Integer[]{queryOrderDto.getQueryOrderType()});
}
}
queryOrdersDto.setOrderTypes(orderTypes);
if (OrderChannelType.IWC.getCode().equals(channelType)) {
Integer[] statuses = new Integer[]{OrderStatus.COMPLETE.getCode(), OrderStatus.CALCEL.getCode(), OrderStatus.WAIT_PAY.getCode()};
List<Integer> orderStatuses = new ArrayList<>();
Collections.addAll(orderStatuses, statuses);
queryOrdersDto.setOrderStatuses(orderStatuses);
//queryOrdersDto.setStatus(statuses);
Integer[] payWCStatus =new Integer[]{PayStatus.NOT_PAY.getCode(),PayStatus.HAVE_PAID.getCode(), PayStatus.HAVE_REFUND.getCode(), PayStatus.COMPLETE.getCode()};
List<Integer> payStatuses = new ArrayList<>();
Collections.addAll(payStatuses, payWCStatus);
queryOrdersDto.setPayStatuses(payStatuses);
//queryOrdersDto.setPayStatus(payWCStatus);
}
if (OrderChannelType.SAASMALL.getCode().equals(channelType)) {
// Integer[] statuses = new Integer[]{OrderStatus.COMPLETE.getCode(), OrderStatus.CALCEL.getCode()};
// queryOrdersDto.setStatus(statuses);
// queryOrdersDto.setType(new Integer[]{});
}
//商品订单和卖券订单
queryOrdersDto.setBizTypes(Arrays.asList(1,6));
// 新老兼容
if(queryOrdersDto.getOrderStatuses() != null && !queryOrdersDto.getOrderStatuses().isEmpty()){
List<Integer> orderStatus = new ArrayList<>();
for(Integer orderStatuses : queryOrdersDto.getOrderStatuses()){
orderStatus.add(orderSdkAdapter.getNewOrderStatus(orderStatuses));
}
queryOrdersDto.setOrderStatuses(orderStatus);
}
if(queryOrdersDto.getOrderTypes() != null && !queryOrdersDto.getOrderTypes().isEmpty()){
List<Integer> orderType = new ArrayList<>();
for(Integer type : queryOrdersDto.getOrderTypes()){
//订单服务订单类型 1=外卖 4=自提,5=堂食
//外卖平台订单类型 1=常规堂食,2=预约堂食,3=常规外送,4=预约外送,5=常规自取,6=预约自取
if (type.intValue() == 1) {
orderType.add(3);
orderType.add(4);
}
if (type.intValue() == 4) {
orderType.add(5);
orderType.add(6);
}
if (type.intValue() == 5) {
orderType.add(1);
orderType.add(2);
}
}
queryOrdersDto.setOrderTypes(orderType);
}
return queryOrdersDto;
}
public QueryOrdersResponse conventEs2queryOrderResponse(BaseDownLoadResponse<List<OrderInfoReqs>> response) {
QueryOrdersResponse queryOrdersResponse = new QueryOrdersResponse();
if (null == response || null == response.getResult()) {
queryOrdersResponse.setErrcode(ResponseCodeConstant.RESPONSE_SUCCESS);
queryOrdersResponse.setErrmsg(ResponseResultEnum.ORDER_DATA_NOT_EXIST.getMessage());
return queryOrdersResponse;
}
List<OrderInfoReqs> result = response.getResult();
QueryOrdersResponse.DataBean dataBean = new QueryOrdersResponse.DataBean();
List<QueryOrdersResponse.DataBean.OrderBean> orders = new ArrayList<>();
if(null != result && result.size() >0) {
for (OrderInfoReqs reqs : result) {
QueryOrdersResponse.DataBean.OrderBean data = orderSdkAdapter.convent2NEWOrderInfo(reqs);
orders.add(data);
}
}
dataBean.setOrders(orders);
dataBean.setCount(response.getTotalNum());
queryOrdersResponse.setData(dataBean);
queryOrdersResponse.setErrcode(ResponseCodeConstant.RESPONSE_SUCCESS);
return queryOrdersResponse;
}
}
......@@ -197,6 +197,10 @@ public class OrderServiceImpl implements Orderservice {
*/
@Value("#{'${coco.partnerId}'.split(',')}")
private List<String> cocoPartnerId;
@Value("${query.order.es:true}")
private Boolean queryOrderEs;
@Autowired
private AssortmentCloudPrinterManager cloudPrinterManager;
// @Autowired
......@@ -772,7 +776,12 @@ public class OrderServiceImpl implements Orderservice {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isBlank(queryOrderVo.getStartDate())) {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -1), "yyyy-MM-dd"));
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -3), "yyyy-MM-dd"));
}else{
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -1), "yyyy-MM-dd"));
}
}
if (StringUtils.isBlank(queryOrderVo.getEndDate())) {
queryOrderVo.setEndDate(DateUtil.convert2String(new Date(), "yyyy-MM-dd"));
......@@ -796,9 +805,18 @@ public class OrderServiceImpl implements Orderservice {
if (endDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单结束时间格式不正确");
}
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
Date startDateEs = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd");
Date endDateEs = DateUtil.convert2Date(new Date(), "yyyy-MM-dd");
if (startDateEs.getTime() < DateUtil.addMonths(endDateEs, -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
}else{
if (startDate.getTime() < DateUtil.addMonths(new Date(), -3).getTime()) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "只能查询3个月内的订单信息");
}
}
String userId = userLoginInfoDto.getMemberId();
QueryOrderDto queryOrderDto = BeanUtil.convertBean(queryOrderVo, QueryOrderDto::new);
queryOrderDto.setPartnerId(queryOrderVo.getPartnerId());
......@@ -811,7 +829,24 @@ public class OrderServiceImpl implements Orderservice {
QueryOrdersRequest queryOrdersRequest2 = new QueryOrdersRequest();
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogTreadLocal.getTrackingNo());
queryOrderResponse = orderCenterSdkService.queryOrders(queryOrdersRequest2);
// 订单要查3个月的,如果查询的订单状态是待取餐、未支付,则查实时,否则,查es
if(isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs){
OrderConditionsReq es = new OrderConditionsReq();
es.setPartnerId(queryOrderVo.getPartnerId());
es.setUserId(userId);
es.setStartTimestamp(DateTimeUtil.parseDate(startDateStr,DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime()/1000);
es.setEndTimestamp(DateTimeUtil.parseDate(endDateStr,DateTimeUtil.YYYY_MM_DD_HH_MM_SS).getTime()/1000);
es.setPageNum(queryOrderVo.getPageNumber());
es.setPageSize(queryOrderVo.getPageSize());
OrderConditionsReq queryEs = orderAdapter.convent2QueryOrdersDtoES(es,userId,channelType,queryOrderVo.getQueryOrderStatus(),queryOrderVo.getQueryOrderType());
BaseDownLoadResponse<List<OrderInfoReqs>> response = orderDownLoadSdkService.queryOrderByConditions(queryEs, LogThreadLocal.getTrackingNo());
queryOrderResponse = orderAdapter.conventEs2queryOrderResponse(response);
}else{
queryOrderResponse = orderCenterSdkService.queryOrders(queryOrdersRequest2);
}
} catch (Exception e) {
LogUtil.error("queryOrders_error", gson.toJson(queryOrdersDto), e);
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
......@@ -1387,7 +1422,21 @@ public class OrderServiceImpl implements Orderservice {
BaseQueryOrderRequest baseQueryOrderRequest = new BaseQueryOrderRequest();
baseQueryOrderRequest.setOrderId(oid);
baseQueryOrderRequest.setTrackingNo(LogTreadLocal.getTrackingNo());
// 订单详情要查询3个月前的订单
// 先实时查询如果没有查询es
QueryOrderByIdResponse response = orderCenterSdkService.queryOrderById(baseQueryOrderRequest);
if(!RESPONSE_SUCCESS_CODE.equals(response.getErrcode())){
ApiLog.info("订单详情实时查询错误,baseQueryOrderRequest,",baseQueryOrderRequest,"");
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
if(response.getData() == null && queryOrderEs){
// 查询es
response = orderCenterSdkService.queryOrderByCodeES(partnerId, oid, LogThreadLocal.getTrackingNo());
ApiLog.info("订单详情实时查询没有数据,es查询,partnerId,oid",partnerId,oid);
}
if (!RESPONSE_SUCCESS_CODE.equals(response.getErrcode()) || response.getData() == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR);
}
......@@ -3790,4 +3839,14 @@ public class OrderServiceImpl implements Orderservice {
}
}
private Boolean isQueryEs(Integer queryOrderStatus) {
if(ObjectUtils.equals(QueryOrderStatus.TAKE_MEAL.getCode(),queryOrderStatus) || ObjectUtils.equals(QueryOrderStatus.NO_PAY.getCode(),queryOrderStatus)
|| ObjectUtils.equals(QueryOrderStatus.REFUND_BILL.getCode(),queryOrderStatus)){
return Boolean.FALSE;
}
return Boolean.TRUE;
}
}
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