admin_backend/model/language.go
2025-10-27 16:48:47 +08:00

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
}