main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package main
  2. import (
  3. "github.com/astaxie/beego"
  4. "box-gm/utils"
  5. // "github.com/drone/routes"
  6. _ "box-gm/routers"
  7. "box-gm/backup"
  8. "os"
  9. "log"
  10. "time"
  11. "database/sql"
  12. "box-gm/models"
  13. "github.com/astaxie/beego/orm"
  14. _ "github.com/go-sql-driver/mysql"
  15. _ "github.com/mattn/go-sqlite3"
  16. )
  17. var dsn = "./admin.db"
  18. func init() {
  19. //会话保存到文件中
  20. beego.BConfig.WebConfig.Session.SessionOn = true
  21. }
  22. func TimeToStr(i int64) string {
  23. if i == int64(0) {
  24. return ""
  25. }
  26. return time.Unix(int64(i), 0).Format("2006-01-02 15:04:05")
  27. }
  28. func GetSelectStatus(id1 int64, id2 int64) string {
  29. log.Printf("GetSelectStatus id1[%d] id2[%d]", id1, id2)
  30. if id1 == id2 {
  31. return "selected"
  32. }
  33. return ""
  34. }
  35. // 服务器状态
  36. func ServerStatus(s int) string {
  37. if s == 1 {
  38. return "正在运行"
  39. }
  40. if s == 0 {
  41. return "已停止"
  42. }
  43. return ""
  44. }
  45. func PermissionToStr(n int64) string {
  46. ret := ""
  47. p := models.GetPermissions()
  48. for i := 0; i < len(p); i++ {
  49. if (n & (1 << uint(p[i].Id))) != 0 {
  50. if ret == "" {
  51. ret = p[i].Name
  52. } else {
  53. ret = ret + " | " + p[i].Name
  54. }
  55. }
  56. }
  57. return ret
  58. }
  59. func GetRoleNameById(id int64) string {
  60. role := models.GetRoleById(id)
  61. if role == nil {
  62. return ""
  63. }
  64. return role.Name
  65. }
  66. func TimeCmdOperate(s int) string {
  67. if s == 1 {
  68. return "关闭登录"
  69. }
  70. if s == 2 {
  71. return "合服"
  72. }
  73. return ""
  74. }
  75. func TimeCmdOperateStatus(s int) string {
  76. if s == 0 {
  77. return "未执行"
  78. }
  79. if s == 1 {
  80. return "已执行"
  81. }
  82. return ""
  83. }
  84. // 初始化beego fun
  85. func initBeegoFunMap() {
  86. beego.AddFuncMap("TimeToStr", TimeToStr)
  87. beego.AddFuncMap("GetSelectStatus", GetSelectStatus)
  88. beego.AddFuncMap("ServerStatus", ServerStatus)
  89. beego.AddFuncMap("PermissionToStr", PermissionToStr)
  90. beego.AddFuncMap("GetRoleNameById", GetRoleNameById)
  91. beego.AddFuncMap("TimeCmdOperate", TimeCmdOperate)
  92. beego.AddFuncMap("TimeCmdOperateStatus", TimeCmdOperateStatus)
  93. }
  94. func main() {
  95. //系统第一次初始化需要先运行init
  96. if len(os.Args) > 1 && os.Args[1] == "init" {
  97. initDb()
  98. return
  99. }
  100. //当有新数据结构,或者数据结构有变更,需要先运行patch
  101. if len(os.Args) > 1 && os.Args[1] == "patch" {
  102. patchDb()
  103. return
  104. }
  105. utils.InitProject()
  106. utils.InitRedis()
  107. // 注册sqlite
  108. orm.RegisterDriver("sqlite3", orm.DRSqlite)
  109. orm.RegisterDataBase("default", "sqlite3", dsn)
  110. orm.RegisterDataBase("admin", "sqlite3", dsn)
  111. go backup.Init_backup_event_proc()
  112. // 初始化数据
  113. models.InitHotfixInfo()
  114. models.InitBanIPInfo()
  115. //模板初始化
  116. initBeegoFunMap()
  117. beego.SetLevel(beego.LevelInformational)
  118. beego.Run()
  119. }
  120. func initDb() {
  121. os.Remove(dsn)
  122. orm.RegisterDriver("sqlite3", orm.DRSqlite)
  123. orm.RegisterDataBase("default", "sqlite3", dsn)
  124. orm.RegisterDataBase("admin", "sqlite3", dsn)
  125. db, err := sql.Open("sqlite3", dsn)
  126. if err != nil {
  127. panic(err.Error())
  128. }
  129. r, err := db.Exec("create table init (n varchar(32));drop table init;")
  130. if err != nil {
  131. log.Println(err)
  132. log.Println(r)
  133. } else {
  134. log.Println("Database ", " created")
  135. }
  136. o := orm.NewOrm()
  137. o.Using("admin")
  138. orm.RunSyncdb("admin", true, true)
  139. u := new(models.User)
  140. u.Username = "hc"
  141. u.Role = 1
  142. u.Password = utils.Strtomd5("000000")
  143. u.CreateTs = time.Now().Unix()
  144. u.LastLoginTs = time.Now().Unix()
  145. o.Insert(u)
  146. role := new(models.Role)
  147. role.Name = "管理员"
  148. role.Permission = 0xFFFFFFFF
  149. o.Insert(role)
  150. time.Sleep(10000)
  151. }
  152. func patchDb() {
  153. orm.RegisterDriver("sqlite3", orm.DRSqlite)
  154. orm.RegisterDataBase("default", "sqlite3", dsn)
  155. orm.RegisterDataBase("admin", "sqlite3", dsn)
  156. //force - drop table 后再建表
  157. orm.RunSyncdb("admin", false, true)
  158. // o := orm.NewOrm()
  159. // o.Insert(&models.SystemParameter{Key: "test_server", Value: ""})
  160. // o.Insert(&models.SystemParameter{Key: "game_server", Value: ""})
  161. }