package service import ( "errors" "fmt" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/responses/patientFamilyResponse" ) type PatientFamilyService struct { } // GetPatientFamilyListByPatientId 获取患者家庭成员-患者id func (r *PatientFamilyService) GetPatientFamilyListByPatientId(patientId int64) (u []*patientFamilyResponse.PatientFamily, err error) { patientFamilyDao := dao.PatientFamilyDao{} patientFamilys, err := patientFamilyDao.GetPatientFamilyListByPatientId(patientId) if len(patientFamilys) == 0 { return nil, nil } // 处理返回值 items := make([]*patientFamilyResponse.PatientFamily, len(patientFamilys)) if len(patientFamilys) > 0 { for i, v := range patientFamilys { // 将原始结构体转换为新结构体 item := &patientFamilyResponse.PatientFamily{ FamilyId: fmt.Sprintf("%d", v.FamilyId), PatientId: fmt.Sprintf("%d", v.PatientId), Relation: v.Relation, Status: &v.Status, IsDefault: &v.IsDefault, CardName: v.CardName, CardNameMask: v.CardNameMask, Mobile: v.Mobile, MobileMask: v.MobileMask, Type: &v.Type, IdNumber: v.IdNumber, IdNumberMask: v.IdNumberMask, Sex: &v.Sex, Age: v.Age, ProvinceId: fmt.Sprintf("%d", v.ProvinceId), Province: v.Province, CityId: fmt.Sprintf("%d", v.CityId), City: v.City, CountyId: fmt.Sprintf("%d", v.CountyId), County: v.County, Height: v.Height, Weight: v.Weight, MaritalStatus: &v.MaritalStatus, NationId: fmt.Sprintf("%d", v.NationId), NationName: v.NationName, JobId: fmt.Sprintf("%d", v.JobId), JobName: v.JobName, CreatedAt: v.CreatedAt, UpdatedAt: v.UpdatedAt, } // 将转换后的结构体添加到新切片中 items[i] = item } } return items, nil } // GetPatientFamily 家庭成员详情 func (r *PatientFamilyService) GetPatientFamily(familyId int64) (g *dto.PatientFamilyDto, err error) { patientFamilyDao := dao.PatientFamilyDao{} patientFamily, err := patientFamilyDao.GetPatientFamilyById(familyId) if err != nil || patientFamily == nil { return nil, errors.New("就诊人错误") } // 获取患者数据 userPatientDao := dao.UserPatientDao{} userPatient, err := userPatientDao.GetUserPatientPreloadById(patientFamily.PatientId) if err != nil || userPatient == nil { return nil, errors.New("患者错误") } // 获取用户数据 userDao := dao.UserDao{} user, err := userDao.GetUserById(userPatient.UserId) if err != nil || user == nil { return nil, errors.New("用户错误") } // 处理返回数据 g = dto.GetPatientFamilyDto(patientFamily) // 加载用户数据-加密 g.LoadMaskUser(user) return g, nil }