hospital-admin-api/api/dao/doctorWithdrawalOrder.go

121 lines
3.1 KiB
Go

package dao
import (
"errors"
"gorm.io/gorm"
"hospital-admin-api/api/model"
"hospital-admin-api/api/requests"
"hospital-admin-api/global"
"strings"
)
type DoctorWithdrawalOrderDao struct {
}
// GetDoctorWithdrawalOrderById 获取医生提现关联订单数据-id
func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderById(withdrawalBankId int64) (m *model.DoctorWithdrawalOrder, err error) {
err = global.Db.First(&m, withdrawalBankId).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetDoctorWithdrawalOrderByWithdrawalId 获取医生提现关联订单数据-提现id
func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderByWithdrawalId(withdrawalId int64) (m []*model.DoctorWithdrawalOrder, err error) {
err = global.Db.Where("withdrawal_id = ?", withdrawalId).Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}
// GetDoctorWithdrawalOrderPageSearch 获取医生提现关联订单列表-分页
func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderPageSearch(req requests.GetDoctorWithdrawalOrderPage, page, pageSize int) (m []*model.DoctorWithdrawalOrder, total int64, err error) {
var totalRecords int64
// 构建查询条件
query := global.Db.Model(&model.DoctorWithdrawalOrder{})
if req.WithdrawalId != "" {
query = query.Where("withdrawal_id = ?", req.WithdrawalId)
}
// 医生
query = query.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB {
return db.Omit("open_id", "union_id", "wx_session_key")
})
// 订单
query = query.Preload("Order")
// 订单-问诊
query = query.Preload("Order.OrderInquiry")
// 订单-服务包
query = query.Preload("Order.OrderServicePackage")
// 患者
query = query.Preload("Order.User")
// 排序
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
}
// GetDoctorWithdrawalOrderExportListSearch 获取医生提现关联订单列表-导出
func (r *DoctorWithdrawalOrderDao) GetDoctorWithdrawalOrderExportListSearch(req requests.DoctorWithdrawalOrderExportList) (m []*model.DoctorWithdrawalOrder, err error) {
// 构建查询条件
query := global.Db.Model(&model.DoctorWithdrawalOrder{})
if req.WithdrawalId != "" {
query = query.Where("withdrawal_id = ?", req.WithdrawalId)
}
// 医生
query = query.Preload("UserDoctor", func(db *gorm.DB) *gorm.DB {
return db.Omit("open_id", "union_id", "wx_session_key")
})
// 订单
query = query.Preload("Order")
// 订单-问诊
query = query.Preload("Order.OrderInquiry")
// 订单-服务包
query = query.Preload("Order.OrderServicePackage")
// 患者
query = query.Preload("Order.User")
// 排序
query = query.Order("created_at desc")
// 当前选择数据
if req.Type == 2 {
if req.Id == "" {
return nil, errors.New("未提供需导出数据编号")
}
id := strings.Split(req.Id, ",")
query = query.Where("withdrawal_order_id IN (?)", id)
}
err = query.Find(&m).Error
if err != nil {
return nil, err
}
return m, nil
}