Просмотр исходного кода

Merge branch 'v2' of https://git.i2edu.net/packages/light-apiengine into v2

aries.zhang 5 лет назад
Родитель
Сommit
b100c2c4dd
4 измененных файлов с 28 добавлено и 7 удалено
  1. 5 3
      engine/auth/auth.go
  2. 2 1
      engine/auth/auth_client.go
  3. 18 3
      engine/system_init.go
  4. 3 0
      entitys/token.go

+ 5 - 3
engine/auth/auth.go

@@ -2,11 +2,13 @@ package auth
 
 import (
 	"errors"
+	"strconv"
+	"sync"
+	"time"
+
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/entitys"
 	sysmodel "git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	sysutils "git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
-	"strconv"
-	"time"
 )
 
 type IAuth interface {
@@ -61,7 +63,7 @@ func GetAuth(t string) IAuth {
  * @param1 userInfo: 用户信息
  */
 func AddToGlobalTokenStore(c *entitys.CtrlContext, userInfo *sysmodel.SysUser) (*sysmodel.LoginReturnInfo, error) {
-	token := &entitys.Token{}
+	token := &entitys.Token{Lock: new(sync.RWMutex)}
 	timestamp := uint64(time.Now().UnixNano())
 	timestamp_str := strconv.FormatUint(timestamp, 10)
 	sec_tooken := sysutils.GenerateToken(userInfo.LoginId + timestamp_str)

+ 2 - 1
engine/auth/auth_client.go

@@ -9,6 +9,7 @@ import (
 	"fmt"
 	"net"
 	"strconv"
+	"sync"
 	"time"
 
 	"git.qianqiusoft.com/library/glog"
@@ -366,7 +367,7 @@ func uint64ToBytes(v int) []byte {
 
 // 转token
 func bytesToToken(content []byte) (*entitys.Token, error) {
-	token := &entitys.Token{}
+	token := &entitys.Token{Lock: new(sync.RWMutex)}
 	var index int = 0
 	var size int
 	var err error = nil

+ 18 - 3
engine/system_init.go

@@ -5,13 +5,28 @@ import (
 	"regexp"
 	"time"
 
+	"git.qianqiusoft.com/qianqiusoft/light-apiengine/config"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/logs"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/models"
 	"git.qianqiusoft.com/qianqiusoft/light-apiengine/utils"
 	"github.com/xormplus/xorm"
 )
 
+// InitializeWithDefaultValue defined
+func InitializeWithDefaultValue(init int64, dlt int64) int64 {
+	if init == 0 {
+		return dlt
+	}
+	return init
+}
+
 func createDatabase(orm *xorm.Engine) {
+	maxLifeTime := InitializeWithDefaultValue(config.AppConfig.GetInt("max_life_time"), 10)
+	maxIdleConns := InitializeWithDefaultValue(config.AppConfig.GetInt("max_idle_conns"), 10)
+	maxOpenConns := InitializeWithDefaultValue(config.AppConfig.GetInt("max_open_conns"), 30)
+	fmt.Println("maxLifeTime = ", maxLifeTime)
+	fmt.Println("maxIdleConns = ", maxIdleConns)
+	fmt.Println("maxOpenConns = ", maxOpenConns)
 	if orm.DriverName() == "mysql" {
 		dbname := orm.DataSourceName()
 		reg := regexp.MustCompile("(.*)/(.*)(\\?.*)")
@@ -22,9 +37,9 @@ func createDatabase(orm *xorm.Engine) {
 			dbname = strings[2]
 			db, _ := xorm.NewEngine(orm.DriverName(), strings[1]+"/")
 			db.ShowSQL(true)
-			db.SetConnMaxLifetime(10 * time.Minute)
-			db.SetMaxIdleConns(10)
-			db.SetMaxOpenConns(80)
+			db.SetConnMaxLifetime(time.Duration(maxLifeTime) * time.Minute)
+			db.SetMaxIdleConns(int(maxIdleConns))
+			db.SetMaxOpenConns(int(maxOpenConns))
 			_, err := db.Sql("CREATE DATABASE IF NOT EXISTS `" + dbname + "` default charset utf8 COLLATE utf8_general_ci").Execute()
 			if err != nil {
 				fmt.Println("create database error", err)

+ 3 - 0
entitys/token.go

@@ -1,6 +1,9 @@
 package entitys
 
+import "sync"
+
 type Token struct {
+	Lock         *sync.RWMutex
 	Result       int                    `json:"-"`
 	UserId       string                 `json:"user_id"`
 	AccessToken  string                 `json:"access_token"`