spark-server/internal/module/admin/model/complaints.go
zhr 13b42cef7b chore: 合并本地改动与 main(t_ 表名、lint、音乐分类)
在 fast-forward 到 origin/main 后解决 music logic/repo 冲突,SQL 与模型统一 t_* 表名;Makefile 修正 golangci-lint 变量并令 test/deploy 依赖 lint;补齐 admin/transport 等 lint 修复与 music logic 单测以满足覆盖率门禁。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 10:56:59 +08:00

56 lines
1.6 KiB
Go

package model
import (
"context"
"time"
friendentity "spark-server/internal/module/friend/entity"
"spark-server/internal/pkg/errs"
)
func (m *Repo) ListComplaints(ctx context.Context, limit int) ([]ComplaintRow, error) {
db, err := m.session(ctx)
if err != nil {
return nil, err
}
type scanRow struct {
ID int64 `gorm:"column:id"`
UserID int64 `gorm:"column:user_id"`
TargetID int64 `gorm:"column:target_id"`
Reason int `gorm:"column:reason"`
Detail string `gorm:"column:detail"`
CreatedAt time.Time `gorm:"column:created_at"`
Email string `gorm:"column:email"`
TargetMail string `gorm:"column:target_email"`
}
var rows []scanRow
err = db.Raw(`
SELECT r.id, r.user_id, r.target_id, r.reason, r.detail, r.created_at,
COALESCE(e.email,'') AS email, COALESCE(te.email,'') AS target_email
FROM t_friend_reports r
LEFT JOIN t_user_emails e ON e.user_id = r.user_id
LEFT JOIN t_user_emails te ON te.user_id = r.target_id
ORDER BY r.id DESC
LIMIT ?`, limit).Scan(&rows).Error
if err != nil {
return nil, mapDBErr(err)
}
out := make([]ComplaintRow, 0, len(rows))
for i := range rows {
out = append(out, ComplaintRow(rows[i]))
}
return out, nil
}
func (m *Repo) InsertComplaint(ctx context.Context, r *friendentity.Report) error {
if r == nil || r.UserID <= 0 || r.TargetID <= 0 {
return errs.ErrInvalidArgument
}
db, err := m.session(ctx)
if err != nil {
return err
}
return mapDBErr(db.Exec(`INSERT INTO t_friend_reports (id, user_id, target_id, reason, detail, created_at) VALUES (?,?,?,?,?,?)`,
r.ID, r.UserID, r.TargetID, int(r.Reason), r.Detail, r.CreatedAt).Error)
}