From 3b9509d48b7b147d688e881a7908178c2caa1218 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 2 Jul 2024 11:50:59 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BF=9D=E7=95=99=E5=8F=98=E6=9B=B4=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/pt_ne_config_data.go | 63 ++++++++++++++++--- 1 file changed, 55 insertions(+), 8 deletions(-) diff --git a/src/modules/practical_training/controller/pt_ne_config_data.go b/src/modules/practical_training/controller/pt_ne_config_data.go index 9393af94..7dbb9f2e 100644 --- a/src/modules/practical_training/controller/pt_ne_config_data.go +++ b/src/modules/practical_training/controller/pt_ne_config_data.go @@ -17,8 +17,9 @@ import ( // NewPtNeConfigData 网元参数配置服务 实例化控制层 var NewPtNeConfigData = &PtNeConfigData{ - ptNeConfigDataService: service.NewPtNeConfigDataService, - neInfoService: neService.NewNeInfoImpl, + ptNeConfigDataService: service.NewPtNeConfigDataService, + ptNeConfigDataLogService: service.NewPtNeConfigDataLogService, + neInfoService: neService.NewNeInfoImpl, } // 网元参数配置服务 @@ -27,6 +28,8 @@ var NewPtNeConfigData = &PtNeConfigData{ type PtNeConfigData struct { // 实训教学_网元参数配置服务 ptNeConfigDataService service.IPtNeConfigDataService + // 实训教学_网元参数配置数据变更日志服务 + ptNeConfigDataLogService service.IPtNeConfigDataLogService // 网元信息服务 neInfoService neService.INeInfo } @@ -55,10 +58,9 @@ func (s *PtNeConfigData) Info(c *gin.Context) { // 输出数据内容 if info.ParamJson != "" { - c.JSON(200, result.Ok(map[string]any{ - "data": info.ParamData, - "paramType": info.ParamType, - })) + data := info.ParamData + data["paramType"] = info.ParamType + c.JSON(200, result.Ok(data)) return } 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) { language := ctx.AcceptLanguage(c) var body model.PtNeConfigData @@ -133,8 +135,48 @@ func (s *PtNeConfigData) Edit(c *gin.Context) { ParamName: body.ParamName, } 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数据转字符串存储 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())) return } + changeLog.ParamJsonOld = info.ParamJson info.ParamJson = string(paramDataByte) + changeLog.ParamJsonNew = info.ParamJson - // 个人没数据要新增 + // 个人有数据就更新 if info.StubType == "2" { info.UpdateBy = currentUserName s.ptNeConfigDataService.Update(info) @@ -155,9 +199,12 @@ func (s *PtNeConfigData) Edit(c *gin.Context) { StubType: "2", ParamName: info.ParamName, ParamDisplay: info.ParamDisplay, + ParamType: info.ParamType, ParamJson: info.ParamJson, }) } + // 保留变更日志 + s.ptNeConfigDataLogService.Insert(changeLog) c.JSON(204, nil) }