db.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package config
  2. import (
  3. "app.yhyue.com/moapp/jybase/mysql"
  4. "app.yhyue.com/moapp/jybase/redis"
  5. "database/sql"
  6. "fmt"
  7. "gopkg.in/yaml.v3"
  8. "io/ioutil"
  9. "log"
  10. )
  11. var SysConfig Config
  12. var Db *sql.DB
  13. var KbDb *mysql.Mysql
  14. var GfastDb *mysql.Mysql
  15. var QywxUserIdMap map[string]string
  16. type Config struct {
  17. Port string `yaml:"port"`
  18. Database DatabaseConfig `yaml:"database"`
  19. FilePath string `yaml:"filePath"`
  20. WechatWorkUrl string `yaml:"wechatWorkUrl"`
  21. KbMySql DatabaseConfig `yaml:"kbMySql"`
  22. WechatWorkKey string `yaml:"wechatWorkKey"`
  23. WechatRemind []string `yaml:"wechatRemind"`
  24. WorkflowsUrl string `yaml:"workflowsUrl"`
  25. WorkflowsUser string `yaml:"workflowsUser"`
  26. WorkPrivateMsg WorkPrivateMsg `yaml:"workPrivateMsg"`
  27. RedisServer string `yaml:"redisServer"`
  28. Project Project `yaml:"project"`
  29. TimeTaskCron string `yaml:"timeTaskCron"`
  30. Gfastv2 DatabaseConfig `yaml:"gfastv2"`
  31. }
  32. type DatabaseConfig struct {
  33. Host string `yaml:"host"`
  34. Port int `yaml:"port"`
  35. User string `yaml:"user"`
  36. Password string `yaml:"password"`
  37. DBName string `yaml:"dbname"`
  38. }
  39. type WorkPrivateMsg struct {
  40. AgentID int `yaml:"agentid"` // 固定应用id
  41. WxAdmin string `yaml:"wx_admin"` // 默认发送人
  42. WxCorpid string `yaml:"wx_corpid"` // 固定企业id
  43. WxSecret string `yaml:"wx_secret"` // 固定密钥
  44. }
  45. type Project struct {
  46. ProjectId int `yaml:"projectId"` // 项目ID
  47. TodoColumnId int `yaml:"todoColumnId"` // 待办列ID
  48. FinishColumnId int `yaml:"finishColumnId"` // 完成列ID
  49. SwimlaneId int `yaml:"swimlaneId"` // 泳道ID
  50. }
  51. func LoadConfig() {
  52. data, err := ioutil.ReadFile("./config.yaml")
  53. if err != nil {
  54. log.Println("read config err:", err)
  55. }
  56. //config := &Config{}
  57. err = yaml.Unmarshal(data, &SysConfig)
  58. if err != nil {
  59. log.Println("read config err:", err)
  60. }
  61. }
  62. // 初始化连接 MySQL 数据库并创建绑定表(如果不存在)
  63. func InitDB() {
  64. dbCon := fmt.Sprintf("%s:%s@tcp(%s)/jy_resume?charset=utf8&parseTime=True&loc=Local", SysConfig.Database.User, SysConfig.Database.Password, SysConfig.Database.Host)
  65. var err error
  66. Db, err = sql.Open("mysql", dbCon)
  67. if err != nil {
  68. log.Fatal("数据库连接错误:", err)
  69. }
  70. // 测试数据库连接
  71. if err = Db.Ping(); err != nil {
  72. log.Fatal("数据库 ping 错误:", err)
  73. }
  74. //defer Db.Close()
  75. KbDb = &mysql.Mysql{
  76. Address: SysConfig.KbMySql.Host,
  77. UserName: SysConfig.KbMySql.User,
  78. PassWord: SysConfig.KbMySql.Password,
  79. DBName: SysConfig.KbMySql.DBName,
  80. MaxOpenConns: 5,
  81. MaxIdleConns: 5,
  82. }
  83. KbDb.Init()
  84. GfastDb = &mysql.Mysql{
  85. Address: SysConfig.Gfastv2.Host,
  86. UserName: SysConfig.Gfastv2.User,
  87. PassWord: SysConfig.Gfastv2.Password,
  88. DBName: SysConfig.Gfastv2.DBName,
  89. MaxOpenConns: 5,
  90. MaxIdleConns: 5,
  91. }
  92. GfastDb.Init()
  93. redis.InitRedis(SysConfig.RedisServer)
  94. }