开启登陆校验、角色管理功能修改(不可修改运营商

This commit is contained in:
attiya 2025-09-03 16:04:56 +08:00
parent ad6c13ac99
commit 57e799b27c
12 changed files with 77 additions and 38 deletions

View File

@ -31,7 +31,7 @@ public class SaTokenConfigure {
.setAuth(obj -> {
if (isCheck) {
// 登录校验 -- 拦截所有路由并排除/user/doLogin 用于开放登录
SaRouter.match("/**", "/user/auth/loginByPwd", r -> StpUtil.checkLogin());
SaRouter.match("/**", "/staff/ebikeOperatorStaff/login", r -> StpUtil.checkLogin());
}
// 权限认证 -- 不同模块, 校验不同权限

View File

@ -97,7 +97,7 @@ sa-token:
# 是否输出操作日志
is-log: true
# 开启检查的登陆状态的开关
is-check: false
is-check: true
# 自定义加解密配置
cdzy:

View File

@ -19,14 +19,21 @@ public class EbikeTenantFactory implements TenantFactory {
String id = (String) StpUtil.getLoginId();
StaffInfo staffInfo = (StaffInfo) StpUtil.getSessionByLoginId(id).get(id);
List<EbikeRole> roles = staffInfo.getRoles();
for (EbikeRole role:roles){
boolean isSysAdmin = false;
for (EbikeRole role : roles) {
if (role.getSysAdmin()) {
return new Object[]{};
isSysAdmin = true;
break;
}
}
long tenantId = Long.parseLong(attribute.toString());
//系统管理员
if (isSysAdmin) {
return null;
} else {
return new Object[]{tenantId};
}
}
}
return null;

View File

@ -49,6 +49,7 @@ public class MyBatisFlexConfiguration {
//设置数据已被删除时的值
globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE);
globalConfig.setTenantColumn("operator_id");
return globalConfig;
}
}

View File

@ -47,6 +47,7 @@ public class EbikeRoleController {
*/
@GetMapping("remove")
public JsonResult<?> remove(@RequestParam("roleId") Long roleId) {
ebikeRoleService.checkRoleCode(roleId);
ebikeRoleService.removeById(roleId);
return JsonResult.success();
}

View File

@ -29,7 +29,6 @@ public class EbikeOperator implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(tenantId = true)
private Long operatorId;
private String operatorName;

View File

@ -37,7 +37,6 @@ public class EbikeOperatorStaff implements Serializable {
private String salt;
@Column(tenantId = true)
private Long operatorId;
private Integer status;

View File

@ -44,7 +44,6 @@ public class EbikeRole implements Serializable {
/**
* 所属运营商
*/
@Column(tenantId = true)
private Long operatorId;
/**
@ -65,4 +64,10 @@ public class EbikeRole implements Serializable {
@Column(onInsertValue = "false")
private Boolean sysAdmin;
/**
* 是否系统角色
*/
@Column(onInsertValue = "false")
private Boolean sysRole;
}

View File

@ -15,4 +15,6 @@ public interface EbikeRoleService extends IService<EbikeRole> {
void saveRole(EbikeRoleVo ebikeRole);
void updateRole(EbikeRoleVo ebikeRole);
void checkRoleCode(Long roleId);
}

View File

@ -38,14 +38,10 @@ public class EbikeOperatorServiceImpl extends ServiceImpl<EbikeOperatorMapper, E
throw new EbikeException("该运营商不存在");
}else {
checkOperatorName(ebikeOperator);
EbikeOperator operator = EbikeOperator.builder()
.operatorId(operatorId)
.operatorName(ebikeOperator.getOperatorName())
.address(ebikeOperator.getAddress())
.contactPhone(ebikeOperator.getContactPhone())
.createBy(StpUtil.getLoginIdAsLong())
.build();
ebikeOperatorMapper.update(operator);
operatorOld.setOperatorName(ebikeOperator.getOperatorName());
operatorOld.setAddress(ebikeOperator.getAddress());
operatorOld.setContactPhone(ebikeOperator.getContactPhone());
ebikeOperatorMapper.update(operatorOld);
}
}
}
@ -65,11 +61,16 @@ public class EbikeOperatorServiceImpl extends ServiceImpl<EbikeOperatorMapper, E
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_OPERATOR.OPERATOR_NAME.eq(ebikeOperator.getOperatorName()));
EbikeOperator operator = ebikeOperatorMapper.selectOneByQuery(queryWrapper);
if (operator != null){
Long operatorId = ebikeOperator.getOperatorId();
if (operatorId != null && !Objects.equals(operator.getOperatorId(), operatorId)){
//更新逻辑
if (operator != null && operatorId != null ){
if (!Objects.equals(operator.getOperatorId(), operatorId)){
throw new EbikeException("该运营商名称已被占用");
}
}
//添加逻辑
if (operator != null && operatorId == null) {
throw new EbikeException("该运营商名称已被占用");
}
}
}

View File

@ -2,16 +2,19 @@ package com.cdzy.staff.service.impl;
import com.cdzy.common.ex.EbikeException;
import com.cdzy.staff.mapper.EbikeOperatorMapper;
import com.cdzy.staff.mapper.EbikeRoleMapper;
import com.cdzy.staff.mapper.EbikeStaffRoleMapper;
import com.cdzy.staff.model.entity.EbikeOperator;
import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.model.vo.EbikeRoleVo;
import com.cdzy.staff.service.EbikeRoleService;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.mapper.EbikeRoleMapper;
import com.cdzy.staff.service.EbikeRoleService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import java.util.Objects;
/**
* 员工角色表 服务层实现
*
@ -24,6 +27,9 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
@Resource
private EbikeRoleMapper ebikeRoleMapper;
@Resource
private EbikeStaffRoleMapper staffRoleMapper;
@Resource
private EbikeOperatorMapper ebikeOperatorMapper;
@ -31,7 +37,7 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
public void saveRole(EbikeRoleVo ebikeRole) {
Long operatorId = ebikeRole.getOperatorId();
checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode());
checkRoleCode(ebikeRole);
EbikeRole role = EbikeRole.builder()
.roleName(ebikeRole.getRoleName())
.operatorId(operatorId)
@ -46,37 +52,55 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
Long operatorId = ebikeRole.getOperatorId();
checkRole(ebikeRole.getRoleId());
checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode());
EbikeRole role = EbikeRole.builder()
.roleId(ebikeRole.getRoleId())
.roleName(ebikeRole.getRoleName())
.operatorId(operatorId)
.roleCode(ebikeRole.getRoleCode())
.description(ebikeRole.getDescription())
.build();
checkRoleCode(ebikeRole);
EbikeRole role = ebikeRoleMapper.selectOneById(ebikeRole.getRoleId());
role.setRoleName(ebikeRole.getRoleName());
role.setRoleCode(ebikeRole.getRoleCode());
role.setDescription(ebikeRole.getDescription());
ebikeRoleMapper.update(role);
}
public void checkOperator(Long operatorId){
@Override
public void checkRoleCode(Long roleId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.eq(EbikeRole::getRoleId, roleId);
EbikeRole selected = ebikeRoleMapper.selectOneByQuery(queryWrapper);
//更新逻辑
if (selected.getSysRole()) {
throw new EbikeException("该角色为系统默认角色不可修改/删除");
}
}
public void checkOperator(Long operatorId) {
EbikeOperator ebikeOperator = ebikeOperatorMapper.selectOneById(operatorId);
if (ebikeOperator == null) {
throw new EbikeException("该运营商不存在");
}
}
public void checkRole(Long roleId){
public void checkRole(Long roleId) {
EbikeRole ebikeRole = ebikeRoleMapper.selectOneById(roleId);
if (ebikeRole == null) {
throw new EbikeException("该角色不存在");
}
}
public void checkRoleCode(String roleCode){
public void checkRoleCode(EbikeRoleVo ebikeRole) {
QueryWrapper queryWrapper = QueryWrapper.create()
.eq(EbikeRole::getRoleCode, roleCode);
.eq(EbikeRole::getRoleCode, ebikeRole.getRoleCode());
EbikeRole selected = ebikeRoleMapper.selectOneByQuery(queryWrapper);
if (selected != null) {
throw new EbikeException("该权限标识已被占用");
Long roleId = ebikeRole.getRoleId();
//更新逻辑
if (selected != null && roleId != null) {
if (!Objects.equals(selected.getRoleId(), roleId)) {
throw new EbikeException("该角色名称已被占用");
} else if (Objects.equals(selected.getRoleId(), roleId) && selected.getSysRole()) {
throw new EbikeException("该角色为系统默认角色不可修改/删除");
}
}
//添加逻辑
if (selected != null && roleId == null) {
throw new EbikeException("该角色名称已被占用");
}
}

View File

@ -28,7 +28,7 @@
<jackson.version>2.18.0</jackson.version>
<hutool.version>5.8.26</hutool.version>
<org.projectlombok.version>1.18.30</org.projectlombok.version>
<mybatis-flex.version>1.11.1</mybatis-flex.version>
<mybatis-flex.version>1.11.0</mybatis-flex.version>
<mybatis.version>3.0.4</mybatis.version>
<satoken.version>1.40.0</satoken.version>
<mysql.version>8.0.32</mysql.version>