112 lines
2.3 KiB
Go
112 lines
2.3 KiB
Go
package mysql
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
"myscools.me/tcq/user-base/model"
|
|
)
|
|
|
|
func UserDetailByOpenId(openid *string) (user *model.User, err error) {
|
|
db, _ := New()
|
|
user = &model.User{}
|
|
if err := db.Where("openid = ?", *openid).First(user).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func UserDetailById(id *uint, db *gorm.DB) (user *model.User, err error) {
|
|
|
|
if db == nil {
|
|
db, _ = New()
|
|
}
|
|
user = &model.User{}
|
|
if err := db.Where("id = ?", *id).First(user).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func UserDetailByMobile(mobile *string, db *gorm.DB) (user *model.User, err error) {
|
|
|
|
if db == nil {
|
|
db, _ = New()
|
|
}
|
|
user = &model.User{}
|
|
if err := db.Where("mobile = ?", *mobile).First(user).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func UserCreate(username, mobile, role, projectid *string, db *gorm.DB) (*model.User, error) {
|
|
if db == nil {
|
|
db, _ = New()
|
|
}
|
|
user := &model.User{
|
|
UserName: *username,
|
|
Mobile: *mobile,
|
|
Role: *role,
|
|
ProjectID: *projectid,
|
|
}
|
|
if err := db.Create(user).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, err
|
|
}
|
|
}
|
|
return user, nil
|
|
}
|
|
|
|
func UserUpdate(user *model.User, db *gorm.DB) error {
|
|
|
|
if db == nil {
|
|
db, _ = New()
|
|
}
|
|
if err := db.Model(&model.User{}).Where("id=?", user.ID).Updates(user).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func UserDelete(userid *uint) error {
|
|
db, _ := New()
|
|
if err := db.Where("id=?", *userid).Delete(&model.User{}).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func UserList(index, size int, name, role string) ([]*model.User, int64, error) {
|
|
db, _ := New()
|
|
users := make([]*model.User, 0)
|
|
var count int64
|
|
query := db.Model(&model.User{})
|
|
if name != "" {
|
|
query.Where("user_name like ?", "%"+name+"%")
|
|
}
|
|
if role != "" {
|
|
query.Where("role = ?", role)
|
|
}
|
|
if err := query.Count(&count).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, 0, err
|
|
}
|
|
}
|
|
if err := query.Offset((index - 1) * size).Limit(size).Find(&users).Error; err != nil {
|
|
if err != gorm.ErrRecordNotFound {
|
|
return nil, 0, err
|
|
}
|
|
}
|
|
|
|
return users, count, nil
|
|
}
|