|
@@ -27,10 +27,9 @@ func NewRole() *Role {
|
|
|
}
|
|
|
|
|
|
// List 角色列表
|
|
|
-func (r *Role) List(ctx context.Context, req entity.RoleListReq) ([]entity.RoleResp, error) {
|
|
|
+func (r *Role) List(ctx context.Context, req *entity.RoleListReq) ([]entity.RoleResp, error) {
|
|
|
roles := models.Roles{}
|
|
|
rolesCollection := mdb.MDB.Collection(roles.TableName())
|
|
|
-
|
|
|
// 构建过滤器
|
|
|
filter := bson.M{}
|
|
|
if req.Name != "" {
|
|
@@ -39,15 +38,17 @@ func (r *Role) List(ctx context.Context, req entity.RoleListReq) ([]entity.RoleR
|
|
|
if req.Status > 0 {
|
|
|
filter["status"] = req.Status
|
|
|
}
|
|
|
-
|
|
|
// 数据验证
|
|
|
if req.Page <= 0 || req.Size <= 0 {
|
|
|
return nil, fmt.Errorf("invalid page or size")
|
|
|
}
|
|
|
-
|
|
|
// 设置分页选项
|
|
|
findOptions := options.Find().SetSkip(int64((req.Page - 1) * req.Size)).SetLimit(int64(req.Size))
|
|
|
-
|
|
|
+ countDocuments, err := rolesCollection.CountDocuments(ctx, filter)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ req.Count = countDocuments
|
|
|
// 防御性编程
|
|
|
tableName := roles.TableName()
|
|
|
if tableName == "" {
|
|
@@ -389,7 +390,7 @@ func (r *Role) UpdateAccess(ctx context.Context, req entity.AccessUpdateReq) err
|
|
|
}
|
|
|
|
|
|
// ListAccess listAccessa
|
|
|
-func (r *Role) ListAccess(ctx context.Context, req entity.AccessListReq) ([]*entity.AccessResp, error) {
|
|
|
+func (r *Role) ListAccess(ctx context.Context, req *entity.AccessListReq) ([]*entity.AccessResp, error) {
|
|
|
access := models.Access{}
|
|
|
collection := mdb.MDB.Collection(access.TableName())
|
|
|
filter := bson.M{}
|
|
@@ -417,6 +418,12 @@ func (r *Role) ListAccess(ctx context.Context, req entity.AccessListReq) ([]*ent
|
|
|
}
|
|
|
// 设置分页选项
|
|
|
findOptions := options.Find().SetSkip(int64((req.Page - 1) * req.Size)).SetLimit(int64(req.Size))
|
|
|
+ findOptions.SetSort(bson.M{"add_time": -1})
|
|
|
+ countDocuments, err := collection.CountDocuments(ctx, filter)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ req.Count = countDocuments
|
|
|
cursor, err := collection.Find(ctx, filter, findOptions)
|
|
|
defer cursor.Close(ctx)
|
|
|
if err != nil {
|