You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
223 lines
9.9 KiB
Java
223 lines
9.9 KiB
Java
package com.kiisoo.ic.generalize.service;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.github.pagehelper.PageHelper;
|
|
import com.kiisoo.ic.customer.entity.OpSellerCustomerRelation;
|
|
import com.kiisoo.ic.customer.mapper.OpSellerCustomerRelationDOMapper;
|
|
import com.kiisoo.ic.generalize.bean.RetailOrganizationalVO;
|
|
import com.kiisoo.ic.generalize.bean.SellerOrganizationalVO;
|
|
import com.kiisoo.ic.generalize.bean.StoreOrganizationalVO;
|
|
import com.kiisoo.ic.generalize.entity.*;
|
|
import com.kiisoo.ic.generalize.mapper.OrganizationalMemberMapper;
|
|
import com.kiisoo.ic.generalize.mapper.PoiCustomerContactDataStatMapper;
|
|
import com.kiisoo.ic.generalize.mapper.RetailCompanyMapper;
|
|
import com.kiisoo.ic.store.entity.PoiStore;
|
|
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
|
|
import com.kiisoo.ic.system.entity.PrivilageUserDO;
|
|
import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.stream.Collectors;
|
|
|
|
/**
|
|
* @ClassName: RetailCompanyService
|
|
* @Description:
|
|
* @Auther: Caps
|
|
* @Date: 2020/4/15 0015 11:08
|
|
* @Version:
|
|
*/
|
|
@Service
|
|
public class RetailCompanyService {
|
|
|
|
private RetailCompanyMapper retailCompanyMapper;
|
|
|
|
private OrganizationalMemberMapper organizationalMemberMapper;
|
|
|
|
private OpSellerCustomerRelationDOMapper opSellerCustomerRelationDOMapper;
|
|
|
|
private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper;
|
|
|
|
private PoiStoreDOMapper poiStoreDOMapper;
|
|
|
|
private PrivilageUserDOMapper privilageUserDOMapper;
|
|
|
|
@Autowired
|
|
public RetailCompanyService(RetailCompanyMapper retailCompanyMapper,OrganizationalMemberMapper organizationalMemberMapper,OpSellerCustomerRelationDOMapper opSellerCustomerRelationDOMapper,PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper,PoiStoreDOMapper poiStoreDOMapper,PrivilageUserDOMapper privilageUserDOMapper){
|
|
this.retailCompanyMapper = retailCompanyMapper;
|
|
this.organizationalMemberMapper = organizationalMemberMapper;
|
|
this.opSellerCustomerRelationDOMapper = opSellerCustomerRelationDOMapper;
|
|
this.poiCustomerContactDataStatMapper = poiCustomerContactDataStatMapper;
|
|
this.poiStoreDOMapper = poiStoreDOMapper;
|
|
this.privilageUserDOMapper = privilageUserDOMapper;
|
|
}
|
|
|
|
/**
|
|
* 查询所有的零售公司信息
|
|
*/
|
|
public List<PrivilageOrganizational> listOfRetailCompany(long userId){
|
|
QueryWrapper<PrivilageOrganizationalMember> wrapper1 = new QueryWrapper<>();
|
|
wrapper1.eq("user_id",userId);
|
|
List<PrivilageOrganizationalMember> pm = organizationalMemberMapper.selectList(wrapper1);
|
|
QueryWrapper<PrivilageOrganizational> wrapper = new QueryWrapper<>();
|
|
if(pm.isEmpty()) {
|
|
return null;
|
|
}else {
|
|
wrapper.eq("type", 1).eq("status", 1).in("id", pm.stream().map(PrivilageOrganizationalMember::getOrgId).collect(Collectors.toList()));
|
|
return retailCompanyMapper.selectList(wrapper);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查询零售公司下的店铺
|
|
* @param orgId 零售公司id
|
|
* @return 门店信息
|
|
*/
|
|
public List<PoiStore> selectShopByCompany(long orgId){
|
|
return poiStoreDOMapper.selectShopByCompany(orgId);
|
|
}
|
|
|
|
/**
|
|
* 查询零售公司下的店铺
|
|
* @param shopId 零售公司id
|
|
* @return 门店信息
|
|
*/
|
|
public List<PrivilageUserDO> selectSellerByShop(long shopId){
|
|
return poiStoreDOMapper.selectSellerByShop(shopId);
|
|
}
|
|
|
|
/**
|
|
* 查询所有零售公司的推广数据
|
|
* @param date 日期
|
|
* @param orgId 零售公司
|
|
* @return 零售公司的推广数据
|
|
*/
|
|
public List<RetailOrganizationalVO> generalizeOfRetail(String date,Long orgId,int pageNum,int pageSize){
|
|
//零售公司信息
|
|
QueryWrapper<PrivilageOrganizational> wrapper = new QueryWrapper<>();
|
|
wrapper.eq("type",1).eq("status",1);
|
|
if(orgId != null){
|
|
wrapper.eq("id",orgId);
|
|
}
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<PrivilageOrganizational> listOfOrg = retailCompanyMapper.selectList(wrapper);
|
|
|
|
List<RetailOrganizationalVO> list = new ArrayList<>();
|
|
listOfOrg.forEach(org -> {
|
|
//组织成员
|
|
QueryWrapper<PrivilageOrganizationalMember> wrapper1 = new QueryWrapper<>();
|
|
wrapper1.eq("org_id",org.getId());
|
|
List<PrivilageOrganizationalMember> memberList = organizationalMemberMapper.selectList(wrapper1);
|
|
//组织成员的客户个数
|
|
QueryWrapper<OpSellerCustomerRelation> wrapper2 = new QueryWrapper<>();
|
|
wrapper2.in("user_id",memberList.stream().map(PrivilageOrganizationalMember::getUserId).collect(Collectors.toList()));
|
|
List<OpSellerCustomerRelation> opRelations = opSellerCustomerRelationDOMapper.selectList(wrapper2);
|
|
long count = opRelations.stream().map(OpSellerCustomerRelation::getCustomerId).distinct().count();
|
|
List<Long> stores = opRelations.stream().map(OpSellerCustomerRelation::getStoreId).collect(Collectors.toList());
|
|
//被拉黑的客户数
|
|
QueryWrapper<PoiCustomerContactDataStat> wrapper3 = new QueryWrapper<>();
|
|
if(stores.isEmpty()){
|
|
stores.add(-1L);
|
|
}
|
|
wrapper3.in("store_id",stores);
|
|
List<PoiCustomerContactDataStat> dataStats = poiCustomerContactDataStatMapper.selectList(wrapper3);
|
|
long allAge = dataStats.stream().mapToLong(PoiCustomerContactDataStat::getNegativeFeedbackCnt).sum();
|
|
|
|
RetailOrganizationalVO organizationalVO = new RetailOrganizationalVO();
|
|
organizationalVO.setRetailCompany(org.getName());
|
|
organizationalVO.setAllCustomer((int) count);
|
|
organizationalVO.setDelCustomer((int) allAge);
|
|
list.add(organizationalVO);
|
|
});
|
|
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* 查询门店推广数据
|
|
* @param date 日期
|
|
* @param orgId 零售公司id
|
|
* @param shopId 门店id
|
|
* @param pageNum 页码
|
|
* @param pageSize 页面显示个数
|
|
* @return 门店推广数据
|
|
*/
|
|
public List<StoreOrganizationalVO> generalizeOfStore(String date, Long orgId, Long shopId, int pageNum, int pageSize){
|
|
//根据零售公司查询门店
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<Long> list = retailCompanyMapper.selectShopIdByRetail(orgId,shopId);
|
|
|
|
List<StoreOrganizationalVO> list1 = new ArrayList<>();
|
|
list.forEach(li -> {
|
|
//查询所有的客户
|
|
QueryWrapper<OpSellerCustomerRelation> wrapper = new QueryWrapper<>();
|
|
wrapper.eq("store_id",li);
|
|
long count = opSellerCustomerRelationDOMapper.selectCount(wrapper);
|
|
|
|
//查询店铺的名称和区域的名称
|
|
ShopRegionDO poiStore = poiStoreDOMapper.selectShopMsg(li);
|
|
|
|
//被拉黑的客户数
|
|
QueryWrapper<PoiCustomerContactDataStat> wrapper3 = new QueryWrapper<>();
|
|
wrapper3.eq("store_id",li);
|
|
List<PoiCustomerContactDataStat> dataStats = poiCustomerContactDataStatMapper.selectList(wrapper3);
|
|
long allAge = dataStats.stream().mapToLong(PoiCustomerContactDataStat::getNegativeFeedbackCnt).sum();
|
|
|
|
StoreOrganizationalVO storeOrganizationalVO = new StoreOrganizationalVO();
|
|
storeOrganizationalVO.setShopName(poiStore.getShopName());
|
|
storeOrganizationalVO.setRegion(poiStore.getRegionName());
|
|
storeOrganizationalVO.setAllCustomer((int) count);
|
|
storeOrganizationalVO.setDelCustomer((int) allAge);
|
|
list1.add(storeOrganizationalVO);
|
|
});
|
|
return list1;
|
|
}
|
|
|
|
/**
|
|
* 查询导购的推广数据
|
|
* @param date 日期
|
|
* @param orgId 零售哦给弄死id
|
|
* @param shopId 门店id
|
|
* @param sellerId 导购id
|
|
* @param pageNum 页码
|
|
* @param pageSize 页面个数
|
|
* @return 导购的推广数据
|
|
*/
|
|
public List<SellerOrganizationalVO> generalizeOfSeller(String date, Long orgId, Long shopId,Long sellerId, int pageNum, int pageSize){
|
|
//根据零售公司查询门店
|
|
PageHelper.startPage(pageNum, pageSize);
|
|
List<Long> sellerIds = retailCompanyMapper.selectSellerIdsByShop(orgId,shopId,sellerId);
|
|
List<SellerOrganizationalVO> list = new ArrayList<>();
|
|
sellerIds.forEach(seller -> {
|
|
//查询所有的客户
|
|
QueryWrapper<OpSellerCustomerRelation> wrapper = new QueryWrapper<>();
|
|
wrapper.eq("user_id",seller);
|
|
long count = opSellerCustomerRelationDOMapper.selectCount(wrapper);
|
|
|
|
//查询导购信息
|
|
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(seller);
|
|
|
|
//被拉黑的客户数
|
|
QueryWrapper<PoiCustomerContactDataStat> wrapper3 = new QueryWrapper<>();
|
|
wrapper3.eq("user_id",seller);
|
|
List<PoiCustomerContactDataStat> dataStats = poiCustomerContactDataStatMapper.selectList(wrapper3);
|
|
long allAge = dataStats.stream().mapToLong(PoiCustomerContactDataStat::getNegativeFeedbackCnt).sum();
|
|
|
|
//查询导购所属公司门店
|
|
CompanyStoreDO companyStoreDO = poiStoreDOMapper.selectCompanyStore(seller);
|
|
SellerOrganizationalVO sellerOrganizationalVO = new SellerOrganizationalVO();
|
|
sellerOrganizationalVO.setShopName(companyStoreDO.getShopName());
|
|
sellerOrganizationalVO.setCompanyName(companyStoreDO.getCompanyName());
|
|
sellerOrganizationalVO.setSellerName(privilageUserDO.getName());
|
|
sellerOrganizationalVO.setAllCustomer((int) count);
|
|
sellerOrganizationalVO.setDelCustomer((int) allAge);
|
|
list.add(sellerOrganizationalVO);
|
|
});
|
|
return list;
|
|
}
|
|
}
|