wz-golang-server/server/modules/user/mapper/user_mapper.go

71 lines
1.7 KiB
Go

// Package mapper 数据访问层
package mapper
import (
"server/config"
"server/modules/user/entity"
"gorm.io/gorm"
)
type UserMapper struct {
db *gorm.DB
}
func NewUserMapper() *UserMapper {
return &UserMapper{db: config.DB}
}
func (m *UserMapper) baseDB() *gorm.DB {
return m.db
}
// GetDB 获取数据库实例,默认过滤软删除
func (m *UserMapper) GetDB() *gorm.DB {
return m.baseDB().Where("deleted = 0")
}
// FindAll 分页查询
func (m *UserMapper) FindAll(page, size int) ([]entity.User, int64, error) {
var items []entity.User
var total int64
query := m.GetDB().Model(&entity.User{})
query.Count(&total)
err := query.Offset((page - 1) * size).Limit(size).Find(&items).Error
return items, total, err
}
// FindByID 根据 ID 查询
func (m *UserMapper) FindByID(id int64) (*entity.User, error) {
var item entity.User
err := m.GetDB().First(&item, "id = ?", id).Error
return &item, err
}
// FindByPhone 根据手机号查询
func (m *UserMapper) FindByPhone(phone string) (*entity.User, error) {
var item entity.User
err := m.GetDB().First(&item, "phone = ?", phone).Error
return &item, err
}
// Create 创建记录
func (m *UserMapper) Create(item *entity.User) error {
return m.baseDB().Create(item).Error
}
// Update 更新记录
func (m *UserMapper) Update(item *entity.User) error {
return m.baseDB().Save(item).Error
}
// UpdateFields 更新指定字段
func (m *UserMapper) UpdateFields(id int64, fields map[string]interface{}) error {
return m.baseDB().Model(&entity.User{}).Where("id = ?", id).Updates(fields).Error
}
// Delete 逻辑删除
func (m *UserMapper) Delete(id int64) error {
return m.baseDB().Model(&entity.User{}).Where("id = ?", id).Update("deleted", 1).Error
}