Commit afd4a4d4 by 刘鹏飞

Merge remote-tracking branch 'remotes/origin/20201026-queryRefundCount-刘鹏飞' into develop

# Conflicts:
#	assortment-ordercenter-sdk/pom.xml
#	ordercenter-sdk/pom.xml
parents ae8be14e d2edb1b0
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>assortment-ordercenter-sdk</artifactId> <artifactId>assortment-ordercenter-sdk</artifactId>
<version>2.0.18-SNAPSHOT</version> <version>2.0.19-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<dependency> <dependency>
<groupId>cn.freemud</groupId> <groupId>cn.freemud</groupId>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<version>1.4.38-SNAPSHOT</version> <version>1.5.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.freemud.application.service.sdk</groupId> <groupId>com.freemud.application.service.sdk</groupId>
......
...@@ -95,6 +95,7 @@ public enum ResponseResult { ...@@ -95,6 +95,7 @@ public enum ResponseResult {
ORDER_CREATE_FORMID_ISNULL("45018", "0元购formId不能为空"), ORDER_CREATE_FORMID_ISNULL("45018", "0元购formId不能为空"),
ORDER_GET_PAY_EB_CODE_ERROR("45019", "没有配置支付payEbCode"), ORDER_GET_PAY_EB_CODE_ERROR("45019", "没有配置支付payEbCode"),
ORDER_WXAPP_NOT_ENABLE_COLLECT_GOODS("45020","小程序未开通到店自取"), ORDER_WXAPP_NOT_ENABLE_COLLECT_GOODS("45020","小程序未开通到店自取"),
ORDER_PARTNER_REFUND_COUNT_ERR("45021","商户退款数量查询失败"),
/** /**
* 优惠券活动 * 优惠券活动
......
package com.freemud.sdk.api.assortment.order.request.order;
import com.freemud.sdk.api.assortment.order.config.BaseConfig;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountRequest
* @Package com.freemud.sdk.api.assortment.order.request.order
* @Description:
* @author: pengfei.liu
* @date: 2020/10/26
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class QueryStoreRefundCountRequest extends BaseConfig {
/**
* 商户编号
*/
private String partnerId;
/**
* 开始时间戳(单位:秒)
*/
private Long startTimestamp;
/**
* 结束时间戳(单位:秒)
*/
private Long endTimestamp;
/**
* 门店id
*/
List<String> storeIds;
}
package com.freemud.sdk.api.assortment.order.response.order;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: QueryPartnerRefundCountResponse
* @Package com.freemud.sdk.api.assortment.order.response.order
* @Description:
* @author: pegnfei.liu
* @date: 2020/10/27
* @Copyright: 2020 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目的
*/
@Data
public class QueryPartnerRefundCountResponse {
private String errcode;
private String errmsg;
private PartnerRefundCount data;
@NoArgsConstructor
@Data
public static class PartnerRefundCount {
/**
* 商户编号
*/
private String partnerId;
/**
* 门店退款数量
*/
List<StoreRefundCount> storeRefundCount;
}
@NoArgsConstructor
@Data
public static class StoreRefundCount {
/**
* 门店编号
*/
private String storeId;
/**
* 退款订单数量
*/
private Long count;
}
}
...@@ -344,4 +344,11 @@ public interface OrderCenterSdkService { ...@@ -344,4 +344,11 @@ public interface OrderCenterSdkService {
*/ */
BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo); BaseOrderResponse updatePickUpGoodNo(OrderModifyRelatingCodeReq orderModifyRelatingCodeReq, String trackingNo);
/**
* 查询商户每个门店未退款的订单数量<br/>
* @param request
* @return
*/
QueryPartnerRefundCountResponse queryRefundCount(QueryStoreRefundCountRequest request);
} }
...@@ -5,7 +5,6 @@ import cn.freemud.amqp.MQAction; ...@@ -5,7 +5,6 @@ import cn.freemud.amqp.MQAction;
import cn.freemud.amqp.MQMessage; import cn.freemud.amqp.MQMessage;
import cn.freemud.amqp.MQService; import cn.freemud.amqp.MQService;
import cn.freemud.base.util.DateUtil; import cn.freemud.base.util.DateUtil;
import cn.freemud.base.util.JsonUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager; import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager;
...@@ -30,11 +29,13 @@ import com.freemud.application.sdk.api.membercenter.response.GetMemberExtendInfo ...@@ -30,11 +29,13 @@ import com.freemud.application.sdk.api.membercenter.response.GetMemberExtendInfo
import com.freemud.application.sdk.api.membercenter.service.MemberCenterService; import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService; import com.freemud.application.sdk.api.membercenter.service.MemberPropertyService;
import com.freemud.application.sdk.api.membercenter.service.MemberScoreService; import com.freemud.application.sdk.api.membercenter.service.MemberScoreService;
import com.freemud.application.sdk.api.ordercenter.constant.InterfaceAddressConstant;
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.*;
import com.freemud.application.sdk.api.ordercenter.request.create.*; import com.freemud.application.sdk.api.ordercenter.request.create.*;
import com.freemud.application.sdk.api.ordercenter.response.*; import com.freemud.application.sdk.api.ordercenter.response.*;
import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp; import com.freemud.application.sdk.api.ordercenter.response.AfterSalesListResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs;
import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse; import com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse;
import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService; import com.freemud.application.sdk.api.ordercenter.service.OrderDownLoadSdkService;
...@@ -59,7 +60,6 @@ import com.freemud.application.sdk.api.structure.MessageCenterType; ...@@ -59,7 +60,6 @@ import com.freemud.application.sdk.api.structure.MessageCenterType;
import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto; import com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto;
import com.freemud.application.sdk.api.structure.service.MessageCenterClient; import com.freemud.application.sdk.api.structure.service.MessageCenterClient;
import com.freemud.sdk.api.assortment.order.adapter.*; import com.freemud.sdk.api.assortment.order.adapter.*;
import com.freemud.sdk.api.assortment.order.domain.ResponseCodeConstant;
import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo; import com.freemud.sdk.api.assortment.order.entities.OrderEditInfo;
import com.freemud.sdk.api.assortment.order.enums.*; import com.freemud.sdk.api.assortment.order.enums.*;
import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest; import com.freemud.sdk.api.assortment.order.request.order.CreateOrderRequest;
...@@ -71,16 +71,18 @@ import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse; ...@@ -71,16 +71,18 @@ import com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse;
import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService; import com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService;
import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo; import com.freemud.sdk.api.assortment.order.vo.AssortmentOrderProductVo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.mysql.jdbc.log.LogUtils;
import lombok.extern.log4j.Log4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.sql.Timestamp;
import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.freemud.application.sdk.api.membercenter.constant.InterfaceAddressConstant.MEMBER_EXTEND_INFO; import static com.freemud.application.sdk.api.membercenter.constant.InterfaceAddressConstant.MEMBER_EXTEND_INFO;
...@@ -1711,6 +1713,130 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService { ...@@ -1711,6 +1713,130 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
return orderSdkAdapter.convent2UpdatePickUpGoodNo(orderSdkService.updatePickUpGoodNo(orderModifyRelatingCodeReq, trackingNo)); return orderSdkAdapter.convent2UpdatePickUpGoodNo(orderSdkService.updatePickUpGoodNo(orderModifyRelatingCodeReq, trackingNo));
} }
@Override
public QueryPartnerRefundCountResponse queryRefundCount(QueryStoreRefundCountRequest request) {
QueryPartnerRefundCountResponse queryPartnerRefundCountResponse = new QueryPartnerRefundCountResponse();
String trackingNo = LogThreadLocal.getTrackingNo();
// 分页查询es的服务-待处理的退款单
QueryAfterSalesOrderConditionsReq orderQueryRequestDto = new QueryAfterSalesOrderConditionsReq();
orderQueryRequestDto.setPartnerId(request.getPartnerId());
orderQueryRequestDto.setStoreIds(request.getStoreIds());
// 订单的创建时间使用传过来的时间前推2天
orderQueryRequestDto.setStartTimestamp(request.getStartTimestamp() - 172800);
orderQueryRequestDto.setEndTimestamp(request.getEndTimestamp());
orderQueryRequestDto.setStartAfterCreateTimestamp(request.getStartTimestamp());
orderQueryRequestDto.setEndAfterCreateTimestamp(request.getEndTimestamp());
List<Byte> afterSalesStatusList = new ArrayList<>();
afterSalesStatusList.add(new Byte("1"));
orderQueryRequestDto.setAfterSalesStatusList(afterSalesStatusList);
orderQueryRequestDto.setPageNum(null); // pageNum 不传表示滚动查询
orderQueryRequestDto.setPageSize(500);
AfterSalesListResp pageResponse = null;
try {
pageResponse = orderDownLoadSdkService.queryAfterSalesOrderConditions(orderQueryRequestDto, trackingNo);
} catch (Exception e) {
ErrorLog.printErrorLog("查询ES服务商户门店退款订单数量ERR", InterfaceAddressConstant.QUERY_AFT_SALE_ORDER_LIST,request,e);
queryPartnerRefundCountResponse.setErrcode(pageResponse.getCode());
queryPartnerRefundCountResponse.setErrmsg(pageResponse.getMessage());
return queryPartnerRefundCountResponse;
}
if (null == pageResponse || !Objects.equals(RESPONSE_SUCCESS_STR, pageResponse.getCode())) {
ApiLog.info("查询ES服务商户门店退款订单数量ERR", pageResponse.getCode(), pageResponse.getMessage());
queryPartnerRefundCountResponse.setErrcode(pageResponse.getCode());
queryPartnerRefundCountResponse.setErrmsg(pageResponse.getMessage());
return queryPartnerRefundCountResponse;
}
List<Map<String,Long>> storeCountList = new ArrayList<>();
if(CollectionUtils.isEmpty(pageResponse.getResult())){
ApiLog.info("未查询到ES服务商户门店退款订单数量", "", "");
queryPartnerRefundCountResponse.setErrcode(pageResponse.getCode());
queryPartnerRefundCountResponse.setErrmsg(pageResponse.getMessage());
return buildQueryPartnerRefundCountResponse(request,storeCountList);
}
// 统计门店退款单数量
statisticsCount(pageResponse.getResult(),storeCountList);
QueryOrderByScrollRequest scrollRequest = new QueryOrderByScrollRequest();
scrollRequest.setScrollId(pageResponse.getScrollId());
scrollRequest.setVer(1);
try {
while (true) {
BaseDownLoadResponse<List<AfterSalesOrderResp>> scrollResponse = orderDownLoadSdkService.queryAfterSalesOrderByScrollId(scrollRequest, LogThreadLocal.getTrackingNo());
if (!Objects.equals(RESPONSE_SUCCESS_STR, scrollResponse.getCode())) {
break;
}
if (CollectionUtils.isEmpty(scrollResponse.getResult())) {
break;
}
statisticsCount(pageResponse.getResult(),storeCountList);
scrollRequest.setScrollId( scrollResponse.getScrollId());
}
} catch (Exception e) {
ErrorLog.printErrorLog("查询ES服务商户门店退款订单数量ERR", InterfaceAddressConstant.QUERY_AFT_SALE_ORDER_LIST,request,e);
queryPartnerRefundCountResponse = new QueryPartnerRefundCountResponse();
queryPartnerRefundCountResponse.setErrcode(pageResponse.getCode());
queryPartnerRefundCountResponse.setErrmsg(pageResponse.getMessage());
return queryPartnerRefundCountResponse;
}
return buildQueryPartnerRefundCountResponse(request,storeCountList);
}
/**
* 统计每个门店的退款订单数量
* @param afterSalesOrderResp
* @param storeCountList
*/
private void statisticsCount(List<AfterSalesOrderResp> afterSalesOrderResp,List<Map<String,Long>> storeCountList){
Map<String,Long> coutnMap = afterSalesOrderResp.stream().collect(Collectors.groupingBy(AfterSalesOrderResp::getStoreId,Collectors.counting()));
storeCountList.add(coutnMap);
}
/**
* 求和每个门店的退款订单数量
* @param storeId
* @param storeCountList
*/
private Long sumCount(String storeId,List<Map<String,Long>> storeCountList){
Long sumCount = 0L;
for(Map<String,Long> map :storeCountList){
Long count = map.get(storeId);
if(null != count){
sumCount +=count;
}
}
return sumCount;
}
/**
* 构建查询商户退款数量返回值
* @param request
* @param storeCountList
*/
private QueryPartnerRefundCountResponse buildQueryPartnerRefundCountResponse(QueryStoreRefundCountRequest request,List<Map<String,Long>> storeCountList){
QueryPartnerRefundCountResponse queryPartnerRefundCountResponse = new QueryPartnerRefundCountResponse();
QueryPartnerRefundCountResponse.PartnerRefundCount data = new QueryPartnerRefundCountResponse.PartnerRefundCount();
data.setPartnerId(request.getPartnerId());
List<QueryPartnerRefundCountResponse.StoreRefundCount> storeRefundCount = new ArrayList<>();
for(String storeId : request.getStoreIds()){
QueryPartnerRefundCountResponse.StoreRefundCount store = new QueryPartnerRefundCountResponse.StoreRefundCount();
store.setStoreId(storeId);
store.setCount(sumCount(storeId,storeCountList));
storeRefundCount.add(store);
}
data.setStoreRefundCount(storeRefundCount);
queryPartnerRefundCountResponse.setData(data);
queryPartnerRefundCountResponse.setErrcode(RESPONSE_SUCCESS_STR);
queryPartnerRefundCountResponse.setErrmsg("");
return queryPartnerRefundCountResponse;
}
private void setTimeout(BaseQueryOrderRequest baseQueryOrderRequest,POSOrderOperationBaseReq request){ private void setTimeout(BaseQueryOrderRequest baseQueryOrderRequest,POSOrderOperationBaseReq request){
String partnerId = baseQueryOrderRequest.getPartnerId(); String partnerId = baseQueryOrderRequest.getPartnerId();
String storeCode = baseQueryOrderRequest.getShopId(); String storeCode = baseQueryOrderRequest.getShopId();
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<version>1.0.0</version> <version>1.0.0</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<version>1.4.38-SNAPSHOT</version> <version>1.5.0-SNAPSHOT</version>
<artifactId>ordercenter-sdk</artifactId> <artifactId>ordercenter-sdk</artifactId>
<dependencies> <dependencies>
......
...@@ -78,4 +78,9 @@ public class AfterSalesOrderResp { ...@@ -78,4 +78,9 @@ public class AfterSalesOrderResp {
private Integer weight; private Integer weight;
//售后单阶段类型 1:售前 2:售中 3:售后 //售后单阶段类型 1:售前 2:售中 3:售后
private Byte afterSalesStageType; private Byte afterSalesStageType;
/**
* 门店ID
*/
private String storeId;
} }
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