更新
This commit is contained in:
@@ -226,20 +226,28 @@ func (s *AdminService) DetailedStats() (*DetailedStats, error) {
|
||||
{Name: "被打回", Count: core.RejectedClasses},
|
||||
}
|
||||
|
||||
// 学校类型分布
|
||||
type schoolTypeRow struct {
|
||||
SchoolType string `gorm:"column:school_type"`
|
||||
Cnt int64 `gorm:"column:cnt"`
|
||||
// 学校类型分布(一所学校可涵盖多个学段,按学段分别计数)
|
||||
typeMap := map[model.SchoolType]string{
|
||||
model.SchoolUniversity: "大学",
|
||||
model.SchoolVocational: "职业学校",
|
||||
model.SchoolSeniorHigh: "高中",
|
||||
model.SchoolJuniorHigh: "初中",
|
||||
model.SchoolPrimary: "小学",
|
||||
model.SchoolKindergarten: "幼儿园",
|
||||
model.SchoolOther: "其他",
|
||||
}
|
||||
var stRows []schoolTypeRow
|
||||
s.db.Model(&model.School{}).Select("school_type, COUNT(*) as cnt").Group("school_type").Scan(&stRows)
|
||||
typeMap := map[string]string{"university": "大学", "vocational": "职业学校", "senior_high": "高中", "junior_high": "初中", "primary": "小学", "kindergarten": "幼儿园", "other": "其他"}
|
||||
for _, r := range stRows {
|
||||
name := typeMap[r.SchoolType]
|
||||
if name == "" {
|
||||
name = r.SchoolType
|
||||
orderedTypes := []model.SchoolType{
|
||||
model.SchoolUniversity, model.SchoolVocational, model.SchoolSeniorHigh,
|
||||
model.SchoolJuniorHigh, model.SchoolPrimary, model.SchoolKindergarten, model.SchoolOther,
|
||||
}
|
||||
for _, t := range orderedTypes {
|
||||
var cnt int64
|
||||
s.db.Model(&model.School{}).
|
||||
Where("FIND_IN_SET(?, school_types) > 0 OR ((school_types IS NULL OR school_types = '') AND school_type = ?)", t, t).
|
||||
Count(&cnt)
|
||||
if cnt > 0 {
|
||||
ds.SchoolTypes = append(ds.SchoolTypes, NameCountItem{Name: typeMap[t], Count: cnt})
|
||||
}
|
||||
ds.SchoolTypes = append(ds.SchoolTypes, NameCountItem{Name: name, Count: r.Cnt})
|
||||
}
|
||||
|
||||
// 地区TOP10(按省级行政区统计班级数)
|
||||
@@ -347,6 +355,21 @@ func (s *AdminService) UnbanUser(userID uint) error {
|
||||
return s.db.Save(&user).Error
|
||||
}
|
||||
|
||||
// ListUsers 获取用户列表(支持状态与关键词检索)
|
||||
func (s *AdminService) ListUsers(status, keyword string) ([]model.User, error) {
|
||||
var list []model.User
|
||||
query := s.db.Model(&model.User{})
|
||||
if status != "" && status != "all" {
|
||||
query = query.Where("status = ?", status)
|
||||
}
|
||||
if keyword != "" {
|
||||
k := "%" + keyword + "%"
|
||||
query = query.Where("username LIKE ? OR real_name LIKE ? OR nickname LIKE ? OR email LIKE ? OR phone LIKE ?", k, k, k, k, k)
|
||||
}
|
||||
err := query.Order("id desc").Find(&list).Error
|
||||
return list, err
|
||||
}
|
||||
|
||||
// ListBannedUsers 获取封禁用户列表
|
||||
func (s *AdminService) ListBannedUsers() ([]model.User, error) {
|
||||
var list []model.User
|
||||
|
||||
Reference in New Issue
Block a user