Commit f64314e1 by guojx

流失数据接口

parent 1f5a85d1
package com.gic.haoban.manage.web.handle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.DataApiUtils;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.utils.data.StoreAuthUtils;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkLostClerkVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
/**
* 数据-企微数据-流失好友-导购
*/
@Component
public class WechatWorkLostClerkHandle extends DownloadHandlerAbstract<WechatWorkLostClerkVO> {
private static final Logger LOGGER = LogManager.getLogger(WechatWorkLostClerkHandle.class);
@Autowired
private StoreAuthUtils storeAuthUtils;
@Override
public List<WechatWorkLostClerkVO> getData(Context context, String searchDataParams, Integer currentPage) {
boolean isFirst = currentPage != null && currentPage == 1;
if (isFirst) {
LOGGER.info("数据-企微数据-流失好友-导购导出日志");
}
JSONObject jsonObject = JSON.parseObject(searchDataParams);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mbr_scale_haoban_background_loss_statisti");
List<JSONObject> list = DataApiUtils.getPageList(res);
jsonObject.put("groupType", 1);
jsonObject.put("storeGroup", 8);
JSONObject total = storeAuthUtils.getTotalJson(jsonObject, "data_mbr_scale_haoban_background_loss_statisti");
if (list == null) {
list = new ArrayList<>();
}
if (total != null) {
storeAuthUtils.setChannelGroupList(total);
list.add(0, total);
}
if (CollectionUtils.isNotEmpty(list)) {
List<WechatWorkLostClerkVO> result = JSONObject.parseArray(JSON.toJSONString(list), WechatWorkLostClerkVO.class);
return result;
}
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames(Context context){
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
}
package com.gic.haoban.manage.web.handle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.DataApiUtils;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.utils.data.StoreAuthUtils;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkLostDetailVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 数据-企微数据-流失好友-明细
*/
@Component
public class WechatWorkLostDetailHandle extends DownloadHandlerAbstract<WechatWorkLostDetailVO> {
private static final Logger LOGGER = LogManager.getLogger(WechatWorkLostDetailHandle.class);
@Autowired
private StoreAuthUtils storeAuthUtils;
@Override
public List<WechatWorkLostDetailVO> getData(Context context, String searchDataParams, Integer currentPage) {
boolean isFirst = currentPage != null && currentPage == 1;
if (isFirst) {
LOGGER.info("数据-企微数据-流失好友-明细导出日志");
}
JSONObject jsonObject = JSON.parseObject(searchDataParams);
Map<String, Object> res = DataApiUtils.http(jsonObject.toJSONString(), "data_mbr_scale_haoban_background_loss_detail");
List<JSONObject> list = DataApiUtils.getPageList(res);
if (CollectionUtils.isNotEmpty(list)) {
List<WechatWorkLostDetailVO> result = JSONObject.parseArray(JSON.toJSONString(list), WechatWorkLostDetailVO.class);
return result;
}
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames(Context context){
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
}
package com.gic.haoban.manage.web.handle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.enterprise.api.dto.security.DownloadReportDTO;
import com.gic.haoban.manage.web.utils.data.StoreAuthUtils;
import com.gic.haoban.manage.web.vo.wechatwork.WechatWorkLostStoreGroupVO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
/**
* 数据-企微数据-流失好友
*/
@Component
public class WechatWorkLostStoreGroupHandle extends DownloadHandlerAbstract<WechatWorkLostStoreGroupVO> {
private static final Logger LOGGER = LogManager.getLogger(WechatWorkLostStoreGroupHandle.class);
@Autowired
private StoreAuthUtils storeAuthUtils;
@Override
public List<WechatWorkLostStoreGroupVO> getData(Context context, String searchDataParams, Integer currentPage) {
List<JSONObject> list = storeAuthUtils.getDataCommon(searchDataParams, currentPage,
"数据-企微数据-流失好友导出日志进来", getPageSize(), false).getRows();
if (CollectionUtils.isNotEmpty(list)) {
List<WechatWorkLostStoreGroupVO> result = JSONObject.parseArray(JSON.toJSONString(list), WechatWorkLostStoreGroupVO.class);
return result;
}
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumnNames(Context context){
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("indexList");
return list;
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Collections.EMPTY_LIST;
}
@Override
public List<String> getColumns(Context context) {
DownloadReportDTO downloadReportDTO = context.getDownloadReportDTO();
String searchDataParams = downloadReportDTO.getSearchDataParams();
JSONObject jsonObject = JSONObject.parseObject(searchDataParams);
List<String> list = (List<String>) jsonObject.get("fieldList");
return list;
}
}
package com.gic.haoban.manage.web.qo.wechatwork;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/22 9:16
*/
@Data
@Accessors(chain = true)
public class StoreGroupCommonQO implements Serializable {
/**
* 门店code/名称
*/
private String storeSearchParam;
/**
* 可以多选,英文逗号隔开。优先级高于storeId
*/
private String storeGroupId;
/**
* 可以多选,英文逗号隔开
*/
private String storeId;
/**
* 分组下钻的时候,当前点击的分组id参数.如果是无归属,则值是-1
* @return
*/
private String nextStoreGroupId;
/**
* 因为存在nextStoreGroupId = -1的无归属分组。当下钻无归属,值为无归属上一层级的分组id。如果为空,说明上一层级是所有哦门店,否则必有值
*/
private String preStoreGroupId;
/**
* 分组维度查询,勾选展示门店 1:是
*/
private Integer showStore;
public boolean isRecycle() {
return "-3".equals(nextStoreGroupId);
}
public boolean isNoBelongStoreGroup() {
return "-1".equals(nextStoreGroupId);
}
public boolean isSelectStore() {
return showStore != null && showStore == 1;
}
}
package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* @Author guojx
* @Date 2024/5/21 14:12
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkLostClerkQO implements Serializable {
/**
* yyyy-MM-dd
*/
private String startDate;
/**
* yyyy-MM-dd
*/
private String endDate;
/**
* 门店名称/code
*/
private String vagueQueryStore;
/**
* 导购名称/code
*/
private String vagueQueryClerk;
/**
* 排序类型 1 正序 2 倒序
*/
private Integer orderByType;
/**
* 排序字段名称
*/
private String orderByFields;
private Integer pageNum;
private Integer pageSize;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType = 1;
/**
* 下载导出参数:为了兼容前端传参
*/
private String requestProject;
public Integer getDataApiOrderField() {
Map<String, Integer> map = new HashMap<>(8);
map.put("onewayFriendNum", 1);
map.put("totalLostNum", 2);
map.put("deleteSalesNum", 3);
map.put("salesDeleteNum", 4);
return map.get(orderByFields) == null ? 1 : map.get(orderByFields);
}
public void dealWithParam(JSONObject jsonObject) {
if (jsonObject == null) {
jsonObject = new JSONObject();
}
if (StringUtils.isNotBlank(startDate)) {
jsonObject.put("startDate", startDate);
}
if (StringUtils.isNotBlank(endDate)) {
jsonObject.put("endDate", endDate);
}
if (orderByType != null) {
jsonObject.put("orderByType", orderByType);
}
if (orderByFields != null) {
jsonObject.put("orderByFields", getDataApiOrderField());
}
jsonObject.put("pageNum", pageNum);
jsonObject.put("pageSize", pageNum);
if (StringUtils.isNotBlank(vagueQueryClerk)) {
jsonObject.put("vagueQueryClerk", vagueQueryClerk);
}
if (StringUtils.isNotBlank(vagueQueryStore)) {
jsonObject.put("vagueQueryStore", vagueQueryStore);
}
}
}
package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* @Author guojx
* @Date 2024/5/21 14:12
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkLostDetailQO implements Serializable {
/**
* yyyy-MM-dd
*/
private String startDate;
/**
* yyyy-MM-dd
*/
private String endDate;
/**
* 用户模糊
*/
private String vagueQueryUser;
/**
* 导购名称/code
*/
private String vagueQueryClerk;
/**
* 是/否
* 是否已解除双向好友
*/
private String isDelete;
/**
* 导购删除好友/好友删除导购
* 删除类型
*/
private String deleteType;
/**
* 排序类型 1 正序 2 倒序
*/
private Integer orderByType;
/**
* 排序字段名称
*/
private String orderByFields;
private Integer pageNum;
private Integer pageSize;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType = 1;
/**
* 下载导出参数:为了兼容前端传参
*/
private String requestProject;
public Integer getDataApiOrderField() {
Map<String, Integer> map = new HashMap<>(8);
map.put("remainDays", 1);
return map.get(orderByFields) == null ? 1 : map.get(orderByFields);
}
public void dealWithParam(JSONObject jsonObject) {
if (jsonObject == null) {
jsonObject = new JSONObject();
}
if (StringUtils.isNotBlank(startDate)) {
jsonObject.put("startDate", startDate);
}
if (StringUtils.isNotBlank(endDate)) {
jsonObject.put("endDate", endDate);
}
if (orderByType != null) {
jsonObject.put("orderByType", orderByType);
}
if (orderByFields != null) {
jsonObject.put("orderByFields", getDataApiOrderField());
}
jsonObject.put("pageNum", pageNum);
jsonObject.put("pageSize", pageNum);
if (StringUtils.isNotBlank(vagueQueryClerk)) {
jsonObject.put("vagueQueryClerk", vagueQueryClerk);
}
if (StringUtils.isNotBlank(vagueQueryUser)) {
jsonObject.put("vagueQueryUser", vagueQueryUser);
}
if (StringUtils.isNotBlank(isDelete)) {
jsonObject.put("isDelete", isDelete);
}
if (StringUtils.isNotBlank(deleteType)) {
jsonObject.put("deleteType", deleteType);
}
}
}
......@@ -11,7 +11,7 @@ import java.io.Serializable;
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkLostOverviewQO extends StoreCommonQO implements Serializable {
public class WechatWorkLostOverviewQO implements Serializable {
/**
* yyyy-MM-dd
*/
......@@ -21,4 +21,9 @@ public class WechatWorkLostOverviewQO extends StoreCommonQO implements Serializa
* yyyy-MM-dd
*/
private String endDate;
/**
* 分组ID,支持多选,英文逗号隔开
*/
private String storeGroupId;
}
package com.gic.haoban.manage.web.qo.wechatwork;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* @Author guojx
* @Date 2024/5/22 9:27
*/
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class WechatWorkLostStoreGroupQO extends StoreGroupCommonQO implements Serializable {
/**
* 开始日期, 非日类型的时候。根据数据组api文档
*/
private String startDate;
/**
* 结束日期, 非日类型的时候。根据数据组api文档
*/
private String endDate;
/**
* 排序类型 1 正序 2 倒序
*/
private Integer orderByType;
/**
* 排序字段名称
*/
private String orderByFields;
private Integer pageNum;
private Integer pageSize;
/**
* 下载导出参数:数据脱敏 1:脱敏 2:完整
*/
private Integer dataType = 1;
/**
* 下载导出参数:为了兼容前端传参
*/
private String requestProject;
public Integer getDataApiOrderField() {
Map<String, Integer> map = new HashMap<>(8);
map.put("onewayFriendNum", 1);
map.put("totalLostNum", 2);
map.put("deleteSalesNum", 3);
map.put("salesDeleteNum", 4);
return map.get(orderByFields) == null ? 1 : map.get(orderByFields);
}
public void dealWithParam(JSONObject jsonObject) {
if (jsonObject == null) {
jsonObject = new JSONObject();
}
if (StringUtils.isNotBlank(startDate)) {
jsonObject.put("startDate", startDate);
}
if (StringUtils.isNotBlank(endDate)) {
jsonObject.put("endDate", endDate);
}
if (orderByType != null) {
jsonObject.put("orderByType", orderByType);
}
if (orderByFields != null) {
jsonObject.put("orderByFields", getDataApiOrderField());
}
jsonObject.put("pageNum", pageNum);
jsonObject.put("pageSize", pageNum);
}
}
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Author guojx
* @Date 2024/1/11 14:22
*/
@Data
public class DataPageVO<T> implements Serializable {
private Integer pageNum;
private Integer pageSize;
private List<T> rows;
private Integer totalNum;
}
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/22 9:35
*/
@Data
public class StoreGroupCommonVO implements Serializable {
private String storeGroupId;
private String storeGroupName;
private String storeId;
private String storeName;
private String storeCode;
private String parentStoreGroupName;
}
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/21 15:56
*/
@Data
public class WechatWorkLostClerkVO extends StoreGroupCommonVO implements Serializable {
/**
* 单向好友人数
*/
private Integer onewayFriendNum;
/**
* 总流失人数
*/
private Integer totalLostNum;
/**
* 删除导购人数
*/
private Integer deleteSalesNum;
/**
* 导购删除好友人数
*/
private Integer salesDeleteNum;
private String clerkCode;
private String clerkName;
private String clerkId;
}
package com.gic.haoban.manage.web.vo.wechatwork;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.gic.web.common.jsonSeralizer.PhoneNumberJsonSeralizer;
import com.gic.web.common.jsonSeralizer.UserNameJsonSeralizer;
import lombok.Data;
import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/21 15:56
*/
@Data
public class WechatWorkLostDetailVO extends StoreGroupCommonVO implements Serializable {
/**
* 删除类型
*/
private String deleteType;
/**
* 留存天数
*/
private Integer remainDays;
/**
* 是否已经解除双向好友
*/
private String isDelete;
/**
* 添加好友时间
*/
private String addTime;
/**
* 最近消费时间
*/
private String lastCsmeDate;
/**
* 删除时间
*/
private String deleteTime;
private String clerkCode;
private String clerkName;
private String clerkId;
/**
* 客户姓名
*/
@JsonSerialize(using = UserNameJsonSeralizer.class)
private String memberName;
/**
* 客户手机号
*/
@JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone;
/**
* 会员昵称
*/
private String memberNick;
/**
* 会员id -1:不存在
*/
private String memberId;
}
package com.gic.haoban.manage.web.qo.wechatwork;
package com.gic.haoban.manage.web.vo.wechatwork;
import lombok.Data;
......@@ -6,23 +6,28 @@ import java.io.Serializable;
/**
* @Author guojx
* @Date 2024/5/21 15:43
* @Date 2024/5/21 15:56
*/
@Data
public class StoreCommonQO implements Serializable {
public class WechatWorkLostStoreGroupVO extends StoreGroupCommonVO implements Serializable {
/**
* 分组ID,支持多选,英文逗号隔开
* 单向好友人数
*/
private String storeGroupId;
private Integer onewayFriendNum;
/**
* 门店code/名称
* 总流失人数
*/
private String storeSearchParam;
private Integer totalLostNum;
/**
* 门店ID
* 删除导购人数
*/
private String storeId;
private Integer deleteSalesNum;
/**
* 导购删除好友人数
*/
private Integer salesDeleteNum;
}
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