From 5eb5c0c439cb3e79798cc682932814af23e8a04d Mon Sep 17 00:00:00 2001 From: yechenhao Date: Thu, 21 May 2020 21:06:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/CustomerViewController.java | 4 +- .../customer/service/CustomerViewService.java | 121 ++++++++++++++++-- .../mapper/PrivilageCpUserDOMapper.java | 8 ++ .../mapper/PrivilageCpUserStoreDOMapper.java | 2 + .../mapper/PrivilageCpUserDOMapper.xml | 24 ++++ .../mapper/PrivilageCpUserStoreDOMapper.xml | 9 ++ 6 files changed, 157 insertions(+), 11 deletions(-) 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 3eccf3c..b6eb310 100644 --- a/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java +++ b/src/main/java/com/kiisoo/ic/customer/controller/CustomerViewController.java @@ -97,9 +97,9 @@ public class CustomerViewController extends BaseController { */ @ResponseBody @RequestMapping(value = "/all/count", method = RequestMethod.GET) - public Map getAllCount(){ + public Map getAllCount(@RequestParam("userId") Long userId){ try{ - CustomerViewVO result = customerViewService.getAllCount(); + CustomerViewVO result = customerViewService.getAllCount(userId); return data(result); }catch (Exception e){ log.error("查询客户数据概览出错", e); 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 1a8d1de..3b1c847 100644 --- a/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java +++ b/src/main/java/com/kiisoo/ic/customer/service/CustomerViewService.java @@ -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 shopIds = getShopIds(userId); - if(CollectionUtils.isEmpty(shopIds)){ + List 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 wrapper1 = new QueryWrapper<>(); + wrapper1.eq("user_id", userId); + List pm = organizationalMemberMapper.selectList(wrapper1); + //查询零售公司的门店 + List 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 customerList = opCustomerDOMapper.selectCustomerList(shopIds, null, null, startTime, endTime); + List 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 shopNameMap = poiStoreDOMapper.selectBatchIds(shopIds).stream().collect(Collectors.toMap(PoiStore::getId, PoiStore::getName)); + Map shopNameMap = new HashMap<>(); + List 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 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 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 wrapper1 = new QueryWrapper<>(); + wrapper1.eq("user_id", userId); + List pm = organizationalMemberMapper.selectList(wrapper1); + //查询零售公司的门店 + List list1 = retailCompanyService.selectShopByCompany(pm.get(0).getOrgId()); + shopIdList = list1.stream().map(PoiStore::getId).collect(Collectors.toList()); + List 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; } diff --git a/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java b/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java index 19fdd5e..89f4adf 100644 --- a/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java +++ b/src/main/java/com/kiisoo/ic/employee/mapper/PrivilageCpUserDOMapper.java @@ -21,4 +21,12 @@ public interface PrivilageCpUserDOMapper extends BaseMapper { Long selectDistinctAllCount(); List selectCustomerIdsByCpUserId(@Param("cpUserId")String cpUserId); + + Long selectStoreCount(@Param("cpUserId")String cpUserId); + + Long selectDistinctStoreCount(@Param("cpUserId")String cpUserId); + + Long selectStoresCount(@Param("cpUserIds")List cpUserIds); + + Long selectDistinctStoresCount(@Param("cpUserIds")List cpUserIds); } diff --git a/src/main/java/com/kiisoo/ic/store/mapper/PrivilageCpUserStoreDOMapper.java b/src/main/java/com/kiisoo/ic/store/mapper/PrivilageCpUserStoreDOMapper.java index 38050dc..54b10b0 100644 --- a/src/main/java/com/kiisoo/ic/store/mapper/PrivilageCpUserStoreDOMapper.java +++ b/src/main/java/com/kiisoo/ic/store/mapper/PrivilageCpUserStoreDOMapper.java @@ -22,5 +22,7 @@ public interface PrivilageCpUserStoreDOMapper extends BaseMapper selectCpUserIdsByStoreIds(@Param("shopIds")List storeIds); + PrivilageCpUserStoreDO selectOneCpUser(String cpUser); } diff --git a/src/main/resources/mapper/PrivilageCpUserDOMapper.xml b/src/main/resources/mapper/PrivilageCpUserDOMapper.xml index 4ffe1a8..0253e24 100644 --- a/src/main/resources/mapper/PrivilageCpUserDOMapper.xml +++ b/src/main/resources/mapper/PrivilageCpUserDOMapper.xml @@ -25,6 +25,30 @@ select count(distinct customer_user_id) from op_cp_user_customer_relation + + + + + + + + + + diff --git a/src/main/resources/mapper/PrivilageCpUserStoreDOMapper.xml b/src/main/resources/mapper/PrivilageCpUserStoreDOMapper.xml index 0d1b94a..477792d 100644 --- a/src/main/resources/mapper/PrivilageCpUserStoreDOMapper.xml +++ b/src/main/resources/mapper/PrivilageCpUserStoreDOMapper.xml @@ -35,6 +35,15 @@ and pcus.store_id = #{storeId} limit 1 +