diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerContactServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerContactServiceImpl.java index f675bd53..c2a50aa2 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerContactServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerContactServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.oa.crm.service.impl; +import cn.dev33.satoken.stp.StpUtil; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -7,8 +8,8 @@ import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.oa.crm.domain.CrmCustomerInfo; import org.springframework.stereotype.Service; import org.dromara.oa.crm.domain.bo.CrmCustomerContactBo; @@ -33,6 +34,32 @@ public class CrmCustomerContactServiceImpl implements ICrmCustomerContactService private final CrmCustomerContactMapper baseMapper; + /** + * 客户管理员角色权限字符 + */ + private static final String CRM_CUSTOMER_ADMIN_ROLE_KEY = "KHMA"; + + /** + * 是否具备客户全量数据权限(客户管理员角色或超级管理员) + */ + private boolean isCrmCustomerDataAdmin() { + return LoginHelper.isSuperAdmin() || StpUtil.hasRole(CRM_CUSTOMER_ADMIN_ROLE_KEY); + } + + /** + * 无客户管理员角色时仅查询本人创建的数据 + */ + private void applyCustomerDataScope(MPJLambdaWrapper lqw) { + if (isCrmCustomerDataAdmin()) { + return; + } + Long userId = LoginHelper.getUserId(); + if (userId == null) { + lqw.eq(CrmCustomerContact::getContactId, -1L); + return; + } + lqw.eq(CrmCustomerContact::getCreateBy, userId); + } /** * 查询客户联系人信息 * @@ -91,6 +118,7 @@ public class CrmCustomerContactServiceImpl implements ICrmCustomerContactService .eq(StringUtils.isNotBlank(bo.getWechatAccount()), CrmCustomerContact::getWechatAccount, bo.getWechatAccount()) .eq(StringUtils.isNotBlank(bo.getQqNumber()), CrmCustomerContact::getQqNumber, bo.getQqNumber()) .eq(StringUtils.isNotBlank(bo.getActiveFlag()), CrmCustomerContact::getActiveFlag, bo.getActiveFlag()); + applyCustomerDataScope(lqw); return lqw; } diff --git a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerInfoServiceImpl.java b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerInfoServiceImpl.java index a9da3b0b..e7f80bf6 100644 --- a/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerInfoServiceImpl.java +++ b/ruoyi-modules/ruoyi-oa/src/main/java/org/dromara/oa/crm/service/impl/CrmCustomerInfoServiceImpl.java @@ -1,13 +1,16 @@ package org.dromara.oa.crm.service.impl; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ObjectUtil; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.satoken.utils.LoginHelper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.dromara.oa.crm.domain.bo.CrmCustomerInfoBo; @@ -30,8 +33,35 @@ import java.util.Collection; @Service public class CrmCustomerInfoServiceImpl implements ICrmCustomerInfoService { + /** + * 客户管理员角色权限字符 + */ + private static final String CRM_CUSTOMER_ADMIN_ROLE_KEY = "KHMA"; + private final CrmCustomerInfoMapper baseMapper; + /** + * 是否具备客户全量数据权限(客户管理员角色或超级管理员) + */ + private boolean isCrmCustomerDataAdmin() { + return LoginHelper.isSuperAdmin() || StpUtil.hasRole(CRM_CUSTOMER_ADMIN_ROLE_KEY); + } + + /** + * 无客户管理员角色时仅查询本人创建的数据 + */ + private void applyCustomerDataScope(MPJLambdaWrapper lqw) { + if (isCrmCustomerDataAdmin()) { + return; + } + Long userId = LoginHelper.getUserId(); + if (userId == null) { + lqw.eq(CrmCustomerInfo::getCustomerId, -1L); + return; + } + lqw.eq(CrmCustomerInfo::getCreateBy, userId); + } + /** * 查询客户信息 * @@ -94,6 +124,7 @@ public class CrmCustomerInfoServiceImpl implements ICrmCustomerInfoService { .eq(StringUtils.isNotBlank(bo.getOurCompanyFlag()), CrmCustomerInfo::getOurCompanyFlag, bo.getOurCompanyFlag()) .eq(bo.getParentCustomerId() != null, CrmCustomerInfo::getParentCustomerId, bo.getParentCustomerId()) .eq("t.del_flag", "0"); + applyCustomerDataScope(lqw); return lqw; }