mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2025-02-20 19:20:32 +08:00
crm:完善一些遗留的 TODO
This commit is contained in:
parent
a05d3bc1d1
commit
e8ade5f1fe
@ -129,6 +129,10 @@ public class OperateLogV2Aspect {
|
||||
if (EXTRA.get() != null && EXTRA.get().get(ENABLE) != null) {
|
||||
return;
|
||||
}
|
||||
if (CONTENT.get() == null) { // 没有值说明没有日志需要记录
|
||||
return;
|
||||
}
|
||||
|
||||
// 真正记录操作日志
|
||||
this.log0(joinPoint, operation, startTime, result, exception);
|
||||
} catch (Throwable ex) {
|
||||
@ -146,7 +150,7 @@ public class OperateLogV2Aspect {
|
||||
// 补充用户信息
|
||||
fillUserFields(reqDTO);
|
||||
// 补全模块信息
|
||||
fillModuleFields(reqDTO, joinPoint, operation);
|
||||
fillModuleFields(reqDTO, operation);
|
||||
// 补全请求信息
|
||||
fillRequestFields(reqDTO);
|
||||
// 补全方法信息
|
||||
@ -161,7 +165,7 @@ public class OperateLogV2Aspect {
|
||||
reqDTO.setUserType(WebFrameworkUtils.getLoginUserType());
|
||||
}
|
||||
|
||||
private static void fillModuleFields(OperateLogV2CreateReqDTO reqDTO, ProceedingJoinPoint joinPoint, Operation operation) {
|
||||
private static void fillModuleFields(OperateLogV2CreateReqDTO reqDTO, Operation operation) {
|
||||
LogRecord logRecord = CONTENT.get();
|
||||
reqDTO.setBizId(Long.parseLong(logRecord.getBizNo())); // 操作模块业务编号
|
||||
reqDTO.setContent(logRecord.getAction());// 例如说,修改编号为 1 的用户信息,将性别从男改成女,将姓名从芋道改成源码。
|
||||
|
@ -3,16 +3,14 @@ package cn.iocoder.yudao.module.crm.framework.permission.core.aop;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.spring.SpringExpressionUtils;
|
||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
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.permission.CrmPermissionLevelEnum;
|
||||
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionRoleCodeEnum;
|
||||
import cn.iocoder.yudao.module.crm.framework.permission.core.annotations.CrmPermission;
|
||||
import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils;
|
||||
import cn.iocoder.yudao.module.crm.service.permission.CrmPermissionService;
|
||||
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.JoinPoint;
|
||||
@ -52,7 +50,7 @@ public class CrmPermissionAspect {
|
||||
Integer permissionLevel = crmPermission.level().getLevel(); // 需要的权限级别
|
||||
|
||||
// 1.1 如果是超级管理员则直接通过
|
||||
if (validateAdminUser(getUserId())) {
|
||||
if (CrmPermissionUtils.validateAdminUser()) {
|
||||
return;
|
||||
}
|
||||
// 1.2 获取数据权限
|
||||
@ -120,29 +118,4 @@ public class CrmPermissionAspect {
|
||||
return SpringExpressionUtils.parseExpressions(joinPoint, expressionStrings);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否是 CRM 管理员
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @return 是/否
|
||||
*/
|
||||
private static boolean validateAdminUser(Long userId) {
|
||||
return SingletonManager.getPermissionApi().hasAnyRoles(userId, CrmPermissionRoleCodeEnum.CRM_ADMIN.getCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态内部类实现单例获取
|
||||
*
|
||||
* @author HUIHUI
|
||||
*/
|
||||
private static class SingletonManager {
|
||||
|
||||
private static final PermissionApi PERMISSION_API = SpringUtil.getBean(PermissionApi.class);
|
||||
|
||||
public static PermissionApi getPermissionApi() {
|
||||
return PERMISSION_API;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,48 @@
|
||||
package cn.iocoder.yudao.module.crm.framework.permission.core.util;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionRoleCodeEnum;
|
||||
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
|
||||
|
||||
/**
|
||||
* 数据权限工具类
|
||||
*
|
||||
* @author HUIHUI
|
||||
*/
|
||||
public class CrmPermissionUtils {
|
||||
|
||||
/**
|
||||
* 校验用户是否是 CRM 管理员
|
||||
*
|
||||
* @return 是/否
|
||||
*/
|
||||
public static boolean validateAdminUser() {
|
||||
return SingletonManager.getPermissionApi().hasAnyRoles(getUserId(), CrmPermissionRoleCodeEnum.CRM_ADMIN.getCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得用户编号
|
||||
*
|
||||
* @return 用户编号
|
||||
*/
|
||||
private static Long getUserId() {
|
||||
return WebFrameworkUtils.getLoginUserId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态内部类实现单例获取
|
||||
*
|
||||
* @author HUIHUI
|
||||
*/
|
||||
private static class SingletonManager {
|
||||
|
||||
private static final PermissionApi PERMISSION_API = SpringUtil.getBean(PermissionApi.class);
|
||||
|
||||
public static PermissionApi getPermissionApi() {
|
||||
return PERMISSION_API;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -53,6 +53,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@LogRecord(type = CRM_CUSTOMER, bizNo = "{{#customerId}}", success = "创建了客户")
|
||||
public Long createCustomer(CrmCustomerCreateReqVO createReqVO, Long userId) {
|
||||
// 插入
|
||||
CrmCustomerDO customer = CrmCustomerConvert.INSTANCE.convert(createReqVO);
|
||||
@ -61,6 +62,9 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
|
||||
// 创建数据权限
|
||||
crmPermissionService.createPermission(new CrmPermissionCreateReqBO().setBizType(CrmBizTypeEnum.CRM_CUSTOMER.getType())
|
||||
.setBizId(customer.getId()).setUserId(userId).setLevel(CrmPermissionLevelEnum.OWNER.getLevel())); // 设置当前操作的人为负责人
|
||||
|
||||
// 添加日志上下文所需
|
||||
LogRecordContext.putVariable("customerId", customer.getId());
|
||||
return customer.getId();
|
||||
}
|
||||
|
||||
@ -85,6 +89,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@LogRecord(type = CRM_CUSTOMER, bizNo = "{{#id}}", success = "删除了客户")
|
||||
@CrmPermission(bizType = CrmBizTypeEnum.CRM_CUSTOMER, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
|
||||
public void deleteCustomer(Long id) {
|
||||
// 校验存在
|
||||
@ -152,6 +157,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@LogRecord(type = CRM_CUSTOMER, bizNo = "{{#updateReqVO.id}}", success = "锁定了客户")
|
||||
public void lockCustomer(CrmCustomerUpdateReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateCustomerExists(updateReqVO.getId());
|
||||
@ -165,6 +171,7 @@ public class CrmCustomerServiceImpl implements CrmCustomerService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@LogRecord(type = CRM_CUSTOMER, bizNo = "{{#id}}", success = "将客户放入了公海")
|
||||
@CrmPermission(bizType = CrmBizTypeEnum.CRM_CUSTOMER, bizId = "#id", level = CrmPermissionLevelEnum.OWNER)
|
||||
public void putCustomerPool(Long id) {
|
||||
// 1. 校验存在
|
||||
|
@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.crm.dal.dataobject.permission.CrmPermissionDO;
|
||||
import cn.iocoder.yudao.module.crm.dal.mysql.permission.CrmPermissionMapper;
|
||||
import cn.iocoder.yudao.module.crm.enums.common.CrmBizTypeEnum;
|
||||
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
|
||||
import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils;
|
||||
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionCreateReqBO;
|
||||
import cn.iocoder.yudao.module.crm.service.permission.bo.CrmPermissionTransferReqBO;
|
||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||
@ -89,8 +90,7 @@ public class CrmPermissionServiceImpl implements CrmPermissionService {
|
||||
CrmPermissionDO oldPermission = crmPermissionMapper.selectByBizTypeAndBizIdByUserId(
|
||||
transferReqBO.getBizType(), transferReqBO.getBizId(), transferReqBO.getUserId());
|
||||
String bizTypeName = CrmBizTypeEnum.getNameByType(transferReqBO.getBizType());
|
||||
// TODO 校验是否为超级管理员 || 1
|
||||
if (oldPermission == null || !isOwner(oldPermission.getLevel())) {
|
||||
if (oldPermission == null || !isOwner(oldPermission.getLevel()) || !CrmPermissionUtils.validateAdminUser()) {
|
||||
throw exception(CRM_PERMISSION_DENIED, bizTypeName);
|
||||
}
|
||||
// 1.1 校验转移对象是否已经是该负责人
|
||||
|
@ -7,8 +7,7 @@ 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.CrmSceneTypeEnum;
|
||||
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionLevelEnum;
|
||||
import cn.iocoder.yudao.module.crm.enums.permission.CrmPermissionRoleCodeEnum;
|
||||
import cn.iocoder.yudao.module.system.api.permission.PermissionApi;
|
||||
import cn.iocoder.yudao.module.crm.framework.permission.core.util.CrmPermissionUtils;
|
||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
||||
import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
@ -41,7 +40,7 @@ public class CrmQueryWrapperUtils {
|
||||
Long userId, Integer sceneType, Boolean pool) {
|
||||
final String ownerUserIdField = SingletonManager.getMybatisPlusJoinProperties().getTableAlias() + ".owner_user_id";
|
||||
// 1. 构建数据权限连表条件
|
||||
if (ObjUtil.notEqual(validateAdminUser(userId), Boolean.TRUE) && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限
|
||||
if (ObjUtil.notEqual(CrmPermissionUtils.validateAdminUser(), Boolean.TRUE) && ObjUtil.notEqual(pool, Boolean.TRUE)) { // 管理员,公海不需要数据权限
|
||||
query.innerJoin(CrmPermissionDO.class, on -> on.eq(CrmPermissionDO::getBizType, bizType)
|
||||
.eq(CrmPermissionDO::getBizId, bizId) // 只能使用 SFunction 如果传 id 解析出来的 sql 不对
|
||||
.eq(CrmPermissionDO::getUserId, userId));
|
||||
@ -82,7 +81,7 @@ public class CrmQueryWrapperUtils {
|
||||
* @param userId 用户编号
|
||||
*/
|
||||
public static <T extends MPJLambdaWrapper<?>> void appendPermissionCondition(T query, Integer bizType, Collection<Long> bizIds, Long userId) {
|
||||
if (ObjUtil.equal(validateAdminUser(userId), Boolean.TRUE)) {// 管理员不需要数据权限
|
||||
if (ObjUtil.equal(CrmPermissionUtils.validateAdminUser(), Boolean.TRUE)) {// 管理员不需要数据权限
|
||||
return;
|
||||
}
|
||||
|
||||
@ -91,16 +90,6 @@ public class CrmQueryWrapperUtils {
|
||||
.in(CollUtil.isNotEmpty(bizIds), CrmPermissionDO::getUserId, userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否是 CRM 管理员
|
||||
*
|
||||
* @param userId 用户编号
|
||||
* @return 是/否
|
||||
*/
|
||||
private static boolean validateAdminUser(Long userId) {
|
||||
return SingletonManager.getPermissionApi().hasAnyRoles(userId, CrmPermissionRoleCodeEnum.CRM_ADMIN.getCode());
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态内部类实现单例获取
|
||||
*
|
||||
@ -109,17 +98,12 @@ public class CrmQueryWrapperUtils {
|
||||
private static class SingletonManager {
|
||||
|
||||
private static final AdminUserApi ADMIN_USER_API = SpringUtil.getBean(AdminUserApi.class);
|
||||
private static final PermissionApi PERMISSION_API = SpringUtil.getBean(PermissionApi.class);
|
||||
private static final MybatisPlusJoinProperties MYBATIS_PLUS_JOIN_PROPERTIES = SpringUtil.getBean(MybatisPlusJoinProperties.class);
|
||||
|
||||
public static AdminUserApi getAdminUserApi() {
|
||||
return ADMIN_USER_API;
|
||||
}
|
||||
|
||||
public static PermissionApi getPermissionApi() {
|
||||
return PERMISSION_API;
|
||||
}
|
||||
|
||||
public static MybatisPlusJoinProperties getMybatisPlusJoinProperties() {
|
||||
return MYBATIS_PLUS_JOIN_PROPERTIES;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user