user-srv/mysql/user-mysql.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
}