Commit 0aebf8b0 by 徐高华

Merge branch 'feature/xgh/202506迭代' into 'developer'

朋友圈数据

See merge request !3013
parents 4f38bfbd f5a2cb7a
package com.gic.haoban.manage.web.controller.moment;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.web.vo.moment.MomentDataClickVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataClickExcelHandler extends DownloadHandlerAbstract<MomentDataClickVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataClickVO> getData(Context context, String json, Integer currentPage) {
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_mbr_click_detail");
Page page = DataApiUtils.getPageData(res);
List<MomentDataClickVO> voList = EntityUtil.changeEntityListByJSON(MomentDataClickVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataClickVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null != map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet) ;
Map<String, ClerkDTO> clerkMap = this.qwMomentDataController.clerkMap(clerkSet) ;
for (MomentDataClickVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "专属导购姓名", "专属导购code", "所属门店名称", "所属门店code", "点击时间", "停留时长");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "clerkName", "clerkCode", "storeName", "storeCode", "clickTime", "dur");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment;
import com.gic.api.base.commons.Page;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.web.vo.moment.MomentDataMemberVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataMemberExcelHandler extends DownloadHandlerAbstract<MomentDataMemberVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataMemberVO> getData(Context context, String json, Integer currentPage) {
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
List<MomentDataMemberVO> voList = EntityUtil.changeEntityListByJSON(MomentDataMemberVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataMemberVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null != map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o-> StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet) ;
Map<String, ClerkDTO> clerkMap = this.qwMomentDataController.clerkMap(clerkSet) ;
for (MomentDataMemberVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "专属导购姓名", "专属导购code", "所属门店名称", "所属门店code", "转化金额");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "clerkName", "clerkCode", "storeName", "storeCode", "matlConvsAmt");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.EntityUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.web.vo.moment.MomentDataOrderVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.web.common.download.DownloadHandlerAbstract;
import com.gic.web.common.download.context.Context;
import com.gic.web.common.utils.DataApiUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
@Service
public class MomentDataOrderExcelHandler extends DownloadHandlerAbstract<MomentDataOrderVO> {
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private QwMomentDataController qwMomentDataController ;
@Override
public List<MomentDataOrderVO> getData(Context context, String json, Integer currentPage) {
Map<String, Object> res = DataApiUtils.http(json, "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
List<MomentDataOrderVO> voList = EntityUtil.changeEntityListByJSON(MomentDataOrderVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o -> o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(), memberIdList);
for (MomentDataOrderVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if (null != map.get(memberId)) {
vo.setMemberScene(2);
} else {
MemberDataDTO data = map.get(memberId);
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setMemberScene(3);
}
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByChannelCode(vo.getChannelCode()) ;
if(null != channel) {
vo.setChannelName(channel.getChannelName());
}
}
Set<String> storeSet = voList.stream().filter(o -> StringUtils.isNotBlank(o.getOrderStoreId()) && !"-1".equals(o.getOrderStoreId())).map(o -> o.getOrderStoreId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.qwMomentDataController.storeMap(storeSet);
for (MomentDataOrderVO vo : voList) {
if (null != storeMap.get(vo.getOrderStoreId())) {
vo.setOrderStoreCode(storeMap.get(vo.getOrderStoreId()).getStoreCode());
vo.setOrderStoreName(storeMap.get(vo.getOrderStoreId()).getStoreName());
}
}
}
return voList ;
}
@Override
public List<String> getColumnNames() {
return Arrays.asList();
}
@Override
public List<String> getColumnNames(Context context) {
return Arrays.asList("会员姓名", "会员昵称", "手机号", "会员卡号", "订单渠道", "订单编号", "订单实付金额", "消费门店名称", "消费门店 code", "下单时间");
}
@Override
public List<String> getColumns(Context context) {
return Arrays.asList("memberName", "memberNick", "memberPhone", "memberCardNo", "channelName", "orderCode", "matlConvsAmt", "orderStoreName", "orderStoreCode", "orderTime");
}
@Override
public LinkedHashMap<String, List<String>> doubleColumnNames() {
return null;
}
@Override
public List<String> getColumns() {
return Arrays.asList();
}
}
package com.gic.haoban.manage.web.controller.moment; package com.gic.haoban.manage.web.controller.moment;
import cn.hutool.core.date.DatePattern;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.Page; import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.DateUtil;
import com.gic.commons.util.EntityUtil;
import com.gic.commons.webapi.reponse.RestResponse; import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.enums.PlatformChannelEnum;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO; import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
import com.gic.haoban.common.utils.AuthWebRequestUtil; import com.gic.haoban.common.utils.AuthWebRequestUtil;
import com.gic.haoban.manage.api.dto.moment.QwMomentPlanDTO;
import com.gic.haoban.manage.api.service.moment.QwMomentApiService;
import com.gic.haoban.manage.web.qo.moment.MomentDataQO; import com.gic.haoban.manage.web.qo.moment.MomentDataQO;
import com.gic.haoban.manage.web.vo.moment.MomentDataClickVO; import com.gic.haoban.manage.web.vo.moment.MomentDataClickVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataMemberVO; import com.gic.haoban.manage.web.vo.moment.MomentDataMemberVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataOrderVO; import com.gic.haoban.manage.web.vo.moment.MomentDataOrderVO;
import com.gic.haoban.manage.web.vo.moment.MomentDataVO; import com.gic.haoban.manage.web.vo.moment.MomentDataVO;
import com.gic.member.api.dto.es.MemberDataDTO;
import com.gic.qcloud.BucketNameEnum;
import com.gic.web.common.download.DownloadTask;
import com.gic.web.common.download.DownloadTaskUtil;
import com.gic.web.common.download.constants.TaskTypeEnum;
import com.gic.web.common.utils.DataApiUtils; import com.gic.web.common.utils.DataApiUtils;
import com.gic.web.common.utils.SessionContextUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Map; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 企微朋友圈-数据 * 企微朋友圈-数据
...@@ -28,16 +52,27 @@ public class QwMomentDataController { ...@@ -28,16 +52,27 @@ public class QwMomentDataController {
private static Logger logger = LogManager.getLogger(QwMomentDataController.class); private static Logger logger = LogManager.getLogger(QwMomentDataController.class);
@Autowired
private QwMomentController qwMomentController ;
@Autowired
private StoreService storeService ;
@Autowired
private ClerkService clerkService ;
@Autowired
private QwMomentApiService qwMomentApiService ;
@Autowired
private MomentDataClickExcelHandler momentDataClickExcelHandler ;
@Autowired
private MomentDataOrderExcelHandler momentDataOrderExcelHandler ;
@Autowired
private MomentDataMemberExcelHandler momentDataMemberExcelHandler ;
/** /**
* 概览 * 概览
*/ */
@RequestMapping("data_qw_moment_plan_overview") @RequestMapping("data_qw_moment_plan_overview")
public RestResponse<MomentDataVO> data(@RequestBody MomentDataQO qo) { public RestResponse<MomentDataVO> data(@RequestBody MomentDataQO qo) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser(); JSONObject json = this.paramsJson(qo) ;
String enterpriseId = user.getEnterpriseId();
JSONObject json = new JSONObject();
json.put("planId", qo.getPlanId()) ;
json.put("enterpriseId",enterpriseId) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_plan_overview"); Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_plan_overview");
JSONObject data = DataApiUtils.getPageOne(res); JSONObject data = DataApiUtils.getPageOne(res);
MomentDataVO vo = new MomentDataVO(); MomentDataVO vo = new MomentDataVO();
...@@ -55,7 +90,51 @@ public class QwMomentDataController { ...@@ -55,7 +90,51 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_mbr_detail") @RequestMapping("data_qw_moment_mbr_detail")
public RestResponse<Page<MomentDataMemberVO>> memberData(@RequestBody MomentDataQO qo) { public RestResponse<Page<MomentDataMemberVO>> memberData(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataMemberVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataMemberVO> voList = EntityUtil.changeEntityListByJSON(MomentDataMemberVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataMemberVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null != map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.storeMap(storeSet) ;
Map<String,ClerkDTO> clerkMap = this.clerkMap(clerkSet) ;
for (MomentDataMemberVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
} }
/** /**
...@@ -63,7 +142,35 @@ public class QwMomentDataController { ...@@ -63,7 +142,35 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_mbr_detail_excel") @RequestMapping("data_qw_moment_mbr_detail_excel")
public RestResponse<String> memberDataExcel(@RequestBody MomentDataQO qo) { public RestResponse<String> memberDataExcel(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-转化明细"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
task.setSearchDataParams(JSON.toJSONStringWithDateFormat(qo, DatePattern.NORM_DATETIME_PATTERN));
task.setHandler(momentDataMemberExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
} }
/** /**
...@@ -71,7 +178,47 @@ public class QwMomentDataController { ...@@ -71,7 +178,47 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_order_detail") @RequestMapping("data_qw_moment_order_detail")
public RestResponse<Page<MomentDataOrderVO>> orderData(@RequestBody MomentDataQO qo) { public RestResponse<Page<MomentDataOrderVO>> orderData(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataOrderVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataOrderVO> voList = EntityUtil.changeEntityListByJSON(MomentDataOrderVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o -> o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(), memberIdList);
for (MomentDataOrderVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if (null != map.get(memberId)) {
vo.setMemberScene(2);
} else {
MemberDataDTO data = map.get(memberId);
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setMemberScene(3);
}
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByChannelCode(vo.getChannelCode()) ;
if(null != channel) {
vo.setChannelName(channel.getChannelName());
}
}
Set<String> storeSet = voList.stream().filter(o -> StringUtils.isNotBlank(o.getOrderStoreId()) && !"-1".equals(o.getOrderStoreId())).map(o -> o.getOrderStoreId()).collect(Collectors.toSet());
Map<String, StoreDTO> storeMap = this.storeMap(storeSet);
for (MomentDataOrderVO vo : voList) {
if (null != storeMap.get(vo.getOrderStoreId())) {
vo.setOrderStoreCode(storeMap.get(vo.getOrderStoreId()).getStoreCode());
vo.setOrderStoreName(storeMap.get(vo.getOrderStoreId()).getStoreName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
} }
/** /**
...@@ -79,7 +226,35 @@ public class QwMomentDataController { ...@@ -79,7 +226,35 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_order_detail_excel") @RequestMapping("data_qw_moment_order_detail_excel")
public RestResponse<String> orderDataExcel(@RequestBody MomentDataQO qo) { public RestResponse<String> orderDataExcel(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_order_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-转化订单"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
task.setSearchDataParams(JSON.toJSONStringWithDateFormat(qo, DatePattern.NORM_DATETIME_PATTERN));
task.setHandler(momentDataOrderExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
} }
/** /**
...@@ -87,7 +262,51 @@ public class QwMomentDataController { ...@@ -87,7 +262,51 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_mbr_click_detail") @RequestMapping("data_qw_moment_mbr_click_detail")
public RestResponse<Page<MomentDataClickVO>> clerkData(@RequestBody MomentDataQO qo) { public RestResponse<Page<MomentDataClickVO>> clerkData(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_click_detail");
Page page = DataApiUtils.getPageData(res);
Page<MomentDataClickVO> retPage = EntityUtil.changeEntityByJSON(Page.class, page);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.successResult(retPage);
}
List<MomentDataClickVO> voList = EntityUtil.changeEntityListByJSON(MomentDataClickVO.class, page.getResult());
if(CollectionUtils.isNotEmpty(voList)) {
List<String> memberIdList = voList.stream().map(o->o.getMbrId()).collect(Collectors.toList());
Map<String, MemberDataDTO> map = this.qwMomentController.getMemberMap(AuthWebRequestUtil.getLoginUser().getEnterpriseId(),memberIdList) ;
for (MomentDataClickVO vo : voList) {
String memberId = vo.getMbrId();
vo.setMemberId(memberId);
if(null != map.get(memberId)) {
vo.setMemberScene(2);
}else {
MemberDataDTO data = map.get(memberId) ;
vo.setMemberName(data.getName());
vo.setMemberNick(data.getNickName());
vo.setMemberCardNo(data.getCardNo());
vo.setMemberPhone(data.getPhoneNumber());
vo.setMemberImage(data.getDefineHeadImg());
vo.setClerkId(data.getMainClerkId());
vo.setStoreId(data.getMainStoreId());
vo.setMemberScene(3);
}
}
Set<String> storeSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getStoreId()) && !"-1".equals(o.getStoreId())).map(o->o.getStoreId()).collect(Collectors.toSet()) ;
Set<String> clerkSet = voList.stream().filter(o->StringUtils.isNotBlank(o.getClerkId()) && !"-1".equals(o.getClerkId())).map(o->o.getClerkId()).collect(Collectors.toSet());
Map<String,StoreDTO> storeMap = this.storeMap(storeSet) ;
Map<String,ClerkDTO> clerkMap = this.clerkMap(clerkSet) ;
for (MomentDataClickVO vo : voList) {
if(null != storeMap.get(vo.getStoreId())) {
vo.setStoreCode(storeMap.get(vo.getStoreId()).getStoreCode());
vo.setStoreName(storeMap.get(vo.getStoreId()).getStoreName());
}
if(null != clerkMap.get(vo.getClerkId())) {
vo.setClerkCode(clerkMap.get(vo.getClerkId()).getClerkCode());
vo.setClerkName(clerkMap.get(vo.getClerkId()).getClerkName());
}
}
}
retPage.setResult(voList);
return RestResponse.successResult(retPage);
} }
/** /**
...@@ -95,6 +314,81 @@ public class QwMomentDataController { ...@@ -95,6 +314,81 @@ public class QwMomentDataController {
*/ */
@RequestMapping("data_qw_moment_mbr_click_detail_excel") @RequestMapping("data_qw_moment_mbr_click_detail_excel")
public RestResponse<String> clerkDataExcel(@RequestBody MomentDataQO qo) { public RestResponse<String> clerkDataExcel(@RequestBody MomentDataQO qo) {
return RestResponse.successResult(null); JSONObject json = this.paramsJson(qo) ;
json.put("pageSize",1) ;
Map<String, Object> res = DataApiUtils.http(json.toJSONString(), "data_qw_moment_mbr_click_detail");
Page page = DataApiUtils.getPageData(res);
if (CollectionUtils.isEmpty(page.getResult())) {
return RestResponse.failure("9999", "导出数据条数为0");
}
AuthorizedUser loginUser = SessionContextUtils.getLoginUser() ;
DownloadTask task = new DownloadTask();
task.setTaskTypeEnum(TaskTypeEnum.QYWX_MOMENT);
task.setUser(loginUser);
task.setDataType(qo.getDataType());
task.setTotalCount(page.getTotalCount());
ServiceResponse<QwMomentPlanDTO> resp = this.qwMomentApiService.detail(qo.getPlanId()) ;
String date = DateUtil.dateToStr(new Date(),"yyyy-MM-dd HH:mm:ss") ;
String fileName = "企微朋友圈-"+resp.getResult().getTitle()+"-客户明细-点击明细"+date ;
task.setFileName(fileName);
task.setChannelName(TaskTypeEnum.QYWX_MOMENT.getName());
task.setBucketName(BucketNameEnum.REPORT_50000.getName());
task.setSearchDataParams(JSON.toJSONStringWithDateFormat(qo, DatePattern.NORM_DATETIME_PATTERN));
task.setHandler(momentDataClickExcelHandler);
JSONResponse jsonResponse = DownloadTaskUtil.createDownloadTask(task);
final String reportId;
if (jsonResponse.isSuccess()) {
reportId = (String) jsonResponse.getResult();
} else {
return RestResponse.failure("9999", jsonResponse.getErrorMessage());
}
return RestResponse.successResult(reportId);
}
private JSONObject paramsJson(MomentDataQO qo) {
WebLoginDTO user = AuthWebRequestUtil.getLoginUser();
String enterpriseId = user.getEnterpriseId();
JSONObject json = new JSONObject();
json.put("planId", qo.getPlanId()) ;
json.put("enterpriseId",enterpriseId) ;
json.put("pageNum",qo.getPageNum()) ;
json.put("pageSize",qo.getPageSize()) ;
if(StringUtils.isNotBlank(qo.getMemberId())) {
json.put("mbrId",qo.getMemberId()) ;
}
if(StringUtils.isNotBlank(qo.getOrderNumber())) {
json.put("orderCode",qo.getOrderNumber()) ;
}
if(StringUtils.isNotBlank(qo.getOrderChannel())) {
PlatformChannelEnum channel = PlatformChannelEnum.getEnumByOldOrderType(Integer.valueOf(qo.getOrderChannel())) ;
if(null != channel) {
json.put("channelCode", channel.getChannelCode());
}
}
return json ;
}
public Map<String, StoreDTO> storeMap(Set<String> storeIdList) {
List<String> list = new ArrayList<>() ;
list.addAll(storeIdList) ;
Map<String, StoreDTO> storeMap = new HashMap<>();
if (CollectionUtils.isNotEmpty(storeIdList)) {
List<StoreDTO> mainStoreList = storeService.queryStore(list);
if (CollectionUtils.isNotEmpty(mainStoreList)) {
storeMap = mainStoreList.stream().collect(Collectors.toMap(e -> e.getStoreId(), e -> e));
}
}
return storeMap ;
}
public Map<String, ClerkDTO> clerkMap(Set<String> clerkIdList) {
Map<String, ClerkDTO> clerkMap = new HashMap<>();
List<ClerkDTO> mainClerkList = clerkService.getClerkByClerkIds(clerkIdList);
if (CollectionUtils.isNotEmpty(mainClerkList)) {
clerkMap = mainClerkList.stream().collect(Collectors.toMap(e -> e.getClerkId(), e -> e));
}
return clerkMap ;
} }
} }
...@@ -20,6 +20,16 @@ public class MomentDataQO extends BasePageInfo implements Serializable { ...@@ -20,6 +20,16 @@ public class MomentDataQO extends BasePageInfo implements Serializable {
*/ */
private String orderNumber ; private String orderNumber ;
private Integer dataType ;
public Integer getDataType() {
return dataType;
}
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
public Long getPlanId() { public Long getPlanId() {
return planId; return planId;
} }
......
...@@ -8,6 +8,7 @@ import java.io.Serializable; ...@@ -8,6 +8,7 @@ import java.io.Serializable;
public class MomentDataClickVO implements Serializable { public class MomentDataClickVO implements Serializable {
private String mbrId ;
private String memberId ; private String memberId ;
/** /**
* 会员名称 * 会员名称
...@@ -30,6 +31,8 @@ public class MomentDataClickVO implements Serializable { ...@@ -30,6 +31,8 @@ public class MomentDataClickVO implements Serializable {
@JsonSerialize(using = PhoneNumberJsonSeralizer.class) @JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone; private String memberPhone;
private String storeId ;
private String clerkId ;
private String clerkCode; private String clerkCode;
private String clerkName; private String clerkName;
private String storeName; private String storeName;
...@@ -43,6 +46,42 @@ public class MomentDataClickVO implements Serializable { ...@@ -43,6 +46,42 @@ public class MomentDataClickVO implements Serializable {
*/ */
private String clickTime ; private String clickTime ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() { public String getMemberId() {
return memberId; return memberId;
} }
......
...@@ -8,6 +8,7 @@ import java.io.Serializable; ...@@ -8,6 +8,7 @@ import java.io.Serializable;
public class MomentDataMemberVO implements Serializable { public class MomentDataMemberVO implements Serializable {
private String mbrId ;
private String memberId ; private String memberId ;
/** /**
* 会员名称 * 会员名称
...@@ -30,6 +31,8 @@ public class MomentDataMemberVO implements Serializable { ...@@ -30,6 +31,8 @@ public class MomentDataMemberVO implements Serializable {
@JsonSerialize(using = PhoneNumberJsonSeralizer.class) @JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone; private String memberPhone;
private String storeId ;
private String clerkId ;
private String clerkCode; private String clerkCode;
private String clerkName; private String clerkName;
private String storeName; private String storeName;
...@@ -39,6 +42,43 @@ public class MomentDataMemberVO implements Serializable { ...@@ -39,6 +42,43 @@ public class MomentDataMemberVO implements Serializable {
*/ */
private Double matlConvsAmt ; private Double matlConvsAmt ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getClerkId() {
return clerkId;
}
public void setClerkId(String clerkId) {
this.clerkId = clerkId;
}
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() { public String getMemberId() {
return memberId; return memberId;
} }
......
...@@ -8,6 +8,7 @@ import java.io.Serializable; ...@@ -8,6 +8,7 @@ import java.io.Serializable;
public class MomentDataOrderVO implements Serializable { public class MomentDataOrderVO implements Serializable {
private String mbrId ;
private String memberId ; private String memberId ;
/** /**
* 会员名称 * 会员名称
...@@ -30,11 +31,6 @@ public class MomentDataOrderVO implements Serializable { ...@@ -30,11 +31,6 @@ public class MomentDataOrderVO implements Serializable {
@JsonSerialize(using = PhoneNumberJsonSeralizer.class) @JsonSerialize(using = PhoneNumberJsonSeralizer.class)
private String memberPhone; private String memberPhone;
private String clerkCode;
private String clerkName;
private String storeName;
private String storeCode;
/** /**
* 订单渠道 * 订单渠道
*/ */
...@@ -64,6 +60,26 @@ public class MomentDataOrderVO implements Serializable { ...@@ -64,6 +60,26 @@ public class MomentDataOrderVO implements Serializable {
*/ */
private String orderTime ; private String orderTime ;
/**
* 1:非会员 2:会员已注销 3:正常
*/
private Integer memberScene;
public Integer getMemberScene() {
return memberScene;
}
public void setMemberScene(Integer memberScene) {
this.memberScene = memberScene;
}
public String getMbrId() {
return mbrId;
}
public void setMbrId(String mbrId) {
this.mbrId = mbrId;
}
public String getMemberId() { public String getMemberId() {
return memberId; return memberId;
} }
...@@ -112,38 +128,6 @@ public class MomentDataOrderVO implements Serializable { ...@@ -112,38 +128,6 @@ public class MomentDataOrderVO implements Serializable {
this.memberPhone = memberPhone; this.memberPhone = memberPhone;
} }
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getStoreName() {
return storeName;
}
public void setStoreName(String storeName) {
this.storeName = storeName;
}
public String getStoreCode() {
return storeCode;
}
public void setStoreCode(String storeCode) {
this.storeCode = storeCode;
}
public String getChannelCode() { public String getChannelCode() {
return channelCode; return channelCode;
} }
......
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