admin_backend/controller/admin.go
2026-05-07 14:39:24 +08:00

206 lines
5.1 KiB
Go

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")
}