fix: 参数示例数据的存储规则

This commit is contained in:
TsMask
2024-07-11 10:28:15 +08:00
parent b3d25b7259
commit 96a391c4ce
5 changed files with 140 additions and 49 deletions

View File

@@ -8,7 +8,6 @@ import (
"be.ems/src/framework/utils/ctx" "be.ems/src/framework/utils/ctx"
"be.ems/src/framework/utils/parse" "be.ems/src/framework/utils/parse"
"be.ems/src/framework/vo/result" "be.ems/src/framework/vo/result"
neService "be.ems/src/modules/network_element/service"
"be.ems/src/modules/practical_training/model" "be.ems/src/modules/practical_training/model"
"be.ems/src/modules/practical_training/service" "be.ems/src/modules/practical_training/service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
@@ -19,7 +18,6 @@ import (
var NewPtNeConfigData = &PtNeConfigDataController{ var NewPtNeConfigData = &PtNeConfigDataController{
ptNeConfigDataService: service.NewPtNeConfigDataService, ptNeConfigDataService: service.NewPtNeConfigDataService,
ptNeConfigDataLogService: service.NewPtNeConfigDataLogService, ptNeConfigDataLogService: service.NewPtNeConfigDataLogService,
neInfoService: neService.NewNeInfoImpl,
} }
// 网元参数配置服务 // 网元参数配置服务
@@ -30,11 +28,9 @@ type PtNeConfigDataController struct {
ptNeConfigDataService service.IPtNeConfigDataService ptNeConfigDataService service.IPtNeConfigDataService
// 实训教学_网元参数配置数据变更日志服务 // 实训教学_网元参数配置数据变更日志服务
ptNeConfigDataLogService service.IPtNeConfigDataLogService ptNeConfigDataLogService service.IPtNeConfigDataLogService
// 网元信息服务
neInfoService neService.INeInfo
} }
// 保存为示例配置 (仅管理员/教师操作) // 保存为示例配置 (仅管理员操作)
// //
// POST /saveAsDefault // POST /saveAsDefault
func (s *PtNeConfigDataController) SaveAsDefault(c *gin.Context) { func (s *PtNeConfigDataController) SaveAsDefault(c *gin.Context) {
@@ -48,24 +44,12 @@ func (s *PtNeConfigDataController) SaveAsDefault(c *gin.Context) {
return return
} }
// 查询网元获取IP获取网元状态
neInfo := s.neInfoService.SelectNeInfoByNeTypeAndNeID(body.NeType, body.NeId)
if neInfo.NeId != body.NeId || neInfo.IP == "" {
c.JSON(200, result.ErrMsg(i18n.TKey(language, "app.common.noNEInfo")))
return
}
stubType := "" // 存根数据类型 0系统 1班级 2个人
loginUser, _ := ctx.LoginUser(c) loginUser, _ := ctx.LoginUser(c)
for _, v := range loginUser.User.Roles { for _, v := range loginUser.User.Roles {
if v.RoleKey == "admin" { if v.RoleKey == "admin" {
stubType = "0" s.ptNeConfigDataService.SaveAsDefault(body.NeType, body.NeId)
} else if v.RoleKey == "teacher" {
stubType = "1"
} }
} }
operaUserName := loginUser.User.NickName
s.ptNeConfigDataService.SaveAsDefaultByType(neInfo, stubType, operaUserName)
c.JSON(200, result.Ok(nil)) c.JSON(200, result.Ok(nil))
} }
@@ -83,9 +67,17 @@ func (s *PtNeConfigDataController) ResetAsDefault(c *gin.Context) {
return return
} }
stubType := "2" // 存根数据类型 0系统 1班级 2个人 loginUser, _ := ctx.LoginUser(c)
operaUserName := ctx.LoginUserToUserName(c) operaUserName := loginUser.User.UserName
s.ptNeConfigDataService.ResetAsDefaultByType(body.NeType, stubType, operaUserName) deptId := loginUser.User.DeptID
for _, v := range loginUser.User.Roles {
if v.RoleKey == "teacher" {
s.ptNeConfigDataService.ResetAsDefault(operaUserName, "1", body.NeType, deptId)
}
if v.RoleKey == "student" {
s.ptNeConfigDataService.ResetAsDefault(operaUserName, "2", body.NeType, deptId)
}
}
c.JSON(200, result.Ok(nil)) c.JSON(200, result.Ok(nil))
} }
@@ -104,20 +96,36 @@ func (s *PtNeConfigDataController) Info(c *gin.Context) {
return return
} }
loginUser, _ := ctx.LoginUser(c)
currentUserName := loginUser.User.UserName
deptId := loginUser.User.DeptID
stubType := "2" // 存根数据类型 0系统 1班级 2个人
for _, v := range loginUser.User.Roles {
if v.RoleKey == "admin" {
stubType = "0"
}
if v.RoleKey == "teacher" {
stubType = "1"
}
if v.RoleKey == "student" {
stubType = "2"
}
}
// 优先查询个人的数据,没有就向系统取 // 优先查询个人的数据,没有就向系统取
param := model.PtNeConfigData{ param := model.PtNeConfigData{
CreateBy: ctx.LoginUserToUserName(c), CreateBy: currentUserName,
NeType: querys.NeType, NeType: querys.NeType,
StubType: "2", StubType: stubType,
ParamName: querys.ParamName, ParamName: querys.ParamName,
DeptId: deptId,
} }
info := s.ptNeConfigDataService.SelectByStubType(param) info := s.ptNeConfigDataService.SelectByStubType(param)
// 输出数据内容 // 输出数据内容
if info.ParamJson != "" { if info.ParamJson != "" {
c.JSON(200, result.Ok(map[string]any{ c.JSON(200, result.Ok(map[string]any{
"paramType": info.ParamType, "type": info.ParamType,
"paramData": info.ParamData, "data": info.ParamData,
})) }))
return return
} }
@@ -140,13 +148,28 @@ func (s *PtNeConfigDataController) Edit(c *gin.Context) {
return return
} }
currentUserName := ctx.LoginUserToUserName(c) loginUser, _ := ctx.LoginUser(c)
currentUserName := loginUser.User.UserName
deptId := loginUser.User.DeptID
stubType := "2" // 存根数据类型 0系统 1班级 2个人
for _, v := range loginUser.User.Roles {
if v.RoleKey == "admin" {
stubType = "0"
}
if v.RoleKey == "teacher" {
stubType = "1"
}
if v.RoleKey == "student" {
stubType = "2"
}
}
// 优先查询个人的数据,没有就向系统取 // 优先查询个人的数据,没有就向系统取
param := model.PtNeConfigData{ param := model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: body.NeType, NeType: body.NeType,
StubType: "2", StubType: stubType,
ParamName: body.ParamName, ParamName: body.ParamName,
DeptId: deptId,
} }
info := s.ptNeConfigDataService.SelectByStubType(param) info := s.ptNeConfigDataService.SelectByStubType(param)
changeLog := model.PtNeConfigDataLog{ changeLog := model.PtNeConfigDataLog{
@@ -219,18 +242,19 @@ func (s *PtNeConfigDataController) Edit(c *gin.Context) {
changeLog.ParamJsonNew = info.ParamJson changeLog.ParamJsonNew = info.ParamJson
// 个人有数据就更新 // 个人有数据就更新
if info.StubType == "2" { if info.StubType == stubType {
info.UpdateBy = currentUserName info.UpdateBy = currentUserName
s.ptNeConfigDataService.Update(info) s.ptNeConfigDataService.Update(info)
} else { } else {
s.ptNeConfigDataService.Insert(model.PtNeConfigData{ s.ptNeConfigDataService.Insert(model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: info.NeType, NeType: info.NeType,
StubType: "2", StubType: stubType,
ParamName: info.ParamName, ParamName: info.ParamName,
ParamDisplay: info.ParamDisplay, ParamDisplay: info.ParamDisplay,
ParamType: info.ParamType, ParamType: info.ParamType,
ParamJson: info.ParamJson, ParamJson: info.ParamJson,
DeptId: deptId,
}) })
} }
// 保留变更日志 // 保留变更日志
@@ -255,13 +279,28 @@ func (s *PtNeConfigDataController) Add(c *gin.Context) {
return return
} }
currentUserName := ctx.LoginUserToUserName(c) loginUser, _ := ctx.LoginUser(c)
currentUserName := loginUser.User.UserName
deptId := loginUser.User.DeptID
stubType := "2" // 存根数据类型 0系统 1班级 2个人
for _, v := range loginUser.User.Roles {
if v.RoleKey == "admin" {
stubType = "0"
}
if v.RoleKey == "teacher" {
stubType = "1"
}
if v.RoleKey == "student" {
stubType = "2"
}
}
// 优先查询个人的数据,没有就向系统取 // 优先查询个人的数据,没有就向系统取
param := model.PtNeConfigData{ param := model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: body.NeType, NeType: body.NeType,
StubType: "2", StubType: stubType,
ParamName: body.ParamName, ParamName: body.ParamName,
DeptId: deptId,
} }
info := s.ptNeConfigDataService.SelectByStubType(param) info := s.ptNeConfigDataService.SelectByStubType(param)
if info.ParamType != "array" || body.Loc == "" { if info.ParamType != "array" || body.Loc == "" {
@@ -317,18 +356,19 @@ func (s *PtNeConfigDataController) Add(c *gin.Context) {
changeLog.ParamJsonNew = info.ParamJson changeLog.ParamJsonNew = info.ParamJson
// 个人有数据就更新 // 个人有数据就更新
if info.StubType == "2" { if info.StubType == stubType {
info.UpdateBy = currentUserName info.UpdateBy = currentUserName
s.ptNeConfigDataService.Update(info) s.ptNeConfigDataService.Update(info)
} else { } else {
s.ptNeConfigDataService.Insert(model.PtNeConfigData{ s.ptNeConfigDataService.Insert(model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: info.NeType, NeType: info.NeType,
StubType: "2", StubType: stubType,
ParamName: info.ParamName, ParamName: info.ParamName,
ParamDisplay: info.ParamDisplay, ParamDisplay: info.ParamDisplay,
ParamType: info.ParamType, ParamType: info.ParamType,
ParamJson: info.ParamJson, ParamJson: info.ParamJson,
DeptId: deptId,
}) })
} }
// 保留变更日志 // 保留变更日志
@@ -352,13 +392,28 @@ func (s *PtNeConfigDataController) Remove(c *gin.Context) {
return return
} }
currentUserName := ctx.LoginUserToUserName(c) loginUser, _ := ctx.LoginUser(c)
currentUserName := loginUser.User.UserName
deptId := loginUser.User.DeptID
stubType := "2" // 存根数据类型 0系统 1班级 2个人
for _, v := range loginUser.User.Roles {
if v.RoleKey == "admin" {
stubType = "0"
}
if v.RoleKey == "teacher" {
stubType = "1"
}
if v.RoleKey == "student" {
stubType = "2"
}
}
// 优先查询个人的数据,没有就向系统取 // 优先查询个人的数据,没有就向系统取
param := model.PtNeConfigData{ param := model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: query.NeType, NeType: query.NeType,
StubType: "2", StubType: stubType,
ParamName: query.ParamName, ParamName: query.ParamName,
DeptId: deptId,
} }
info := s.ptNeConfigDataService.SelectByStubType(param) info := s.ptNeConfigDataService.SelectByStubType(param)
if info.ParamType != "array" || query.Loc == "" { if info.ParamType != "array" || query.Loc == "" {
@@ -434,18 +489,19 @@ func (s *PtNeConfigDataController) Remove(c *gin.Context) {
info.ParamJson = string(paramDataByte) info.ParamJson = string(paramDataByte)
// 个人有数据就更新 // 个人有数据就更新
if info.StubType == "2" { if info.StubType == stubType {
info.UpdateBy = currentUserName info.UpdateBy = currentUserName
s.ptNeConfigDataService.Update(info) s.ptNeConfigDataService.Update(info)
} else { } else {
s.ptNeConfigDataService.Insert(model.PtNeConfigData{ s.ptNeConfigDataService.Insert(model.PtNeConfigData{
CreateBy: currentUserName, CreateBy: currentUserName,
NeType: info.NeType, NeType: info.NeType,
StubType: "2", StubType: stubType,
ParamName: info.ParamName, ParamName: info.ParamName,
ParamDisplay: info.ParamDisplay, ParamDisplay: info.ParamDisplay,
ParamType: info.ParamType, ParamType: info.ParamType,
ParamJson: info.ParamJson, ParamJson: info.ParamJson,
DeptId: deptId,
}) })
} }
// 保留变更日志 // 保留变更日志

View File

@@ -14,6 +14,7 @@ type PtNeConfigData struct {
ParamDisplay string `json:"paramDisplay" gorm:"param_display"` // 参数显示名 ParamDisplay string `json:"paramDisplay" gorm:"param_display"` // 参数显示名
ParamType string `json:"paramType" gorm:"param_type"` // 参数类型 list列表单层 array数组多层 ParamType string `json:"paramType" gorm:"param_type"` // 参数类型 list列表单层 array数组多层
ParamJson string `json:"paramJson" gorm:"param_json"` // 参数数据 ParamJson string `json:"paramJson" gorm:"param_json"` // 参数数据
DeptId string `json:"deptId" gorm:"dept_id"` // 部门班级ID 100系统
// ====== 非数据库字段属性 ====== // ====== 非数据库字段属性 ======

View File

@@ -14,7 +14,7 @@ import (
// NewPtNeConfigDataRepository 实例化数据层 // NewPtNeConfigDataRepository 实例化数据层
var NewPtNeConfigDataRepository = &PtNeConfigDataRepository{ var NewPtNeConfigDataRepository = &PtNeConfigDataRepository{
selectSql: `select selectSql: `select
id, create_by, create_time, update_by, update_time, remark, stub_type, ne_type, param_name, param_display, param_type, param_json id, create_by, create_time, update_by, update_time, remark, stub_type, ne_type, param_name, param_display, param_type, param_json, dept_id
from pt_ne_config_data`, from pt_ne_config_data`,
resultMap: map[string]string{ resultMap: map[string]string{
@@ -30,6 +30,7 @@ var NewPtNeConfigDataRepository = &PtNeConfigDataRepository{
"param_display": "ParamDisplay", "param_display": "ParamDisplay",
"param_type": "ParamType", "param_type": "ParamType",
"param_json": "ParamJson", "param_json": "ParamJson",
"dept_id": "DeptId",
}, },
} }
@@ -143,6 +144,10 @@ func (r *PtNeConfigDataRepository) SelectList(param model.PtNeConfigData) []mode
conditions = append(conditions, "param_type = ?") conditions = append(conditions, "param_type = ?")
params = append(params, param.ParamType) params = append(params, param.ParamType)
} }
if param.DeptId != "" {
conditions = append(conditions, "dept_id = ?")
params = append(params, param.DeptId)
}
// 构建查询条件语句 // 构建查询条件语句
whereSql := "" whereSql := ""
@@ -202,6 +207,9 @@ func (r *PtNeConfigDataRepository) Insert(param model.PtNeConfigData) string {
if param.ParamJson != "" { if param.ParamJson != "" {
params["param_json"] = param.ParamJson params["param_json"] = param.ParamJson
} }
if param.DeptId != "" {
params["dept_id"] = param.DeptId
}
// 构建执行语句 // 构建执行语句
keys, placeholder, values := repo.KeyPlaceholderValueByInsert(params) keys, placeholder, values := repo.KeyPlaceholderValueByInsert(params)
@@ -257,6 +265,9 @@ func (r *PtNeConfigDataRepository) Update(param model.PtNeConfigData) int64 {
if param.ParamJson != "" { if param.ParamJson != "" {
params["param_json"] = param.ParamJson params["param_json"] = param.ParamJson
} }
if param.DeptId != "" {
params["dept_id"] = param.DeptId
}
// 构建执行语句 // 构建执行语句
keys, values := repo.KeyValueByUpdate(params) keys, values := repo.KeyValueByUpdate(params)

View File

@@ -1,7 +1,6 @@
package service package service
import ( import (
neModel "be.ems/src/modules/network_element/model"
"be.ems/src/modules/practical_training/model" "be.ems/src/modules/practical_training/model"
) )
@@ -25,11 +24,12 @@ type IPtNeConfigDataService interface {
// DeleteByIds 批量删除信息 // DeleteByIds 批量删除信息
DeleteByIds(paramIds []string) (int64, error) DeleteByIds(paramIds []string) (int64, error)
// SaveAsDefaultByType 保存为默认示例 // SaveAsDefault 系统网元配置保存为系统示例
SaveAsDefaultByType(neInfo neModel.NeInfo, stubType, operaUserName string) SaveAsDefault(neType, neId string)
// ResetAsDefaultByType 重置为默认示例 // ResetAsDefault 重置配置示例
ResetAsDefaultByType(neType, stubType, operaUserName string) // stubType2个人为班级示例 1班级为系统示例
ResetAsDefault(operaUserName, stubType, neType, deptId string)
// SelectByStubType 通过存根类型查询 // SelectByStubType 通过存根类型查询
SelectByStubType(param model.PtNeConfigData) model.PtNeConfigData SelectByStubType(param model.PtNeConfigData) model.PtNeConfigData

View File

@@ -78,8 +78,17 @@ func (r *PtNeConfigDataService) DeleteByIds(paramIds []string) (int64, error) {
return 0, fmt.Errorf("delete fail") return 0, fmt.Errorf("delete fail")
} }
// SaveAsDefaultByType 保存为默认示例 // SaveAsDefault 系统网元配置保存为系统示例
func (r *PtNeConfigDataService) SaveAsDefaultByType(neInfo neModel.NeInfo, stubType, operaUserName string) { func (r *PtNeConfigDataService) SaveAsDefault(neType, neId string) {
// 查询网元获取IP获取网元状态
neInfo := r.neInfoService.SelectNeInfoByNeTypeAndNeID(neType, neId)
if neInfo.NeId != neId || neInfo.IP == "" {
return
}
stubType := "0"
operaUserName := "admin"
deptId := "100"
confs := r.neConfigService.SelectList(neModel.NeConfig{NeType: neInfo.NeType}) confs := r.neConfigService.SelectList(neModel.NeConfig{NeType: neInfo.NeType})
for _, v := range confs { for _, v := range confs {
// 查询是否存在记录 // 查询是否存在记录
@@ -113,6 +122,7 @@ func (r *PtNeConfigDataService) SaveAsDefaultByType(neInfo neModel.NeInfo, stubT
ParamDisplay: v.ParamDisplay, ParamDisplay: v.ParamDisplay,
ParamType: v.ParamType, ParamType: v.ParamType,
ParamJson: string(paramDataByte), ParamJson: string(paramDataByte),
DeptId: deptId,
}) })
} }
// 更新 // 更新
@@ -121,14 +131,24 @@ func (r *PtNeConfigDataService) SaveAsDefaultByType(neInfo neModel.NeInfo, stubT
item.UpdateBy = operaUserName item.UpdateBy = operaUserName
item.ParamDisplay = v.ParamDisplay item.ParamDisplay = v.ParamDisplay
item.ParamJson = string(paramDataByte) item.ParamJson = string(paramDataByte)
item.DeptId = deptId
r.Update(item) r.Update(item)
} }
} }
} }
// ResetAsDefaultByType 重置为默认示例 // ResetAsDefault 重置配置示例
func (r *PtNeConfigDataService) ResetAsDefaultByType(neType, stubType, operaUserName string) { // stubType2个人为班级示例 1班级为系统示例
ptConfs := r.SelectList(model.PtNeConfigData{StubType: "0", NeType: neType}) func (r *PtNeConfigDataService) ResetAsDefault(operaUserName, stubType, neType, deptId string) {
rootStubType := "1"
if stubType == "1" {
rootStubType = "0"
}
if stubType == "2" {
rootStubType = "1"
}
ptConfs := r.SelectList(model.PtNeConfigData{StubType: rootStubType, NeType: neType})
for _, v := range ptConfs { for _, v := range ptConfs {
// 查询是否存在记录 // 查询是否存在记录
hasItems := r.SelectList(model.PtNeConfigData{ hasItems := r.SelectList(model.PtNeConfigData{
@@ -149,6 +169,7 @@ func (r *PtNeConfigDataService) ResetAsDefaultByType(neType, stubType, operaUser
ParamDisplay: v.ParamDisplay, ParamDisplay: v.ParamDisplay,
ParamType: v.ParamType, ParamType: v.ParamType,
ParamJson: v.ParamJson, ParamJson: v.ParamJson,
DeptId: deptId,
}) })
} }
// 更新 // 更新
@@ -157,6 +178,7 @@ func (r *PtNeConfigDataService) ResetAsDefaultByType(neType, stubType, operaUser
item.UpdateBy = operaUserName item.UpdateBy = operaUserName
item.ParamDisplay = v.ParamDisplay item.ParamDisplay = v.ParamDisplay
item.ParamJson = v.ParamJson item.ParamJson = v.ParamJson
item.DeptId = deptId
r.Update(item) r.Update(item)
} }
} }
@@ -173,6 +195,7 @@ func (r *PtNeConfigDataService) SelectByStubType(param model.PtNeConfigData) mod
if len(list) == 0 && param.StubType != "0" { if len(list) == 0 && param.StubType != "0" {
param.CreateBy = "" param.CreateBy = ""
param.StubType = "0" param.StubType = "0"
param.DeptId = "100"
list = r.SelectList(param) list = r.SelectList(param)
} }
var paraData model.PtNeConfigData var paraData model.PtNeConfigData
@@ -192,7 +215,7 @@ func (r *PtNeConfigDataService) ApplyToNe(paramUser, neType string) error {
return fmt.Errorf("NeConfigData Not Found") return fmt.Errorf("NeConfigData Not Found")
} }
// 找网元只有一套就固定001 // 找网元,只有一套就固定neId:001
neInfo := r.neInfoService.SelectNeInfoByNeTypeAndNeID(neType, "001") neInfo := r.neInfoService.SelectNeInfoByNeTypeAndNeID(neType, "001")
if neInfo.NeType != neType || neInfo.ID == "" { if neInfo.NeType != neType || neInfo.ID == "" {
return fmt.Errorf("NeInfo Not Found") return fmt.Errorf("NeInfo Not Found")