first commit

This commit is contained in:
2026-06-03 10:09:03 +08:00
commit 81f5039458
6266 changed files with 188236 additions and 0 deletions
+303
View File
@@ -0,0 +1,303 @@
package controllers
import (
"encoding/json"
"io"
"strconv"
"strings"
"server/models"
"server/services"
beego "github.com/beego/beego/v2/server/web"
)
// PlatformAdminUserController 平台管理员用户管理(yz_system_admin_user
type PlatformAdminUserController struct {
beego.Controller
}
type adminUserDTO struct {
ID uint64 `json:"id"`
Account string `json:"account"`
Name *string `json:"name"`
Phone *string `json:"phone"`
Email *string `json:"email"`
Qq *string `json:"qq"`
Sex uint8 `json:"sex"`
Avatar *string `json:"avatar"`
Rid uint64 `json:"rid"`
LoginCount uint64 `json:"login_count"`
LastLoginIP *string `json:"last_login_ip"`
Status uint8 `json:"status"`
CreateTime string `json:"create_time"`
UpdateTime *string `json:"update_time"`
}
func toAdminUserDTO(u models.AdminUser) adminUserDTO {
var updateTime *string
if u.UpdateTime != nil {
s := u.UpdateTime.Format("2006-01-02 15:04:05")
updateTime = &s
}
return adminUserDTO{
ID: u.ID,
Account: u.Account,
Name: u.Name,
Phone: u.Phone,
Email: u.Email,
Qq: u.Qq,
Sex: u.Sex,
Avatar: u.Avatar,
Rid: u.RoleID,
LoginCount: u.LoginCount,
LastLoginIP: u.LastLoginIP,
Status: u.Status,
CreateTime: u.CreateTime.Format("2006-01-02 15:04:05"),
UpdateTime: updateTime,
}
}
// GetAllUsers 获取全部平台管理员用户
// GET /platform/getAllUsers
func (c *PlatformAdminUserController) GetAllUsers() {
rows, total, err := services.ListAdminUsers()
if err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "查询失败"}
_ = c.ServeJSON()
return
}
list := make([]adminUserDTO, 0, len(rows))
for _, u := range rows {
list = append(list, toAdminUserDTO(u))
}
c.Data["json"] = map[string]interface{}{
"code": 200,
"msg": "success",
"data": map[string]interface{}{"list": list, "total": total},
}
_ = c.ServeJSON()
}
// GetUserInfo 获取用户详情
// GET /platform/getUserInfo/:id
func (c *PlatformAdminUserController) GetUserInfo() {
idStr := c.Ctx.Input.Param(":id")
id, _ := strconv.ParseUint(idStr, 10, 64)
if id == 0 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "id 不能为空"}
_ = c.ServeJSON()
return
}
u, err := services.GetAdminUserByID(id)
if err != nil {
c.Data["json"] = map[string]interface{}{"code": 404, "msg": "用户不存在"}
_ = c.ServeJSON()
return
}
c.Data["json"] = map[string]interface{}{
"code": 200,
"msg": "success",
"data": toAdminUserDTO(*u),
}
_ = c.ServeJSON()
}
type adminAddUserPayload struct {
Account string `json:"account"`
Password string `json:"password"`
Name *string `json:"name"`
Phone *string `json:"phone"`
Email *string `json:"email"`
Qq *string `json:"qq"`
Sex *uint8 `json:"sex"`
Avatar *string `json:"avatar"`
Rid *uint64 `json:"rid"`
Status *uint8 `json:"status"`
}
// AddUser 添加平台管理员用户(仅写 yz_system_admin_user,不处理 tid
// POST /platform/addUser
func (c *PlatformAdminUserController) AddUser() {
var p adminAddUserPayload
raw, _ := io.ReadAll(c.Ctx.Request.Body)
if err := json.Unmarshal(raw, &p); err != nil {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"}
_ = c.ServeJSON()
return
}
p.Account = strings.TrimSpace(p.Account)
p.Password = strings.TrimSpace(p.Password)
if p.Account == "" {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "account 不能为空"}
_ = c.ServeJSON()
return
}
if p.Password == "" {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "password 不能为空"}
_ = c.ServeJSON()
return
}
status := uint8(1)
if p.Status != nil {
status = *p.Status
}
sex := uint8(0)
if p.Sex != nil {
sex = *p.Sex
}
roleID := uint64(1)
if p.Rid != nil && *p.Rid != 0 {
roleID = *p.Rid
}
id, err := services.CreateAdminUser(p.Account, p.Password, p.Name, p.Phone, p.Email, p.Qq, p.Avatar, sex, roleID, status)
if err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "添加失败"}
_ = c.ServeJSON()
return
}
c.Data["json"] = map[string]interface{}{
"code": 200,
"msg": "success",
"data": map[string]interface{}{"id": id},
}
_ = c.ServeJSON()
}
type editUserPayload struct {
Account *string `json:"account"`
Password *string `json:"password"`
Name *string `json:"name"`
Phone *string `json:"phone"`
Email *string `json:"email"`
Qq *string `json:"qq"`
Sex *uint8 `json:"sex"`
Avatar *string `json:"avatar"`
Rid *uint64 `json:"rid"`
Status *uint8 `json:"status"`
}
// EditUser 编辑用户信息(password 可选,存在则修改)
// POST /platform/editUser/:id
func (c *PlatformAdminUserController) EditUser() {
idStr := c.Ctx.Input.Param(":id")
id, _ := strconv.ParseUint(idStr, 10, 64)
if id == 0 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "id 不能为空"}
_ = c.ServeJSON()
return
}
var p editUserPayload
raw, _ := io.ReadAll(c.Ctx.Request.Body)
if err := json.Unmarshal(raw, &p); err != nil {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"}
_ = c.ServeJSON()
return
}
fields := map[string]interface{}{}
if p.Account != nil {
acc := strings.TrimSpace(*p.Account)
if acc != "" {
fields["account"] = acc
}
}
if p.Name != nil {
fields["name"] = *p.Name
}
if p.Phone != nil {
fields["phone"] = *p.Phone
}
if p.Email != nil {
fields["email"] = *p.Email
}
if p.Qq != nil {
fields["qq"] = *p.Qq
}
if p.Sex != nil {
fields["sex"] = *p.Sex
}
if p.Avatar != nil {
fields["avatar"] = *p.Avatar
}
if p.Rid != nil && *p.Rid != 0 {
fields["role_id"] = *p.Rid
}
if p.Status != nil {
fields["status"] = *p.Status
}
if len(fields) > 0 {
if err := services.UpdateAdminUser(id, fields); err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "编辑失败"}
_ = c.ServeJSON()
return
}
}
if p.Password != nil && strings.TrimSpace(*p.Password) != "" {
if err := services.ChangeAdminUserPassword(id, *p.Password); err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "密码修改失败"}
_ = c.ServeJSON()
return
}
}
c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success"}
_ = c.ServeJSON()
}
// DeleteUser 删除用户
// DELETE /platform/deleteUser/:id
func (c *PlatformAdminUserController) DeleteUser() {
idStr := c.Ctx.Input.Param(":id")
id, _ := strconv.ParseUint(idStr, 10, 64)
if id == 0 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "id 不能为空"}
_ = c.ServeJSON()
return
}
if err := services.DeleteAdminUser(id); err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "删除失败"}
_ = c.ServeJSON()
return
}
c.Data["json"] = map[string]interface{}{"code": 200, "msg": "success"}
_ = c.ServeJSON()
}
type changePasswordPayload struct {
ID uint64 `json:"id"`
Password string `json:"password"`
}
// ChangePassword 修改密码
// POST /platform/changePassword
func (c *PlatformAdminUserController) ChangePassword() {
var p changePasswordPayload
raw, _ := io.ReadAll(c.Ctx.Request.Body)
if err := json.Unmarshal(raw, &p); err != nil {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "参数错误"}
_ = c.ServeJSON()
return
}
if p.ID == 0 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "id 不能为空"}
_ = c.ServeJSON()
return
}
if strings.TrimSpace(p.Password) == "" {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "password 不能为空"}
_ = c.ServeJSON()
return
}
if err := services.ChangeAdminUserPassword(p.ID, p.Password); err != nil {
c.Data["json"] = map[string]interface{}{"code": 500, "msg": "修改失败"}
_ = c.ServeJSON()
return
}
c.Data["json"] = map[string]interface{}{"code": 200, "msg": "修改成功"}
_ = c.ServeJSON()
}