diff --git a/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java b/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java index 02c5da4..81e516f 100644 --- a/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java +++ b/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java @@ -2,6 +2,7 @@ package com.kiisoo.ic.customer.controller; import com.kiisoo.ic.common.BaseController; import com.kiisoo.ic.customer.entity.CustomerViewVO; +import com.kiisoo.ic.customer.entity.CustomerViewZeroExtendVO; import com.kiisoo.ic.customer.service.CustomerViewService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; +import java.util.List; import java.util.Map; /** @@ -53,5 +55,31 @@ public class CustomerViewController extends BaseController { } } + /** + * 找到所有推广为0店铺 + * @param userId 用户id + * @param regionId 大区id + * @param companyId 公司id + * @param customerId 客户公司id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param pageNum + * @param pageSize + * @return + */ + @ResponseBody + @RequestMapping(value = "/all/zero", method = RequestMethod.GET) + public Map getMainData(@RequestParam("userId") long userId, Long regionId , Long companyId, Long customerId, + String startTime, String endTime, @RequestParam("pageNum") int pageNum, @RequestParam("pageSize") int pageSize){ + try{ + List result = customerViewService.zeroExtendList(userId, regionId, companyId, customerId, startTime, endTime, pageNum,pageSize); + return data(result); + }catch (Exception e){ + log.error("查询推广为0店铺出错", e); + return fail(); + } + } + + } diff --git a/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewZeroExtendVO.java b/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewZeroExtendVO.java index d63ddd8..b05ef13 100644 --- a/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewZeroExtendVO.java +++ b/src/main/java/com/kiisoo/ic/customer/entity/CustomerViewZeroExtendVO.java @@ -20,4 +20,24 @@ public class CustomerViewZeroExtendVO { private Integer allShopCount; /**零推广店铺数*/ private Integer zeroShopCount; + /**店铺名称*/ + private String shopName; + /**店铺编码*/ + private String shopCode; + /**店铺id*/ + private Long shopId; + /**大区*/ + private String region; + /**零售公司*/ + private String company; + /**客户*/ + private String customer; + /**推广数*/ + private Integer numb; + /**序号*/ + private Integer number; + /* + *分页总条数 + */ + private long totalSize; } 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 b50f646..1e3b5a4 100644 --- a/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java +++ b/src/main/java/com/kiisoo/ic/customer/mapper/OpCustomerDOMapper.java @@ -2,6 +2,7 @@ package com.kiisoo.ic.customer.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 org.apache.ibatis.annotations.Param; @@ -51,4 +52,10 @@ public interface OpCustomerDOMapper extends BaseMapper { */ List selectOrgByShopIds(@Param("shopIds") List shopIds); + + /** + * 店铺ids→零售公司 + */ + List selectOrgInfoByShopIds(@Param("shopIds") List shopIds); + } 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 96ab420..401fbbb 100644 --- a/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java +++ b/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java @@ -1,12 +1,16 @@ package com.kiisoo.ic.customer.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import com.kiisoo.ic.customer.bean.OpCustomerDTO; 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.generalize.service.RetailCompanyService; import com.kiisoo.ic.store.entity.PoiStore; import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; import lombok.extern.slf4j.Slf4j; @@ -35,6 +39,8 @@ public class CustomerViewService { static final Integer TEN = 10; + @Autowired + private RetailCompanyService retailCompanyService; /** * 用户权限mapper */ @@ -271,4 +277,81 @@ public class CustomerViewService { return zeroExtendList; } + /** + * 零推广list + * @param newCustimerList 新增好友list + * @param shopIds 管辖店铺ids + * @return 零推广list + */ + List getZeroExtendList2(List newCustimerList, List shopIds, int pageNum, int pageSize){ + //有推广的店铺ids + List notZeroShopIds = newCustimerList.stream().map(OpCustomer::getShopId).distinct().collect(Collectors.toList()); + //无推广id + shopIds.removeAll(notZeroShopIds); + PageHelper.startPage(pageNum,pageSize); + List list = opCustomerDOMapper.selectOrgInfoByShopIds(shopIds); + + AtomicInteger number = new AtomicInteger(1 + ((pageNum-1) * pageSize)); + //求分页总数 + Page pageList = (Page)list; + Long totalSize = pageList.getTotal(); + list.forEach(item -> { + item.setTotalSize(totalSize); + item.setNumb(0); + item.setNumber(number.get()); + number.incrementAndGet(); + }); + + return list; + } + + /** + * 找到推广为0 + * @param regionId 大区id + * @param companyId 公司id + * @param customerId 客户id + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return + */ + public List zeroExtendList(long userId, Long regionId , Long companyId, Long customerId, + String startTime, String endTime, int pageNum, int pageSize){ + Set shopIds; + //根据店铺查询所有扫码客户信息 + if(customerId != null){ + shopIds = getCompanyShop(customerId, userId); + }else if(companyId != null){ + shopIds = getCompanyShop(companyId, userId); + } else if(regionId != null){ + shopIds = getCompanyShop(regionId, userId); + }else{ + //查询用户权限店铺 + shopIds = new HashSet<>(privilageDomainService.listUserDatePermission(userId)); + } + if(CollectionUtils.isEmpty(shopIds)){ + return new ArrayList<>(); + } + //柱状图好友list + List customerList = opCustomerDOMapper.selectCustomerList(new ArrayList<>(shopIds), null, null, startTime, endTime); + List zeroExtendList = getZeroExtendList2(customerList, new ArrayList<>(shopIds),pageNum,pageSize); + return zeroExtendList; + } + + public Set getCompanyShop(Long companyId, long userId){ + //找到最小公司 + Set param = new HashSet<>(); + param.add(companyId); + Set minCompany = retailCompanyService.getMinCompany(param); + + //找到公司店铺 + List shops = new ArrayList<>(); + minCompany.forEach(item -> { + shops.addAll(retailCompanyService.selectShopByCompany(companyId)); + }); + //公司店铺和权限做交集 + Set shopIds = shops.stream().map(p -> p.getId()).collect(Collectors.toSet()); + List userAllShops = privilageDomainService.listUserDatePermission(userId); + shopIds.retainAll(userAllShops); + return shopIds; + } } diff --git a/src/main/java/com/kiisoo/ic/generalize/mapper/RetailCompanyMapper.java b/src/main/java/com/kiisoo/ic/generalize/mapper/RetailCompanyMapper.java index 44efe0b..8c87868 100644 --- a/src/main/java/com/kiisoo/ic/generalize/mapper/RetailCompanyMapper.java +++ b/src/main/java/com/kiisoo/ic/generalize/mapper/RetailCompanyMapper.java @@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Set; @Repository public interface RetailCompanyMapper extends BaseMapper { @@ -15,4 +16,9 @@ public interface RetailCompanyMapper extends BaseMapper List selectShopIdByRetail(@Param("orgId") Long orgId, @Param("shopId") Long shopId); List selectSellerIdsByShop(@Param("orgId") Long orgId,@Param("shopId") Long shopId,@Param("sellerId") Long sellerId); + + /** + * 找到子公司 + */ + Set selectChildList(@Param("companys") Set companys); } diff --git a/src/main/java/com/kiisoo/ic/generalize/service/RetailCompanyService.java b/src/main/java/com/kiisoo/ic/generalize/service/RetailCompanyService.java index f6fa6c6..b42db75 100644 --- a/src/main/java/com/kiisoo/ic/generalize/service/RetailCompanyService.java +++ b/src/main/java/com/kiisoo/ic/generalize/service/RetailCompanyService.java @@ -27,9 +27,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -382,4 +380,20 @@ public class RetailCompanyService { } return vo; } + + /** + * 找到最小公司集合 + */ + public Set getMinCompany(Set companys){ + Set minest = new HashSet<>(); + Set listOfOrg = retailCompanyMapper.selectChildList(companys); + //增加最小公司 + if(listOfOrg.size() > 0){ + companys.removeAll(listOfOrg); + minest.addAll(getMinCompany(companys)); + }else{ + minest.addAll(companys); + } + return minest; + } } diff --git a/src/main/resources/mapper/OpCustomerDOMapper.xml b/src/main/resources/mapper/OpCustomerDOMapper.xml index 07802cb..a8b034a 100644 --- a/src/main/resources/mapper/OpCustomerDOMapper.xml +++ b/src/main/resources/mapper/OpCustomerDOMapper.xml @@ -113,4 +113,17 @@ + + diff --git a/src/main/resources/mapper/RetailCompanyMapper.xml b/src/main/resources/mapper/RetailCompanyMapper.xml index 5eec61b..933910c 100644 --- a/src/main/resources/mapper/RetailCompanyMapper.xml +++ b/src/main/resources/mapper/RetailCompanyMapper.xml @@ -37,4 +37,19 @@ and t4.user_id = #{sellerId} +