diff --git a/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewShopVO.java b/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewShopVO.java index 40247ef..dd1c3b9 100644 --- a/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewShopVO.java +++ b/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewShopVO.java @@ -16,10 +16,10 @@ public class CustomerViewShopVO { private Long shopId; /**店铺名称*/ private String shopName; - /**零售公司id*/ - private Long orgId; - /**零售公司名称*/ - private String orgName; + /**客户组织id*/ + private Long customerId; + /**客户组织名称*/ + private String customerName; /**新增好友数*/ private Integer newCustomerCount; } diff --git a/src/main/java/com/kiisoo/ic/customer/entity/ShopOrgInfoVO.java b/src/main/java/com/kiisoo/ic/customer/entity/ShopOrgInfoVO.java new file mode 100644 index 0000000..124ca0f --- /dev/null +++ b/src/main/java/com/kiisoo/ic/customer/entity/ShopOrgInfoVO.java @@ -0,0 +1,31 @@ +package com.kiisoo.ic.customer.entity; + +import lombok.Data; + + +/** + * @Description: 店铺组织信息VO + * @Author: wangyinjia + * @Date: 2020/4/22 + * @Company: kiisoo + * @Version: 1.0 + */ +@Data +public class ShopOrgInfoVO { + /**店铺id*/ + private Long shopId; + /**店铺名称*/ + private String shopName; + /**客户id*/ + private Long customerId; + /**客户*/ + private String customerName; + /**零售公司id*/ + private Long companyId; + /**零售公司*/ + private String companyName; + /**区域id*/ + private Long regionId; + /**区域*/ + private String regionName; +} diff --git a/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java b/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java index 1e3b5a4..f704977 100644 --- a/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java +++ b/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java @@ -5,6 +5,7 @@ import com.kiisoo.ic.customer.entity.CustomerViewShopVO; import com.kiisoo.ic.customer.entity.CustomerViewZeroExtendVO; import com.kiisoo.ic.customer.entity.OpCustomer; import com.kiisoo.ic.customer.bean.OpCustomerDTO; +import com.kiisoo.ic.customer.entity.ShopOrgInfoVO; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -48,10 +49,9 @@ public interface OpCustomerDOMapper extends BaseMapper { Long selectCustomerCount(@Param("shopIds") List shopIds, @Param("type")Integer type, @Param("startDate") String startDate, @Param("endDate") String endDate); /** - * 店铺ids→零售公司 + * 店铺ids→客户组织 */ - List selectOrgByShopIds(@Param("shopIds") List shopIds); - + List selectCustomerOrgByShopIds(@Param("shopIds") List shopIds, @Param("level")Integer level); /** * 店铺ids→零售公司 diff --git a/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java b/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java index 5df0f32..c6de2c8 100644 --- a/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java +++ b/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java @@ -41,6 +41,13 @@ public class CustomerViewService { static final Integer TEN = 10; + /**区域*/ + static final Integer LEVEL_REGION = 1; + /**零售公司*/ + static final Integer LEVEL_COMPANY = 2; + /**客户*/ + static final Integer LEVEL_CUSTOMER = 3; + @Autowired private RetailCompanyService retailCompanyService; /** @@ -192,6 +199,38 @@ public class CustomerViewService { } } + /** + * 店铺组织信息list + * @param shopIds 店铺ids + * @param companyFlag 零售公司 + * @param regionFlag 区域 + * @return 店铺组织信息list + */ + public List getOrgInfoByShopIds(List shopIds, Boolean companyFlag, Boolean regionFlag){ + //店铺-客户组织list + List shopOrgInfoList = opCustomerDOMapper.selectCustomerOrgByShopIds(shopIds, LEVEL_CUSTOMER); + if(companyFlag == null || !companyFlag){ + return shopOrgInfoList; + } + //零售公司list + List companyIds = shopOrgInfoList.stream().map(ShopOrgInfoVO::getCompanyId).collect(Collectors.toList()); + List companyList = new ArrayList<>(); + if(companyIds.size() > 0){ + QueryWrapper orgWrapper = new QueryWrapper<>(); + orgWrapper.eq("level", LEVEL_COMPANY); + orgWrapper.in("id", companyIds); + companyList = retailCompanyMapper.selectList(orgWrapper); + } + Map companyNameMap = companyList.stream().collect(Collectors.toMap(PrivilageOrganizational::getId, PrivilageOrganizational::getName)); + shopOrgInfoList.stream().filter(shopOrgDO -> shopOrgDO.getCompanyId() != null).forEach(shopOrgDO -> shopOrgDO.setCompanyName(companyNameMap.get(shopOrgDO.getCompanyId()))); + //区域list + if(regionFlag == null || !regionFlag){ + return shopOrgInfoList; + } + + return shopOrgInfoList; + } + /** * 零售公司新增排行list * @param newCustimerList 新增好友list @@ -206,17 +245,18 @@ public class CustomerViewService { if(CollectionUtils.isEmpty(shopIds)){ return orgNewCustomerList; } - //公司id-公司店铺list map - Map> orgShopListMap = opCustomerDOMapper.selectOrgByShopIds(shopIds).stream().distinct().collect(Collectors.groupingBy(CustomerViewShopVO::getOrgId)); + //零售公司id-公司店铺list map + List shopOrgInfoList = getOrgInfoByShopIds(shopIds, true, null); + Map> companyShopListMap = shopOrgInfoList.stream().distinct().collect(Collectors.groupingBy(ShopOrgInfoVO::getCompanyId)); //每个公司新增数 List tmpList = new ArrayList<>(); - orgShopListMap.forEach((orgId,customerViewShopList) -> { + companyShopListMap.forEach((companyId,companyShopList) -> { CustomerViewCompanyVO orgViewDO = new CustomerViewCompanyVO(); - orgViewDO.setOrgId(orgId); - orgViewDO.setOrgName(customerViewShopList.get(0).getOrgName()); + orgViewDO.setOrgId(companyId); + orgViewDO.setOrgName(companyShopList.get(0).getCompanyName()); AtomicInteger newCustomerCount = new AtomicInteger(0); - customerViewShopList.forEach(customerViewShopVO -> { - Long shopId = customerViewShopVO.getShopId(); + companyShopList.forEach(companyShopVO -> { + Long shopId = companyShopVO.getShopId(); int tmpCount = shopIdCountMap.get(shopId) == null ? 0 : Math.toIntExact(shopIdCountMap.get(shopId)); newCustomerCount.updateAndGet(v -> v + tmpCount); }); @@ -262,16 +302,17 @@ public class CustomerViewService { List zeroExtendList = new ArrayList<>(); //有推广的店铺ids List notZeroShopIds = newCustimerList.stream().map(OpCustomer::getShopId).distinct().collect(Collectors.toList()); - //公司id-公司店铺list map - Map> orgShopListMap = opCustomerDOMapper.selectOrgByShopIds(shopIds).stream().distinct().collect(Collectors.groupingBy(CustomerViewShopVO::getOrgId)); + //零售公司id-公司店铺list map + List shopOrgInfoList = getOrgInfoByShopIds(shopIds, true, null); + Map> companyShopListMap = shopOrgInfoList.stream().distinct().collect(Collectors.groupingBy(ShopOrgInfoVO::getCompanyId)); List tmpZeroExtendList = new ArrayList<>(); - orgShopListMap.forEach((orgId, orgShopRelationList) -> { - List tmpShopIds = orgShopRelationList.stream().map(CustomerViewShopVO::getShopId).distinct().collect(Collectors.toList()); + companyShopListMap.forEach((companyId, companyShopList) -> { + List tmpShopIds = companyShopList.stream().map(ShopOrgInfoVO::getShopId).distinct().collect(Collectors.toList()); int tmpShopCount = tmpShopIds.size(); CustomerViewZeroExtendVO zeroExtendVO = new CustomerViewZeroExtendVO(); - zeroExtendVO.setOrgId(orgId); - zeroExtendVO.setOrgName(orgShopRelationList.get(0).getOrgName()); + zeroExtendVO.setOrgId(companyId); + zeroExtendVO.setOrgName(companyShopList.get(0).getCompanyName()); zeroExtendVO.setAllShopCount(tmpShopCount); //推广的店铺 tmpShopIds.retainAll(notZeroShopIds); diff --git a/src/main/resources/mapper/OpCustomerDOMapper.xml b/src/main/resources/mapper/OpCustomerDOMapper.xml index 90507c5..04436d6 100644 --- a/src/main/resources/mapper/OpCustomerDOMapper.xml +++ b/src/main/resources/mapper/OpCustomerDOMapper.xml @@ -100,17 +100,21 @@ - - + select t1.id as customerId,t1.`name` as customerName, t1.parent_id as companyId, t3.entity_id as shopId, t4.`name` as shopName + from privilage_organizational t1, privilage_organizational_domain t2, privilage_domain_entity t3, poi_store t4 where t1.id = t2.org_id and t2.domain_id = t3.domain_id and t3.type = 3 + and t3.entity_id = t4.id and t3.entity_id in #{item} + + and t1.`level`=#{level} +