case-admin-api/api/dao/ProjectPlatformDoctor.go
2025-03-07 17:23:50 +08:00

219 lines
6.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package dao
import (
"case-admin-api/api/model"
"case-admin-api/api/requests"
"case-admin-api/global"
"errors"
"gorm.io/gorm"
"gorm.io/gorm/clause"
"strings"
)
type ProjectPlatformDoctorDao struct {
}
// GetProjectPlatformDoctorById 获取数据-id
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorById(whiteDoctorId int64) (m *model.ProjectPlatformDoctor, err error) {
err = global.Db.First(&m, whiteDoctorId).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetProjectPlatformDoctorPreloadById 获取数据-加载全部关联-id
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorPreloadById(whiteDoctorId int64) (m *model.ProjectPlatformDoctor, err error) {
err = global.Db.Preload(clause.Associations).First(&m, whiteDoctorId).Error
if err != nil {
return nil, err
}
return m, nil
}
// DeleteProjectPlatformDoctor 删除
func (r *ProjectPlatformDoctorDao) DeleteProjectPlatformDoctor(tx *gorm.DB, maps interface{}) error {
err := tx.Where(maps).Delete(&model.ProjectPlatformDoctor{}).Error
if err != nil {
return err
}
return nil
}
// DeleteProjectPlatformDoctorById 删除-id
func (r *ProjectPlatformDoctorDao) DeleteProjectPlatformDoctorById(tx *gorm.DB, whiteDoctorId int64) error {
if err := tx.Delete(&model.ProjectPlatformDoctor{}, whiteDoctorId).Error; err != nil {
return err
}
return nil
}
// DeleteProjectPlatformDoctorByPlatformId 删除-id
func (r *ProjectPlatformDoctorDao) DeleteProjectPlatformDoctorByPlatformId(tx *gorm.DB, platformId int64) error {
if err := tx.Where("platform_id = ?", platformId).Delete(&model.ProjectPlatformDoctor{}).Error; err != nil {
return err
}
return nil
}
// EditProjectPlatformDoctor 修改
func (r *ProjectPlatformDoctorDao) EditProjectPlatformDoctor(tx *gorm.DB, maps interface{}, data interface{}) error {
err := tx.Model(&model.ProjectPlatformDoctor{}).Where(maps).Updates(data).Error
if err != nil {
return err
}
return nil
}
// EditProjectPlatformDoctorById 修改-id
func (r *ProjectPlatformDoctorDao) EditProjectPlatformDoctorById(tx *gorm.DB, whiteDoctorId int64, data interface{}) error {
err := tx.Model(&model.ProjectPlatformDoctor{}).Where("white_doctor_id = ?", whiteDoctorId).Updates(data).Error
if err != nil {
return err
}
return nil
}
// GetProjectPlatformDoctorList 获取列表
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorList(maps interface{}) (m []*model.ProjectPlatformDoctor, err error) {
err = global.Db.Where(maps).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetProjectPlatformDoctorCount 获取数量
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorCount(maps interface{}) (total int64, err error) {
err = global.Db.Model(&model.ProjectPlatformDoctor{}).Where(maps).Count(&total).Error
if err != nil {
return 0, err
}
return total, nil
}
// GetProjectPlatformDoctorListRand 获取列表-随机
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorListRand(maps interface{}, limit int) (m []*model.ProjectPlatformDoctor, err error) {
err = global.Db.Where(maps).Order("rand()").Limit(limit).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// AddProjectPlatformDoctor 新增
func (r *ProjectPlatformDoctorDao) AddProjectPlatformDoctor(tx *gorm.DB, model *model.ProjectPlatformDoctor) (*model.ProjectPlatformDoctor, error) {
if err := tx.Create(model).Error; err != nil {
return nil, err
}
return model, nil
}
// GetProjectPlatformDoctor 获取
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctor(maps interface{}) (m *model.ProjectPlatformDoctor, err error) {
err = global.Db.Where(maps).First(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetProjectPlatformDoctorPageSearch 获取列表-分页
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorPageSearch(req requests.GetProjectPlatformDoctorPage, page, pageSize int) (m []*model.ProjectPlatformDoctor, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.ProjectPlatformDoctor{})
// 基础数据-用户
query = query.Preload("User")
query = query.Where("project_platform_id = ?", req.ProjectPlatformId)
// 状态1:正常 2:禁用)
if req.Status != nil {
query = query.Where("status = ?", req.Status)
}
// 搜索关键字
if req.Keyword != "" {
keyword := "%" + req.Keyword + "%" //
// 姓名/手机号
subQuery := global.Db.Model(&model.User{}).
Select("user_id").
Or("user_name LIKE ?", keyword).
Or("user_mobile LIKE ?", keyword)
// 执行组建
query = query.Where(gorm.Expr("user_id IN (?)", subQuery))
}
// 排序
query = query.Order("created_at desc")
// 查询总数量
if err := query.Count(&totalRecords).Error; err != nil {
return nil, 0, err
}
err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error
if err != nil {
return nil, 0, err
}
return m, totalRecords, nil
}
// GetProjectPlatformDoctorExportListSearch 医生列表-导出
func (r *ProjectPlatformDoctorDao) GetProjectPlatformDoctorExportListSearch(req requests.ExportProjectPlatformDoctor) (m []*model.ProjectPlatformDoctor, err error) {
// 构建查询条件
query := global.Db.Model(&model.ProjectPlatformDoctor{})
// 基础数据-用户
query = query.Preload("User")
query = query.Preload("User.Hospital")
query = query.Where("project_platform_id = ?", req.ProjectPlatformId)
// 当前搜索数据
if req.Type == 1 {
// 状态1:正常 2:禁用)
if req.Status != nil {
query = query.Where("status = ?", req.Status)
}
// 搜索关键字
if req.Keyword != "" {
keyword := "%" + req.Keyword + "%" //
// 姓名/手机号
subQuery := global.Db.Model(&model.User{}).
Select("user_id").
Or("user_name LIKE ?", keyword).
Or("user_mobile LIKE ?", keyword)
// 执行组建
query = query.Where(gorm.Expr("user_id IN (?)", subQuery))
}
}
// 当前选择数据
if req.Type == 2 {
if req.Id == "" {
return nil, errors.New("未提供需导出数据编号")
}
id := strings.Split(req.Id, ",")
query = query.Where("white_doctor_id IN (?)", id)
}
// 排序
query = query.Order("created_at desc")
err = query.Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}