|
|
|
@ -11,12 +11,15 @@ import com.kiisoo.ic.constants.Constants;
|
|
|
|
|
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.mapper.PrivilageDomainEntityDOMapper;
|
|
|
|
|
import com.kiisoo.ic.domain.service.PrivilageDomainService;
|
|
|
|
|
import com.kiisoo.ic.employee.entity.CpUserCustomerRelationDO;
|
|
|
|
|
import com.kiisoo.ic.employee.entity.PrivilageCpUserDO;
|
|
|
|
|
import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper;
|
|
|
|
|
import com.kiisoo.ic.generalize.entity.PoiCustomerContactDataStat;
|
|
|
|
|
import com.kiisoo.ic.generalize.entity.PrivilageOrganizational;
|
|
|
|
|
import com.kiisoo.ic.generalize.entity.PrivilageOrganizationalMember;
|
|
|
|
|
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.generalize.service.RetailCompanyService;
|
|
|
|
@ -27,9 +30,14 @@ import com.kiisoo.ic.store.entity.PoiStore;
|
|
|
|
|
import com.kiisoo.ic.store.entity.PoiStoreStaff;
|
|
|
|
|
import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO;
|
|
|
|
|
import com.kiisoo.ic.store.mapper.PoiStoreDOMapper;
|
|
|
|
|
import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper;
|
|
|
|
|
import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper;
|
|
|
|
|
import com.kiisoo.ic.synchronous.entity.TurnBackDTO;
|
|
|
|
|
import com.kiisoo.ic.synchronous.entity.WxDataDTO;
|
|
|
|
|
import com.kiisoo.ic.system.entity.PrivilageRoleDO;
|
|
|
|
|
import com.kiisoo.ic.system.enums.RoleEnum;
|
|
|
|
|
import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper;
|
|
|
|
|
import com.kiisoo.ic.system.service.PrivilageUserService;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import me.chanjar.weixin.common.error.WxErrorException;
|
|
|
|
|
import me.chanjar.weixin.cp.api.WxCpExternalContactService;
|
|
|
|
@ -111,6 +119,34 @@ public class CustomerViewService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 域实体 mapper
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PrivilageDomainEntityDOMapper privilageDomainEntityDOMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 店铺 mapper
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PoiStoreStaffDOMapper poiStoreStaffDOMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private OrganizationalMemberMapper organizationalMemberMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户 service
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PrivilageUserService privilageUserService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 角色 mapper
|
|
|
|
|
*/
|
|
|
|
|
@Autowired
|
|
|
|
|
private PrivilageRoleDOMapper privilageRoleDOMapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* vip mapper
|
|
|
|
|
*/
|
|
|
|
@ -139,12 +175,34 @@ public class CustomerViewService {
|
|
|
|
|
public CustomerViewVO selectCustomerViewMain(Long userId, String selectStartTime, String selectEndTime, String startTime, String endTime){
|
|
|
|
|
CustomerViewVO customerViewVO = new CustomerViewVO();
|
|
|
|
|
//shopIds
|
|
|
|
|
List<Long> shopIds = getShopIds(userId);
|
|
|
|
|
if(CollectionUtils.isEmpty(shopIds)){
|
|
|
|
|
List<Long> shopIdList = new ArrayList<>();
|
|
|
|
|
PrivilageRoleDO privilageRoleDO = privilageRoleDOMapper.selectRoleByUserId(userId);
|
|
|
|
|
if(privilageRoleDO == null){
|
|
|
|
|
return customerViewVO;
|
|
|
|
|
}
|
|
|
|
|
//店长
|
|
|
|
|
if(privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_DZ.getRoleCode())) {
|
|
|
|
|
shopIdList = poiStoreStaffDOMapper.selectByUserId(userId);
|
|
|
|
|
}
|
|
|
|
|
//运营人员
|
|
|
|
|
else if (privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_YYRY.getRoleCode())) {
|
|
|
|
|
QueryWrapper<PrivilageOrganizationalMember> wrapper1 = new QueryWrapper<>();
|
|
|
|
|
wrapper1.eq("user_id", userId);
|
|
|
|
|
List<PrivilageOrganizationalMember> pm = organizationalMemberMapper.selectList(wrapper1);
|
|
|
|
|
//查询零售公司的门店
|
|
|
|
|
List<PoiStore> list1 = retailCompanyService.selectShopByCompany(pm.get(0).getOrgId());
|
|
|
|
|
shopIdList = list1.stream().map(PoiStore::getId).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
//管理员/总运营人员
|
|
|
|
|
else if (privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_GLY.getRoleCode()) || privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_ALL_YYRY.getRoleCode())) {
|
|
|
|
|
shopIdList = poiStoreStaffDOMapper.selectAllShopId(null,null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(CollectionUtils.isEmpty(shopIdList)){
|
|
|
|
|
return customerViewVO;
|
|
|
|
|
}
|
|
|
|
|
//柱状图好友趋势图
|
|
|
|
|
List<OpCustomer> customerList = opCustomerDOMapper.selectCustomerList(shopIds, null, null, startTime, endTime);
|
|
|
|
|
List<OpCustomer> customerList = opCustomerDOMapper.selectCustomerList(shopIdList, null, null, startTime, endTime);
|
|
|
|
|
|
|
|
|
|
//会员总数
|
|
|
|
|
Long vipCount = opVipDOMapper.selectVipCountNew();
|
|
|
|
@ -427,7 +485,16 @@ public class CustomerViewService {
|
|
|
|
|
if(shopIds.size() == 0){
|
|
|
|
|
return new ArrayList<>();
|
|
|
|
|
}
|
|
|
|
|
Map<Long, String> shopNameMap = poiStoreDOMapper.selectBatchIds(shopIds).stream().collect(Collectors.toMap(PoiStore::getId, PoiStore::getName));
|
|
|
|
|
Map<Long, String> shopNameMap = new HashMap<>();
|
|
|
|
|
List<PoiStore> poiStores = poiStoreDOMapper.selectBatchIds(shopIds);
|
|
|
|
|
poiStores.forEach(poiStore -> {
|
|
|
|
|
if (StringUtils.isNotBlank(poiStore.getAbbreviation())){
|
|
|
|
|
shopNameMap.put(poiStore.getId(),poiStore.getAbbreviation());
|
|
|
|
|
}else{
|
|
|
|
|
shopNameMap.put(poiStore.getId(),poiStore.getName());
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
List<CustomerViewShopVO> shopViewList = new ArrayList<>();
|
|
|
|
|
shopIdMap.forEach((k,v) -> {
|
|
|
|
|
CustomerViewShopVO shopVO = new CustomerViewShopVO();
|
|
|
|
@ -559,12 +626,48 @@ public class CustomerViewService {
|
|
|
|
|
* 客户概览main
|
|
|
|
|
* @return 客户概览VO
|
|
|
|
|
*/
|
|
|
|
|
public CustomerViewVO getAllCount() {
|
|
|
|
|
Long all = privilageCpUserDOMapper.selectAllCount();
|
|
|
|
|
Long dis = privilageCpUserDOMapper.selectDistinctAllCount();
|
|
|
|
|
public CustomerViewVO getAllCount(Long userId) {
|
|
|
|
|
CustomerViewVO result = new CustomerViewVO();
|
|
|
|
|
result.setAllCustomer(all);
|
|
|
|
|
result.setAllValidCustomer(dis);
|
|
|
|
|
List<Long> shopIdList = new ArrayList<>();
|
|
|
|
|
PrivilageRoleDO privilageRoleDO = privilageRoleDOMapper.selectRoleByUserId(userId);
|
|
|
|
|
if(privilageRoleDO == null) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
//店长
|
|
|
|
|
if(privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_DZ.getRoleCode())) {
|
|
|
|
|
shopIdList = poiStoreStaffDOMapper.selectByUserId(userId);
|
|
|
|
|
String cpUserId = privilageCpUserStoreDOMapper.selectCpUserIdByStoreId(shopIdList.get(0));
|
|
|
|
|
Long storeAll = privilageCpUserDOMapper.selectStoreCount(cpUserId);
|
|
|
|
|
Long storeDis = privilageCpUserDOMapper.selectDistinctStoreCount(cpUserId);
|
|
|
|
|
|
|
|
|
|
result.setAllCustomer(storeAll);
|
|
|
|
|
result.setAllValidCustomer(storeDis);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
//运营人员
|
|
|
|
|
else if (privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_YYRY.getRoleCode())) {
|
|
|
|
|
QueryWrapper<PrivilageOrganizationalMember> wrapper1 = new QueryWrapper<>();
|
|
|
|
|
wrapper1.eq("user_id", userId);
|
|
|
|
|
List<PrivilageOrganizationalMember> pm = organizationalMemberMapper.selectList(wrapper1);
|
|
|
|
|
//查询零售公司的门店
|
|
|
|
|
List<PoiStore> list1 = retailCompanyService.selectShopByCompany(pm.get(0).getOrgId());
|
|
|
|
|
shopIdList = list1.stream().map(PoiStore::getId).collect(Collectors.toList());
|
|
|
|
|
List<String> cpUserIds = privilageCpUserStoreDOMapper.selectCpUserIdsByStoreIds(shopIdList);
|
|
|
|
|
Long all = privilageCpUserDOMapper.selectStoresCount(cpUserIds);
|
|
|
|
|
Long dis = privilageCpUserDOMapper.selectDistinctStoresCount(cpUserIds);
|
|
|
|
|
|
|
|
|
|
result.setAllCustomer(all);
|
|
|
|
|
result.setAllValidCustomer(dis);
|
|
|
|
|
}
|
|
|
|
|
//管理员/总运营人员
|
|
|
|
|
else if (privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_GLY.getRoleCode()) || privilageRoleDO.getCode().equals(RoleEnum.ROLE_CODE_ALL_YYRY.getRoleCode())) {
|
|
|
|
|
Long all = privilageCpUserDOMapper.selectAllCount();
|
|
|
|
|
Long dis = privilageCpUserDOMapper.selectDistinctAllCount();
|
|
|
|
|
|
|
|
|
|
result.setAllCustomer(all);
|
|
|
|
|
result.setAllValidCustomer(dis);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|