task.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package init_serve
  2. import (
  3. "eta/eta_menu_sync/global"
  4. "eta/eta_menu_sync/models"
  5. "eta/eta_menu_sync/utils"
  6. "fmt"
  7. "os"
  8. "strings"
  9. "time"
  10. )
  11. func InitTask() {
  12. fmt.Println("开始执行生成sql语句")
  13. etaBusinessObj := models.EtaBusiness{}
  14. list, err := etaBusinessObj.GetAllEtaBusiness()
  15. if err != nil {
  16. fmt.Println("err:", err)
  17. return
  18. }
  19. dateDir := time.Now().Format("20060102")
  20. baseDir := global.CONFIG.Serve.StaticDir + "menu" + dateDir + ""
  21. err = os.MkdirAll(baseDir, 0766)
  22. if err != nil {
  23. fmt.Println("存储目录创建失败,Err:" + err.Error())
  24. return
  25. }
  26. etaBusinessMenuObj := models.EtaBusinessMenu{}
  27. for _, v := range list {
  28. menuList, tmpErr := etaBusinessMenuObj.GetMenuList(v.BusinessCode)
  29. if tmpErr != nil {
  30. fmt.Println(v.BusinessName, "生成失败,err:", tmpErr)
  31. continue
  32. }
  33. if len(menuList) <= 0 {
  34. fmt.Println(v.BusinessName, "生成失败,没有配置菜单")
  35. continue
  36. }
  37. tableName := fmt.Sprintf("sys_menu_%s_bak", time.Now().Format(utils.FormatDateUnSpace))
  38. sqlStr := "# 备份表\n# create table " + tableName + " like sys_menu;\n# insert into " + tableName + " select * from sys_menu;\n\n"
  39. 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 "
  40. sqlStr += getMenuStr(menuList)
  41. 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;"
  42. err = writeFile(baseDir, sqlStr, v)
  43. if err != nil {
  44. fmt.Println(v.BusinessName, "生成失败,文件写入失败,Err:", err)
  45. continue
  46. }
  47. }
  48. fmt.Println("生成完成")
  49. }
  50. func getMenuStr(menuList []*models.EtaBusinessMenu) (str string) {
  51. menuStrList := []string{}
  52. for _, v := range menuList {
  53. tmpStr := fmt.Sprintf(`(%d, %d, "%s", %d, "%s","%s", "%s",%d, %d, "%s", %d, "%s", "%s", "%s", "%s", "%s")`,
  54. 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)
  55. menuStrList = append(menuStrList, tmpStr)
  56. }
  57. str = strings.Join(menuStrList, ",\n")
  58. str += ";\n"
  59. return
  60. }
  61. // writeFile 文件写入
  62. func writeFile(baseDir, str string, etaBusiness *models.EtaBusiness) (err error) {
  63. file, err := os.OpenFile(baseDir+"/"+time.Now().Format(utils.FormatDateMouthDayUnSpace)+"_"+etaBusiness.BusinessName+"_"+etaBusiness.BusinessCode+".txt", os.O_WRONLY|os.O_CREATE, 0666)
  64. if err != nil {
  65. fmt.Println(err)
  66. return
  67. }
  68. defer file.Close()
  69. _, err = file.Write([]byte(str))
  70. if err != nil {
  71. return
  72. }
  73. return
  74. }