206 lines
5.1 KiB
Go
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")
|
|
}
|