cmd.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package boot
  2. import (
  3. "fmt"
  4. "net/http"
  5. "github.com/gin-gonic/gin"
  6. "github.com/gomodule/redigo/redis"
  7. "github.com/spf13/viper"
  8. "go.uber.org/zap"
  9. "shopperthree_manage_v2/app/router"
  10. "shopperthree_manage_v2/client/mysql"
  11. "shopperthree_manage_v2/client/sredis"
  12. "shopperthree_manage_v2/logger"
  13. )
  14. func Run() {
  15. var err error
  16. StoreInit()
  17. err = InitModel()
  18. if err != nil {
  19. panic(err)
  20. }
  21. StartServer()
  22. }
  23. //初始化相关必要持久化服务
  24. func StoreInit() {
  25. //连接mysql
  26. var err error
  27. // 连接数据库
  28. _, err = mysql.Dial("mysql", viper.GetString("mysql.address"))
  29. if err != nil {
  30. panic(err)
  31. }
  32. //初始化redis
  33. sredis.MasterPool = &redis.Pool{ //实例化一个连接池
  34. MaxIdle: 16, //最初的连接数量
  35. // MaxActive:1000000, //最大连接数量
  36. MaxActive: 0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
  37. IdleTimeout: 300, //连接关闭时间 300秒 (300秒不使用自动关闭)
  38. Dial: func() (redis.Conn, error) { //要连接的redis数据库
  39. conn, err := redis.Dial("tcp", viper.GetString("redis.master.address"))
  40. if err != nil {
  41. return nil, err
  42. }
  43. if viper.GetString("redis.master.password") != "" {
  44. _, err = conn.Do("AUTH", viper.GetString("redis.master.password"))
  45. if err != nil {
  46. return nil, err
  47. }
  48. }
  49. return conn, err
  50. },
  51. }
  52. sredis.SalvePool = &redis.Pool{ //实例化一个连接池
  53. MaxIdle: 16, //最初的连接数量
  54. // MaxActive:1000000, //最大连接数量
  55. MaxActive: 0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
  56. IdleTimeout: 300, //连接关闭时间 300秒 (300秒不使用自动关闭)
  57. Dial: func() (redis.Conn, error) { //要连接的redis数据库
  58. conn, err := redis.Dial("tcp", viper.GetString("redis.slave.address"))
  59. if err != nil {
  60. return nil, err
  61. }
  62. if viper.GetString("redis.slave.password") != "" {
  63. _, err = conn.Do("AUTH", viper.GetString("redis.slave.password"))
  64. if err != nil {
  65. return nil, err
  66. }
  67. }
  68. return conn, err
  69. },
  70. }
  71. }
  72. //启动服务
  73. func StartServer() {
  74. //
  75. r := gin.Default()
  76. router.StepRouters(r)
  77. addr := fmt.Sprintf("%s:%d", viper.GetString("server.host"), viper.GetInt("server.port"))
  78. logger.Info(fmt.Sprintf("Http Server has been started. http://%s", addr))
  79. logger.Fatal("start http server", zap.Error(http.ListenAndServe(addr, r)))
  80. }