6
6
"fmt"
7
7
"github.com/flipped-aurora/gin-vue-admin/server/utils/ast"
8
8
"github.com/pkg/errors"
9
+ "os"
9
10
"path"
10
11
"path/filepath"
11
12
"strconv"
@@ -17,7 +18,7 @@ import (
17
18
model "github.com/flipped-aurora/gin-vue-admin/server/model/system"
18
19
request "github.com/flipped-aurora/gin-vue-admin/server/model/system/request"
19
20
"github.com/flipped-aurora/gin-vue-admin/server/utils"
20
-
21
+ "github.com/tidwall/sjson"
21
22
"go.uber.org/zap"
22
23
)
23
24
@@ -79,12 +80,34 @@ func (s *autoCodeHistory) RollBack(ctx context.Context, info request.SysAutoHist
79
80
if err != nil {
80
81
global .GVA_LOG .Error ("ClearTag DeleteApiByIds:" , zap .Error (err ))
81
82
}
83
+ localPath := path .Join (global .GVA_CONFIG .AutoCode .Root , global .GVA_CONFIG .AutoCode .Server , "resource" , "lang" )
84
+ files , err := s .readJSONFiles (localPath )
85
+ if err != nil {
86
+ return err
87
+ }
88
+ for _ , file := range files {
89
+ err := s .reWriteI18nJson (file , "api" , history .Package , history .StructName )
90
+ if err != nil {
91
+ return err
92
+ }
93
+ }
82
94
} // 清除API表
83
95
if info .DeleteMenu {
84
96
err = BaseMenuServiceApp .DeleteBaseMenu (int (history .MenuID ))
85
97
if err != nil {
86
98
return errors .Wrap (err , "删除菜单失败!" )
87
99
}
100
+ localPath := path .Join (global .GVA_CONFIG .AutoCode .Root , global .GVA_CONFIG .AutoCode .Server , "resource" , "lang" )
101
+ files , err := s .readJSONFiles (localPath )
102
+ if err != nil {
103
+ return err
104
+ }
105
+ for _ , file := range files {
106
+ err := s .reWriteI18nJson (file , "menu" , history .Package , history .StructName )
107
+ if err != nil {
108
+ return err
109
+ }
110
+ }
88
111
} // 清除菜单表
89
112
if info .DeleteTable {
90
113
err = s .DropTable (history .BusinessDB , history .Table )
@@ -178,6 +201,17 @@ func (s *autoCodeHistory) RollBack(ctx context.Context, info request.SysAutoHist
178
201
if err != nil {
179
202
return errors .Wrap (err , "更新失败!" )
180
203
}
204
+ localPath := path .Join (global .GVA_CONFIG .AutoCode .Root , global .GVA_CONFIG .AutoCode .Web , "locales" )
205
+ files , err := s .readJSONFiles (localPath )
206
+ if err != nil {
207
+ return err
208
+ }
209
+ for _ , file := range files {
210
+ err := s .reWriteI18nJson (file , "web" , history .Package , history .StructName )
211
+ if err != nil {
212
+ return err
213
+ }
214
+ }
181
215
return nil
182
216
}
183
217
@@ -215,3 +249,75 @@ func (s *autoCodeHistory) DropTable(BusinessDb, tableName string) error {
215
249
return global .GVA_DB .Exec ("DROP TABLE " + tableName ).Error
216
250
}
217
251
}
252
+
253
+ func (s * autoCodeHistory ) readJSONFiles (dir string ) ([]string , error ) {
254
+ var files []string
255
+ err := filepath .Walk (dir , func (path string , info os.FileInfo , err error ) error {
256
+ if err != nil {
257
+ return err
258
+ }
259
+ if ! info .IsDir () && filepath .Ext (path ) == ".json" {
260
+ files = append (files , path )
261
+ }
262
+ return nil
263
+ })
264
+ if err != nil {
265
+ return nil , err
266
+ }
267
+ return files , nil
268
+ }
269
+
270
+ func (s * autoCodeHistory ) reWriteI18nJson (file string , flag string , packageName , structName string ) error {
271
+ data , err := os .ReadFile (file )
272
+ if err != nil {
273
+ return err
274
+ }
275
+ originJson := string (data )
276
+ switch flag {
277
+ case "api" :
278
+ var err error
279
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.group.%s%s" , packageName , structName ))
280
+ if err != nil {
281
+ return err
282
+ }
283
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.add%s%s" , packageName , structName ))
284
+ if err != nil {
285
+ return err
286
+ }
287
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.delete%s%s" , packageName , structName ))
288
+ if err != nil {
289
+ return err
290
+ }
291
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.batch%s%s" , packageName , structName ))
292
+ if err != nil {
293
+ return err
294
+ }
295
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.update%s%s" , packageName , structName ))
296
+ if err != nil {
297
+ return err
298
+ }
299
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.find%s%s" , packageName , structName ))
300
+ if err != nil {
301
+ return err
302
+ }
303
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.api.desc.list%s%s" , packageName , structName ))
304
+ if err != nil {
305
+ return err
306
+ }
307
+ case "menu" :
308
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("system.menu.%s%s" , packageName , structName ))
309
+ if err != nil {
310
+ return err
311
+ }
312
+ case "web" :
313
+ originJson , err = sjson .Delete (originJson , fmt .Sprintf ("%s.%s" , packageName , structName ))
314
+ if err != nil {
315
+ return err
316
+ }
317
+ }
318
+ err = os .WriteFile (file , []byte (originJson ), 0666 )
319
+ if err != nil {
320
+ return err
321
+ }
322
+ return nil
323
+ }
0 commit comments