批量优化

This commit is contained in:
hero920103 committed 2026-10-03 23:46:55 +08:00
1 parent e3db229f41
commit aa92ca40a2
79 files changed
+7495 -1104

No files matched your search

+74 -12
View File
@@ -10,10 +10,39 @@ import (
"server/models"
"server/pkg/jwtutil"
"server/services"
beego "github.com/beego/beego/v2/server/web"
)
// validatePlatforms 校验展示端取值,返回空串表示合法。
// 只允许 web / app,避免出现拼错的值导致菜单在某端永远不可见。
func validatePlatforms(list []string) string {
for _, s := range list {
switch strings.ToLower(strings.TrimSpace(s)) {
case models.PlatformWeb, models.PlatformApp:
default:
if strings.TrimSpace(s) == "" {
continue
}
return "展示端取值非法,仅支持 web(Web端)与 app(移动端)"
}
}
return ""
}
// platformList 把模块展示端配置输出给管理端:统一返回数组,空配置回落为全端
func platformList(m *models.SystemModules) []string {
if m == nil {
return []string{models.PlatformWeb, models.PlatformApp}
}
list := services.ParsePlatforms(m.Platforms)
if len(list) == 0 {
return []string{models.PlatformWeb, models.PlatformApp}
}
return list
}
// PlatformModulesController 模块管理(yz_system_modules)
type PlatformModulesController struct {
beego.Controller
@@ -70,12 +99,30 @@ func (c *PlatformModulesController) GetList() {
c.jsonErr(500, 500, "获取失败:"+err.Error())
return
}
// 展示端统一以数组形式下发(空配置回落为全端),方便管理端回填多选框
list := make([]map[string]interface{}, 0, len(rows))
for i := range rows {
list = append(list, map[string]interface{}{
"id": rows[i].ID,
"mid": rows[i].Mid,
"name": rows[i].Name,
"code": rows[i].Code,
"path": rows[i].Path,
"icon": rows[i].Icon,
"description": rows[i].Description,
"type": rows[i].Type,
"sort": rows[i].Sort,
"status": rows[i].Status,
"is_show": rows[i].IsShow,
"platforms": platformList(&rows[i]),
})
}
c.Data["json"] = map[string]interface{}{
"code": 200,
"msg": "获取成功",
"data": map[string]interface{}{
"list": rows,
"total": len(rows),
"list": list,
"total": len(list),
},
}
_ = c.ServeJSON()
@@ -136,16 +183,17 @@ func (c *PlatformModulesController) GetDetail() {
}
type modulePayload struct {
Mid *uint64 `json:"mid"`
Name string `json:"name"`
Code string `json:"code"`
Path string `json:"path"`
Icon string `json:"icon"`
Description string `json:"description"`
Type int `json:"type"`
Sort int `json:"sort"`
Status int8 `json:"status"`
IsShow int8 `json:"is_show"`
Mid *uint64 `json:"mid"`
Name string `json:"name"`
Code string `json:"code"`
Path string `json:"path"`
Icon string `json:"icon"`
Description string `json:"description"`
Type int `json:"type"`
Sort int `json:"sort"`
Status int8 `json:"status"`
IsShow int8 `json:"is_show"`
Platforms []string `json:"platforms"` // 展示端:["web"] ["app"] ["web","app"];空=全端
}
// Add POST /platform/modules
@@ -164,6 +212,10 @@ func (c *PlatformModulesController) Add() {
c.jsonErr(400, 400, "参数错误")
return
}
if errMsg := validatePlatforms(p.Platforms); errMsg != "" {
c.jsonErr(400, 400, errMsg)
return
}
p.Name = strings.TrimSpace(p.Name)
p.Code = strings.TrimSpace(p.Code)
if p.Name == "" || p.Code == "" {
@@ -180,6 +232,7 @@ func (c *PlatformModulesController) Add() {
return
}
now := time.Now()
platforms := services.NormalizePlatforms(p.Platforms)
row := &models.SystemModules{
Mid: p.Mid,
Name: p.Name,
@@ -194,6 +247,9 @@ func (c *PlatformModulesController) Add() {
CreateTime: &now,
UpdateTime: &now,
}
if platforms != "" {
row.Platforms = &platforms
}
id, err := models.Orm.Insert(row)
if err != nil {
c.jsonErr(500, 500, "添加失败:"+err.Error())
@@ -231,6 +287,10 @@ func (c *PlatformModulesController) Edit() {
c.jsonErr(400, 400, "模块名称和编码不能为空")
return
}
if errMsg := validatePlatforms(p.Platforms); errMsg != "" {
c.jsonErr(400, 400, errMsg)
return
}
// code 唯一(排除自身与软删)
cnt, _ := models.Orm.QueryTable(new(models.SystemModules)).
Filter("code", p.Code).
@@ -242,6 +302,7 @@ func (c *PlatformModulesController) Edit() {
return
}
now := time.Now()
// 展示端为空串表示「全端」,需显式落库以覆盖历史值
up := map[string]interface{}{
"mid": p.Mid,
"name": p.Name,
@@ -253,6 +314,7 @@ func (c *PlatformModulesController) Edit() {
"sort": p.Sort,
"status": p.Status,
"is_show": p.IsShow,
"platforms": services.NormalizePlatforms(p.Platforms),
"update_time": now,
}
n, err := models.Orm.QueryTable(new(models.SystemModules)).