142 lines
3.2 KiB
Go
142 lines
3.2 KiB
Go
package models
|
|
|
|
import (
|
|
"github.com/jinzhu/gorm"
|
|
)
|
|
|
|
type Employee struct {
|
|
Model
|
|
|
|
AvatarUrl string `json:"avatar_url"`
|
|
Username string `json:"username"`
|
|
Password string `json:"password"`
|
|
Department string `json:"department"`
|
|
Position string `json:"position"`
|
|
State int `json:"state"`
|
|
}
|
|
|
|
func CheckEmployee(username, password string) bool {
|
|
var employee Employee
|
|
db.Select("id").Where(Employee{Username: username, Password: password}).First(&employee)
|
|
|
|
if employee.ID > 0 {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func ExistEmployeeByID(id int) (bool, error) {
|
|
var employee Employee
|
|
err := db.Select("id").Where("id = ? AND deleted_on = ?", id, 0).First(&employee).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return false, err
|
|
}
|
|
|
|
if employee.ID > 0 {
|
|
return true, nil
|
|
}
|
|
|
|
return false, nil
|
|
}
|
|
|
|
func ExistEmployeeByUsername(username string) bool {
|
|
var employee Employee
|
|
db.Select("username").Where("username = ?", username).First(&employee)
|
|
if employee.ID > 0 {
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
func GetEmployeeTotal(maps interface{}) (int, error) {
|
|
var count int
|
|
if err := db.Model(&Employee{}).Where(maps).Count(&count).Error; err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return count, nil
|
|
}
|
|
|
|
func GetEmployees(pageNum int, pageSize int, maps interface{}) ([]*Employee, error) {
|
|
var employees []*Employee
|
|
err := db.Where(maps).Offset(pageNum).Limit(pageSize).Find(&employees).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
|
|
return employees, nil
|
|
}
|
|
|
|
func GetEmployee(id int) (*Employee, error) {
|
|
var employee Employee
|
|
err := db.Where("id = ? AND deleted_on = ? ", id, 0).First(&employee).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
|
|
err = db.Model(&employee).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
|
|
return &employee, nil
|
|
}
|
|
|
|
func GetEmployeeByUsername(username string) (*Employee, error) {
|
|
var employee Employee
|
|
err := db.Where("username = ? AND deleted_on = ? ", username, 0).First(&employee).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
|
|
err = db.Model(&employee).Error
|
|
if err != nil && err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
|
|
return &employee, nil
|
|
}
|
|
|
|
func EditEmployee(id int, data map[string]interface{}) error {
|
|
if err := db.Model(&Employee{}).Where("id = ? AND deleted_on = ?", id, 0).Updates(Employee{
|
|
AvatarUrl: data["avatar_url"].(string),
|
|
Username: data["username"].(string),
|
|
Password: data["password"].(string),
|
|
Department: data["department"].(string),
|
|
Position: data["position"].(string),
|
|
State: data["state"].(int),
|
|
}).Error; err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func AddEmployee(data map[string]interface{}) error {
|
|
employee := Employee{
|
|
AvatarUrl: data["avatar_url"].(string),
|
|
Username: data["username"].(string),
|
|
Password: data["password"].(string),
|
|
Department: data["department"].(string),
|
|
Position: data["position"].(string),
|
|
}
|
|
|
|
if err := db.Create(&employee).Error; err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func DeleteEmployee(id int) error {
|
|
if err := db.Where("id = ?", id).Delete(Employee{}).Error; err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func CleanAllEmployee() bool {
|
|
db.Unscoped().Where("deleted_on != ?", 0).Delete(&Employee{})
|
|
|
|
return true
|
|
}
|