309 lines
8.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 OrderInquiry struct{}
// GetOrderInquiryPage 获取问诊订单列表-分页
func (r *OrderInquiry) GetOrderInquiryPage(c *gin.Context) {
orderInquiryRequest := requests.OrderInquiryRequest{}
req := orderInquiryRequest.GetOrderInquiryPage
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
}
orderInquiryDao := dao.OrderInquiryDao{}
orderInquiry, total, err := orderInquiryDao.GetOrderInquiryPageSearch(req, req.Page, req.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
GetOrderInquiryPageResponses := dto.GetOrderInquiryListDto(orderInquiry)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
result := make(map[string]interface{})
result["page"] = req.Page
result["page_size"] = req.PageSize
result["total"] = total
result["data"] = GetOrderInquiryPageResponses
responses.OkWithData(result, c)
}
// GetOrderInquiry 问诊订单详情
func (r *OrderInquiry) GetOrderInquiry(c *gin.Context) {
id := c.Param("order_inquiry_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
orderInquiryId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
// 业务处理
orderInquiryService := service.OrderInquiryService{}
getUserDoctorResponses, err := orderInquiryService.GetOrderInquiry(orderInquiryId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.OkWithData(getUserDoctorResponses, c)
}
// CancelOrderInquiry 取消问诊订单
func (r *OrderInquiry) CancelOrderInquiry(c *gin.Context) {
//OrderService := service.OrderService{}
//
//_, err := OrderService.PdfToImg()
//if err != nil {
// responses.FailWithMessage(err.Error(), c)
// return
//}
//
//responses.Ok(c)
//return
id := c.Param("order_inquiry_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
orderInquiryId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
req := requests.OrderInquiryRequest{}
if err := c.ShouldBind(&req.CancelOrderInquiry); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req.CancelOrderInquiry); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
// 后台用户id
adminUserId := c.GetInt64("UserId")
// 业务处理
orderInquiryService := service.OrderInquiryService{}
_, err = orderInquiryService.CancelOrderInquiry(req.CancelOrderInquiry, orderInquiryId, adminUserId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.Ok(c)
}
// GetOrderInquiryRecordPage 获取问诊记录列表-分页
func (r *OrderInquiry) GetOrderInquiryRecordPage(c *gin.Context) {
req := requests.OrderInquiryRequest{}
if err := c.ShouldBind(&req.GetOrderInquiryRecordPage); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req.GetOrderInquiryRecordPage); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
if req.GetOrderInquiryRecordPage.Page == 0 {
req.GetOrderInquiryRecordPage.Page = 1
}
if req.GetOrderInquiryRecordPage.PageSize == 0 {
req.GetOrderInquiryRecordPage.PageSize = 20
}
orderInquiryDao := dao.OrderInquiryDao{}
orderInquiry, total, err := orderInquiryDao.GetOrderInquiryRecordPageSearch(req.GetOrderInquiryRecordPage, req.GetOrderInquiryRecordPage.Page, req.GetOrderInquiryRecordPage.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
GetOrderInquiryPageResponses := dto.GetOrderInquiryRecordListDto(orderInquiry)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
result := make(map[string]interface{})
result["page"] = req.GetOrderInquiryRecordPage.Page
result["page_size"] = req.GetOrderInquiryRecordPage.PageSize
result["total"] = total
result["data"] = GetOrderInquiryPageResponses
responses.OkWithData(result, c)
}
// GetOrderInquiryRecord 问诊订单详情
func (r *OrderInquiry) GetOrderInquiryRecord(c *gin.Context) {
id := c.Param("order_inquiry_id")
if id == "" {
responses.FailWithMessage("缺少参数", c)
return
}
// 将 id 转换为 int64 类型
orderInquiryId, err := strconv.ParseInt(id, 10, 64)
if err != nil {
responses.Fail(c)
return
}
// 业务处理
orderInquiryService := service.OrderInquiryService{}
getUserDoctorResponses, err := orderInquiryService.GetOrderInquiryRecord(orderInquiryId)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
responses.OkWithData(getUserDoctorResponses, c)
}
// GetOrderInquiryImPage 获取问诊订单im内容列表-分页
func (r *OrderInquiry) GetOrderInquiryImPage(c *gin.Context) {
req := requests.OrderInquiryRequest{}
if err := c.ShouldBind(&req.GetOrderInquiryImPage); err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 参数验证
if err := global.Validate.Struct(req.GetOrderInquiryImPage); err != nil {
responses.FailWithMessage(utils.Translate(err), c)
return
}
if req.GetOrderInquiryImPage.Page == 0 {
req.GetOrderInquiryImPage.Page = 1
}
if req.GetOrderInquiryImPage.PageSize == 0 {
req.GetOrderInquiryImPage.PageSize = 20
}
messageImDao := dao.MessageImDao{}
messageIm, total, err := messageImDao.GetMessageImPageSearch(req.GetOrderInquiryImPage.OrderInquiryId, req.GetOrderInquiryImPage.Page, req.GetOrderInquiryImPage.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
GetMessageImPageResponses := dto.GetMessageImListDto(messageIm)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
result := make(map[string]interface{})
result["page"] = req.GetOrderInquiryImPage.Page
result["page_size"] = req.GetOrderInquiryImPage.PageSize
result["total"] = total
result["data"] = GetMessageImPageResponses
responses.OkWithData(result, c)
}
// GetOrderInquiryForAccountPage 获取账户关联问诊订单列表-分页
func (r *OrderInquiry) GetOrderInquiryForAccountPage(c *gin.Context) {
orderInquiryRequest := requests.OrderInquiryRequest{}
req := orderInquiryRequest.GetOrderInquiryForAccountPage
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
}
orderInquiryDao := dao.OrderInquiryDao{}
orderInquiry, total, err := orderInquiryDao.GetOrderInquiryForAccountPageSearch(req, req.Page, req.PageSize)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
// 处理返回值
res := dto.GetOrderInquiryForAccountListDto(orderInquiry)
if err != nil {
responses.FailWithMessage(err.Error(), c)
return
}
orderInquiryService := service.OrderInquiryService{}
for _, v := range res {
// 处理入账状态0:未入账 1:已入账 2:入账中 3:入账失败 4:入账取消)
entryStatus := orderInquiryService.GetOrderInquiryEntryStatus(v.InquiryStatus, v.StatisticsStatus)
v.EntryStatus = &entryStatus
// 处理医生收益
v.DoctorAmount = orderInquiryService.GetOrderInquiryDoctorAmount(v.InquiryStatus, v.AmountTotal)
}
result := make(map[string]interface{})
result["page"] = req.Page
result["page_size"] = req.PageSize
result["total"] = total
result["data"] = res
responses.OkWithData(result, c)
}