fix: 角色删除前校验分配情况,禁止删除使用中的角色

角色被删除后,其关联的账号-角色记录未清理,导致 CountByAccountID
统计到孤儿记录,使被分配该角色的账号无法重新分配新角色。

修复方案:删除角色前检查 tb_account_role 和 tb_shop_role,
若仍有账号或店铺持有该角色则返回 1028 错误,强制管理员显式
解除所有分配后再删除,保证数据一致性与审计完整性。
This commit is contained in:
2026-04-07 17:23:49 +08:00
parent 434a8b0349
commit 7e489a19fb
5 changed files with 50 additions and 6 deletions

View File

@@ -37,6 +37,7 @@ const (
CodeInvalidPermCode = 1025 // 权限编码格式不正确
CodeRoleAlreadyAssigned = 1026 // 角色已分配
CodePermAlreadyAssigned = 1027 // 权限已分配
CodeRoleInUse = 1028 // 角色使用中,无法删除
// 认证相关错误 (1040-1049)
CodeInvalidCredentials = 1040 // 用户名或密码错误
@@ -201,6 +202,7 @@ var allErrorCodes = []int{
CodeInvalidPermCode,
CodeRoleAlreadyAssigned,
CodePermAlreadyAssigned,
CodeRoleInUse,
CodeShopNotFound,
CodeShopCodeExists,
CodeShopLevelExceeded,
@@ -340,6 +342,7 @@ var errorMessages = map[int]string{
CodeInvalidPermCode: "权限编码格式不正确(应为 module:action 格式)",
CodeRoleAlreadyAssigned: "角色已分配",
CodePermAlreadyAssigned: "权限已分配",
CodeRoleInUse: "角色使用中,无法删除",
CodeShopNotFound: "店铺不存在",
CodeShopCodeExists: "店铺编号已存在",
CodeShopLevelExceeded: "店铺层级不能超过 7 级",