批量优化
This commit is contained in:
1 parent
e3db229f41
commit
aa92ca40a2
79 files changed
+7495
-1104
No files matched your search
@@ -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)).
|
||||
|
||||
Reference in new issue
Block a user