package dto import ( "fmt" "hospital-admin-api/api/dao" "hospital-admin-api/api/model" ) type DoctorWithdrawalDto struct { WithdrawalId string `json:"withdrawal_id"` // 主键id DoctorId string `json:"doctor_id"` // 医生id;NOT NULL AccountName string `json:"account_name"` // 银行卡姓名;NOT NULL BankCardCode string `json:"bank_card_code"` // 银行卡号 BankCardCodeFour string `json:"bank_card_code_four"` // 银行卡号(后四位);NOT NULL AppliedWithdrawalAmount float64 `json:"applied_withdrawal_amount"` // 提现金额 ActualWithdrawalAmount float64 `json:"actual_withdrawal_amount"` // 实际提现金额 IncomeTax float64 `json:"income_tax"` // 提现所得税金额 ExamineStatus int `json:"examine_status"` // 审核状态(1:审核中 2:审核通过 3:审核未通过) ExamineFailReason string `json:"examine_fail_reason"` // 审核失败原因 ExamineTime model.LocalTime `json:"examine_time"` // 审核日期 ExamineBy string `json:"examine_by"` // 审核人员id(后台用户id) PaymentStatus int `json:"payment_status"` // 财务打款状态(0:否 1:是) PaymentTime model.LocalTime `json:"payment_time"` // 财务打款时间 PaymentBy string `json:"payment_by"` // 财务打款人员id(后台用户id) CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 DoctorName string `json:"doctor_name"` // 医生姓名 DoctorCardNumMask string `json:"doctor_card_num_mask"` // 医生证件号码(掩码) DoctorBankCard *DoctorBankCardDto `json:"doctor_bank_card"` // 加载医生银行卡数据 DoctorWithdrawalBank *DoctorWithdrawalBankDto `json:"doctor_withdrawal_bank"` // 医生提现表-关联银行 BankName string `json:"bank_name"` // 提现银行名称 BankCity string `json:"bank_city"` // 提现银行开户行城市 DoctorUserId string `json:"doctor_user_id"` // 医生user_id } func GetDoctorWithdrawalDto(m *model.DoctorWithdrawal) *DoctorWithdrawalDto { return &DoctorWithdrawalDto{ WithdrawalId: fmt.Sprintf("%d", m.WithdrawalId), DoctorId: fmt.Sprintf("%d", m.DoctorId), AccountName: m.AccountName, BankCardCode: m.BankCardCode, BankCardCodeFour: m.BankCardCodeFour, AppliedWithdrawalAmount: m.AppliedWithdrawalAmount, ActualWithdrawalAmount: m.ActualWithdrawalAmount, IncomeTax: m.IncomeTax, ExamineStatus: m.ExamineStatus, ExamineFailReason: m.ExamineFailReason, ExamineTime: m.ExamineTime, ExamineBy: fmt.Sprintf("%d", m.ExamineBy), PaymentStatus: m.PaymentStatus, PaymentTime: m.PaymentTime, PaymentBy: fmt.Sprintf("%d", m.PaymentBy), CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, } } func GetDoctorWithdrawalListDto(m []*model.DoctorWithdrawal) []*DoctorWithdrawalDto { // 处理返回值 responses := make([]*DoctorWithdrawalDto, len(m)) if len(m) > 0 { for i, v := range m { response := &DoctorWithdrawalDto{ WithdrawalId: fmt.Sprintf("%d", v.WithdrawalId), DoctorId: fmt.Sprintf("%d", v.DoctorId), AccountName: v.AccountName, BankCardCode: v.BankCardCode, BankCardCodeFour: v.BankCardCodeFour, AppliedWithdrawalAmount: v.AppliedWithdrawalAmount, ActualWithdrawalAmount: v.ActualWithdrawalAmount, IncomeTax: v.IncomeTax, ExamineStatus: v.ExamineStatus, ExamineFailReason: v.ExamineFailReason, ExamineTime: v.ExamineTime, ExamineBy: "", PaymentStatus: v.PaymentStatus, PaymentTime: v.PaymentTime, PaymentBy: "", CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 加载医生名称 if v.UserDoctor != nil { response.LoadDoctorName(v.UserDoctor) } // 加载审核人员 if v.ExamineBy != 0 { response.LoadExamineByName(v.ExamineBy) } // 加载打款人员 if v.PaymentBy != 0 { response.LoadPaymentByName(v.PaymentBy) } if v.DoctorWithdrawalBank != nil { // 加载提现银行名称 if v.DoctorWithdrawalBank.BasicBank != nil { response.LoadBankName(v.DoctorWithdrawalBank.BasicBank) } // 加载开户行城市名称 response.LoadBankCity(v.DoctorWithdrawalBank) } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // LoadDoctorName 加载医生名称 func (r *DoctorWithdrawalDto) LoadDoctorName(m *model.UserDoctor) *DoctorWithdrawalDto { if m != nil { r.DoctorName = m.UserName } return r } // LoadExamineByName 加载审核人员名称 func (r *DoctorWithdrawalDto) LoadExamineByName(examineBy int64) *DoctorWithdrawalDto { r.ExamineBy = "" if examineBy != 0 { adminUserDao := dao.AdminUserDao{} adminUser, err := adminUserDao.GetAdminUserFirstById(examineBy) if err == nil && adminUser != nil { r.ExamineBy = adminUser.NickName } } return r } // LoadPaymentByName 加载打款人员名称 func (r *DoctorWithdrawalDto) LoadPaymentByName(paymentBy int64) *DoctorWithdrawalDto { r.PaymentBy = "" if paymentBy != 0 { adminUserDao := dao.AdminUserDao{} adminUser, err := adminUserDao.GetAdminUserFirstById(paymentBy) if err == nil && adminUser != nil { r.PaymentBy = adminUser.NickName } } return r } // LoadDoctorCardNumMask 加载医生证件号码(掩码) func (r *DoctorWithdrawalDto) LoadDoctorCardNumMask(m *model.UserDoctorInfo) *DoctorWithdrawalDto { if m != nil { r.DoctorCardNumMask = m.CardNumMask } return r } // LoadBankName 加载提现银行名称 func (r *DoctorWithdrawalDto) LoadBankName(m *model.BasicBank) *DoctorWithdrawalDto { if m != nil { r.BankName = m.BankName } return r } // LoadBankCity 加载开户行城市名称 func (r *DoctorWithdrawalDto) LoadBankCity(m *model.DoctorWithdrawalBank) *DoctorWithdrawalDto { if m != nil { r.BankCity = m.Province + m.City + m.County } return r } // LoadDoctorWithdrawalBank 加载提现关联银行数据 func (r *DoctorWithdrawalDto) LoadDoctorWithdrawalBank(m *model.DoctorWithdrawalBank) *DoctorWithdrawalDto { if m != nil { r.DoctorWithdrawalBank = GetDoctorWithdrawalBankDto(m) } return r } // LoadBasicBank 加载基础银行数据 func (r *DoctorWithdrawalDto) LoadBasicBank(m *model.BasicBank) *DoctorWithdrawalDto { if m != nil { r.DoctorWithdrawalBank.BasicBank = GetBasicBankDto(m) } return r } // LoadDoctorUserId 加载医生user_id func (r *DoctorWithdrawalDto) LoadDoctorUserId(m *model.User) *DoctorWithdrawalDto { if m != nil { r.DoctorUserId = fmt.Sprintf("%d", m.UserId) } return r }