new
This commit is contained in:
80
service/framework/database/database.go
Normal file
80
service/framework/database/database.go
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package Database
|
||||
|
||||
import (
|
||||
"Service/framework/config"
|
||||
"fmt"
|
||||
"github.com/gookit/color"
|
||||
"github.com/jinzhu/gorm"
|
||||
_ "github.com/jinzhu/gorm/dialects/mysql"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
var Get *gorm.DB
|
||||
|
||||
type DefaultField struct {
|
||||
CreateAt int `gorm:"Column:create_at" json:"create_at"`
|
||||
UpdateAt int `gorm:"Column:update_at" json:"update_at"`
|
||||
DeleteAt int `gorm:"Column:delete_at" json:"delete_at"`
|
||||
}
|
||||
|
||||
func Init() {
|
||||
|
||||
var err error
|
||||
|
||||
Get, err = gorm.Open(Config.Get.Database.Type, fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", Config.Get.Database.User, Config.Get.Database.Password, Config.Get.Database.Host, Config.Get.Database.Name))
|
||||
if err != nil {
|
||||
log.Println("[database]", color.Red.Text(err.Error()))
|
||||
}
|
||||
|
||||
if Config.Get.Service.Mode == "release" {
|
||||
Get.LogMode(false)
|
||||
} else {
|
||||
Get.LogMode(true)
|
||||
}
|
||||
|
||||
gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
|
||||
return defaultTableName
|
||||
}
|
||||
|
||||
Get.SingularTable(true)
|
||||
|
||||
Get.Callback().Create().Replace("gorm:update_time_stamp", func(scope *gorm.Scope) {
|
||||
if !scope.HasError() {
|
||||
nowTime := time.Now().Unix()
|
||||
if createTimeField, ok := scope.FieldByName("CreateAt"); ok {
|
||||
if createTimeField.IsBlank {
|
||||
err := createTimeField.Set(nowTime)
|
||||
if err != nil {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if modifyTimeField, ok := scope.FieldByName("UpdateAt"); ok {
|
||||
if modifyTimeField.IsBlank {
|
||||
err := modifyTimeField.Set(nowTime)
|
||||
if err != nil {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
Get.Callback().Update().Replace("gorm:update_time_stamp", func(scope *gorm.Scope) {
|
||||
if _, ok := scope.Get("gorm:update_column"); !ok {
|
||||
_ = scope.SetColumn("UpdateAt", time.Now().Unix())
|
||||
}
|
||||
})
|
||||
|
||||
Get.DB().SetMaxIdleConns(1000)
|
||||
Get.DB().SetMaxOpenConns(10000)
|
||||
|
||||
Get.DB().SetConnMaxLifetime(time.Second * 45)
|
||||
}
|
||||
45
service/framework/database/game_account_data/table.go
Normal file
45
service/framework/database/game_account_data/table.go
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package GameAccountData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
"Service/framework/utils"
|
||||
)
|
||||
|
||||
var TableName = "game_account_data"
|
||||
|
||||
type Data struct {
|
||||
AccountId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:account_id"`
|
||||
AccountMail string `gorm:"column:account_mail"`
|
||||
AccountPassword string `gorm:"column:account_password"`
|
||||
AccountName string `gorm:"column:account_name"`
|
||||
AccountNumber string `gorm:"column:account_number"`
|
||||
AccountQuestionA string `gorm:"column:account_question_a"`
|
||||
AccountQuestionB string `gorm:"column:account_question_b"`
|
||||
AccountAnswerA string `gorm:"column:account_answer_a"`
|
||||
AccountAnswerB string `gorm:"column:account_answer_b"`
|
||||
AccountGroup int `gorm:"column:account_group"`
|
||||
AccountStatus int `gorm:"column:account_status"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type Return struct {
|
||||
Token string `json:"token"`
|
||||
}
|
||||
|
||||
func ReturnData(dataStruct *Data) Return {
|
||||
|
||||
data := Return{}
|
||||
|
||||
if dataStruct.AccountId > 0 {
|
||||
data.Token = Utils.EncodeId(32, dataStruct.AccountId)
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
36
service/framework/database/game_code_data/table.go
Normal file
36
service/framework/database/game_code_data/table.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package GameCodeData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
"Service/framework/utils"
|
||||
)
|
||||
|
||||
var TableName = "game_code_data"
|
||||
|
||||
type Data struct {
|
||||
CodeId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:code_id" json:"code_id"`
|
||||
CodePhone string `gorm:"column:code_phone" json:"code_phone"`
|
||||
CodeMail string `gorm:"column:code_mail" json:"code_mail"`
|
||||
CodeContent string `gorm:"column:code_content" json:"code_content"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type ReturnData struct {
|
||||
Token string `json:"token"`
|
||||
CodeId int `json:"code_id"`
|
||||
CodePhone string `json:"code_phone"`
|
||||
CodeMail string `json:"code_mail"`
|
||||
CodeContent string `json:"code_content"`
|
||||
}
|
||||
|
||||
func FormatData(dataStruct *Data) ReturnData {
|
||||
|
||||
data := ReturnData{}
|
||||
|
||||
if dataStruct.CodeId > 0 {
|
||||
data.Token = Utils.EncodeId(32, dataStruct.CodeId, 1)
|
||||
data.CodeContent = dataStruct.CodeContent
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
52
service/framework/database/game_level_data/table.go
Normal file
52
service/framework/database/game_level_data/table.go
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package GameLevelData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
)
|
||||
|
||||
var TableName = "game_level_data"
|
||||
|
||||
type Data struct {
|
||||
LevelId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:level_id"`
|
||||
LevelServerId int `gorm:"column:level_server_id"`
|
||||
LevelCareer string `gorm:"column:level_career"`
|
||||
LevelName int `gorm:"column:level_name"`
|
||||
LevelMin int `gorm:"column:level_min"`
|
||||
LevelMax int `gorm:"column:level_max"`
|
||||
LevelLifeValue int `gorm:"column:level_life_value"`
|
||||
LevelMagicValue int `gorm:"column:level_magic_value"`
|
||||
LevelStatus int `gorm:"column:level_status"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type Return struct {
|
||||
LevelCareer string `json:"level_career"`
|
||||
LevelName int `json:"level_name"`
|
||||
LevelMin int `json:"level_min"`
|
||||
LevelMax int `json:"level_max"`
|
||||
LevelLifeValue int `json:"level_life_value"`
|
||||
LevelMagicValue int `json:"level_magic_value"`
|
||||
}
|
||||
|
||||
func ReturnData(dataStruct *Data) Return {
|
||||
|
||||
data := Return{}
|
||||
|
||||
if dataStruct.LevelId > 0 {
|
||||
data.LevelCareer = dataStruct.LevelCareer
|
||||
data.LevelName = dataStruct.LevelName
|
||||
data.LevelMin = dataStruct.LevelMin
|
||||
data.LevelMax = dataStruct.LevelMax
|
||||
data.LevelLifeValue = dataStruct.LevelLifeValue
|
||||
data.LevelMagicValue = dataStruct.LevelMagicValue
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
46
service/framework/database/game_map_data/table.go
Normal file
46
service/framework/database/game_map_data/table.go
Normal file
@@ -0,0 +1,46 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package GameMapData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
)
|
||||
|
||||
var TableName = "game_map_data"
|
||||
|
||||
type Data struct {
|
||||
MapId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:map_id"`
|
||||
MapServerId int `gorm:"column:map_server_id"`
|
||||
MapNumber string `gorm:"column:map_number"`
|
||||
MapName string `gorm:"column:map_name"`
|
||||
MapDefaultX int `gorm:"column:map_default_x"`
|
||||
MapDefaultY int `gorm:"column:map_default_y"`
|
||||
MapStatus int `gorm:"column:map_status"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type Return struct {
|
||||
MapNumber string `json:"map_number"`
|
||||
MapName string `json:"map_name"`
|
||||
MapDefaultX int `json:"map_default_x"`
|
||||
MapDefaultY int `json:"map_default_y"`
|
||||
}
|
||||
|
||||
func ReturnData(dataStruct *Data) Return {
|
||||
|
||||
data := Return{}
|
||||
|
||||
if dataStruct.MapId > 0 {
|
||||
data.MapNumber = dataStruct.MapNumber
|
||||
data.MapName = dataStruct.MapName
|
||||
data.MapDefaultX = dataStruct.MapDefaultX
|
||||
data.MapDefaultY = dataStruct.MapDefaultY
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
102
service/framework/database/game_player_data/table.go
Normal file
102
service/framework/database/game_player_data/table.go
Normal file
@@ -0,0 +1,102 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package GamePlayerData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
"Service/framework/utils"
|
||||
)
|
||||
|
||||
var TableName = "game_player_data"
|
||||
|
||||
type Data struct {
|
||||
PlayerId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:player_id"`
|
||||
PlayerAccountId int `gorm:"column:player_account_id"`
|
||||
PlayerServerId int `gorm:"column:player_server_id"`
|
||||
PlayerNickname string `gorm:"column:player_nickname"`
|
||||
PlayerCareer string `gorm:"column:player_career"`
|
||||
PlayerGender string `gorm:"column:player_gender"`
|
||||
PlayerBalance int `gorm:"column:player_balance"`
|
||||
PlayerIntegral int `gorm:"column:player_integral"`
|
||||
PlayerAngle int `gorm:"column:player_angle"`
|
||||
PlayerMap string `gorm:"column:player_map"`
|
||||
PlayerMapX int `gorm:"column:player_map_x"`
|
||||
PlayerMapY int `gorm:"column:player_map_y"`
|
||||
PlayerAssetLife int `gorm:"column:player_asset_life"`
|
||||
PlayerAssetMagic int `gorm:"column:player_asset_magic"`
|
||||
PlayerAssetExperience int `gorm:"column:player_asset_experience"`
|
||||
PlayerBodyClothe string `gorm:"column:player_body_clothe"`
|
||||
PlayerBodyWeapon string `gorm:"column:player_body_weapon"`
|
||||
PlayerBodyWing string `gorm:"column:player_body_wing"`
|
||||
PlayerClientId int `gorm:"column:player_client_id"`
|
||||
PlayerGroupId int `gorm:"column:player_group_id"`
|
||||
PlayerStatus int `gorm:"column:player_status"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type Return struct {
|
||||
Token string `json:"token"`
|
||||
PlayerNickname string `json:"player_nickname"`
|
||||
PlayerCareer string `json:"player_career"`
|
||||
PlayerGender string `json:"player_gender"`
|
||||
PlayerBalance string `json:"player_balance"`
|
||||
PlayerIntegral string `json:"player_integral"`
|
||||
PlayerAngle int `json:"player_angle"`
|
||||
PlayerMap string `json:"player_map"`
|
||||
PlayerMapName string `json:"player_map_name"`
|
||||
PlayerMapX int `json:"player_map_x"`
|
||||
PlayerMapY int `json:"player_map_y"`
|
||||
PlayerAssetLevel int `json:"player_asset_level"`
|
||||
PlayerAssetLife int `json:"player_asset_life"`
|
||||
PlayerAssetLifeMax int `json:"player_asset_life_max"`
|
||||
PlayerAssetMagic int `json:"player_asset_magic"`
|
||||
PlayerAssetMagicMax int `json:"player_asset_magic_max"`
|
||||
PlayerAssetWeight int `json:"player_asset_weight"`
|
||||
PlayerAssetWeightMax int `json:"player_asset_weight_max"`
|
||||
PlayerAssetExperience int `json:"player_asset_experience"`
|
||||
PlayerAssetExperienceMax int `json:"player_asset_experience_max"`
|
||||
PlayerBodyClothe string `json:"player_body_clothe"`
|
||||
PlayerBodyWeapon string `json:"player_body_weapon"`
|
||||
PlayerBodyWing string `json:"player_body_wing"`
|
||||
PlayerClientId int `json:"player_client_id"`
|
||||
PlayerGroupId int `json:"player_group_id"`
|
||||
}
|
||||
|
||||
func ReturnData(dataStruct *Data) Return {
|
||||
|
||||
data := Return{}
|
||||
|
||||
if dataStruct.PlayerId > 0 {
|
||||
data.Token = Utils.EncodeId(32, dataStruct.PlayerId, dataStruct.PlayerAccountId, dataStruct.PlayerServerId)
|
||||
data.PlayerNickname = dataStruct.PlayerNickname
|
||||
data.PlayerCareer = dataStruct.PlayerCareer
|
||||
data.PlayerGender = dataStruct.PlayerGender
|
||||
data.PlayerBalance = Utils.FormatCurrency(dataStruct.PlayerBalance)
|
||||
data.PlayerIntegral = Utils.FormatCurrency(dataStruct.PlayerIntegral)
|
||||
data.PlayerAngle = dataStruct.PlayerAngle
|
||||
data.PlayerMap = dataStruct.PlayerMap
|
||||
data.PlayerMapX = dataStruct.PlayerMapX
|
||||
data.PlayerMapY = dataStruct.PlayerMapY
|
||||
data.PlayerAssetLevel = 0
|
||||
data.PlayerAssetLife = dataStruct.PlayerAssetLife
|
||||
data.PlayerAssetLifeMax = 0
|
||||
data.PlayerAssetMagic = dataStruct.PlayerAssetMagic
|
||||
data.PlayerAssetMagicMax = 0
|
||||
data.PlayerAssetWeight = 5
|
||||
data.PlayerAssetWeightMax = 50
|
||||
data.PlayerAssetExperience = dataStruct.PlayerAssetExperience
|
||||
data.PlayerAssetExperienceMax = 0
|
||||
data.PlayerBodyClothe = dataStruct.PlayerBodyClothe
|
||||
data.PlayerBodyWeapon = dataStruct.PlayerBodyWeapon
|
||||
data.PlayerBodyWing = dataStruct.PlayerBodyWing
|
||||
data.PlayerClientId = dataStruct.PlayerClientId
|
||||
data.PlayerGroupId = dataStruct.PlayerGroupId
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
39
service/framework/database/game_server_data/table.go
Normal file
39
service/framework/database/game_server_data/table.go
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package GameServerData
|
||||
|
||||
import (
|
||||
"Service/framework/database"
|
||||
"Service/framework/utils"
|
||||
)
|
||||
|
||||
var TableName = "game_server_data"
|
||||
|
||||
type Data struct {
|
||||
ServerId int `gorm:"primary_key;AUTO_INCREMENT;unique_index;not null;column:server_id"`
|
||||
ServerName string `gorm:"column:server_name"`
|
||||
ServerStatus int `gorm:"column:server_status"`
|
||||
Database.DefaultField
|
||||
}
|
||||
|
||||
type Return struct {
|
||||
Token string `json:"token"`
|
||||
ServerName string `json:"server_name"`
|
||||
}
|
||||
|
||||
func ReturnData(dataStruct *Data) Return {
|
||||
|
||||
data := Return{}
|
||||
|
||||
if dataStruct.ServerId > 0 {
|
||||
data.Token = Utils.EncodeId(32, dataStruct.ServerId)
|
||||
data.ServerName = dataStruct.ServerName
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
||||
65
service/framework/database/interface.go
Normal file
65
service/framework/database/interface.go
Normal file
@@ -0,0 +1,65 @@
|
||||
/**
|
||||
#*****************************************************************************
|
||||
# @author MakerYang
|
||||
# @site mir2.makeryang.com
|
||||
#*****************************************************************************
|
||||
*/
|
||||
|
||||
package Database
|
||||
|
||||
import (
|
||||
"github.com/jinzhu/gorm"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Base struct {
|
||||
TableName string
|
||||
}
|
||||
|
||||
func New(table string) *Base {
|
||||
return &Base{
|
||||
TableName: table,
|
||||
}
|
||||
}
|
||||
|
||||
func (base *Base) CreateData(data interface{}) error {
|
||||
err := Get.Table(base.TableName).Create(data).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) UpdateData(query interface{}, data map[string]interface{}) error {
|
||||
data["update_at"] = time.Now().Unix()
|
||||
err := Get.Table(base.TableName).Where(query).Updates(data).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) ExprData(query interface{}, field string, operation string, data int) error {
|
||||
err := Get.Table(base.TableName).Where(query).Update(field, gorm.Expr(field+" "+operation+" ?", data)).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) GetData(dataStruct interface{}, query interface{}, order string) error {
|
||||
err := Get.Table(base.TableName).Where(query).Order(order).First(dataStruct).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) ListData(dataStruct interface{}, query interface{}, order string, limit int) error {
|
||||
err := Get.Table(base.TableName).Where(query).Order(order).Limit(limit).Find(dataStruct).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) PageData(dataStruct interface{}, query interface{}, order string, limit int, page int) error {
|
||||
err := Get.Table(base.TableName).Where(query).Order(order).Limit(limit).Offset(page * limit).Find(dataStruct).Error
|
||||
return err
|
||||
}
|
||||
|
||||
func (base *Base) CountData(query interface{}) (int, error) {
|
||||
count := 0
|
||||
err := Get.Table(base.TableName).Where(query).Count(&count).Error
|
||||
return count, err
|
||||
}
|
||||
|
||||
func (base *Base) DeleteData(dataStruct interface{}, query interface{}) error {
|
||||
err := Get.Table(base.TableName).Where(query).Delete(dataStruct).Error
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user