新增问诊记录详情
This commit is contained in:
parent
f8fe37b353
commit
f9d38649f1
@ -168,3 +168,29 @@ func (r *OrderInquiry) GetOrderInquiryRecordPage(c *gin.Context) {
|
||||
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)
|
||||
}
|
||||
|
||||
72
api/dao/messageIm.go
Normal file
72
api/dao/messageIm.go
Normal file
@ -0,0 +1,72 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
"hospital-admin-api/api/model"
|
||||
"hospital-admin-api/global"
|
||||
)
|
||||
|
||||
type MessageImDao struct {
|
||||
}
|
||||
|
||||
// GetMessageImById 获取Im消息数据-Im消息id
|
||||
func (r *MessageImDao) GetMessageImById(MessageId int64) (m *model.MessageIm, err error) {
|
||||
err = global.Db.First(&m, MessageId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func (r *MessageImDao) GetMessageImByOrderInquiryId(orderInquiryId int64) (m []*model.MessageIm, err error) {
|
||||
err = global.Db.Where("order_inquiry_id = ?", orderInquiryId).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// GetMessageImPreloadById 获取Im消息数据-加载全部关联-Im消息id
|
||||
func (r *MessageImDao) GetMessageImPreloadById(MessageId int64) (m *model.MessageIm, err error) {
|
||||
err = global.Db.Preload(clause.Associations).First(&m, MessageId).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// DeleteMessageIm 删除Im消息
|
||||
func (r *MessageImDao) DeleteMessageIm(tx *gorm.DB, maps interface{}) error {
|
||||
err := tx.Where(maps).Delete(&model.MessageIm{}).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// EditMessageIm 修改Im消息
|
||||
func (r *MessageImDao) EditMessageIm(tx *gorm.DB, maps interface{}, data interface{}) error {
|
||||
err := tx.Model(&model.MessageIm{}).Where(maps).Updates(data).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetMessageImList 获取Im消息列表
|
||||
func (r *MessageImDao) GetMessageImList(maps interface{}) (m []*model.MessageIm, err error) {
|
||||
err = global.Db.Where(maps).Find(&m).Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return m, nil
|
||||
}
|
||||
|
||||
// AddMessageIm 新增Im消息
|
||||
func (r *MessageImDao) AddMessageIm(tx *gorm.DB, model *model.MessageIm) (*model.MessageIm, error) {
|
||||
if err := tx.Create(model).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return model, nil
|
||||
}
|
||||
76
api/dto/MessageIm.go
Normal file
76
api/dto/MessageIm.go
Normal file
@ -0,0 +1,76 @@
|
||||
package dto
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"hospital-admin-api/api/model"
|
||||
)
|
||||
|
||||
type MessageImDto struct {
|
||||
MessageId string `json:"message_id"` // 主键id
|
||||
FromUserId string `json:"from_user_id"` // 发送方user_id
|
||||
ToUserId string `json:"to_user_id"` // 接收方user_id;NOT NULL
|
||||
MessageKey string `json:"message_key"` // 消息唯一标识(系统返回,撤回消息使用)
|
||||
MessageSendTime string `json:"message_send_time"` // 消息发送时间戳
|
||||
MessageSeq int `json:"message_seq"` // 消息序列号(单聊消息优先使用 MsgTime 进行排序,同一秒发送的消息则按 MsgSeq 排序,MsgSeq 值越大消息越靠后)
|
||||
MessageSendResult int `json:"message_send_result"` // 消息下发结果(0:失败 1:成功)
|
||||
SendErrorInfo string `json:"send_error_info"` // 消息下发失败原因
|
||||
MessageType string `json:"message_type"` // 消息类型(具体查看:https://cloud.tencent.com/document/product/269/2720)
|
||||
IsSystem int `json:"is_system"` // 是否系统操作发送(0:否 1:是)
|
||||
OrderInquiryId string `json:"order_inquiry_id"` // 问诊id(自定义字段)
|
||||
MessageContent string `json:"message_content"` // 消息内容(json形式)
|
||||
MessageCustomContent string `json:"message_custom_content"` // 自定义消息内容(json形式)
|
||||
CreatedAt model.LocalTime `json:"created_at"` // 创建时间
|
||||
UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间
|
||||
}
|
||||
|
||||
func GetMessageImDto(m *model.MessageIm) *MessageImDto {
|
||||
return &MessageImDto{
|
||||
MessageId: fmt.Sprintf("%d", m.MessageId),
|
||||
FromUserId: m.FromUserId,
|
||||
ToUserId: fmt.Sprintf("%d", m.ToUserId),
|
||||
MessageKey: m.MessageKey,
|
||||
MessageSendTime: m.MessageSendTime,
|
||||
MessageSeq: m.MessageSeq,
|
||||
MessageSendResult: m.MessageSendResult,
|
||||
SendErrorInfo: m.SendErrorInfo,
|
||||
MessageType: m.MessageType,
|
||||
IsSystem: m.IsSystem,
|
||||
OrderInquiryId: fmt.Sprintf("%d", m.OrderInquiryId),
|
||||
MessageContent: m.MessageContent,
|
||||
MessageCustomContent: m.MessageCustomContent,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
func GetMessageImListDto(m []*model.MessageIm) []*MessageImDto {
|
||||
// 处理返回值
|
||||
responses := make([]*MessageImDto, len(m))
|
||||
|
||||
if len(m) > 0 {
|
||||
for i, v := range m {
|
||||
response := &MessageImDto{
|
||||
MessageId: fmt.Sprintf("%d", v.MessageId),
|
||||
FromUserId: v.FromUserId,
|
||||
ToUserId: fmt.Sprintf("%d", v.ToUserId),
|
||||
MessageKey: v.MessageKey,
|
||||
MessageSendTime: v.MessageSendTime,
|
||||
MessageSeq: v.MessageSeq,
|
||||
MessageSendResult: v.MessageSendResult,
|
||||
SendErrorInfo: v.SendErrorInfo,
|
||||
MessageType: v.MessageType,
|
||||
IsSystem: v.IsSystem,
|
||||
OrderInquiryId: fmt.Sprintf("%d", v.OrderInquiryId),
|
||||
MessageContent: v.MessageContent,
|
||||
MessageCustomContent: v.MessageCustomContent,
|
||||
CreatedAt: v.CreatedAt,
|
||||
UpdatedAt: v.UpdatedAt,
|
||||
}
|
||||
|
||||
// 将转换后的结构体添加到新切片中
|
||||
responses[i] = response
|
||||
}
|
||||
}
|
||||
|
||||
return responses
|
||||
}
|
||||
@ -47,8 +47,10 @@ type OrderInquiryDto struct {
|
||||
OrderInquiryRefund *OrderInquiryRefundDto `json:"order_inquiry_refund"` // 退款数据
|
||||
OrderEvaluation *OrderEvaluationDto `json:"order_evaluation"` // 订单评价
|
||||
UserDoctor *UserDoctorDto `json:"user_doctor"` // 医生数据
|
||||
MessageIm []*MessageImDto `json:"message_im"` // 聊天记录
|
||||
}
|
||||
|
||||
// GetOrderInquiryDto 问诊订单详情
|
||||
func GetOrderInquiryDto(m *model.OrderInquiry) *OrderInquiryDto {
|
||||
var doctorId string
|
||||
if m.DoctorId != 0 {
|
||||
@ -93,6 +95,7 @@ func GetOrderInquiryDto(m *model.OrderInquiry) *OrderInquiryDto {
|
||||
}
|
||||
}
|
||||
|
||||
// GetOrderInquiryListDto 问诊订单列表
|
||||
func GetOrderInquiryListDto(m []*model.OrderInquiry) []*OrderInquiryDto {
|
||||
// 处理返回值
|
||||
responses := make([]*OrderInquiryDto, len(m))
|
||||
@ -150,6 +153,7 @@ func GetOrderInquiryListDto(m []*model.OrderInquiry) []*OrderInquiryDto {
|
||||
return responses
|
||||
}
|
||||
|
||||
// GetOrderInquiryRecordListDto 问诊记录列表
|
||||
func GetOrderInquiryRecordListDto(m []*model.OrderInquiry) []*OrderInquiryDto {
|
||||
// 处理返回值
|
||||
responses := make([]*OrderInquiryDto, len(m))
|
||||
@ -199,6 +203,51 @@ func GetOrderInquiryRecordListDto(m []*model.OrderInquiry) []*OrderInquiryDto {
|
||||
return responses
|
||||
}
|
||||
|
||||
// GetOrderInquiryRecordDto 问诊记录详情
|
||||
func GetOrderInquiryRecordDto(m *model.OrderInquiry) *OrderInquiryDto {
|
||||
var doctorId string
|
||||
if m.DoctorId != 0 {
|
||||
doctorId = fmt.Sprintf("%v", m.DoctorId)
|
||||
}
|
||||
|
||||
return &OrderInquiryDto{
|
||||
OrderInquiryId: fmt.Sprintf("%d", m.OrderInquiryId),
|
||||
UserId: fmt.Sprintf("%d", m.UserId),
|
||||
DoctorId: doctorId,
|
||||
PatientId: fmt.Sprintf("%d", m.PatientId),
|
||||
FamilyId: fmt.Sprintf("%d", m.FamilyId),
|
||||
InquiryType: m.InquiryType,
|
||||
InquiryMode: m.InquiryMode,
|
||||
InquiryStatus: m.InquiryStatus,
|
||||
IsDelete: m.IsDelete,
|
||||
InquiryRefundStatus: m.InquiryRefundStatus,
|
||||
InquiryPayChannel: m.InquiryPayChannel,
|
||||
InquiryPayStatus: m.InquiryPayStatus,
|
||||
InquiryNo: m.InquiryNo,
|
||||
EscrowTradeNo: m.EscrowTradeNo,
|
||||
AmountTotal: m.AmountTotal,
|
||||
CouponAmountTotal: m.CouponAmountTotal,
|
||||
PaymentAmountTotal: m.PaymentAmountTotal,
|
||||
PayTime: m.PayTime,
|
||||
ReceptionTime: m.ReceptionTime,
|
||||
CompleteTime: m.CompleteTime,
|
||||
FinishTime: m.FinishTime,
|
||||
StatisticsStatus: m.StatisticsStatus,
|
||||
StatisticsTime: m.StatisticsTime,
|
||||
IsWithdrawal: m.IsWithdrawal,
|
||||
WithdrawalTime: m.WithdrawalTime,
|
||||
CancelTime: m.CancelTime,
|
||||
CancelReason: m.CancelReason,
|
||||
CancelRemarks: m.CancelRemarks,
|
||||
PatientName: m.PatientName,
|
||||
PatientNameMask: m.PatientNameMask,
|
||||
PatientSex: m.PatientSex,
|
||||
PatientAge: m.PatientAge,
|
||||
CreatedAt: m.CreatedAt,
|
||||
UpdatedAt: m.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
// LoadDoctorName 加载医生名称
|
||||
func (r *OrderInquiryDto) LoadDoctorName(m *model.UserDoctor) *OrderInquiryDto {
|
||||
if m != nil {
|
||||
@ -246,3 +295,13 @@ func (r *OrderInquiryDto) LoadOrderEvaluation(m *model.OrderEvaluation) *OrderIn
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// LoadMessageIm 加载聊天记录
|
||||
func (r *OrderInquiryDto) LoadMessageIm(m []*model.MessageIm) *OrderInquiryDto {
|
||||
if len(m) > 0 {
|
||||
d := GetMessageImListDto(m)
|
||||
|
||||
r.MessageIm = d
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
43
api/model/messageIm.go
Normal file
43
api/model/messageIm.go
Normal file
@ -0,0 +1,43 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"hospital-admin-api/global"
|
||||
"time"
|
||||
)
|
||||
|
||||
// MessageIm IM消息表
|
||||
type MessageIm struct {
|
||||
MessageId int64 `gorm:"column:message_id;type:bigint(19);primary_key;comment:主键id" json:"message_id"`
|
||||
FromUserId string `gorm:"column:from_user_id;type:varchar(30);comment:发送方user_id" json:"from_user_id"`
|
||||
ToUserId int64 `gorm:"column:to_user_id;type:bigint(20);comment:接收方user_id;NOT NULL" json:"to_user_id"`
|
||||
MessageKey string `gorm:"column:message_key;type:varchar(255);comment:消息唯一标识(系统返回,撤回消息使用)" json:"message_key"`
|
||||
MessageSendTime string `gorm:"column:message_send_time;type:varchar(11);comment:消息发送时间戳" json:"message_send_time"`
|
||||
MessageSeq int `gorm:"column:message_seq;type:int(11);comment:消息序列号(单聊消息优先使用 MsgTime 进行排序,同一秒发送的消息则按 MsgSeq 排序,MsgSeq 值越大消息越靠后)" json:"message_seq"`
|
||||
MessageSendResult int `gorm:"column:message_send_result;type:tinyint(4);default:0;comment:消息下发结果(0:失败 1:成功)" json:"message_send_result"`
|
||||
SendErrorInfo string `gorm:"column:send_error_info;type:varchar(255);comment:消息下发失败原因" json:"send_error_info"`
|
||||
MessageType string `gorm:"column:message_type;type:varchar(50);comment:消息类型(具体查看:https://cloud.tencent.com/document/product/269/2720)" json:"message_type"`
|
||||
IsSystem int `gorm:"column:is_system;type:tinyint(4);default:0;comment:是否系统操作发送(0:否 1:是)" json:"is_system"`
|
||||
OrderInquiryId int64 `gorm:"column:order_inquiry_id;type:bigint(19);comment:问诊id(自定义字段)" json:"order_inquiry_id"`
|
||||
MessageContent string `gorm:"column:message_content;type:text;comment:消息内容(json形式)" json:"message_content"`
|
||||
MessageCustomContent string `gorm:"column:message_custom_content;type:text;comment:自定义消息内容(json形式)" json:"message_custom_content"`
|
||||
Model
|
||||
}
|
||||
|
||||
func (m *MessageIm) TableName() string {
|
||||
return "gdxz_message_im"
|
||||
}
|
||||
|
||||
func (m *MessageIm) BeforeCreate(tx *gorm.DB) error {
|
||||
if m.MessageId == 0 {
|
||||
m.MessageId = global.Snowflake.Generate().Int64()
|
||||
}
|
||||
|
||||
m.CreatedAt = LocalTime(time.Now())
|
||||
tx.Statement.SetColumn("CreatedAt", m.CreatedAt)
|
||||
|
||||
m.UpdatedAt = LocalTime(time.Now())
|
||||
tx.Statement.SetColumn("UpdatedAt", m.UpdatedAt)
|
||||
|
||||
return nil
|
||||
}
|
||||
@ -406,7 +406,7 @@ func privateRouter(r *gin.Engine, api controller.Api) {
|
||||
inquiryRecordGroup.GET("", api.OrderInquiry.GetOrderInquiryRecordPage)
|
||||
|
||||
// 问诊记录详情
|
||||
inquiryRecordGroup.GET("/:order_inquiry_id", api.OrderInquiry.GetOrderInquiry)
|
||||
inquiryRecordGroup.GET("/:order_inquiry_id", api.OrderInquiry.GetOrderInquiryRecord)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -322,3 +322,45 @@ func (r *OrderInquiryService) GetOrderInquiry(orderInquiryId int64) (g *dto.Orde
|
||||
g.LoadOrderEvaluation(orderEvaluation)
|
||||
return g, nil
|
||||
}
|
||||
|
||||
// GetOrderInquiryRecord 问诊记录详情
|
||||
func (r *OrderInquiryService) GetOrderInquiryRecord(orderInquiryId int64) (g *dto.OrderInquiryDto, err error) {
|
||||
// 获取问诊订单数据
|
||||
orderInquiryDao := dao.OrderInquiryDao{}
|
||||
orderInquiry, err := orderInquiryDao.GetOrderInquiryPreloadById(orderInquiryId)
|
||||
if err != nil || orderInquiry == nil {
|
||||
return nil, errors.New(err.Error())
|
||||
}
|
||||
|
||||
// 获取问诊病例
|
||||
orderInquiryCaseDao := dao.OrderInquiryCaseDao{}
|
||||
orderInquiryCase, err := orderInquiryCaseDao.GetOrderInquiryCaseByOrderInquiryId(orderInquiryId)
|
||||
if orderInquiryCase == nil {
|
||||
return nil, errors.New("数据错误,无问诊病例")
|
||||
}
|
||||
|
||||
// 获取医生数据
|
||||
userDoctorService := UserDoctorService{}
|
||||
userDoctor, err := userDoctorService.GetUserDoctorById(orderInquiry.DoctorId)
|
||||
if err != nil {
|
||||
return nil, errors.New(err.Error())
|
||||
}
|
||||
|
||||
// 获取聊天记录
|
||||
messageImDao := dao.MessageImDao{}
|
||||
messageIms, err := messageImDao.GetMessageImByOrderInquiryId(orderInquiryId)
|
||||
|
||||
// 处理返回值
|
||||
g = dto.GetOrderInquiryRecordDto(orderInquiry)
|
||||
|
||||
// 加载医生数据
|
||||
g.UserDoctor = userDoctor
|
||||
|
||||
// 加载问诊病例
|
||||
g.LoadMaskOrderInquiryCase(orderInquiryCase)
|
||||
|
||||
// 加载聊天记录
|
||||
g.LoadMessageIm(messageIms)
|
||||
|
||||
return g, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user