package controller import ( global_config "backend/global" "backend/model" "backend/util" "encoding/json" "github.com/gin-gonic/gin" ) func AdminList(c *gin.Context) { // 处理管理员列表请求 // 这里可以调用相应的服务或数据库查询来获取管理员列表 // 然后将结果返回给客户端 adminModel := model.Admin{} admins, err := adminModel.List() if err != nil { failed(c, "Failed to retrieve admin list: "+err.Error()) return } success(c, admins) } func AdminAdd(c *gin.Context) { // 处理添加管理员请求 var admin model.Admin if err := c.ShouldBindJSON(&admin); err != nil { failed(c, "Invalid input: "+err.Error()) return } // 这里可以添加逻辑来保存管理员信息到数据库 // 假设保存成功后返回结果 result, err := admin.Add() if err != nil { failed(c, "Failed to add admin: "+err.Error()) return } // 记录管理员操作日志 util.AddAdminLog(c, "添加管理员", admin) success(c, result) } func AdminEdit(c *gin.Context) { var admin model.Admin if err := c.ShouldBindJSON(&admin); err != nil { failed(c, "Invalid input: "+err.Error()) return } if admin.ID == 0 { failed(c, "id is required") return } if err := admin.Edit(); err != nil { failed(c, "Failed to edit admin: "+err.Error()) return } util.AddAdminLog(c, "编辑管理员", admin) success(c, "success") } func AdminDelete(c *gin.Context) { type param struct { ID int `json:"id"` } var p param if err := c.ShouldBindJSON(&p); err != nil { failed(c, "Invalid input: "+err.Error()) return } admin := model.Admin{ID: p.ID} if err := admin.Delete(); err != nil { failed(c, "Failed to delete admin: "+err.Error()) return } util.AddAdminLog(c, "删除管理员", p) success(c, "success") } func AdminLogList(c *gin.Context) { // 处理管理员日志列表请求 type param struct { Page int `json:"page"` PaseSize int `json:"pageSize"` UserName string `json:"username"` Opration string `json:"operation"` } var p param if err := c.ShouldBindJSON(&p); err != nil { failed(c, "Invalid input: "+err.Error()) return } List := []*model.AdminLog{} db := util.MPool.GetGameDB() defer db.Close() if db == nil { failed(c, "Failed to get database connection") return } err := db.Select(&List, "SELECT * FROM admin_log ORDER BY createTime DESC LIMIT ? OFFSET ?", p.PaseSize, (p.Page-1)*p.PaseSize) if err != nil { failed(c, "Failed to retrieve admin logs: "+err.Error()) return } var total int db.Get(&total, "SELECT COUNT(*) FROM admin_log") success(c, &model.Result{ Data: List, Total: total, }) } func AdminConfigList(c *gin.Context) { type param struct { Page int `json:"page"` PaseSize int `json:"pageSize"` } var p param if err := c.ShouldBindJSON(&p); err != nil { failed(c, "Invalid input: "+err.Error()) return } type Config struct { ID int `json:"id" db:"id"` Key string `json:"key" db:"config_key"` Value string `json:"value" db:"config_value"` Remark string `json:"remark" db:"remark"` } List := []*Config{} db := util.MPool.GetGameDB() defer db.Close() if db == nil { failed(c, "Failed to get database connection") return } err := db.Select(&List, "SELECT `id`, `config_key`, `config_value`, `remark` FROM config ORDER BY id DESC LIMIT ? OFFSET ?", p.PaseSize, (p.Page-1)*p.PaseSize) if err != nil { failed(c, "Failed to retrieve admin logs: "+err.Error()) return } var total int db.Get(&total, "SELECT COUNT(*) FROM config") success(c, &model.Result{ Data: List, Total: total, }) } func AdminConfigAdd(c *gin.Context) { type param struct { Key string `json:"key"` Value string `json:"value"` Remark string `json:"remark"` } var p param if err := c.ShouldBindJSON(&p); err != nil { failed(c, "Invalid input: "+err.Error()) return } db := util.MPool.GetGameDB() defer db.Close() if db == nil { failed(c, "Failed to get database connection") return } _, err := db.Exec("INSERT INTO config (`config_key`, `config_value`, `remark`) VALUES (?, ?, ?)", p.Key, p.Value, p.Remark) if err != nil { failed(c, "Failed to add config: "+err.Error()) return } var config map[string]interface{} json.Unmarshal([]byte(p.Value), &config) global_config.SetConfig(p.Key, config) // 更新全局配置 success(c, "Config added successfully") } func AdminConfigEdit(c *gin.Context) { type param struct { ID int `json:"id"` Key string `json:"key"` Value string `json:"value"` Remark string `json:"remark"` } var p param if err := c.ShouldBindJSON(&p); err != nil { failed(c, "Invalid input: "+err.Error()) return } db := util.MPool.GetGameDB() defer db.Close() if db == nil { failed(c, "Failed to get database connection") return } _, err := db.Exec("UPDATE config SET `config_key` = ?, `config_value` = ?, `remark` = ? WHERE id = ?", p.Key, p.Value, p.Remark, p.ID) if err != nil { failed(c, "Failed to edit config: "+err.Error()) return } var config map[string]interface{} json.Unmarshal([]byte(p.Value), &config) global_config.SetConfig(p.Key, config) // 更新全局配置 success(c, "Config updated successfully") }