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/postResponse" "hospital-admin-api/api/service" "hospital-admin-api/global" "hospital-admin-api/utils" "strconv" ) type Post struct{} // GetPostPage 获取部门列表-分页 func (r *Post) GetPostPage(c *gin.Context) { postRequest := requests.PostRequest{} if err := c.ShouldBind(&postRequest.GetPostPage); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(postRequest.GetPostPage); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if postRequest.GetPostPage.Page == 0 { postRequest.GetPostPage.Page = 1 } if postRequest.GetPostPage.PageSize == 0 { postRequest.GetPostPage.PageSize = 20 } adminPostDao := dao.AdminPostDao{} adminPost, total, err := adminPostDao.GetAdminPostPageSearch(postRequest.GetPostPage, postRequest.GetPostPage.Page, postRequest.GetPostPage.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 getPostPageResponses := postResponse.GetPostPageResponse(adminPost) result := make(map[string]interface{}) result["page"] = postRequest.GetPostPage.Page result["page_size"] = postRequest.GetPostPage.PageSize result["total"] = total result["data"] = getPostPageResponses responses.OkWithData(result, c) } // AddPost 新增部门 func (r *Post) AddPost(c *gin.Context) { deptRequest := requests.PostRequest{} if err := c.ShouldBind(&deptRequest.AddPost); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(deptRequest.AddPost); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法添加部门", c) return } // 业务处理 deptService := service.PostService{} _, err = deptService.AddPost(deptRequest.AddPost) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // GetPost 部门详情 func (r *Post) GetPost(c *gin.Context) { id := c.Param("post_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 postId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取部门详情 adminPostDao := dao.AdminPostDao{} adminPost, err := adminPostDao.GetAdminPostById(postId) if err != nil || adminPost == nil { responses.FailWithMessage("部门数据错误", c) return } // 处理返回值 getPostResponses := postResponse.GetPostResponse(adminPost) responses.OkWithData(getPostResponses, c) } // DeletePost 删除部门-批量 func (r *Post) DeletePost(c *gin.Context) { postRequest := requests.PostRequest{} if err := c.ShouldBindJSON(&postRequest.DeletePost); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(postRequest.DeletePost); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法删除部门", c) return } // 业务处理 postService := service.PostService{} _, err = postService.DeletePost(postRequest.DeletePost) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // PutPost 修改部门 func (r *Post) PutPost(c *gin.Context) { postRequest := requests.PostRequest{} if err := c.ShouldBind(&postRequest.PutPost); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(postRequest.PutPost); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } id := c.Param("post_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 postId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法添加部门", c) return } // 业务处理 postService := service.PostService{} _, err = postService.PutPost(postId, postRequest.PutPost) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // GetPostList 获取岗位列表 func (r *Post) GetPostList(c *gin.Context) { roleRequest := requests.PostRequest{} if err := c.ShouldBind(&roleRequest.GetPostList); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(roleRequest.GetPostList); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } adminPostDao := dao.AdminPostDao{} maps := make(map[string]interface{}) maps["post_status"] = 1 if roleRequest.GetPostList.PostName != "" { maps["post_name"] = roleRequest.GetPostList.PostName } adminPosts, err := adminPostDao.GetAdminPostList(maps) if err != nil { responses.FailWithMessage(err.Error(), c) return } if len(adminPosts) == 0 { responses.Ok(c) return } // 处理返回值 getPostListResponses := postResponse.GetPostListResponse(adminPosts) responses.OkWithData(getPostListResponses, c) }