113 lines
2.3 KiB
Go

package controller
import (
"github.com/gin-gonic/gin"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/dto"
"hospital-admin-api/api/requests"
"hospital-admin-api/api/responses"
"hospital-admin-api/api/service"
"hospital-admin-api/global"
"hospital-admin-api/utils"
"strconv"
)
type Area struct{}
// GetAreaList 获取地区列表
func (b *Area) GetAreaList(c *gin.Context) {
areaRequest := requests.AreaRequest{}
req := areaRequest.GetAreaList
if err := c.ShouldBind(&req); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
// 处理参数
if req.ParentId == "" && req.AreaId == "" && req.AreaName == "" {
req.ParentId = "1"
req.AreaType = 2
}
areaDao := dao.AreaDao{}
area, err := areaDao.GetAreaListByStruct(req)
if err != nil {
responses.Ok(c)
return
}
// 处理返回值
r := dto.GetAreaListDto(area)
responses.OkWithData(r, c)
}
// AddArea 新增地区
func (r *Area) AddArea(c *gin.Context) {
areaRequest := requests.AreaRequest{}
req := areaRequest.AddArea
if err := c.ShouldBindJSON(&req); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
// 业务处理
areaService := service.AreaService{}
_, err := areaService.AddArea(req)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.Ok(c)
}
// PutArea 修改地区
func (r *Area) PutArea(c *gin.Context) {
areaRequest := requests.AreaRequest{}
req := areaRequest.PutArea
if err := c.ShouldBindJSON(&req); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
id := c.Param("area_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
areaId, err := strconv.Atoi(id)
if err != nil {
responses.Fail(c)
return
}
// 业务处理
areaService := service.AreaService{}
_, err = areaService.PutArea(areaId, req)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.Ok(c)
}