|
@@ -257,6 +257,7 @@ func (r *Role) GetRoleAccessList(ctx context.Context, req entity.RoleAccessListR
|
|
|
log.Printf("Failed to decode document: %v", err)
|
|
|
return nil, err
|
|
|
}
|
|
|
+
|
|
|
accessIDS = append(accessIDS, roleAccess.AccessID...)
|
|
|
}
|
|
|
|
|
@@ -264,11 +265,15 @@ func (r *Role) GetRoleAccessList(ctx context.Context, req entity.RoleAccessListR
|
|
|
if len(accessIDS) == 0 {
|
|
|
return nil, nil
|
|
|
}
|
|
|
-
|
|
|
+ var objIDS []primitive.ObjectID
|
|
|
+ for _, v := range accessIDS {
|
|
|
+ objID, _ := primitive.ObjectIDFromHex(v)
|
|
|
+ objIDS = append(objIDS, objID)
|
|
|
+ }
|
|
|
// 根据accessIDS查询权限列表 并且按照下级关系组合
|
|
|
access := models.Access{}
|
|
|
collection = mdb.MDB.Collection(access.TableName())
|
|
|
- accessFilter := bson.M{"id": bson.M{"$in": accessIDS}}
|
|
|
+ accessFilter := bson.M{"_id": bson.M{"$in": objIDS}}
|
|
|
cursor, err = collection.Find(ctx, accessFilter)
|
|
|
defer cursor.Close(ctx)
|
|
|
if err != nil {
|
|
@@ -347,7 +352,9 @@ func (r *Role) DelAccess(ctx context.Context, req entity.AccessDelReq) error {
|
|
|
if err := collection.FindOne(ctx, filter).Err(); err == nil {
|
|
|
return fmt.Errorf("权限已被角色使用,无法删除")
|
|
|
}
|
|
|
- _, err := collection.DeleteOne(ctx, bson.M{"id": req.Id})
|
|
|
+ objID := primitive.ObjectID{}
|
|
|
+ objID, _ = primitive.ObjectIDFromHex(req.Id)
|
|
|
+ _, err := collection.DeleteOne(ctx, bson.M{"_id": objID})
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -688,7 +695,11 @@ func validateConcurrently(ctx context.Context, req entity.RoleAccessUpdateReq) e
|
|
|
func validateRoleExistence(ctx context.Context, req entity.RoleAccessUpdateReq) error {
|
|
|
roles := models.Roles{}
|
|
|
collection := mdb.MDB.Collection(roles.TableName())
|
|
|
- if err := collection.FindOne(ctx, bson.M{"id": req.RoleId}).Err(); err != nil {
|
|
|
+ objID, err := primitive.ObjectIDFromHex(req.RoleId)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("解析角色ID失败: %v", err)
|
|
|
+ }
|
|
|
+ if err := collection.FindOne(ctx, bson.M{"_id": objID}).Err(); err != nil {
|
|
|
if errors.Is(err, mongo.ErrNoDocuments) {
|
|
|
return fmt.Errorf("角色不存在")
|
|
|
}
|
|
@@ -701,7 +712,16 @@ func validateRoleExistence(ctx context.Context, req entity.RoleAccessUpdateReq)
|
|
|
func validateAccessExistence(ctx context.Context, req entity.RoleAccessUpdateReq) error {
|
|
|
access := models.Access{}
|
|
|
collection := mdb.MDB.Collection(access.TableName())
|
|
|
- filter := bson.M{"id": bson.M{"$in": req.AccessId}} // 数组查询
|
|
|
+ objIDS := make([]primitive.ObjectID, len(req.AccessId))
|
|
|
+ for i, id := range req.AccessId {
|
|
|
+ objID, err := primitive.ObjectIDFromHex(id)
|
|
|
+ if err != nil {
|
|
|
+ return fmt.Errorf("解析权限ID失败: %v", err)
|
|
|
+ }
|
|
|
+ objIDS[i] = objID
|
|
|
+ }
|
|
|
+
|
|
|
+ filter := bson.M{"_id": bson.M{"$in": objIDS}} // 数组查询
|
|
|
if err := collection.FindOne(ctx, filter).Err(); err != nil {
|
|
|
if errors.Is(err, mongo.ErrNoDocuments) {
|
|
|
return fmt.Errorf("权限不存在")
|