package controller import ( "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/userDoctorResponse" "hospital-admin-api/api/service" "hospital-admin-api/global" "hospital-admin-api/utils" "strconv" ) type UserDoctor struct{} // GetUserDoctorPage 获取医生列表-分页 func (r *UserDoctor) GetUserDoctorPage(c *gin.Context) { userDoctorRequest := requests.UserDoctorRequest{} if err := c.ShouldBind(&userDoctorRequest.GetUserDoctorPage); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(userDoctorRequest.GetUserDoctorPage); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if userDoctorRequest.GetUserDoctorPage.Page == 0 { userDoctorRequest.GetUserDoctorPage.Page = 1 } if userDoctorRequest.GetUserDoctorPage.PageSize == 0 { userDoctorRequest.GetUserDoctorPage.PageSize = 20 } userDoctorDao := dao.UserDoctorDao{} userDoctor, total, err := userDoctorDao.GetUserDoctorDaoPageSearch(userDoctorRequest.GetUserDoctorPage, userDoctorRequest.GetUserDoctorPage.Page, userDoctorRequest.GetUserDoctorPage.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 getUserDoctorPageResponses := userDoctorResponse.GetUserDoctorPageResponse(userDoctor) result := make(map[string]interface{}) result["page"] = userDoctorRequest.GetUserDoctorPage.Page result["page_size"] = userDoctorRequest.GetUserDoctorPage.PageSize result["total"] = total result["data"] = getUserDoctorPageResponses responses.OkWithData(result, c) } // GetUserDoctor 医生详情 func (r *UserDoctor) GetUserDoctor(c *gin.Context) { id := c.Param("doctor_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 doctorId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 业务处理 userDoctorService := service.UserDoctorService{} getUserDoctorResponses, err := userDoctorService.GetUserDoctor(doctorId) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.OkWithData(getUserDoctorResponses, c) } // PutUserDoctor 修改医生 func (r *UserDoctor) PutUserDoctor(c *gin.Context) { userDoctorRequest := requests.UserDoctorRequest{} if err := c.ShouldBindJSON(&userDoctorRequest.PutUserDoctor); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(userDoctorRequest.PutUserDoctor); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } id := c.Param("doctor_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 doctorId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 业务处理 userDoctorService := service.UserDoctorService{} _, err = userDoctorService.PutUserDoctor(doctorId, userDoctorRequest.PutUserDoctor) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // AddUserDoctor 新增医生 func (r *UserDoctor) AddUserDoctor(c *gin.Context) { userDoctorRequest := requests.UserDoctorRequest{} if err := c.ShouldBindJSON(&userDoctorRequest.AddUserDoctor); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(userDoctorRequest.AddUserDoctor); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 获取当前登陆用户id userId := c.GetInt64("UserId") if userId == 0 { responses.FailWithMessage("角色错误", c) return } userIdStr := strconv.FormatInt(userId, 10) // 业务处理 userDoctorService := service.UserDoctorService{} _, err := userDoctorService.AddUserDoctor(userIdStr, userDoctorRequest.AddUserDoctor) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // GetUserDoctorPendingPage 获取医生待审核列表-分页 func (r *UserDoctor) GetUserDoctorPendingPage(c *gin.Context) { userDoctorRequest := requests.UserDoctorRequest{} if err := c.ShouldBind(&userDoctorRequest.GetUserDoctorPendingPage); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(userDoctorRequest.GetUserDoctorPendingPage); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if userDoctorRequest.GetUserDoctorPendingPage.Page == 0 { userDoctorRequest.GetUserDoctorPendingPage.Page = 1 } if userDoctorRequest.GetUserDoctorPendingPage.PageSize == 0 { userDoctorRequest.GetUserDoctorPendingPage.PageSize = 20 } userDoctorDao := dao.UserDoctorDao{} userDoctor, total, err := userDoctorDao.GetUserDoctorDaoPageSearch(userDoctorRequest.GetUserDoctorPage, userDoctorRequest.GetUserDoctorPage.Page, userDoctorRequest.GetUserDoctorPage.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 getUserDoctorPageResponses := userDoctorResponse.GetUserDoctorPageResponse(userDoctor) result := make(map[string]interface{}) result["page"] = userDoctorRequest.GetUserDoctorPage.Page result["page_size"] = userDoctorRequest.GetUserDoctorPage.PageSize result["total"] = total result["data"] = getUserDoctorPageResponses responses.OkWithData(result, c) }