Explorar el Código

update 完善添加管理员时角色id校验

Alvin hace 8 meses
padre
commit
66c039fed5

+ 2 - 1
game/config/data/codeConfig.json

@@ -29,5 +29,6 @@
   {"code":16014,"message":"admin-超级账户不能修改角色"},
   {"code":16015,"message":"token验证失败"},
   {"code":16016,"message":"Ip 禁用"},
-  {"code":16017,"message":"帐号不存在"}
+  {"code":16017,"message":"帐号不存在"},
+  {"code":16018,"message":"角色名称不存在"}
 ]

+ 1 - 0
game/game_cluster/internal/code/code.go

@@ -50,4 +50,5 @@ var (
 	UnauthorizedError               int32 = 16015 // token验证失败
 	ForbiddenError                  int32 = 16016 // Ip 禁用
 	AccountNotExistError            int32 = 16017 // 帐号不存在
+	RoleNameNotExistError           int32 = 16018 // 角色名称不存在
 )

+ 11 - 1
game/game_cluster/nodes/webadmin/service/admin.go

@@ -267,9 +267,19 @@ func (a *Admin) ChangePassword(ctx context.Context, username string, password st
 
 // Add 添加管理员
 func (a *Admin) Add(ctx context.Context, username string, password string, realName string, pid string, roleId string, status int) *code.Result {
+	// 验证角色名称是否已存在
+	exist, err := NewRole().CheckRoleNameExist(roleId)
+	if err != nil {
+		mhayaLogger.Warnf("Add CheckRoleNameExist error:%v", ctx.Err())
+		return common.NewResult(code.InternalError)
+	}
+	if !exist {
+		return common.NewResult(code.RoleNameNotExistError)
+	}
+
 	// 判断账号是否重复
 	admin := model.Admin{}
-	err := mdb.MDB.Collection(a.GetDBName()).FindOne(ctx, bson.M{"username": username}).Decode(&admin)
+	err = mdb.MDB.Collection(a.GetDBName()).FindOne(ctx, bson.M{"username": username}).Decode(&admin)
 	if errors.Is(err, mongo.ErrNoDocuments) {
 		newPassword, err := HashPassword(password)
 		if err != nil {

+ 16 - 7
game/game_cluster/nodes/webadmin/service/role.go

@@ -95,7 +95,13 @@ func (r *Role) List(ctx context.Context, req entity.RoleListReq) (*entity.RoleRe
 // Add 新增角色
 func (r *Role) Add(ctx context.Context, req entity.RoleAddReq) *code.Result {
 	// 验证角色名称是否已存在
-	if !r.checkRoleNameExist(req.Name) {
+	exist, err := r.CheckRoleNameExist(req.Name)
+	if err != nil {
+		mhayaLogger.Warnf("Add CheckRoleNameExist error:%v", ctx.Err())
+		return common.NewResult(code.InternalError)
+	}
+
+	if exist {
 		return common.NewResult(code.RoleNameExistError)
 	}
 
@@ -155,8 +161,8 @@ func (r *Role) Update(ctx context.Context, req entity.RoleUpdateReq) *code.Resul
 	return nil
 }
 
-// checkRoleNameExist 检查角色名称是否已存在
-func (r *Role) checkRoleNameExist(name string) bool {
+// CheckRoleNameExist 检查角色名称是否已存在
+func (r *Role) CheckRoleNameExist(name string) (bool, error) {
 	// 创建带超时的上下文
 	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
 	defer cancel()
@@ -167,14 +173,17 @@ func (r *Role) checkRoleNameExist(name string) bool {
 	filter := bson.M{"name": name}
 
 	// 执行查询
-	if err := collection.FindOne(ctx, filter).Err(); err != nil {
+	err := collection.FindOne(ctx, filter).Err()
+	if err != nil {
 		if errors.Is(err, mongo.ErrNoDocuments) {
 			mhayaLogger.Warnf("No document found with role name: %s", name)
-			return true
+			return false, nil
 		}
-		return false
+
+		return false, err
 	}
-	return false
+
+	return true, nil
 }
 
 // Del 删除角色