From a38fe237dd2514f0d3b1e156022066bee587795b Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 6 Jul 2023 14:17:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BF=AE=E6=94=B9=E5=8C=BB?= =?UTF-8?q?=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/base.go | 3 +- api/controller/hospital.go | 42 +++++++++++++++++++++ api/controller/userDoctor.go | 10 ++--- api/dao/hospital.go | 43 ++++++++++++++++++++++ api/requests/hospital.go | 17 +++++++++ api/requests/userDoctor.go | 8 ++-- api/responses/hospitalResponse/hospital.go | 37 +++++++++++++++++++ api/router/router.go | 9 ++++- api/service/userDoctor.go | 22 +++++++++-- 9 files changed, 176 insertions(+), 15 deletions(-) create mode 100644 api/controller/hospital.go create mode 100644 api/requests/hospital.go diff --git a/api/controller/base.go b/api/controller/base.go index 3908c0f..a7ae2db 100644 --- a/api/controller/base.go +++ b/api/controller/base.go @@ -25,5 +25,6 @@ type userDoctorManage struct { // Basic 基础数据 type basic struct { - Department // 科室 + Department // 科室管理 + Hospital // 医院管理 } diff --git a/api/controller/hospital.go b/api/controller/hospital.go new file mode 100644 index 0000000..8250926 --- /dev/null +++ b/api/controller/hospital.go @@ -0,0 +1,42 @@ +// Package controller 科室管理 +package controller + +import ( + "fmt" + "github.com/gin-gonic/gin" + "hospital-admin-api/api/dao" + "hospital-admin-api/api/requests" + "hospital-admin-api/api/responses" + "hospital-admin-api/api/responses/hospitalResponse" + "hospital-admin-api/global" + "hospital-admin-api/utils" +) + +type Hospital struct{} + +// GetHospitalLimit 获取医院列表-限制条数 +func (b *Hospital) GetHospitalLimit(c *gin.Context) { + hospitalRequest := requests.HospitalRequest{} + if err := c.ShouldBind(&hospitalRequest.GetHospitalLimit); err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 参数验证 + if err := global.Validate.Struct(hospitalRequest.GetHospitalLimit); err != nil { + responses.FailWithMessage(utils.Translate(err), c) + return + } + + fmt.Println(hospitalRequest.GetHospitalLimit) + hospitalDao := dao.Hospital{} + hospitals, err := hospitalDao.GetHospitalLimitByMaps(hospitalRequest.GetHospitalLimit) + if err != nil { + responses.Ok(c) + return + } + + // 处理返回值 + getHospitalLimitResponse := hospitalResponse.GetHospitalLimitResponse(hospitals) + responses.OkWithData(getHospitalLimitResponse, c) +} diff --git a/api/controller/userDoctor.go b/api/controller/userDoctor.go index cd56e41..e6fb966 100644 --- a/api/controller/userDoctor.go +++ b/api/controller/userDoctor.go @@ -84,16 +84,16 @@ func (r *UserDoctor) GetPostUserDoctor(c *gin.Context) { responses.OkWithData(getUserDoctorResponses, c) } -// PutPostUserDoctor 修改医生 -func (r *UserDoctor) PutPostUserDoctor(c *gin.Context) { +// PutUserDoctor 修改医生 +func (r *UserDoctor) PutUserDoctor(c *gin.Context) { userDoctorRequest := requests.UserDoctorRequest{} - if err := c.ShouldBindJSON(&userDoctorRequest.PutPostUserDoctor); err != nil { + if err := c.ShouldBindJSON(&userDoctorRequest.PutUserDoctor); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 - if err := global.Validate.Struct(userDoctorRequest.PutPostUserDoctor); err != nil { + if err := global.Validate.Struct(userDoctorRequest.PutUserDoctor); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } @@ -113,7 +113,7 @@ func (r *UserDoctor) PutPostUserDoctor(c *gin.Context) { // 业务处理 userDoctorService := service.UserDoctorService{} - _, err = userDoctorService.PutPostUserDoctor(doctorId, userDoctorRequest.PutPostUserDoctor) + _, err = userDoctorService.PutUserDoctor(doctorId, userDoctorRequest.PutUserDoctor) if err != nil { responses.FailWithMessage("修改失败", c) return diff --git a/api/dao/hospital.go b/api/dao/hospital.go index 17e21b4..d10eb12 100644 --- a/api/dao/hospital.go +++ b/api/dao/hospital.go @@ -3,6 +3,7 @@ package dao import ( "gorm.io/gorm" "hospital-admin-api/api/model" + "hospital-admin-api/api/requests" "hospital-admin-api/global" ) @@ -51,3 +52,45 @@ func (r *Hospital) EditHospitalById(tx *gorm.DB, hospitalId int64, data interfac } return nil } + +// GetHospitalLimitByMaps 获取医院列表-限制条数 +func (r *Hospital) GetHospitalLimitByMaps(hospitalRequest requests.GetHospitalLimit) (m []*model.Hospital, err error) { + result := global.Db + if hospitalRequest.HospitalName != "" { + result = result.Where("hospital_name like ?", "%"+hospitalRequest.HospitalName+"%") + } + + if hospitalRequest.HospitalLevelName != "" { + result = result.Where("hospital_level_name like ?", "%"+hospitalRequest.HospitalLevelName+"%") + } + + if hospitalRequest.ProvinceId != 0 { + result = result.Where("province_id = ?", hospitalRequest.ProvinceId) + } + + if hospitalRequest.Province != "" { + result = result.Where("province like ?", "%"+hospitalRequest.Province+"%") + } + + if hospitalRequest.CityId != 0 { + result = result.Where("city_id = ?", hospitalRequest.CityId) + } + + if hospitalRequest.City != "" { + result = result.Where("city like ?", "%"+hospitalRequest.City+"%") + } + + if hospitalRequest.CountyId != 0 { + result = result.Where("county_id = ?", hospitalRequest.CountyId) + } + + if hospitalRequest.County != "" { + result = result.Where("county like ?", "%"+hospitalRequest.County+"%") + } + + err = result.Limit(10).Find(&m).Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/requests/hospital.go b/api/requests/hospital.go new file mode 100644 index 0000000..cb4d9ff --- /dev/null +++ b/api/requests/hospital.go @@ -0,0 +1,17 @@ +package requests + +type HospitalRequest struct { + GetHospitalLimit // 获取医院列表-限制条数 +} + +// GetHospitalLimit 获取医院列表-限制条数 +type GetHospitalLimit struct { + HospitalName string `json:"hospital_name" form:"hospital_name" label:"医院名称"` + HospitalLevelName string `json:"hospital_level_name" form:"hospital_level_name" label:"医院等级名称"` + ProvinceId int `json:"province_id" form:"province_id" label:"省份id"` + Province string `json:"province" form:"province" label:"省份"` + CityId int `json:"city_id" form:"city_id" label:"城市id"` + City string `json:"city" form:"city" label:"城市"` + CountyId int `json:"county_id" form:"county_id" label:"区县id"` + County string `json:"county" form:"county" label:"区县"` +} diff --git a/api/requests/userDoctor.go b/api/requests/userDoctor.go index 5b593d2..d688be6 100644 --- a/api/requests/userDoctor.go +++ b/api/requests/userDoctor.go @@ -2,7 +2,7 @@ package requests type UserDoctorRequest struct { GetUserDoctorPage // 获取医生列表-分页 - PutPostUserDoctor // 修改医生 + PutUserDoctor // 修改医生 } // GetUserDoctorPage 获取医生列表-分页 @@ -23,11 +23,11 @@ type GetUserDoctorPage struct { IsEnterpriseDeepCooperation int `json:"is_enterprise_deep_cooperation" form:"is_enterprise_deep_cooperation" label:"是否企业深度合作"` // (0:否 1:是) } -// PutPostUserDoctor 修改医生 -type PutPostUserDoctor struct { +// PutUserDoctor 修改医生 +type PutUserDoctor struct { IsRecommend int `json:"is_recommend" form:"is_recommend" label:"是否首页推荐"` // (0:否 1:是) Avatar string `json:"avatar" form:"avatar" validate:"required" label:"头像"` - DoctorTitle int `json:"doctor_title" form:"doctor_title" validate:"required oneof=1 2 3 4 5 6" label:"医生职称"` // (1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) + DoctorTitle int `json:"doctor_title" form:"doctor_title" validate:"required,oneof=1 2 3 4 5 6" label:"医生职称"` // (1:主任医师 2:主任中医师 3:副主任医师 4:副主任中医师 5:主治医师 6:住院医师) DepartmentCustomId string `json:"department_custom_id" form:"department_custom_id" validate:"required" label:"科室"` DepartmentCustomName string `json:"department_custom_name" form:"department_custom_name" validate:"required" label:"科室名称"` // (如未自己输入,填入标准科室名称) DepartmentCustomMobile string `json:"department_custom_mobile" form:"department_custom_mobile" label:"科室电话"` diff --git a/api/responses/hospitalResponse/hospital.go b/api/responses/hospitalResponse/hospital.go index 2b833d4..874e279 100644 --- a/api/responses/hospitalResponse/hospital.go +++ b/api/responses/hospitalResponse/hospital.go @@ -49,3 +49,40 @@ func HospitalResponse(hospital *model.Hospital) *Hospital { UpdatedAt: hospital.UpdatedAt, } } + +// GetHospitalLimitResponse 自定义列表 +func GetHospitalLimitResponse(hospitals []*model.Hospital) []Hospital { + // 处理返回值 + getHospitalLimitResponses := make([]Hospital, len(hospitals)) + + if len(hospitals) > 0 { + for i, v := range hospitals { + // 将原始结构体转换为新结构体 + getHospitalLimitResponse := Hospital{ + HospitalID: strconv.FormatInt(v.HospitalID, 10), + HospitalName: v.HospitalName, + HospitalStatus: v.HospitalStatus, + HospitalLevelName: v.HospitalLevelName, + PostCode: v.PostCode, + Telephone: v.HospitalName, + ProvinceID: v.ProvinceId, + Province: v.Province, + CityID: v.CityId, + City: v.City, + CountyID: v.CountyId, + County: v.County, + Address: v.Address, + Latitude: v.Lat, + Longitude: v.HospitalName, + Description: v.Desc, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + } + + // 将转换后的结构体添加到新切片中 + getHospitalLimitResponses[i] = getHospitalLimitResponse + } + } + + return getHospitalLimitResponses +} diff --git a/api/router/router.go b/api/router/router.go index 66183db..fc0dd7a 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -234,7 +234,7 @@ func privateRouter(r *gin.Engine, api controller.Api) { doctorGroup.GET("/:doctor_id", api.UserDoctor.GetPostUserDoctor) // 修改医生 - doctorGroup.PUT("/:doctor_id", api.UserDoctor.PutPostUserDoctor) + doctorGroup.PUT("/:doctor_id", api.UserDoctor.PutUserDoctor) // // 新增医生 // doctorGroup.POST("", api.Post.AddPost) @@ -259,4 +259,11 @@ func privateRouter(r *gin.Engine, api controller.Api) { customGroup.GET("/list", api.Department.GetDepartmentCustomList) } } + + // 医院管理-基础数据 + hospitalGroup := adminGroup.Group("/hospital") + { + // 获取医院列表-限制条数 + hospitalGroup.GET("/list", api.Hospital.GetHospitalLimit) + } } diff --git a/api/service/userDoctor.go b/api/service/userDoctor.go index 5865fc5..09b7c19 100644 --- a/api/service/userDoctor.go +++ b/api/service/userDoctor.go @@ -13,8 +13,8 @@ import ( type UserDoctorService struct { } -// PutPostUserDoctor 修改医生 -func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest requests.PutPostUserDoctor) (bool, error) { +// PutUserDoctor 修改医生 +func (r *UserDoctorService) PutUserDoctor(doctorId int64, userDoctorRequest requests.PutUserDoctor) (bool, error) { // 获取医生数据 userDoctorDao := dao.UserDoctorDao{} userDoctor, err := userDoctorDao.GetUserDoctorById(doctorId) @@ -30,10 +30,10 @@ func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest } // 医生数据 - var userDoctorData map[string]interface{} + userDoctorData := make(map[string]interface{}) // 医生详情数据 - var userDoctorInfoData map[string]interface{} + userDoctorInfoData := make(map[string]interface{}) // 处理头像 userDoctorRequest.Avatar = strings.Replace(userDoctorRequest.Avatar, config.C.Oss.OssCustomDomainName, "", 1) @@ -167,6 +167,10 @@ func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest } // 处理身份证正面图片 + if userDoctorInfo.IdCardFront != "" && userDoctorRequest.IdCardFront == "" { + return false, errors.New("未上传新的身份证图片") + } + if userDoctorRequest.IdCardFront != "" { idCardFront := strings.Replace(userDoctorRequest.IdCardFront, "https://img.applets.igandanyiyuan.com", "", 1) if idCardFront != userDoctorInfo.IdCardFront { @@ -175,6 +179,9 @@ func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest } // 身份证背面图片 + if userDoctorInfo.IdCardBack != "" && userDoctorRequest.IdCardBack == "" { + return false, errors.New("未上传新的身份证图片") + } if userDoctorRequest.IdCardBack != "" { idCardBack := strings.Replace(userDoctorRequest.IdCardBack, "https://img.applets.igandanyiyuan.com", "", 1) if idCardBack != userDoctorInfo.IdCardBack { @@ -183,6 +190,9 @@ func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest } // 签名图片 + if userDoctorInfo.SignImage != "" && userDoctorRequest.SignImage == "" { + return false, errors.New("未上传新的签名图片") + } if userDoctorRequest.SignImage != "" { signImage := strings.Replace(userDoctorRequest.SignImage, "https://img.applets.igandanyiyuan.com", "", 1) if signImage != userDoctorInfo.SignImage { @@ -227,6 +237,10 @@ func (r *UserDoctorService) PutPostUserDoctor(doctorId int64, userDoctorRequest } } + // 判断头像是否修改,同步修改im + // 判断科室是否修改,同步修改ca平台 + // 判断签名图片是否修改,同步修改ca平台 + // _, ok := userDoctorData["department_custom_id"] // if ok { // // 变更科室