88 lines
2.1 KiB
Go
88 lines
2.1 KiB
Go
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
|
|
}
|