|
|
|
@ -1,21 +1,22 @@
|
|
|
|
|
package com.kiisoo.ic.customer.service;
|
|
|
|
|
|
|
|
|
|
import com.kiisoo.ic.customer.entity.CustomerViewVO;
|
|
|
|
|
import com.kiisoo.ic.customer.entity.OpCustomer;
|
|
|
|
|
import com.kiisoo.ic.customer.entity.OpVip;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.kiisoo.ic.customer.entity.*;
|
|
|
|
|
import com.kiisoo.ic.customer.mapper.OpCustomerDOMapper;
|
|
|
|
|
import com.kiisoo.ic.customer.mapper.OpVipDOMapper;
|
|
|
|
|
import com.kiisoo.ic.domain.service.PrivilageDomainService;
|
|
|
|
|
import com.kiisoo.ic.generalize.entity.PoiCustomerContactDataStat;
|
|
|
|
|
import com.kiisoo.ic.generalize.mapper.PoiCustomerContactDataStatMapper;
|
|
|
|
|
import com.kiisoo.ic.store.entity.PoiStore;
|
|
|
|
|
import com.kiisoo.ic.store.service.PoiStoreService;
|
|
|
|
|
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicLong;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -29,8 +30,10 @@ import java.util.stream.Collectors;
|
|
|
|
|
@Service
|
|
|
|
|
public class CustomerViewService {
|
|
|
|
|
|
|
|
|
|
/**零*/
|
|
|
|
|
static final Long ZERO_L= 0L;
|
|
|
|
|
/**有效*/
|
|
|
|
|
static final Integer VALID = 1;
|
|
|
|
|
|
|
|
|
|
static final Integer TEN = 10;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户权限mapper
|
|
|
|
@ -42,7 +45,7 @@ public class CustomerViewService {
|
|
|
|
|
* 店铺mapper
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PoiStoreService poiStoreService;
|
|
|
|
|
private PoiStoreDOMapper poiStoreDOMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 客户mapper
|
|
|
|
@ -50,6 +53,12 @@ public class CustomerViewService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private OpCustomerDOMapper opCustomerDOMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 拉黑mapper
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* vip mapper
|
|
|
|
|
*/
|
|
|
|
@ -59,137 +68,204 @@ public class CustomerViewService {
|
|
|
|
|
/**
|
|
|
|
|
* 客户概览main
|
|
|
|
|
* @param userId 用户id
|
|
|
|
|
* @param organizationId 零售公司id
|
|
|
|
|
* @param shopId 店铺id
|
|
|
|
|
* @param sevenDayStartTime 近七天开始时间
|
|
|
|
|
* @param sevenDayEndTime 近七天结束时间
|
|
|
|
|
* @param selectStartTime 选中开始时间
|
|
|
|
|
* @param selectEndTime 选中结束时间
|
|
|
|
|
* @param startTime 柱状图开始时间
|
|
|
|
|
* @param endTime 柱状图结束时间
|
|
|
|
|
* @return 客户概览VO
|
|
|
|
|
*/
|
|
|
|
|
public CustomerViewVO selectCustomerViewMain(Long userId, Long organizationId, Long shopId, String sevenDayStartTime, String sevenDayEndTime){
|
|
|
|
|
public CustomerViewVO selectCustomerViewMain(Long userId, String selectStartTime, String selectEndTime, String startTime, String endTime){
|
|
|
|
|
CustomerViewVO customerViewVO = new CustomerViewVO();
|
|
|
|
|
//shopIds
|
|
|
|
|
// List<Long> shopIds = getShopIds(userId, regionId, shopId);
|
|
|
|
|
List<Long> shopIds = new ArrayList<>();
|
|
|
|
|
//客户list
|
|
|
|
|
List<OpCustomer> customerList = opCustomerDOMapper.selectCustomerList(shopIds, null, null, null, null);
|
|
|
|
|
//会员list
|
|
|
|
|
List<OpVip> vipList = opVipDOMapper.selectVipList(shopIds, null, null);
|
|
|
|
|
|
|
|
|
|
//5大块客户数
|
|
|
|
|
|
|
|
|
|
//设置客户,关联,vip人数
|
|
|
|
|
setCustomerAndVipSize(customerList, vipList, customerViewVO);
|
|
|
|
|
//近七天新增list
|
|
|
|
|
List<OpCustomer> sevenDayCustomerList = customerList.stream().filter(customerDO -> filterSevenDayCustomer(customerDO, sevenDayStartTime, sevenDayEndTime)).collect(Collectors.toList());
|
|
|
|
|
List<OpVip> sevenDayVipList = vipList.stream().filter(vipDO -> filterSevenDayVip(vipDO, sevenDayStartTime, sevenDayEndTime)).collect(Collectors.toList());
|
|
|
|
|
customerViewVO.setSevenDayCustomerList(sevenDayCustomerList);
|
|
|
|
|
customerViewVO.setSevenDayVipList(sevenDayVipList);
|
|
|
|
|
List<Long> shopIds = getShopIds(userId);
|
|
|
|
|
if(CollectionUtils.isEmpty(shopIds)){
|
|
|
|
|
return customerViewVO;
|
|
|
|
|
}
|
|
|
|
|
//柱状图好友list
|
|
|
|
|
List<OpCustomer> customerList = opCustomerDOMapper.selectCustomerList(shopIds, null, null, startTime, endTime);
|
|
|
|
|
//好友总数
|
|
|
|
|
Long customerCount = opCustomerDOMapper.selectCustomerCount(shopIds, null, null, null);
|
|
|
|
|
//好友总数(去重)
|
|
|
|
|
Long validCustomerCount = opCustomerDOMapper.selectCustomerCount(shopIds, VALID, null, null);
|
|
|
|
|
//删除拉黑数
|
|
|
|
|
QueryWrapper<PoiCustomerContactDataStat> wrapper = new QueryWrapper<>();
|
|
|
|
|
wrapper.in("store_id", shopIds).le("stat_time", selectEndTime).ge("stat_time", selectStartTime);
|
|
|
|
|
Long validDeleteCustomerCount = poiCustomerContactDataStatMapper.selectList(wrapper).stream()
|
|
|
|
|
.filter(contactDO -> contactDO.getNegativeFeedbackCnt() != null)
|
|
|
|
|
.map(PoiCustomerContactDataStat::getNegativeFeedbackCnt).mapToLong(a -> a).sum();
|
|
|
|
|
//会员总数
|
|
|
|
|
Long vipCount = opVipDOMapper.selectVipCount(shopIds, null, null);
|
|
|
|
|
|
|
|
|
|
//柱状图list
|
|
|
|
|
List<OpCustomer> validCustomerList = customerList.stream().filter(customerDO -> VALID.equals(customerDO.getValidType())).collect(Collectors.toList());
|
|
|
|
|
customerViewVO.setCustomerList(customerList);
|
|
|
|
|
customerViewVO.setValidCustomerList(validCustomerList);
|
|
|
|
|
//设置新增好友,好友总数,拉黑数,vip人数,柱状图list等数据
|
|
|
|
|
setCustomerViewData(customerViewVO, customerCount, validCustomerCount, validDeleteCustomerCount, vipCount, customerList, validCustomerList, selectStartTime, selectEndTime);
|
|
|
|
|
//前十名排行list等
|
|
|
|
|
List<OpCustomer> newCustimerList = customerList.stream().filter(customerDO -> filterCustomerByRegisterTime(customerDO, selectStartTime, selectEndTime)).collect(Collectors.toList());
|
|
|
|
|
List<CustomerViewCompanyVO> orgNewCustomerList = getOrgNewCustomerList(newCustimerList);
|
|
|
|
|
List<CustomerViewShopVO> shopNewCustomerList = getShopNewCustomerList(newCustimerList);
|
|
|
|
|
List<CustomerViewZeroExtendVO> zeroExtendList = getZeroExtendList(newCustimerList, shopIds);
|
|
|
|
|
customerViewVO.setOrgNewCustomerList(orgNewCustomerList);
|
|
|
|
|
customerViewVO.setShopNewCustomerList(shopNewCustomerList);
|
|
|
|
|
customerViewVO.setZeroExtendList(zeroExtendList);
|
|
|
|
|
return customerViewVO;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* shopIds
|
|
|
|
|
* @param userId 用户id
|
|
|
|
|
* @param regionId 区域id
|
|
|
|
|
* @param shopId 店铺id
|
|
|
|
|
* @return shopIds
|
|
|
|
|
*/
|
|
|
|
|
List<Long> getShopIds(Long userId, Long regionId, Long shopId){
|
|
|
|
|
List<Long> shopIds = new ArrayList<>();
|
|
|
|
|
//单店
|
|
|
|
|
if(shopId != null){
|
|
|
|
|
shopIds.add(shopId);
|
|
|
|
|
return shopIds;
|
|
|
|
|
}
|
|
|
|
|
//单区域
|
|
|
|
|
if(regionId != null){
|
|
|
|
|
List<PoiStore> shopList = poiStoreService.getRegionShop(regionId);
|
|
|
|
|
shopIds = shopList.stream().map(PoiStore::getId).collect(Collectors.toList());
|
|
|
|
|
return shopIds;
|
|
|
|
|
}
|
|
|
|
|
//所有shopIds
|
|
|
|
|
shopIds = privilageDomainService.listUserDatePermission(userId);
|
|
|
|
|
List<Long> getShopIds(Long userId){
|
|
|
|
|
List<Long> shopIds = privilageDomainService.listUserDatePermission(userId);
|
|
|
|
|
return shopIds;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 客户,关联,vip人数
|
|
|
|
|
* @param customerList 客户List
|
|
|
|
|
* @param vipList vipList
|
|
|
|
|
* 新增好友,好友总数,拉黑数,vip人数,柱状图list等数据
|
|
|
|
|
* @param customerViewVO 客户概览VO
|
|
|
|
|
* @param customerCount 好友总数
|
|
|
|
|
* @param validCustomerCount 好友总数(去重)
|
|
|
|
|
* @param validDeleteCustomerCount 删除来黑数(累计去重)
|
|
|
|
|
* @param vipCount 会员总数
|
|
|
|
|
* @param customerList 新增好友list
|
|
|
|
|
* @param validCustomerList 新增好友(去重)list
|
|
|
|
|
* @param selectStartTime 选中开始时间
|
|
|
|
|
* @param selectEndTime 选中结束时间
|
|
|
|
|
*/
|
|
|
|
|
public void setCustomerAndVipSize(List<OpCustomer> customerList, List<OpVip> vipList, CustomerViewVO customerViewVO){
|
|
|
|
|
//关联人数(手机号确定)
|
|
|
|
|
List<String> customerPhoneList = customerList.stream().map(OpCustomer::getPhone).distinct().collect(Collectors.toList());
|
|
|
|
|
List<String> vipPhoneList = vipList.stream().map(OpVip::getPhone).distinct().collect(Collectors.toList());
|
|
|
|
|
AtomicLong commonInt = new AtomicLong(0);
|
|
|
|
|
customerPhoneList.forEach(customerPhone -> {
|
|
|
|
|
if(vipPhoneList.contains(customerPhone)){
|
|
|
|
|
commonInt.incrementAndGet();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
Long common = commonInt.get();
|
|
|
|
|
customerViewVO.setCommon(common);
|
|
|
|
|
//未关联的客户数
|
|
|
|
|
Long customer = customerList.stream().filter(customerDO -> ZERO_L.equals(customerDO.getMemberId())).map(OpCustomer::getPhone).distinct().count();
|
|
|
|
|
customerViewVO.setCustomer(customer);
|
|
|
|
|
//未关联会员数
|
|
|
|
|
Long vip = vipList.stream().map(OpVip::getPhone).distinct().count();
|
|
|
|
|
customerViewVO.setVip(vip - common);
|
|
|
|
|
public void setCustomerViewData(CustomerViewVO customerViewVO, Long customerCount, Long validCustomerCount, Long validDeleteCustomerCount, Long vipCount,
|
|
|
|
|
List<OpCustomer> customerList, List<OpCustomer> validCustomerList, String selectStartTime, String selectEndTime){
|
|
|
|
|
//新增好友
|
|
|
|
|
Long newCustomerCount = customerList.stream().filter(customerDO -> filterCustomerByRegisterTime(customerDO, selectStartTime, selectEndTime)).count();
|
|
|
|
|
customerViewVO.setNewCustomer(newCustomerCount);
|
|
|
|
|
//新增好友(去重)
|
|
|
|
|
Long newValidCustomerCount = validCustomerList.stream().filter(customerDO -> filterCustomerByRegisterTime(customerDO, selectStartTime, selectEndTime)).count();
|
|
|
|
|
customerViewVO.setNewValidCustomer(newValidCustomerCount);
|
|
|
|
|
//好友总数
|
|
|
|
|
customerViewVO.setAllCustomer(customerCount);
|
|
|
|
|
//好友总数(去重)
|
|
|
|
|
customerViewVO.setAllValidCustomer(validCustomerCount);
|
|
|
|
|
//删除拉黑数(累计去重)
|
|
|
|
|
customerViewVO.setValidDeleteCustomer(validDeleteCustomerCount);
|
|
|
|
|
//会员总数
|
|
|
|
|
customerViewVO.setAllVipCount(vipCount);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 过滤客户list
|
|
|
|
|
* @param customerDO 客户DO
|
|
|
|
|
* @param sevenDayStartTime 开始时间
|
|
|
|
|
* @param sevenDayEndTime 结束时间
|
|
|
|
|
* @return 客户list
|
|
|
|
|
* 选中时间过滤客户
|
|
|
|
|
* @param customerDO 好友DO
|
|
|
|
|
* @param selectStartTime 选中开始时间
|
|
|
|
|
* @param selectEndTime 选中结束时间
|
|
|
|
|
* @return true/false
|
|
|
|
|
*/
|
|
|
|
|
Boolean filterSevenDayCustomer(OpCustomer customerDO, String sevenDayStartTime, String sevenDayEndTime){
|
|
|
|
|
boolean filterCustomerByRegisterTime(OpCustomer customerDO, String selectStartTime, String selectEndTime){
|
|
|
|
|
Date registerDate = customerDO.getRegisterTime();
|
|
|
|
|
if(registerDate == null){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
try {
|
|
|
|
|
if(customerDO.getRegisterTime() != null){
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
Long start = sdf.parse(sevenDayStartTime).getTime();
|
|
|
|
|
Long end = sdf.parse(sevenDayEndTime).getTime();
|
|
|
|
|
if(customerDO.getRegisterTime().getTime() >= start && customerDO.getRegisterTime().getTime() <= end){
|
|
|
|
|
return true;
|
|
|
|
|
}else{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
long startTime = sdf.parse(selectStartTime).getTime();
|
|
|
|
|
long endTime = sdf.parse(selectEndTime).getTime();
|
|
|
|
|
long registerTime = registerDate.getTime();
|
|
|
|
|
return startTime <= registerTime && endTime >= registerTime;
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
log.error("过滤近7天客户出错", e);
|
|
|
|
|
log.error("格式化时间出错", e);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 过滤会员list
|
|
|
|
|
* @param vipDO 会员DO
|
|
|
|
|
* @param sevenDayStartTime 开始时间
|
|
|
|
|
* @param sevenDayEndTime 结束时间
|
|
|
|
|
* @return 会员list
|
|
|
|
|
* 零售公司新增排行list
|
|
|
|
|
* @param newCustimerList 新增好友list
|
|
|
|
|
* @return 零售公司新增排行list
|
|
|
|
|
*/
|
|
|
|
|
Boolean filterSevenDayVip(OpVip vipDO, String sevenDayStartTime, String sevenDayEndTime){
|
|
|
|
|
try {
|
|
|
|
|
if(vipDO.getRegisterTime() != null){
|
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
Long start = sdf.parse(sevenDayStartTime).getTime();
|
|
|
|
|
Long end = sdf.parse(sevenDayEndTime).getTime();
|
|
|
|
|
if(vipDO.getRegisterTime().getTime() >= start && vipDO.getRegisterTime().getTime() <= end){
|
|
|
|
|
return true;
|
|
|
|
|
}else{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
log.error("过滤近7天会员出错", e);
|
|
|
|
|
return false;
|
|
|
|
|
List<CustomerViewCompanyVO> getOrgNewCustomerList(List<OpCustomer> newCustimerList){
|
|
|
|
|
List<CustomerViewCompanyVO> orgNewCustomerList = new ArrayList<>();
|
|
|
|
|
//店铺id-新增好友数map
|
|
|
|
|
Map<Long, Long> shopIdCountMap = newCustimerList.stream().collect(Collectors.groupingBy(OpCustomer::getShopId, Collectors.counting()));
|
|
|
|
|
//店铺id→零售公司名称
|
|
|
|
|
List<Long> shopIds = newCustimerList.stream().map(OpCustomer::getShopId).collect(Collectors.toList());
|
|
|
|
|
if(CollectionUtils.isEmpty(shopIds)){
|
|
|
|
|
return orgNewCustomerList;
|
|
|
|
|
}
|
|
|
|
|
//公司id-公司店铺list map
|
|
|
|
|
Map<Long, List<CustomerViewShopVO>> orgShopListMap = opCustomerDOMapper.selectOrgByShopIds(shopIds).stream().distinct().collect(Collectors.groupingBy(CustomerViewShopVO::getOrgId));
|
|
|
|
|
//每个公司新增数
|
|
|
|
|
List<CustomerViewCompanyVO> tmpList = new ArrayList<>();
|
|
|
|
|
orgShopListMap.forEach((orgId,customerViewShopList) -> {
|
|
|
|
|
CustomerViewCompanyVO orgViewDO = new CustomerViewCompanyVO();
|
|
|
|
|
orgViewDO.setOrgId(orgId);
|
|
|
|
|
orgViewDO.setOrgName(customerViewShopList.get(0).getOrgName());
|
|
|
|
|
AtomicInteger newCustomerCount = new AtomicInteger(0);
|
|
|
|
|
customerViewShopList.forEach(customerViewShopVO -> {
|
|
|
|
|
Long shopId = customerViewShopVO.getShopId();
|
|
|
|
|
int tmpCount = shopIdCountMap.get(shopId) == null ? 0 : Math.toIntExact(shopIdCountMap.get(shopId));
|
|
|
|
|
newCustomerCount.updateAndGet(v -> v + tmpCount);
|
|
|
|
|
});
|
|
|
|
|
orgViewDO.setNewCustomerCount(newCustomerCount.get());
|
|
|
|
|
tmpList.add(orgViewDO);
|
|
|
|
|
});
|
|
|
|
|
//排序
|
|
|
|
|
orgNewCustomerList = tmpList.stream().sorted(Comparator.comparing(CustomerViewCompanyVO::getNewCustomerCount).reversed()).limit(TEN).collect(Collectors.toList());
|
|
|
|
|
return orgNewCustomerList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 店铺新增排行list
|
|
|
|
|
* @param newCustimerList 新增好友list
|
|
|
|
|
* @return 店铺新增排行list
|
|
|
|
|
*/
|
|
|
|
|
List<CustomerViewShopVO> getShopNewCustomerList(List<OpCustomer> newCustimerList){
|
|
|
|
|
//店铺分组
|
|
|
|
|
Map<Long, List<OpCustomer>> shopIdMap = newCustimerList.stream().collect(Collectors.groupingBy(OpCustomer::getShopId));
|
|
|
|
|
List<CustomerViewShopVO> shopViewList = new ArrayList<>();
|
|
|
|
|
shopIdMap.forEach((k,v) -> {
|
|
|
|
|
CustomerViewShopVO shopVO = new CustomerViewShopVO();
|
|
|
|
|
shopVO.setShopId(k);
|
|
|
|
|
shopVO.setNewCustomerCount(v.size());
|
|
|
|
|
PoiStore shopDO = poiStoreDOMapper.selectById(k);
|
|
|
|
|
if(shopDO != null){
|
|
|
|
|
shopVO.setShopName(shopDO.getName());
|
|
|
|
|
}
|
|
|
|
|
shopViewList.add(shopVO);
|
|
|
|
|
});
|
|
|
|
|
//排序
|
|
|
|
|
List<CustomerViewShopVO> shopNewCustomerList = shopViewList.stream().sorted(Comparator.comparing(CustomerViewShopVO::getNewCustomerCount).reversed()).limit(TEN).collect(Collectors.toList());
|
|
|
|
|
return shopNewCustomerList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 零推广list
|
|
|
|
|
* @param newCustimerList 新增好友list
|
|
|
|
|
* @param shopIds 管辖店铺ids
|
|
|
|
|
* @return 零推广list
|
|
|
|
|
*/
|
|
|
|
|
List<CustomerViewZeroExtendVO> getZeroExtendList(List<OpCustomer> newCustimerList, List<Long> shopIds){
|
|
|
|
|
List<CustomerViewZeroExtendVO> zeroExtendList = new ArrayList<>();
|
|
|
|
|
//有推广的店铺ids
|
|
|
|
|
List<Long> notZeroShopIds = newCustimerList.stream().map(OpCustomer::getShopId).distinct().collect(Collectors.toList());
|
|
|
|
|
//公司id-公司店铺list map
|
|
|
|
|
Map<Long, List<CustomerViewShopVO>> orgShopListMap = opCustomerDOMapper.selectOrgByShopIds(shopIds).stream().distinct().collect(Collectors.groupingBy(CustomerViewShopVO::getOrgId));
|
|
|
|
|
|
|
|
|
|
List<CustomerViewZeroExtendVO> tmpZeroExtendList = new ArrayList<>();
|
|
|
|
|
orgShopListMap.forEach((orgId, orgShopRelationList) -> {
|
|
|
|
|
List<Long> tmpShopIds = orgShopRelationList.stream().map(CustomerViewShopVO::getShopId).distinct().collect(Collectors.toList());
|
|
|
|
|
int tmpShopCount = tmpShopIds.size();
|
|
|
|
|
CustomerViewZeroExtendVO zeroExtendVO = new CustomerViewZeroExtendVO();
|
|
|
|
|
zeroExtendVO.setOrgId(orgId);
|
|
|
|
|
zeroExtendVO.setOrgName(orgShopRelationList.get(0).getOrgName());
|
|
|
|
|
zeroExtendVO.setAllShopCount(tmpShopCount);
|
|
|
|
|
//推广的店铺
|
|
|
|
|
tmpShopIds.retainAll(notZeroShopIds);
|
|
|
|
|
zeroExtendVO.setZeroShopCount(tmpShopCount - tmpShopIds.size());
|
|
|
|
|
tmpZeroExtendList.add(zeroExtendVO);
|
|
|
|
|
});
|
|
|
|
|
zeroExtendList = tmpZeroExtendList.stream().filter(zeroExtendDO -> zeroExtendDO.getZeroShopCount() > 0).collect(Collectors.toList());
|
|
|
|
|
return zeroExtendList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|