Kaynağa Gözat

fix(sysCustomerData): 修正客户数据权限和查询逻辑

- 删除Controller中基于角色的用户ID赋值,权限判断逻辑移至服务层
- 服务层增加非管理员用户默认绑定当前用户ID的逻辑
- 调整查询条件,允许无类型ID时根据用户ID过滤客户数据
- 修正客户用户公共服务中成员角色数据处理,清空成员数据列表
- 增加根据组ID过滤用户组关系的查询条件
- 注释掉管理员小组查询中未使用的组ID筛选及集合合并逻辑
zhangxf 3 hafta önce
ebeveyn
işleme
400a862e3e

+ 0 - 3
src/main/java/com/jtzx/crm/module/api/web/sys/CustomerDataPrivateController.java

@@ -52,9 +52,6 @@ public class CustomerDataPrivateController {
     @Operation(summary = "分页查询私域客户信息接口")
     @PostMapping(value = "/customer/data/list")
     public ApiResult<PageResult<SysCustomerDataPrivateBO>> adminList(@RequestBody AdminSysCustomerDataPrivateListDTO dto) throws BusinessException{
-        if (!UserContextHolder.getUserContext().getRoles().contains("Admin")) {
-            dto.setUserId(UserContextHolder.getUserId());
-        }
         return ApiResult.data(sysCustomerDataPrivateService.adminList(dto));
     }
 

+ 6 - 0
src/main/java/com/jtzx/crm/module/sys/service/SysCustomerDataPrivateService.java

@@ -85,6 +85,10 @@ public class SysCustomerDataPrivateService {
         List<Long> userIds = Lists.newArrayList();
         if (dto.getUserId() != null) {
             userIds.add(dto.getUserId());
+        }else {
+            if(!UserContextHolder.getUserContext().getRoles().contains("Admin")){
+                userIds.add(UserContextHolder.getUserId());
+            }
         }
         List<Long> groupIds = Lists.newArrayList();
         if (dto.getGroupId() != null) {
@@ -121,6 +125,7 @@ public class SysCustomerDataPrivateService {
                         .eq(dto.getTypeId() != null && dto.getTypeId().equals(2) , SysCustomerDataEntity::getSuccessStatus, 1)
                         //首单客户判断
                         .in(dto.getTypeId() != null && dto.getTypeId().equals(1)&& CollUtil.isNotEmpty(userIds), SysCustomerDataEntity::getClaimUserId, userIds)
+                        .in(dto.getTypeId()==null && CollUtil.isNotEmpty(userIds), SysCustomerDataEntity::getClaimUserId, userIds)
                         // 学段id(param_base_data表主id)
                         .eq(Objects.nonNull(dto.getStageId()), SysCustomerDataEntity::getStageId, dto.getStageId())
                         // 省份id(省份表主id)
@@ -132,6 +137,7 @@ public class SysCustomerDataPrivateService {
                         .in(CollUtil.isNotEmpty(groupIds),SysCustomerDataEntity::getClaimUserGroupId, groupIds)
                         //必须是已认领的,不认领的是不能出现在我的客户里面的,所有必须加这个过滤,不管是存量还是首单客户都要加这个参数
                         .eq(SysCustomerDataEntity::getClaimStatus, 1)
+
                         // 排序
                         .orderByDesc(SysCustomerDataEntity::getClaimDatetime)
         );

+ 18 - 14
src/main/java/com/jtzx/crm/module/sys/service/SysCustomerUserCommonService.java

@@ -219,7 +219,9 @@ public class SysCustomerUserCommonService {
         }
         //普通成员或小组组长
         if (roles.contains("Member") || roles.contains("GroupManager")) {
-            return this.handleMemberRole(provinceIds, cityIds, groupIds, userStatus);
+            SysCustomerSelectBO sysCustomerSelectBO = this.handleMemberRole(provinceIds, cityIds, groupIds, userStatus);
+            sysCustomerSelectBO.setMemberData(Lists.newArrayList());
+            return  sysCustomerSelectBO;
         }
         return SysCustomerSelectBO.builder().build();
     }
@@ -477,6 +479,7 @@ public class SysCustomerUserCommonService {
                                 )
                                 .in(SysUserGroupRelationEntity::getProvinceId, provinceIds)
                                 .in(SysUserGroupRelationEntity::getCityId, cityIds)
+                                .in(CollUtil.isNotEmpty(groupIds),SysUserGroupRelationEntity::getGroupId,groupIds)
                                 .orderByAsc(SysUserGroupRelationEntity::getProvinceId)
                 );
         if (userStatus) {
@@ -590,19 +593,20 @@ public class SysCustomerUserCommonService {
 
 
         //如果没有添加小组,管理员查询,可能小组id也为空
-        if (groupIds != null) {
-            List<SysGroupEntity> groupEntityList = sysGroupMapper.selectList(
-                    new LambdaQueryWrapper<>(SysGroupEntity.class)
-                            .select(
-                                    SysGroupEntity::getId
-                            )
-                            .orderByAsc(SysGroupEntity::getSortCode)
-            );
-            if (CollUtil.isNotEmpty(groupEntityList)) {
-                groupIds.addAll(
-                        groupEntityList.stream().map(SysGroupEntity::getId).filter(Objects::nonNull).distinct().toList());
-            }
-        }
+//        if (groupIds != null) {
+//            List<SysGroupEntity> groupEntityList = sysGroupMapper.selectList(
+//                    new LambdaQueryWrapper<>(SysGroupEntity.class)
+//                            .select(
+//                                    SysGroupEntity::getId
+//                            )
+//                            .in(SysGroupEntity::getId,groupIds)
+//                            .orderByAsc(SysGroupEntity::getSortCode)
+//            );
+//            if (CollUtil.isNotEmpty(groupEntityList)) {
+//                groupIds.addAll(
+//                        groupEntityList.stream().map(SysGroupEntity::getId).filter(Objects::nonNull).distinct().toList());
+//            }
+//        }
         List<String> provinceCodes = provinceRegionEntityList.stream()
                 .map(DictProvinceRegionEntity::getCode).toList();
         if (provinceIds != null) {