feat: 网元配置更新保留变更日志数据

This commit is contained in:
TsMask
2024-07-02 11:50:59 +08:00
parent 0dee6ce794
commit 3b9509d48b

View File

@@ -17,8 +17,9 @@ import (
// NewPtNeConfigData 网元参数配置服务 实例化控制层 // NewPtNeConfigData 网元参数配置服务 实例化控制层
var NewPtNeConfigData = &PtNeConfigData{ var NewPtNeConfigData = &PtNeConfigData{
ptNeConfigDataService: service.NewPtNeConfigDataService, ptNeConfigDataService: service.NewPtNeConfigDataService,
neInfoService: neService.NewNeInfoImpl, ptNeConfigDataLogService: service.NewPtNeConfigDataLogService,
neInfoService: neService.NewNeInfoImpl,
} }
// 网元参数配置服务 // 网元参数配置服务
@@ -27,6 +28,8 @@ var NewPtNeConfigData = &PtNeConfigData{
type PtNeConfigData struct { type PtNeConfigData struct {
// 实训教学_网元参数配置服务 // 实训教学_网元参数配置服务
ptNeConfigDataService service.IPtNeConfigDataService ptNeConfigDataService service.IPtNeConfigDataService
// 实训教学_网元参数配置数据变更日志服务
ptNeConfigDataLogService service.IPtNeConfigDataLogService
// 网元信息服务 // 网元信息服务
neInfoService neService.INeInfo neInfoService neService.INeInfo
} }
@@ -55,10 +58,9 @@ func (s *PtNeConfigData) Info(c *gin.Context) {
// 输出数据内容 // 输出数据内容
if info.ParamJson != "" { if info.ParamJson != "" {
c.JSON(200, result.Ok(map[string]any{ data := info.ParamData
"data": info.ParamData, data["paramType"] = info.ParamType
"paramType": info.ParamType, c.JSON(200, result.Ok(data))
}))
return return
} }
c.JSON(200, result.Err(nil)) c.JSON(200, result.Err(nil))
@@ -115,7 +117,7 @@ func (s *PtNeConfigData) Add(c *gin.Context) {
// 网元参数配置修改 // 网元参数配置修改
// //
// PUT / // PUT /?loc=1
func (s *PtNeConfigData) Edit(c *gin.Context) { func (s *PtNeConfigData) Edit(c *gin.Context) {
language := ctx.AcceptLanguage(c) language := ctx.AcceptLanguage(c)
var body model.PtNeConfigData var body model.PtNeConfigData
@@ -133,8 +135,48 @@ func (s *PtNeConfigData) Edit(c *gin.Context) {
ParamName: body.ParamName, ParamName: body.ParamName,
} }
info := s.ptNeConfigDataService.SelectByStubType(param) info := s.ptNeConfigDataService.SelectByStubType(param)
loc, locOk := c.GetQuery("loc")
if info.ParamType == "array" && !locOk {
c.JSON(400, result.CodeMsg(400, i18n.TKey(language, "app.common.err400")))
return
}
changeLog := model.PtNeConfigDataLog{
CreateBy: currentUserName,
StubType: info.StubType,
NeType: info.NeType,
ParamName: info.ParamName,
ParamDisplay: info.ParamDisplay,
ParamType: info.ParamType,
}
// 要修改的属性 // 要修改的属性
if infoDataArr, ok := info.ParamData["data"]; ok {
arr := infoDataArr.([]any)
// 单层
if info.ParamType == "list" && len(arr) == 1 {
for k, v := range body.ParamData {
item := arr[0].(map[string]any)
if _, ok := item[k]; ok {
item[k] = v
arr[0] = item
}
}
}
// 多层
if info.ParamType == "array" {
if len(arr) == 0 {
arr = []any{body.ParamData}
} else {
idx := parse.Number(loc)
if idx < 0 || int(idx) >= len(arr) {
c.JSON(400, result.CodeMsg(400, "loc over data step"))
return
}
arr[idx] = body.ParamData
}
}
info.ParamData["data"] = arr
}
// 将json数据转字符串存储 // 将json数据转字符串存储
paramDataByte, err := json.Marshal(info.ParamData) paramDataByte, err := json.Marshal(info.ParamData)
@@ -142,9 +184,11 @@ func (s *PtNeConfigData) Edit(c *gin.Context) {
c.JSON(400, result.CodeMsg(400, err.Error())) c.JSON(400, result.CodeMsg(400, err.Error()))
return return
} }
changeLog.ParamJsonOld = info.ParamJson
info.ParamJson = string(paramDataByte) info.ParamJson = string(paramDataByte)
changeLog.ParamJsonNew = info.ParamJson
// 个人数据要新增 // 个人数据就更新
if info.StubType == "2" { if info.StubType == "2" {
info.UpdateBy = currentUserName info.UpdateBy = currentUserName
s.ptNeConfigDataService.Update(info) s.ptNeConfigDataService.Update(info)
@@ -155,9 +199,12 @@ func (s *PtNeConfigData) Edit(c *gin.Context) {
StubType: "2", StubType: "2",
ParamName: info.ParamName, ParamName: info.ParamName,
ParamDisplay: info.ParamDisplay, ParamDisplay: info.ParamDisplay,
ParamType: info.ParamType,
ParamJson: info.ParamJson, ParamJson: info.ParamJson,
}) })
} }
// 保留变更日志
s.ptNeConfigDataLogService.Insert(changeLog)
c.JSON(204, nil) c.JSON(204, nil)
} }