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
+201
View File
@@ -0,0 +1,201 @@
package controllers
import (
"encoding/json"
"io"
"strconv"
"strings"
"server/models"
beego "github.com/beego/beego/v2/server/web"
)
// PlatformRoleController 平台角色管理(yz_system_admin_role
type PlatformRoleController struct {
beego.Controller
}
type rolePayload struct {
Cid *uint8 `json:"cid"`
Name string `json:"name"`
Status *uint8 `json:"status"`
Rights interface{} `json:"rights"`
}
func normalizeRights(v interface{}) *string {
if v == nil {
return nil
}
switch t := v.(type) {
case string:
s := strings.TrimSpace(t)
if s == "" {
return nil
}
return &s
default:
b, err := json.Marshal(v)
if err != nil {
return nil
}
s := string(b)
return &s
}
}
// GetAllRoles 获取角色列表
// GET /platform/allRoles
func (c *PlatformRoleController) GetAllRoles() {
var rows []models.AdminRole
_, err := models.Orm.QueryTable(new(models.AdminRole)).
OrderBy("-id").
All(&rows)
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": rows}
_ = c.ServeJSON()
}
// GetRoleByID 获取角色详情
// GET /platform/roles/:id
func (c *PlatformRoleController) GetRoleByID() {
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
}
role := models.AdminRole{ID: id}
if err := models.Orm.Read(&role); 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": role}
_ = c.ServeJSON()
}
// CreateRole 创建角色
// POST /platform/roles
func (c *PlatformRoleController) CreateRole() {
var p rolePayload
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.Name = strings.TrimSpace(p.Name)
if p.Name == "" {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "name 不能为空"}
_ = c.ServeJSON()
return
}
status := uint8(1)
if p.Status != nil {
status = *p.Status
}
cid := uint8(1)
if p.Cid != nil {
cid = *p.Cid
}
if cid != 1 && cid != 2 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "cid 仅支持 1/2"}
_ = c.ServeJSON()
return
}
rights := normalizeRights(p.Rights)
role := &models.AdminRole{
Cid: cid,
Name: p.Name,
Status: status,
Rights: rights,
}
id, err := models.Orm.Insert(role)
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()
}
// UpdateRole 更新角色
// PUT /platform/roles/:id
func (c *PlatformRoleController) UpdateRole() {
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 rolePayload
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
}
update := map[string]interface{}{}
if strings.TrimSpace(p.Name) != "" {
update["name"] = strings.TrimSpace(p.Name)
}
if p.Status != nil {
update["status"] = *p.Status
}
if p.Cid != nil {
if *p.Cid != 1 && *p.Cid != 2 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "cid 仅支持 1/2"}
_ = c.ServeJSON()
return
}
update["cid"] = *p.Cid
}
if p.Rights != nil {
update["rights"] = normalizeRights(p.Rights)
}
if len(update) == 0 {
c.Data["json"] = map[string]interface{}{"code": 400, "msg": "无更新字段"}
_ = c.ServeJSON()
return
}
_, err := models.Orm.QueryTable(new(models.AdminRole)).Filter("id", id).Update(update)
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"}
_ = c.ServeJSON()
}
// DeleteRole 删除角色
// DELETE /platform/roles/:id
func (c *PlatformRoleController) DeleteRole() {
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
}
_, err := models.Orm.QueryTable(new(models.AdminRole)).Filter("id", id).Delete()
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"}
_ = c.ServeJSON()
}