111 lines
3.4 KiB
Go
111 lines
3.4 KiB
Go
package model
|
|
|
|
import (
|
|
"backend/util"
|
|
)
|
|
|
|
type Language struct {
|
|
Id int `json:"Id" db:"Id"`
|
|
Key string `json:"key" db:"key"`
|
|
English string `json:"English" db:"English"`
|
|
ChineseSimplified string `json:"ChineseSimplified" db:"ChineseSimplified"`
|
|
Portuguese string `json:"Portuguese" db:"Portuguese"`
|
|
}
|
|
|
|
type LanguageOp struct {
|
|
Id int `json:"Id" db:"Id"`
|
|
LanguageId int `json:"LanguageId" db:"LanguageId"`
|
|
Field string `json:"Field" db:"Field"`
|
|
OldValue string `json:"OldValue" db:"OldValue"`
|
|
NewValue string `json:"NewValue" db:"NewValue"`
|
|
Type string `json:"Type" db:"Type"`
|
|
}
|
|
|
|
type LanguageMod struct {
|
|
PageSize int `json:"PageSize"`
|
|
CurrentPage int `json:"CurrentPage"`
|
|
StartTime int `json:"StartTime"`
|
|
EndTime int `json:"EndTime"`
|
|
}
|
|
|
|
func (l *LanguageMod) LanguageList() (map[string]interface{}, error) {
|
|
Db := util.MPool.GetGameDB()
|
|
defer Db.Close()
|
|
var languages []*Language
|
|
err := Db.Select(&languages, "SELECT `Id`, `key`, `English`, `ChineseSimplified`, `Portuguese` FROM language LIMIT ?, ?", (l.CurrentPage-1)*l.PageSize, l.PageSize)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var languageOp []*LanguageOp
|
|
err = Db.Select(&languageOp, "SELECT `Id`, `LanguageId`, `Field`, `OldValue`, `NewValue`, `Type` FROM language_op where `Update` >= ? and `Update` <= ? ", l.StartTime, l.EndTime)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var total int
|
|
err = Db.QueryRow("SELECT COUNT(*) FROM language").Scan(&total)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return map[string]interface{}{
|
|
"data": languages,
|
|
"op": languageOp,
|
|
"total": total,
|
|
}, nil
|
|
}
|
|
|
|
func (l *LanguageMod) LanguageListAll() (map[string]interface{}, error) {
|
|
Db := util.MPool.GetGameDB()
|
|
defer Db.Close()
|
|
var languages []*Language
|
|
err := Db.Select(&languages, "SELECT `Id`, `key`, `English`, `ChineseSimplified`,`Portuguese` FROM language")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var total int
|
|
err = Db.QueryRow("SELECT COUNT(*) FROM language").Scan(&total)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return map[string]interface{}{
|
|
"data": languages,
|
|
"total": total,
|
|
}, nil
|
|
}
|
|
|
|
func (l *LanguageMod) LanguageSave(langList []LanguageOp) error {
|
|
Db := util.MPool.GetGameDB()
|
|
defer Db.Close()
|
|
for _, lang := range langList {
|
|
_, err := Db.Exec("UPDATE language SET "+lang.Field+" = ? WHERE Id = ?", lang.NewValue, lang.LanguageId)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
_, err = Db.Exec("insert into language_op (`LanguageId`, `Field`, `OldValue`, `NewValue`, `Type`, `Update`) values (?, ?, ?, ?, ?,?)", lang.Id, lang.Field, lang.OldValue, lang.NewValue, lang.Type, util.Now())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (l *LanguageMod) LanguageAdd(langList []Language) error {
|
|
Db := util.MPool.GetGameDB()
|
|
defer Db.Close()
|
|
for _, lang := range langList {
|
|
res, err := Db.Exec("INSERT INTO language (`key`, `English`, `ChineseSimplified`, `Portuguese`) VALUES (?, ?, ?, ?)", lang.Key, lang.English, lang.ChineseSimplified, lang.Portuguese)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
lastId, err := res.LastInsertId()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
lang.Id = int(lastId)
|
|
_, err = Db.Exec("insert into language_op (`LanguageId`, `Field`, `OldValue`, `NewValue`, `Type`, `Update`) values (?, ?, ?, ?, ?,?)", lang.Id, "All", "", lang.English+"|"+lang.ChineseSimplified+"|"+lang.Portuguese, "Add", util.Now())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|