From eda63e716e3c31c9884df18f71f36a58bf4b7dad Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Thu, 19 Oct 2023 09:35:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=B3=BB=E7=BB=9F=E9=97=AE?= =?UTF-8?q?=E8=AF=8A=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/inquiryConfig.go | 71 ++++++++++++++++++++++++++++++ api/dao/systemInquiryConfig.go | 37 +++++++++++++++- api/dto/SystemInquiryConfig.go | 78 +++++++++++++++++++++++++++++++++ api/requests/inquiryConfig.go | 9 ++++ api/router/router.go | 10 ++--- 5 files changed, 198 insertions(+), 7 deletions(-) create mode 100644 api/dto/SystemInquiryConfig.go diff --git a/api/controller/inquiryConfig.go b/api/controller/inquiryConfig.go index 987d40e..3e3ed35 100644 --- a/api/controller/inquiryConfig.go +++ b/api/controller/inquiryConfig.go @@ -146,3 +146,74 @@ func (r *InquiryConfig) AddDoctorInquiryConfig(c *gin.Context) { responses.Ok(c) } + +// GetSystemInquiryConfigPage 获取系统问诊配置列表-分页 +func (r *InquiryConfig) GetSystemInquiryConfigPage(c *gin.Context) { + inquiryConfigRequest := requests.InquiryConfigRequest{} + req := inquiryConfigRequest.GetSystemInquiryConfigPage + 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.Page == 0 { + req.Page = 1 + } + + if req.PageSize == 0 { + req.PageSize = 20 + } + + systemInquiryConfigDao := dao.SystemInquiryConfigDao{} + systemInquiryConfig, total, err := systemInquiryConfigDao.GetSystemInquiryConfigPageSearch(req, req.Page, req.PageSize) + + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 处理返回值 + res := dto.GetSystemInquiryConfigListDto(systemInquiryConfig) + + result := make(map[string]interface{}) + result["page"] = req.Page + result["page_size"] = req.PageSize + result["total"] = total + result["data"] = res + responses.OkWithData(result, c) +} + +// GetSystemInquiryConfig 系统问诊配置详情 +func (r *InquiryConfig) GetSystemInquiryConfig(c *gin.Context) { + id := c.Param("system_inquiry_config_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + systemInquiryConfigId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + // 获取数据 + systemInquiryConfigDao := dao.SystemInquiryConfigDao{} + systemInquiryConfig, err := systemInquiryConfigDao.GetSystemInquiryConfigById(systemInquiryConfigId) + if err != nil || systemInquiryConfig == nil { + responses.FailWithMessage(err.Error(), c) + return + } + + // 处理返回值 + res := dto.GetSystemInquiryConfigDto(systemInquiryConfig) + + responses.OkWithData(res, c) +} diff --git a/api/dao/systemInquiryConfig.go b/api/dao/systemInquiryConfig.go index 1fed2d9..4a39831 100644 --- a/api/dao/systemInquiryConfig.go +++ b/api/dao/systemInquiryConfig.go @@ -3,14 +3,15 @@ package dao import ( "gorm.io/gorm" "hospital-admin-api/api/model" + "hospital-admin-api/api/requests" "hospital-admin-api/global" ) type SystemInquiryConfigDao struct { } -// GetSystemInquiryConfigListByDoctorId 获取系统问诊配置数据列表-系统id -func (r *SystemInquiryConfigDao) GetSystemInquiryConfigListByDoctorId(systemInquiryConfigId int64) (m *model.SystemInquiryConfig, err error) { +// GetSystemInquiryConfigById 获取系统问诊配置数据列表-系统问诊配置id +func (r *SystemInquiryConfigDao) GetSystemInquiryConfigById(systemInquiryConfigId int64) (m *model.SystemInquiryConfig, err error) { err = global.Db.First(&m, systemInquiryConfigId).Error if err != nil { return nil, err @@ -61,3 +62,35 @@ func (r *SystemInquiryConfigDao) GetSystemInquiryConfig(maps interface{}) (m *mo } return m, nil } + +// GetSystemInquiryConfigPageSearch 获取系统问诊配置列表-分页 +func (r *SystemInquiryConfigDao) GetSystemInquiryConfigPageSearch(req requests.GetSystemInquiryConfigPage, page, pageSize int) (m []*model.SystemInquiryConfig, total int64, err error) { + var totalRecords int64 + + // 构建查询条件 + query := global.Db.Model(&model.SystemInquiryConfig{}) + + // 问诊类型 + if req.InquiryType != nil { + query = query.Where("inquiry_type = ?", req.InquiryType) + } + + // 问诊方式 + if req.InquiryMode != nil { + query = query.Where("inquiry_mode = ?", req.InquiryMode) + } + + // 排序 + query = query.Order("created_at desc") + + // 查询总数量 + if err := query.Count(&totalRecords).Error; err != nil { + return nil, 0, err + } + + err = query.Scopes(model.Paginate(page, pageSize)).Find(&m).Error + if err != nil { + return nil, 0, err + } + return m, totalRecords, nil +} diff --git a/api/dto/SystemInquiryConfig.go b/api/dto/SystemInquiryConfig.go new file mode 100644 index 0000000..14fb4fd --- /dev/null +++ b/api/dto/SystemInquiryConfig.go @@ -0,0 +1,78 @@ +package dto + +import ( + "fmt" + "hospital-admin-api/api/model" +) + +type SystemInquiryConfigDto struct { + SystemInquiryConfigId string `json:"system_inquiry_config_id"` // 主键id + InquiryType int `json:"inquiry_type"` // 接诊类型(1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测) + InquiryMode int `json:"inquiry_mode"` // 接诊方式(1:图文 2:视频 3:语音 4:电话 5:会员) + MaxWorkNumDay int `json:"max_work_num_day"` // 每日最大接诊数量 + InquiryPrice string `json:"inquiry_price"` // 接诊价格 + MinInquiryPrice *float64 `json:"min_inquiry_price"` // 最低接诊价格(专家问诊) + MaxInquiryPrice *float64 `json:"max_inquiry_price"` // 最高接诊价格(专家问诊) + TimesNumber int `json:"times_number"` // 沟通次数(0为不限制次数) + Duration int `json:"duration"` // 沟通时长(分钟,0为不限制时长) + CreatedAt model.LocalTime `json:"created_at"` // 创建时间 + UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 +} + +func GetSystemInquiryConfigDto(m *model.SystemInquiryConfig) *SystemInquiryConfigDto { + MinInquiryPrice := &m.MinInquiryPrice + MaxInquiryPrice := &m.MaxInquiryPrice + if m.InquiryType == 2 || m.InquiryType == 3 || m.InquiryType == 4 { + MinInquiryPrice = nil + MaxInquiryPrice = nil + } + + return &SystemInquiryConfigDto{ + SystemInquiryConfigId: fmt.Sprintf("%d", m.SystemInquiryConfigId), + InquiryType: m.InquiryType, + InquiryMode: m.InquiryMode, + MaxWorkNumDay: m.MaxWorkNumDay, + InquiryPrice: m.InquiryPrice, + MinInquiryPrice: MinInquiryPrice, + MaxInquiryPrice: MaxInquiryPrice, + TimesNumber: m.TimesNumber, + Duration: m.Duration, + CreatedAt: m.CreatedAt, + UpdatedAt: m.UpdatedAt, + } +} + +func GetSystemInquiryConfigListDto(m []*model.SystemInquiryConfig) []*SystemInquiryConfigDto { + // 处理返回值 + responses := make([]*SystemInquiryConfigDto, len(m)) + + if len(m) > 0 { + for i, v := range m { + MinInquiryPrice := &v.MinInquiryPrice + MaxInquiryPrice := &v.MaxInquiryPrice + if v.InquiryType == 2 || v.InquiryType == 3 || v.InquiryType == 4 { + MinInquiryPrice = nil + MaxInquiryPrice = nil + } + + response := &SystemInquiryConfigDto{ + SystemInquiryConfigId: fmt.Sprintf("%d", v.SystemInquiryConfigId), + InquiryType: v.InquiryType, + InquiryMode: v.InquiryMode, + MaxWorkNumDay: v.MaxWorkNumDay, + InquiryPrice: v.InquiryPrice, + MinInquiryPrice: MinInquiryPrice, + MaxInquiryPrice: MaxInquiryPrice, + TimesNumber: v.TimesNumber, + Duration: v.Duration, + CreatedAt: v.CreatedAt, + UpdatedAt: v.UpdatedAt, + } + + // 将转换后的结构体添加到新切片中 + responses[i] = response + } + } + + return responses +} diff --git a/api/requests/inquiryConfig.go b/api/requests/inquiryConfig.go index fc9b299..b6af27e 100644 --- a/api/requests/inquiryConfig.go +++ b/api/requests/inquiryConfig.go @@ -4,6 +4,7 @@ type InquiryConfigRequest struct { GetDoctorInquiryConfigPage // 获取开启问诊配置医生列表-分页 PutDoctorInquiryConfig // 修改医生问诊配置 AddDoctorInquiryConfig // 新增医生问诊配置 + GetSystemInquiryConfigPage // 获取系统问诊配置列表-分页 } // GetDoctorInquiryConfigPage 获取开启问诊配置医生列表-分页 @@ -45,3 +46,11 @@ type AddDoctorInquiryConfig struct { IsEnable int `json:"is_enable" form:"is_enable" validate:"oneof=0 1" label:"是否启用"` // 0:否 1:是 DoctorInquiryTime []*doctorInquiryTime `json:"doctor_inquiry_time" form:"doctor_inquiry_time" label:"医生问诊配置-时间配置"` } + +// GetSystemInquiryConfigPage 获取系统问诊配置列表-分页 +type GetSystemInquiryConfigPage struct { + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` + InquiryType *int `json:"inquiry_type" form:"inquiry_type" label:"问诊类型"` // 1:专家问诊 2:快速问诊 3:公益问诊 4:问诊购药 5:检测 + InquiryMode *int `json:"inquiry_mode" form:"inquiry_mode" label:"问诊方式"` // 1:图文 2:视频 3:语音 4:电话 5:会员 +} diff --git a/api/router/router.go b/api/router/router.go index b2c6323..941a63c 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -491,16 +491,16 @@ func privateRouter(r *gin.Engine, api controller.Api) { systemGroup := configGroup.Group("/system") { // 获取系统问诊配置列表-分页 - systemGroup.GET("", api.UserDoctor.GetUserDoctorPage) + systemGroup.GET("", api.InquiryConfig.GetSystemInquiryConfigPage) // 系统问诊配置详情 - systemGroup.GET("/list", api.UserDoctor.GetUserDoctorPage) + systemGroup.GET("/:system_inquiry_config_id", api.InquiryConfig.GetSystemInquiryConfig) // 修改系统问诊配置 - systemGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctor) + systemGroup.PUT("/:inquiry_config_id", api.InquiryConfig.PutDoctorInquiryConfig) - // 修改系统问诊配置 - systemGroup.PUT("/:doctor_id", api.UserDoctor.PutUserDoctor) + // 新增系统问诊配置 + systemGroup.POST("", api.InquiryConfig.AddDoctorInquiryConfig) } } }