db.go 2.7 KB

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