123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- package main
- import (
- "box-gm/utils"
- "fmt"
- "github.com/astaxie/beego"
- // "github.com/drone/routes"
- "box-gm/backup"
- "box-gm/models"
- _ "box-gm/routers"
- "database/sql"
- "log"
- "os"
- "time"
- "github.com/astaxie/beego/orm"
- _ "github.com/go-sql-driver/mysql"
- _ "github.com/mattn/go-sqlite3"
- )
- var dsn = "./admin.db"
- func init() {
- //会话保存到文件中
- beego.BConfig.WebConfig.Session.SessionOn = true
- }
- func TimeToStr(i int64) string {
- if i == int64(0) {
- return ""
- }
- return time.Unix(int64(i), 0).Format("2006-01-02 15:04:05")
- }
- func GetSelectStatus(id1 int64, id2 int64) string {
- log.Printf("GetSelectStatus id1[%d] id2[%d]", id1, id2)
- if id1 == id2 {
- return "selected"
- }
- return ""
- }
- // 服务器状态
- func ServerStatus(s int) string {
- if s == 1 {
- return "正在运行"
- }
- if s == 0 {
- return "已停止"
- }
- return ""
- }
- func PermissionToStr(n int64) string {
- ret := ""
- p := models.GetPermissions()
- for i := 0; i < len(p); i++ {
- if (n & (1 << uint(p[i].Id))) != 0 {
- if ret == "" {
- ret = p[i].Name
- } else {
- ret = ret + " | " + p[i].Name
- }
- }
- }
- return ret
- }
- func GetRoleNameById(id int64) string {
- role := models.GetRoleById(id)
- if role == nil {
- return ""
- }
- return role.Name
- }
- func TimeCmdOperate(s int) string {
- if s == 1 {
- return "关闭登录"
- }
- if s == 2 {
- return "合服"
- }
- return ""
- }
- func TimeCmdOperateStatus(s int) string {
- if s == 0 {
- return "未执行"
- }
- if s == 1 {
- return "已执行"
- }
- return ""
- }
- // 权重物品列表
- func WeightItems(items []*models.ExchangeItemsInfo) string {
- cnt := ""
- for _, v := range items {
- if cnt != "" {
- cnt += "|"
- }
- cnt += fmt.Sprintf("%s%d,权重:%d", models.GetItemName(v.ItemId), v.Count, v.Weight)
- }
- return cnt
- }
- // 初始化beego fun
- func initBeegoFunMap() {
- beego.AddFuncMap("TimeToStr", TimeToStr)
- beego.AddFuncMap("GetSelectStatus", GetSelectStatus)
- beego.AddFuncMap("ServerStatus", ServerStatus)
- beego.AddFuncMap("PermissionToStr", PermissionToStr)
- beego.AddFuncMap("GetRoleNameById", GetRoleNameById)
- beego.AddFuncMap("TimeCmdOperate", TimeCmdOperate)
- beego.AddFuncMap("TimeCmdOperateStatus", TimeCmdOperateStatus)
- beego.AddFuncMap("WeightItems", WeightItems)
- }
- func main() {
- //系统第一次初始化需要先运行init
- if len(os.Args) > 1 && os.Args[1] == "init" {
- initDb()
- return
- }
- //当有新数据结构,或者数据结构有变更,需要先运行patch
- if len(os.Args) > 1 && os.Args[1] == "patch" {
- patchDb()
- return
- }
- utils.InitProject()
- utils.InitRedis()
- // 注册sqlite
- orm.RegisterDriver("sqlite3", orm.DRSqlite)
- orm.RegisterDataBase("default", "sqlite3", dsn)
- orm.RegisterDataBase("admin", "sqlite3", dsn)
- go backup.Init_backup_event_proc()
- // 初始化数据
- models.InitHotfixInfo()
- models.InitBanIPInfo()
- models.InitExchangeCodeInfo()
- //模板初始化
- initBeegoFunMap()
- beego.SetLevel(beego.LevelInformational)
- beego.Run()
- }
- func initDb() {
- os.Remove(dsn)
- orm.RegisterDriver("sqlite3", orm.DRSqlite)
- orm.RegisterDataBase("default", "sqlite3", dsn)
- orm.RegisterDataBase("admin", "sqlite3", dsn)
- db, err := sql.Open("sqlite3", dsn)
- if err != nil {
- panic(err.Error())
- }
- r, err := db.Exec("create table init (n varchar(32));drop table init;")
- if err != nil {
- log.Println(err)
- log.Println(r)
- } else {
- log.Println("Database ", " created")
- }
- o := orm.NewOrm()
- o.Using("admin")
- orm.RunSyncdb("admin", true, true)
- u := new(models.User)
- u.Username = "admin"
- u.Role = 1
- u.Password = utils.Strtomd5("000000")
- u.CreateTs = time.Now().Unix()
- u.LastLoginTs = time.Now().Unix()
- o.Insert(u)
- role := new(models.Role)
- role.Name = "管理员"
- role.Permission = 0xFFFFFFFF
- o.Insert(role)
- time.Sleep(10000)
- }
- func patchDb() {
- orm.RegisterDriver("sqlite3", orm.DRSqlite)
- orm.RegisterDataBase("default", "sqlite3", dsn)
- orm.RegisterDataBase("admin", "sqlite3", dsn)
- //force - drop table 后再建表
- orm.RunSyncdb("admin", false, true)
- // o := orm.NewOrm()
- // o.Insert(&models.SystemParameter{Key: "test_server", Value: ""})
- // o.Insert(&models.SystemParameter{Key: "game_server", Value: ""})
- }
|