浏览代码

新增数据管理员数据

userxzz 8 月之前
父节点
当前提交
4251ba10ad

+ 2 - 1
game/game_cluster/nodes/webadmin/entity/admin.go

@@ -2,7 +2,8 @@ package entity
 
 // AdminResp \game\game_cluster\nodes\webadmin\entity\admin.go
 type AdminResp struct {
-	ToKen string `json:"token"`
+	ToKen  string `json:"token"`
+	RoleID string `json:"role_id"`
 }
 type AdminLoginReq struct {
 	Username string `json:"username"`

+ 1 - 1
game/game_cluster/nodes/webadmin/router/router.go

@@ -64,7 +64,7 @@ func (c *Controller) InitApiRouter(u *gin.RouterGroup) {
 	u.POST("/role/role_access/update", controller.NewRole().UpdateRoleAccess)
 	u.POST("/role/admin_unbind_role", controller.NewRole().AdminUnBindRole)
 	u.POST("/role/admin_bind_role", controller.NewRole().AdminBindRole)
-	u.POST("/role/admin_role_info", controller.NewRole().GetAdminRole)
+	u.GET("/role/admin_role_info", controller.NewRole().GetAdminRole)
 	u.POST("/whitelist/add", controller.NewWhitelist().AddWhitelist)
 	u.POST("/whitelist/remove", controller.NewWhitelist().RemoveWhitelist)
 	u.POST("/whitelist/list", controller.NewWhitelist().GetWhitelist)

+ 3 - 2
game/game_cluster/nodes/webadmin/service/admin.go

@@ -58,7 +58,7 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 		return nil, fmt.Errorf("failed to query user: %s", err)
 	}
 	// 判断用户状态
-	if user.Status == 0 {
+	if user.Status != 1 {
 		log.Println("User is disabled")
 		return nil, errors.New("user is disabled")
 	}
@@ -94,7 +94,8 @@ func (a *Admin) Login(ctx *gin.Context, username string, password string) (*enti
 	// 返回用户信息
 	log.Printf("Returning user: %s", username)
 	return &entity.AdminResp{
-		ToKen: generateToken,
+		ToKen:  generateToken,
+		RoleID: user.RoleId,
 	}, nil
 }
 

+ 22 - 8
game/game_cluster/nodes/webadmin/service/role.go

@@ -481,12 +481,22 @@ func (r *Role) AdminBindRole(ctx context.Context, req *entity.AdminBindRoleReq)
 	admin := model.Admin{}
 	collection = mdb.MDB.Collection(admin.TableName())
 	objID, _ := primitive.ObjectIDFromHex(req.AdminId)
+	err := collection.FindOne(ctx, bson.M{"_id": objID}).Decode(&admin)
+	if err != nil {
+		return fmt.Errorf("管理员不存在")
+	}
+	if admin.RoleId == req.RoleId {
+		return fmt.Errorf("管理员角色和请求角色一致,无需修改")
+	}
+	if admin.Username == "admin" {
+		return fmt.Errorf("admin-超级账户不能修改角色")
+	}
 	filter = bson.M{"_id": objID, "status": 1}
 	if err := collection.FindOne(ctx, filter).Err(); err != nil {
 		return fmt.Errorf("管理员不存在 或者 已经被禁用")
 	}
 	// 更新管理员数据
-	_, err := collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": req.RoleId}})
+	_, err = collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": req.RoleId}})
 	if err != nil {
 		return fmt.Errorf("更新管理员失败")
 	}
@@ -500,11 +510,19 @@ func (r *Role) AdminUnBindRole(ctx context.Context, req *entity.AdminBindRoleReq
 	collection := mdb.MDB.Collection(admin.TableName())
 	objID, _ := primitive.ObjectIDFromHex(req.AdminId)
 	filter := bson.M{"_id": objID}
-	if err := collection.FindOne(ctx, filter).Err(); err != nil {
+	err := collection.FindOne(ctx, filter).Decode(&admin)
+	if err != nil {
 		return fmt.Errorf("管理员不存在")
 	}
+
+	if admin.RoleId == req.RoleId {
+		return fmt.Errorf("管理员角色和请求角色一致,无需修改")
+	}
+	if admin.Username == "admin" {
+		return fmt.Errorf("admin-超级账户不能修改角色")
+	}
 	// 更新管理员数据
-	_, err := collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": ""}})
+	_, err = collection.UpdateByID(ctx, objID, bson.M{"$set": bson.M{"role_id": ""}})
 	if err != nil {
 		return fmt.Errorf("更新管理员失败")
 	}
@@ -565,10 +583,6 @@ func getRoleAccess(ctx context.Context, roleId string) (*models.RoleAccess, erro
 }
 
 func (r *Role) GetAdminRole(ctx context.Context, req *entity.AdminBindRoleReq) (*entity.AdminBindRoleResp, error) {
-	admin, err := getAdmin(ctx, req.AdminId)
-	if err != nil {
-		return nil, err
-	}
 
 	role, err := getRole(ctx, req.RoleId)
 	if err != nil {
@@ -630,7 +644,7 @@ func (r *Role) GetAdminRole(ctx context.Context, req *entity.AdminBindRoleReq) (
 
 	return &entity.AdminBindRoleResp{
 			AdminId:    req.AdminId,
-			AdminName:  admin.Username,
+			AdminName:  "adminUsername",
 			RoleName:   role.Name,
 			RoleId:     req.RoleId,
 			AccessList: formatAccessData(accessList)},