package init_serve import ( "eta/eta_menu_sync/global" "eta/eta_menu_sync/models" "eta/eta_menu_sync/utils" "fmt" "os" "strings" "time" ) func InitTask() { fmt.Println("开始执行生成sql语句") etaBusinessObj := models.EtaBusiness{} list, err := etaBusinessObj.GetAllEtaBusiness() if err != nil { fmt.Println("err:", err) return } dateDir := time.Now().Format("20060102") baseDir := global.CONFIG.Serve.StaticDir + "menu" + dateDir + "" err = os.MkdirAll(baseDir, 0766) if err != nil { fmt.Println("存储目录创建失败,Err:" + err.Error()) return } etaBusinessMenuObj := models.EtaBusinessMenu{} for _, v := range list { menuList, tmpErr := etaBusinessMenuObj.GetMenuList(v.BusinessCode) if tmpErr != nil { fmt.Println(v.BusinessName, "生成失败,err:", tmpErr) continue } if len(menuList) <= 0 { fmt.Println(v.BusinessName, "生成失败,没有配置菜单") continue } tableName := fmt.Sprintf("sys_menu_%s_bak", time.Now().Format(utils.FormatDateUnSpace)) sqlStr := "# 备份表\n# create table " + tableName + " like sys_menu;\n# insert into " + tableName + " select * from sys_menu;\n\n" sqlStr += "delete from sys_menu where 1=1;\nINSERT INTO sys_menu (`menu_id`, `parent_id`, `name`, `sort`, `path`, `icon_path`, `component`, `hidden`, `is_level`, `level_path`, `menu_type`, `button_code`, `create_time`, `modify_time`,`api`,`name_en`) VALUES " sqlStr += getMenuStr(menuList) sqlStr += "SELECT role_id INTO @sys_id FROM sys_role WHERE role_name = 'admin';\nDELETE FROM sys_role_menu WHERE role_id = @sys_id;\nINSERT INTO sys_role_menu(`role_id`, `menu_id`, `type`)\nSELECT @sys_id, menu_id, 0 FROM sys_menu;" err = writeFile(baseDir, sqlStr, v) if err != nil { fmt.Println(v.BusinessName, "生成失败,文件写入失败,Err:", err) continue } } fmt.Println("生成完成") } func getMenuStr(menuList []*models.EtaBusinessMenu) (str string) { menuStrList := []string{} for _, v := range menuList { tmpStr := fmt.Sprintf(`(%d, %d, "%s", %d, "%s","%s", "%s",%d, %d, "%s", %d, "%s", "%s", "%s", "%s", "%s")`, v.MenuId, v.ParentId, v.Name, v.Sort, v.Path, v.IconPath, v.Component, v.Hidden, v.IsLevel, v.LevelPath, v.MenuType, v.ButtonCode, v.CreateTime.Format(utils.FormatDateTime), v.ModifyTime.Format(utils.FormatDateTime), v.Api, v.NameEn) menuStrList = append(menuStrList, tmpStr) } str = strings.Join(menuStrList, ",\n") str += ";\n" return } // writeFile 文件写入 func writeFile(baseDir, str string, etaBusiness *models.EtaBusiness) (err error) { file, err := os.OpenFile(baseDir+"/"+time.Now().Format(utils.FormatDateMouthDayUnSpace)+"_"+etaBusiness.BusinessName+"_"+etaBusiness.BusinessCode+".txt", os.O_WRONLY|os.O_CREATE, 0666) if err != nil { fmt.Println(err) return } defer file.Close() _, err = file.Write([]byte(str)) if err != nil { return } return }