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

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 -> { .setAuth(obj -> {
if (isCheck) { if (isCheck) {
// 登录校验 -- 拦截所有路由并排除/user/doLogin 用于开放登录 // 登录校验 -- 拦截所有路由并排除/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-log: true
# 开启检查的登陆状态的开关 # 开启检查的登陆状态的开关
is-check: false is-check: true
# 自定义加解密配置 # 自定义加解密配置
cdzy: cdzy:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -44,7 +44,6 @@ public class EbikeRole implements Serializable {
/** /**
* 所属运营商 * 所属运营商
*/ */
@Column(tenantId = true)
private Long operatorId; private Long operatorId;
/** /**
@ -65,4 +64,10 @@ public class EbikeRole implements Serializable {
@Column(onInsertValue = "false") @Column(onInsertValue = "false")
private Boolean sysAdmin; 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 saveRole(EbikeRoleVo ebikeRole);
void updateRole(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("该运营商不存在"); throw new EbikeException("该运营商不存在");
}else { }else {
checkOperatorName(ebikeOperator); checkOperatorName(ebikeOperator);
EbikeOperator operator = EbikeOperator.builder() operatorOld.setOperatorName(ebikeOperator.getOperatorName());
.operatorId(operatorId) operatorOld.setAddress(ebikeOperator.getAddress());
.operatorName(ebikeOperator.getOperatorName()) operatorOld.setContactPhone(ebikeOperator.getContactPhone());
.address(ebikeOperator.getAddress()) ebikeOperatorMapper.update(operatorOld);
.contactPhone(ebikeOperator.getContactPhone())
.createBy(StpUtil.getLoginIdAsLong())
.build();
ebikeOperatorMapper.update(operator);
} }
} }
} }
@ -65,11 +61,16 @@ public class EbikeOperatorServiceImpl extends ServiceImpl<EbikeOperatorMapper, E
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_OPERATOR.OPERATOR_NAME.eq(ebikeOperator.getOperatorName())); .where(EBIKE_OPERATOR.OPERATOR_NAME.eq(ebikeOperator.getOperatorName()));
EbikeOperator operator = ebikeOperatorMapper.selectOneByQuery(queryWrapper); EbikeOperator operator = ebikeOperatorMapper.selectOneByQuery(queryWrapper);
if (operator != null){
Long operatorId = ebikeOperator.getOperatorId(); 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("该运营商名称已被占用"); 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.common.ex.EbikeException;
import com.cdzy.staff.mapper.EbikeOperatorMapper; 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.EbikeOperator;
import com.cdzy.staff.model.entity.EbikeRole;
import com.cdzy.staff.model.vo.EbikeRoleVo; import com.cdzy.staff.model.vo.EbikeRoleVo;
import com.cdzy.staff.service.EbikeRoleService;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl; 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 jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
/** /**
* 员工角色表 服务层实现 * 员工角色表 服务层实现
* *
@ -24,6 +27,9 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
@Resource @Resource
private EbikeRoleMapper ebikeRoleMapper; private EbikeRoleMapper ebikeRoleMapper;
@Resource
private EbikeStaffRoleMapper staffRoleMapper;
@Resource @Resource
private EbikeOperatorMapper ebikeOperatorMapper; private EbikeOperatorMapper ebikeOperatorMapper;
@ -31,7 +37,7 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
public void saveRole(EbikeRoleVo ebikeRole) { public void saveRole(EbikeRoleVo ebikeRole) {
Long operatorId = ebikeRole.getOperatorId(); Long operatorId = ebikeRole.getOperatorId();
checkOperator(operatorId); checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode()); checkRoleCode(ebikeRole);
EbikeRole role = EbikeRole.builder() EbikeRole role = EbikeRole.builder()
.roleName(ebikeRole.getRoleName()) .roleName(ebikeRole.getRoleName())
.operatorId(operatorId) .operatorId(operatorId)
@ -46,37 +52,55 @@ public class EbikeRoleServiceImpl extends ServiceImpl<EbikeRoleMapper, EbikeRole
Long operatorId = ebikeRole.getOperatorId(); Long operatorId = ebikeRole.getOperatorId();
checkRole(ebikeRole.getRoleId()); checkRole(ebikeRole.getRoleId());
checkOperator(operatorId); checkOperator(operatorId);
checkRoleCode(ebikeRole.getRoleCode()); checkRoleCode(ebikeRole);
EbikeRole role = EbikeRole.builder() EbikeRole role = ebikeRoleMapper.selectOneById(ebikeRole.getRoleId());
.roleId(ebikeRole.getRoleId()) role.setRoleName(ebikeRole.getRoleName());
.roleName(ebikeRole.getRoleName()) role.setRoleCode(ebikeRole.getRoleCode());
.operatorId(operatorId) role.setDescription(ebikeRole.getDescription());
.roleCode(ebikeRole.getRoleCode())
.description(ebikeRole.getDescription())
.build();
ebikeRoleMapper.update(role); 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); EbikeOperator ebikeOperator = ebikeOperatorMapper.selectOneById(operatorId);
if (ebikeOperator == null) { if (ebikeOperator == null) {
throw new EbikeException("该运营商不存在"); throw new EbikeException("该运营商不存在");
} }
} }
public void checkRole(Long roleId){ public void checkRole(Long roleId) {
EbikeRole ebikeRole = ebikeRoleMapper.selectOneById(roleId); EbikeRole ebikeRole = ebikeRoleMapper.selectOneById(roleId);
if (ebikeRole == null) { if (ebikeRole == null) {
throw new EbikeException("该角色不存在"); throw new EbikeException("该角色不存在");
} }
} }
public void checkRoleCode(String roleCode){ public void checkRoleCode(EbikeRoleVo ebikeRole) {
QueryWrapper queryWrapper = QueryWrapper.create() QueryWrapper queryWrapper = QueryWrapper.create()
.eq(EbikeRole::getRoleCode, roleCode); .eq(EbikeRole::getRoleCode, ebikeRole.getRoleCode());
EbikeRole selected = ebikeRoleMapper.selectOneByQuery(queryWrapper); EbikeRole selected = ebikeRoleMapper.selectOneByQuery(queryWrapper);
if (selected != null) { Long roleId = ebikeRole.getRoleId();
throw new EbikeException("该权限标识已被占用"); //更新逻辑
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> <jackson.version>2.18.0</jackson.version>
<hutool.version>5.8.26</hutool.version> <hutool.version>5.8.26</hutool.version>
<org.projectlombok.version>1.18.30</org.projectlombok.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> <mybatis.version>3.0.4</mybatis.version>
<satoken.version>1.40.0</satoken.version> <satoken.version>1.40.0</satoken.version>
<mysql.version>8.0.32</mysql.version> <mysql.version>8.0.32</mysql.version>