fix: align admin behavior and Kratos integrations

This commit is contained in:
2026-08-14 14:14:51 +08:00
parent 8c4c6ba661
commit e0b0e1d8c8
123 changed files with 4334 additions and 1877 deletions
+27 -17
View File
@@ -71,32 +71,45 @@ func (r *mediaRepo) FindMediaByHash(ctx context.Context, userID uint, hash strin
}
return mediaFromPO(po), nil
}
func (r *mediaRepo) ListMedia(ctx context.Context, page, size int, keyword string, categoryID int, tag string, userID uint) ([]*biz.MediaFile, int64, error) {
if page < 1 {
page = 1
func (r *mediaRepo) ListMedia(ctx context.Context, filter biz.MediaFilter) ([]*biz.MediaFile, int64, error) {
if filter.Page < 1 {
filter.Page = 1
}
if size < 1 {
size = 10
if filter.PageSize < 1 {
filter.PageSize = 10
}
db := r.data.gormDB.WithContext(ctx).Model(&mediaPO{})
if keyword != "" {
db = db.Where("name LIKE ?", "%"+keyword+"%")
if filter.Keyword != "" {
db = db.Where("name LIKE ?", "%"+filter.Keyword+"%")
}
if categoryID > 0 {
db = db.Where("class_id = ?", categoryID)
if filter.CategoryID > 0 {
db = db.Where("class_id = ?", filter.CategoryID)
}
if tag != "" {
db = db.Where("tag = ?", tag)
if filter.Tag != "" {
db = db.Where("tag = ?", filter.Tag)
}
if userID > 0 {
db = db.Where("user_id = ?", userID)
if filter.UserID > 0 {
db = db.Where("user_id = ?", filter.UserID)
}
if !filter.StartCreatedAt.IsZero() {
db = db.Where("created_at >= ?", filter.StartCreatedAt)
}
if !filter.EndCreatedAt.IsZero() {
db = db.Where("created_at < ?", filter.EndCreatedAt)
}
var total int64
if err := db.Count(&total).Error; err != nil {
return nil, 0, err
}
var pos []mediaPO
if err := db.Order("id desc").Offset((page - 1) * size).Limit(size).Find(&pos).Error; err != nil {
orderKey := filter.OrderKey
if orderKey != "id" && orderKey != "size" && orderKey != "created_at" && orderKey != "name" {
orderKey = "id"
}
if filter.Desc {
orderKey += " desc"
}
if err := applyPagination(db.Order(orderKey), filter.Page, filter.PageSize, 100).Find(&pos).Error; err != nil {
return nil, 0, err
}
out := make([]*biz.MediaFile, 0, len(pos))
@@ -130,9 +143,6 @@ func (r *mediaRepo) SaveCategory(ctx context.Context, v *biz.AttachmentCategory)
db := r.data.gormDB.WithContext(ctx)
var count int64
query := db.Model(&categoryPO{}).Where("name = ? AND pid = ?", v.Name, v.ParentID)
if v.ID != 0 {
query = query.Where("id <> ?", v.ID)
}
if err := query.Count(&count).Error; err != nil {
return err
}