49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package version
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"go-admin/cmd/migrate/migration/models"
							 | 
						||
| 
								 | 
							
									common "go-admin/common/models"
							 | 
						||
| 
								 | 
							
									"gorm.io/gorm"
							 | 
						||
| 
								 | 
							
									"runtime"
							 | 
						||
| 
								 | 
							
									"strconv"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									"go-admin/cmd/migrate/migration"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func init() {
							 | 
						||
| 
								 | 
							
									_, fileName, _, _ := runtime.Caller(0)
							 | 
						||
| 
								 | 
							
									migration.Migrate.SetVersion(migration.GetFilename(fileName), _1653638869132Test)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func _1653638869132Test(db *gorm.DB, version string) error {
							 | 
						||
| 
								 | 
							
									return db.Transaction(func(tx *gorm.DB) error {
							 | 
						||
| 
								 | 
							
										var list []models.SysMenu
							 | 
						||
| 
								 | 
							
										err := tx.Model(&models.SysMenu{}).Order("parent_id,menu_id").Find(&list).Error
							 | 
						||
| 
								 | 
							
										if err != nil {
							 | 
						||
| 
								 | 
							
											return err
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										for _, v := range list {
							 | 
						||
| 
								 | 
							
											if v.ParentId == 0 {
							 | 
						||
| 
								 | 
							
												v.Paths = "/0/" + strconv.Itoa(v.MenuId)
							 | 
						||
| 
								 | 
							
											} else {
							 | 
						||
| 
								 | 
							
												var e models.SysMenu
							 | 
						||
| 
								 | 
							
												err = tx.Model(&models.SysMenu{}).Where("menu_id=?", v.ParentId).First(&e).Error
							 | 
						||
| 
								 | 
							
												if err != nil {
							 | 
						||
| 
								 | 
							
													if err == gorm.ErrRecordNotFound {
							 | 
						||
| 
								 | 
							
														continue
							 | 
						||
| 
								 | 
							
													}
							 | 
						||
| 
								 | 
							
													return err
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												v.Paths = e.Paths + "/" + strconv.Itoa(v.MenuId)
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
											err = tx.Model(&v).Update("paths", v.Paths).Error
							 | 
						||
| 
								 | 
							
											if err != nil {
							 | 
						||
| 
								 | 
							
												return err
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return tx.Create(&common.Migration{
							 | 
						||
| 
								 | 
							
											Version: version,
							 | 
						||
| 
								 | 
							
										}).Error
							 | 
						||
| 
								 | 
							
									})
							 | 
						||
| 
								 | 
							
								}
							 |