Commit ed2454ca by 蒋小洋

Merge branches 'ka-野翠山发票订单列表查询-20211011' and 'master' of…

Merge branches 'ka-野翠山发票订单列表查询-20211011' and 'master' of http://gitlab.freemud.com/order-group-application/order-group
parents d2e9408b 06146fb8
......@@ -68,4 +68,16 @@ public class QueryOrdersRequest extends BaseConfig {
* 订单特殊类型 1:普通订单 2:拼团订单 3:秒杀订单 4:拼单订单
*/
private Integer marketingType;
/**
* 1:可开票,2:已开票,3:其他(不可开票)
*/
private Integer invoiceState;
/**
* 查询订单状态 1 外卖 4 门店自提
*/
private Integer queryOrderType;
}
......@@ -49,6 +49,11 @@ public interface OrderCenterSdkService {
QueryOrdersResponse queryOrders(QueryOrdersRequest queryOrdersRequest);
/**
* 野翠山发票订单列表查询
*/
QueryOrdersResponse queryOrdersNew(QueryOrdersRequest queryOrdersRequest);
/**
* 根据订单编号查询订单信息 C端
*/
QueryOrderByIdResponse queryMCCafeOrderById(BaseQueryOrderRequest baseQueryOrderRequest);
......
......@@ -488,6 +488,14 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
}
@Override
public QueryOrdersResponse queryOrdersNew(QueryOrdersRequest queryOrdersRequest) {
OrderUserConditionsReq request = orderSdkAdapter.convent2QueryOrdersRequest(queryOrdersRequest);
request.setInvoiceState(queryOrdersRequest.getInvoiceState());
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp<QueryOrderForUserResp> userorderResponse = orderSdkService.queryOrderNew(request, queryOrdersRequest.getTrackingNo());
return orderSdkAdapter.convent2QueryOrdersResponse(userorderResponse);
}
@Override
public QueryOrderByIdResponse queryMCCafeOrderById(BaseQueryOrderRequest request) {
QueryByCodeResponse orderInfo = orderSdkService.getOrderInfo(request.getOrderClient(), request.getOrderId(),
request.getThirdOrderCode(), request.getWithOperationHistory(), request.getTrackingNo());
......
......@@ -142,8 +142,6 @@ public class OrderController {
return orderservice.refundNotifyCallback(requestVo);
}
/**
* 查询订单列表
*/
......@@ -154,6 +152,15 @@ public class OrderController {
}
/**
* 查询订单列表(野翠山发票订单列表查询)
*/
@PostMapping("/queryOrdersNew")
@ApiAnnotation(logMessage = "queryOrdersNew")
public BaseResponse queryOrdersNew(@Validated @LogParams @RequestBody QueryOrderVo queryOrderVo) {
return orderservice.queryOrdersNew(queryOrderVo);
}
/**
* 围餐-预览订单
* @param queryOrderVo
* @return
......
......@@ -52,6 +52,11 @@ public interface Orderservice extends OrderFactoryService{
BaseResponse queryOrders(QueryOrderVo queryOrderVo);
/**
* 查询订单列表
*/
BaseResponse queryOrdersNew(QueryOrderVo queryOrderVo);
/**
* 支付取消删除订单
*/
BaseResponse deleteOrder(DeleteOrderVo deleteOrderVo);
......
......@@ -1166,6 +1166,281 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public BaseResponse queryOrdersNew(QueryOrderVo queryOrderVo) {
AssortmentCustomerInfoVo userLoginInfoDto = customerInfoManager.getCustomerInfoByObject(queryOrderVo.getSessionId());
if (userLoginInfoDto == null || StringUtils.isBlank(userLoginInfoDto.getMemberId())) {
return ResponseUtil.error(ResponseResult.NOT_LOGIN);
}
if (StringUtils.isBlank(queryOrderVo.getStartDate())) {
if (isQueryEs(queryOrderVo.getQueryOrderStatus()) && queryOrderEs) {
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -3), "yyyy-MM-dd"));
} else {
//只有发票相关的查询2个月
if(queryOrderVo.getNeedInvoice() != null){
queryOrderVo.setStartDate(DateUtil.convert2String(DateUtil.addMonths(new Date(), -2), "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"));
}
if (queryOrderVo.getQueryOrderStatus() == null) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单状态不能为空");
}
if (queryOrderVo.getQueryOrderType() != null) {
if (OrderType.getByCode(queryOrderVo.getQueryOrderType()) == null) {
return ResponseUtil.error(ResponseResult.PARAMETER_MISSING.getCode(), "查询订单类型不存在");
}
}
String partnerId = queryOrderVo.getPartnerId();
String startDateStr = queryOrderVo.getStartDate() + " 00:00:00";
String endDateStr = queryOrderVo.getEndDate() + " 23:59:59";
Date startDate = DateUtil.convert2Date(startDateStr, "yyyy-MM-dd HH:mm:ss");
if (startDate == null) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode(), "查询订单开始时间格式不正确");
}
Date endDate = DateUtil.convert2Date(endDateStr, "yyyy-MM-dd HH:mm:ss");
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个月内的订单信息");
}
String userId = userLoginInfoDto.getMemberId();
QueryOrderDto queryOrderDto = BeanUtil.convertBean(queryOrderVo, QueryOrderDto::new);
queryOrderDto.setPartnerId(queryOrderVo.getPartnerId());
queryOrderDto.setStartDate(startDateStr);
queryOrderDto.setEndDate(endDateStr);
String channelType = this.getQueryOrderChannelType(queryOrderVo, userLoginInfoDto);
QueryOrdersDto queryOrdersDto = orderAdapter.convent2QueryOrdersDto(queryOrderDto, userId, channelType);
QueryOrdersRequest queryOrdersRequest2 = new QueryOrdersRequest();
BeanUtil.convertBean(queryOrdersDto, queryOrdersRequest2);
queryOrdersRequest2.setTrackingNo(LogThreadLocal.getTrackingNo());
Integer invoiceState = 1;
if(Objects.equals(queryOrderVo.getNeedInvoice(),false) && !Objects.equals(QueryOrderStatus.REFUND_BILL.getCode(),queryOrderVo.getQueryOrderStatus())){
//查询可开票,支付状态为已支付
invoiceState = 1;
queryOrdersRequest2.setPayStatus(new Integer[]{2});
List<Integer> bizTypes = new ArrayList<>(queryOrdersRequest2.getBizTypes());
bizTypes.add(BizTypeEnum.VIRTUAL.getBizType());
queryOrdersRequest2.setBizTypes(bizTypes);
}else if(Objects.equals(queryOrderVo.getNeedInvoice(),true)){
//查询已开票
invoiceState = 2;
}
if(Objects.equals(QueryOrderStatus.REFUND_BILL.getCode(),queryOrderVo.getQueryOrderStatus())){
//查询其他
invoiceState = 3;
}
queryOrdersRequest2.setInvoiceState(invoiceState);
QueryOrdersResponse queryOrderResponse = orderCenterSdkService.queryOrdersNew(queryOrdersRequest2);
if (queryOrderResponse == null || !RESPONSE_SUCCESS_CODE.equals(queryOrderResponse.getErrcode())) {
return ResponseUtil.error(ResponseResult.ORDER_QUERYORDER_ERROR.getCode());
}
Map<String, Object> responseMap = Maps.newTreeMap();
//用户无订单数据
if (queryOrderResponse.getData() == null || queryOrderResponse.getData().getCount() == 0) {
responseMap.put("count", 0);
responseMap.put("list", new ArrayList<QueryOrderResponseVo>());
return ResponseUtil.success(responseMap);
}
List<OrderBeanV1> ordersOld = queryOrderResponse.getData().getOrders();
List<OrderBeanV1> orders = new ArrayList<>();
Set<String> shopIds = new HashSet<>();
// 过滤待支付订单
if (CollectionUtils.isNotEmpty(ordersOld)) {
for (OrderBeanV1 orderBean : ordersOld) {
if (!(OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()) || PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus()))) {
shopIds.add(orderBean.getShopId());
}
//围餐过滤掉未唤起支付的订单
if (OrderChannelType.IWC.getCode().equals(channelType) && OrderStatus.WAIT_PAY.getCode().equals(orderBean.getStatus()) && PayStatus.NOT_PAY.getCode().equals(orderBean.getPayStatus())) {
// 如果已经唤起了支付则不再进行促销计算
boolean prePayLock = mealCacheManager.getOrderCreatePreParmentLock(userLoginInfoDto.getPartnerId(), userLoginInfoDto.getStoreId(), userLoginInfoDto.getTableNumber());
if (prePayLock) {
//已唤起支付
orders.add(orderBean);
}
} else {
orders.add(orderBean);
}
}
}
String storeCodes = "";
for (String shopId : shopIds) {
storeCodes = shopId + "," + storeCodes;
}
GetListByCodesRequest request = new GetListByCodesRequest();
request.setPartnerId(partnerId);
request.setStoreCodes(storeCodes);
// 查询多个门店信息
GetListByCodesResponse storeInfoResponse = storeCenterService.getListByCodes(request, LogThreadLocal.getTrackingNo());
Map<String, StoreResponse.BizVO> storeMap = new HashMap<>();
if (storeInfoResponse != null && storeInfoResponse.getBizVO() != null && storeInfoResponse.getBizVO().getList() != null) {
for (StoreResponse.BizVO bizVO : storeInfoResponse.getBizVO().getList()) {
storeMap.put(bizVO.getStoreCode(), bizVO);
}
}
if (CollectionUtils.isNotEmpty(orders)) {
orders.forEach(orderBean -> {
StoreResponse.BizVO storeResponseDto = storeMap.get(orderBean.getShopId());
if (storeResponseDto != null) {
orderBean.setShopAddress(storeResponseDto.getAddress());
orderBean.setShopPhone(storeResponseDto.getPhone());
orderBean.setShopImageUrl(storeResponseDto.getLogoUrl());
//默认骑手头像显示为门店首页图片
orderBean.setRiderPhoto(storeResponseDto.getLogoUrl());
orderBean.setLatitude((StringUtils.isNotBlank(storeResponseDto.getLatitude()) ? Double.valueOf(storeResponseDto.getLatitude()) : 0d));
orderBean.setLongitude((StringUtils.isNotBlank(storeResponseDto.getLongitude()) ? Double.valueOf(storeResponseDto.getLongitude()) : 0d));
}
// 获取订单运单号,如果有运单则是第三方外卖单
if (orderBean.getAddInfo() != null && StringUtils.isNotEmpty(orderBean.getAddInfo().getDeliveryId())) {
hasThirdDelivery(orderBean);
}
orderBean.setQueueIndex("");
// 查询待取餐订单才需要查询排队人数和订单状态扭转记录
if (QueryOrderStatus.TAKE_MEAL.getCode().equals(queryOrderDto.getQueryOrderStatus())) {
String returnWords = "";
Integer productSum = 0; //件数
Long pickUpTime = 0L; //预计
Integer totalSumTime = 0;
String progress = "0"; //进度
Integer orderProgressBarStatus = 2;
try {
if (null != storeResponseDto) {
String configurationStr = storeResponseDto.getConfiguration();
if (StringUtils.isNotEmpty(configurationStr)) {
StoreResponse.Configuration configuration = JSONObject.parseObject(configurationStr).toJavaObject(StoreResponse.Configuration.class);
if (null != configuration) {
orderProgressBarStatus = configuration.getOrderProgressBarStatus();
; //默认关闭
//订单状态为已接单并且无售后单展示进度条
if (OrderStatus.RECEIPT.getCode() == orderBean.getStatus() && null == orderBean.getAfterSalesOrderResp() && null != orderProgressBarStatus && null != configuration.getTurnOnTimeOfMaking()) {
// 查询订单的排队人数
QueryLineUpOrderReq queryLineUpOrderReq = new QueryLineUpOrderReq();
queryLineUpOrderReq.setPartnerId(orderBean.getCompanyId());
queryLineUpOrderReq.setStoreId(orderBean.getShopId());
queryLineUpOrderReq.setStartTime(DateUtil.addHours(new Date(orderBean.getGmtCreate()), -24).getTime());
queryLineUpOrderReq.setEndTime(orderBean.getGmtCreate());
// 取餐排队人数查询代码去除
QueryLineUpResponse response = orderCenterSdkService.queryLineUpOrder(queryLineUpOrderReq);
if (RESPONSE_SUCCESS_CODE.equals(response.getErrcode())) {
if (null == response.getOrderCodes()) {
progress = "100";
returnWords = "";
} else {
List<String> orderCodeList = response.getOrderCodes();
if (null != orderCodeList && orderCodeList.size() > 0) {
returnWords += "前方还有 " + orderCodeList.size() + " 单";
//开启制作时间 1 :是 , 2 :否"
if (1 != configuration.getTurnOnTimeOfMaking()) {
totalSumTime = orderCodeList.size() * AutoOrderConfigTime.getTime(configuration.getAutoSelfmentionTakeOrderWorkflowFinishTime()); //分钟
} else {
Integer goodsAvgTimeOfMaking = (null == configuration.getGoodsAvgTimeOfMaking() || 0 == configuration.getGoodsAvgTimeOfMaking()) ? 5 : configuration.getGoodsAvgTimeOfMaking();
productSum = orderCodeList.stream().mapToInt(product -> Integer.parseInt(product.split("-")[1])).sum();
totalSumTime = productSum * goodsAvgTimeOfMaking;
returnWords += " / " + productSum + " 件";
}
pickUpTime = DateUtil.addMinutes(new Date(orderBean.getGmtAccept()), totalSumTime).getTime();
Date date = new Date(pickUpTime);
returnWords += ",预计 " + (String.valueOf(date.getHours()).length() == 1 ? "0" + (String.valueOf(date.getHours())) : date.getHours()) + ":" + (String.valueOf(date.getMinutes()).length() == 1 ? "0" + (String.valueOf(date.getMinutes())) : date.getMinutes()) + " 可取餐";
//制餐进度(当前时间-接单时间)/总时长(制餐时长)x100%
BigDecimal progressB = new BigDecimal(DateUtil.diffMinute(new Date(orderBean.getGmtAccept()), new Date())).divide(new BigDecimal(totalSumTime), 2, BigDecimal.ROUND_HALF_UP);
progress = progressB.compareTo(new BigDecimal(1)) == 1 ? "100" : progressB.multiply(new BigDecimal(100)).toString();
}
}
}
}
}
}
}
} catch (Exception e) {
AppLogUtil.errorLog("get returnWords", "",JSONObject.toJSONString(storeResponseDto),e);
}
orderBean.setProgress(String.valueOf(progress));
orderBean.setReturnWords(returnWords);
orderBean.setOrderProgressBarStatus(orderProgressBarStatus);
//以下代码为老代码,不确定还在不在用,就留着了
// 查询订单的排队人数
BaseQueryOrderRequest var1 = new BaseQueryOrderRequest();
var1.setOrderId(orderBean.getOid());
var1.setTrackingNo(LogThreadLocal.getTrackingNo());
// 查询订单的操作状态
BaseQueryOrderRequest var2 = new BaseQueryOrderRequest();
var2.setOrderId(orderBean.getOid());
var2.setTrackingNo(LogThreadLocal.getTrackingNo());
OrderStatusTrackingInfoResponse orderStatusTrackingInfoResponse = orderCenterSdkService.getOrderStatusTrackingInfoByOid(var2);
String string = JSONObject.toJSONString(orderStatusTrackingInfoResponse);
JSONObject jsonObject = JSONObject.parseObject(string);
OrderStatusTrackingInfoDto orderStatusTrackingInfoByOid = jsonObject.toJavaObject(OrderStatusTrackingInfoDto.class);
if (RESPONSE_SUCCESS_CODE.equals(orderStatusTrackingInfoByOid.getErrcode())) {
orderStatusTracking(orderBean, orderStatusTrackingInfoByOid);
}
}
});
}
List<QueryOrderResponseVo> queryOrderResponseVos = orderAdapter.convent2QueryOrderResponseVos(orders, userLoginInfoDto.getWxAppId(), userLoginInfoDto.getIappId());
if (QueryOrderStatus.TAKE_MEAL.getCode().intValue() == queryOrderVo.getQueryOrderStatus()) {
queryOrderResponseVos.forEach(queryOrderResponseVo -> {
try {
// 判断是否有裂变活动 订单扩展信息判断必须有wxappid
// 查询门店下有没有 裂变活动
Long orderTime = DateUtil.convert2Date(queryOrderResponseVo.getOrderCreateTime(), DateUtil.FORMAT_YYYY_MM_DD_HHMMSS).getTime();
StoreResponse.BizVO bizVO = storeMap.get(queryOrderResponseVo.getShopId());
String activityId = isShareActivity(queryOrderVo.getPartnerId(), queryOrderResponseVo.getShopId()
, queryOrderResponseVo.getWxappid()
, orderTime == null ? 0 : orderTime
, queryOrderResponseVo.getOid()
, userId
, queryOrderVo.getSessionId()
, bizVO.getParentId());
// 取红包图片
queryOrderResponseVo.setRedpacketsPicture(getRedpacketsPicture(activityId));
queryOrderResponseVo.setActivityId(activityId);
// coco订单不考略是否查询待取餐的订单,直接调用支付有礼活动
// 所以在这个地方排除掉coco,在下边单独实现
//参与支付有礼活动
if (!cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId, queryOrderVo.getPayGiftVer());
}
} catch (Exception e) {
AppLogUtil.errorLog("queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
}
});
}
// coco订单参与支付有礼活动
if (cocoPartnerId.contains(queryOrderVo.getPartnerId())) {
queryOrderResponseVos.forEach(queryOrderResponseVo -> {
try {
joinPayGift(queryOrderVo.getSessionId(), queryOrderResponseVo, partnerId, null);
} catch (Exception e) {
AppLogUtil.errorLog("coco_queryOrders_activity_error", gson.toJson(queryOrdersDto), gson.toJson(queryOrderResponseVo), e);
}
});
}
for(QueryOrderResponseVo orderResponseVo : queryOrderResponseVos){
if (OrderMarketType.GROUPB.getIndex() == orderResponseVo.getMarketingType() && StringUtils.isNotEmpty(orderResponseVo.getSpellGroupCode())
&& orders.get(0).getApportionDetails() != null) {
QueryHistoryGroupVO querySpellGroupVo = spellGroupOrderDataManager.queryHistoryByGroupId(orderResponseVo.getSpellGroupCode(),
partnerId,userId);
orderResponseVo.setSpellGroup(querySpellGroupVo);
}
}
responseMap.put("count", queryOrderResponse.getData() == null ? 0 : queryOrderResponse.getData().getCount());
responseMap.put("list", queryOrderResponseVos);
//只有有订单时才显示用户自定义取餐信息
if (CollectionUtils.isNotEmpty(queryOrderResponseVos)) {
responseMap.put("definitionMsg", getDefinitionMsg(queryOrderVo.getPartnerId()));
}
return ResponseUtil.success(responseMap);
}
@Override
public BaseResponse queryCollageOrderById(Integer operation, String sessionId, String oid, String partnerId, String channel) {
BaseResponse orderInfoRes = this.queryOrderById(operation, sessionId, oid, partnerId, channel);
......
......@@ -32,6 +32,8 @@ public class InterfaceAddressConstant {
public static final String QUERY_QUEUE_SIZE = "order/v2/queryQueueSize";
//根据用户综合条件查询
public static final String QUERY_ORDER_FOR_USER = "order/v2/queryOrderForUser";
//野翠山订单列表查询
public static final String QUERY_ORDER_NEW = "order/v2/invoice/list/order";
//根据订单编号查询订单状态跟踪信息
public static final String QUERY_TRACK_INFO = "order/v2/queryTrackInfo";
......
......@@ -65,4 +65,9 @@ public class OrderUserConditionsReq {
*/
private Integer marketingType;
/**
* 1:可开票,2:已开票,3:其他(不可开票)
*/
private Integer invoiceState;
}
......@@ -257,6 +257,19 @@ public class OrderSdkService {
}
/**
* 野翠山订单列表查询
* @param request
* @param trackingNo
* @return
*/
public OrderBaseResp<QueryOrderForUserResp> queryOrderNew(OrderUserConditionsReq request, String trackingNo) {
OrderBaseResp<QueryOrderForUserResp> responseDTO = RequestThirdPartyUtils.httpJsonReqComplexNew(restTemplate, InterfaceAddressConstant.QUERY_ORDER_NEW,
createBaseRequest(request, trackingNo), new ParameterizedTypeReference<OrderBaseResp<QueryOrderForUserResp>>() {
});
return responseHandle(responseDTO);
}
/**
* 根据订单编号查询订单状态跟踪信息
*/
public OrderBaseResp<List<OrderTraceInfoResp>> queryTrackInfo(String orderCode, String trackingNo) {
......
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