weather/db/model/localtion.go

88 lines
2.1 KiB
Go
Raw Normal View History

2025-01-02 22:57:51 +08:00
package model
import (
"cc/db"
"errors"
)
// Localtion 位置
type Localtion struct {
ID int `db:"id" json:"id"` // 位置ID
Name string `db:"name" json:"name"` // 位置名称
Code string `db:"code" json:"code"` // 位置编码
}
// GetAll 获取所有位置
func (loc *Localtion) GetAll() (rv []Localtion, rer error) {
sql := "SELECT * FROM localtions"
rer = db.DB.Select(&rv, sql)
return
}
// GetLocaltionByID 根据ID获取位置
func (loc *Localtion) GetLocaltionByID() (rer error) {
sql := "SELECT * FROM localtions WHERE id =?"
return db.DB.Get(loc, sql, loc.ID)
}
// CreateLocaltion 创建位置
func (loc *Localtion) CreateLocaltion() (rer error) {
// 检查位置名称是否存在
var count int
sql := "SELECT COUNT(*) FROM localtions WHERE name=?"
err := db.DB.Get(&count, sql, loc.Name)
if err != nil {
return err
}
if count > 0 {
return errors.New("位置名称已存在")
}
// 检查位置编码是否存在
sql = "SELECT COUNT(*) FROM localtions WHERE code=?"
err = db.DB.Get(&count, sql, loc.Code)
if err != nil {
return err
}
if count > 0 {
return errors.New("位置编码已存在")
}
// 插入数据
sql = "INSERT INTO localtions (name, code) VALUES (?, ?)"
_, rer = db.DB.Exec(sql, loc.Name, loc.Code)
return
}
// UpdateLocaltion 更新位置
func (loc *Localtion) UpdateLocaltion() (rer error) {
// 检查位置名称是否存在
var count int
sql := "SELECT COUNT(*) FROM localtions WHERE name=? AND id!=?"
err := db.DB.Get(&count, sql, loc.Name, loc.ID)
if err != nil {
return err
}
if count > 0 {
return errors.New("位置名称已存在")
}
// 检查位置编码是否存在
sql = "SELECT COUNT(*) FROM localtions WHERE code=? AND id!=?"
err = db.DB.Get(&count, sql, loc.Code, loc.ID)
if err != nil {
return err
}
if count > 0 {
return errors.New("位置编码已存在")
}
// 更新数据
sql = "UPDATE localtions SET name=?, code=? WHERE id=?"
_, rer = db.DB.Exec(sql, loc.Name, loc.Code, loc.ID)
return
}
// DeleteLocaltion 删除位置
func (loc *Localtion) DeleteLocaltion() (rer error) {
sql := "DELETE FROM localtions WHERE id=?"
_, rer = db.DB.Exec(sql, loc.ID)
return
}