mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 17:21:53 +08:00
CRM: 新增 CRM 分页查询工具类,实现通用构造 crm 数据类型数据分页查询条件
This commit is contained in:
parent
b2621c8891
commit
78165f2161
@ -17,7 +17,8 @@ import java.util.Arrays;
|
|||||||
public enum CrmSceneEnum implements IntArrayValuable {
|
public enum CrmSceneEnum implements IntArrayValuable {
|
||||||
|
|
||||||
OWNER(1, "我负责的"),
|
OWNER(1, "我负责的"),
|
||||||
FOLLOW(2, "我关注的");
|
FOLLOW(2, "我关注的"),
|
||||||
|
SUBORDINATE(3, "下属负责的");
|
||||||
|
|
||||||
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmSceneEnum::getType).toArray();
|
public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmSceneEnum::getType).toArray();
|
||||||
|
|
||||||
@ -38,6 +39,10 @@ public enum CrmSceneEnum implements IntArrayValuable {
|
|||||||
return ObjUtil.equal(FOLLOW.getType(), type);
|
return ObjUtil.equal(FOLLOW.getType(), type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isSubordinate(Integer type) {
|
||||||
|
return ObjUtil.equal(SUBORDINATE.getType(), type);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] array() {
|
public int[] array() {
|
||||||
return ARRAYS;
|
return ARRAYS;
|
||||||
|
@ -0,0 +1,63 @@
|
|||||||
|
package cn.iocoder.yudao.module.crm.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjUtil;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.concerned.CrmConcernedDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.enums.common.CrmSceneEnum;
|
||||||
|
import cn.iocoder.yudao.module.crm.framework.vo.CrmBasePageReqVO;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||||
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CRM 分页查询工具类
|
||||||
|
*
|
||||||
|
* @author HUIHUI
|
||||||
|
*/
|
||||||
|
public class CrmQueryPageUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造 crm 数据类型数据分页查询条件
|
||||||
|
*
|
||||||
|
* @param queryMapper 连表查询对象
|
||||||
|
* @param reqVO 查询条件
|
||||||
|
* @param userId 用户编号
|
||||||
|
* @param bizType 数据类型 {@link CrmBizTypeEnum}
|
||||||
|
* @param bizId 数据编号
|
||||||
|
* @param subordinateIds 下属用户编号,可为空
|
||||||
|
*/
|
||||||
|
public static <T extends MPJLambdaWrapper<?>, V extends CrmBasePageReqVO, S> void builderQuery(T queryMapper, V reqVO, Long userId,
|
||||||
|
Integer bizType, SFunction<S, ?> bizId,
|
||||||
|
@Nullable Collection<Long> subordinateIds,
|
||||||
|
Boolean isAdmin) {
|
||||||
|
// 构建数据权限连表条件
|
||||||
|
if (ObjUtil.notEqual(isAdmin, Boolean.TRUE)) { // 管理员不需要数据权限
|
||||||
|
queryMapper.innerJoin(CrmPermissionDO.class, on ->
|
||||||
|
on.eq(CrmPermissionDO::getBizType, bizType).eq(CrmPermissionDO::getBizId, bizId)
|
||||||
|
.eq(CrmPermissionDO::getUserId, userId));
|
||||||
|
}
|
||||||
|
if (ObjUtil.equal(reqVO.getPool(), Boolean.TRUE)) { // 情况一:公海
|
||||||
|
queryMapper.isNull("owner_user_id");
|
||||||
|
} else { // 情况二:不是公海
|
||||||
|
queryMapper.isNotNull("owner_user_id");
|
||||||
|
}
|
||||||
|
// 场景数据过滤
|
||||||
|
if (CrmSceneEnum.isOwner(reqVO.getSceneType())) { // 场景一:我负责的数据
|
||||||
|
queryMapper.eq("owner_user_id", userId);
|
||||||
|
}
|
||||||
|
if (CrmSceneEnum.isFollow(reqVO.getSceneType())) { // 场景二:我关注的数据
|
||||||
|
queryMapper.innerJoin(CrmConcernedDO.class, on ->
|
||||||
|
on.eq(CrmConcernedDO::getBizType, bizType).eq(CrmConcernedDO::getBizId, bizId)
|
||||||
|
.eq(CrmConcernedDO::getUserId, userId));
|
||||||
|
}
|
||||||
|
// TODO puhui999: 这里有一个疑问:如果下属负责的数据权限中没有自己的话还能看吗?
|
||||||
|
if (CrmSceneEnum.isSubordinate(reqVO.getSceneType()) && CollUtil.isNotEmpty(subordinateIds)) { // 场景三:下属负责的数据
|
||||||
|
queryMapper.in("owner_user_id", subordinateIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user