2025-06-12 09:07:49 +00:00
|
|
|
|
// Package asChat -----------------------------
|
|
|
|
|
// @file : dto.go
|
|
|
|
|
// @author : JJXu
|
|
|
|
|
// @contact : wavingbear@163.com
|
|
|
|
|
// @time : 2024/9/10 下午6:28
|
|
|
|
|
// -------------------------------------------
|
2025-06-14 06:46:01 +00:00
|
|
|
|
package dto
|
2025-06-12 09:07:49 +00:00
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
|
|
|
|
"fonchain-fiee/api/accountFiee"
|
2025-06-14 06:46:01 +00:00
|
|
|
|
"log"
|
2025-06-12 09:07:49 +00:00
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Message struct {
|
|
|
|
|
MsgType accountFiee.MsgType `json:"msgType"`
|
|
|
|
|
Text string `json:"text"` //文本内容
|
|
|
|
|
Media []MessageMedia `json:"media"`
|
|
|
|
|
LocalStamp int64 `json:"localStamp"`
|
|
|
|
|
}
|
|
|
|
|
type MessageMedia struct {
|
|
|
|
|
MediaId int64 `json:"mediaId"` //媒体文件id
|
|
|
|
|
MediaSize string `json:"mediaSize"` //媒体文件大小
|
|
|
|
|
Ext string `json:"ext"` //后缀格式
|
|
|
|
|
Url string `json:"url"` //文件地址
|
|
|
|
|
ConvText string `json:"convText"` //语音转文字内容,需要调用语音转文字接口后才会有值
|
|
|
|
|
Duration int64 `json:"duration"` //时长 单位:毫秒
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 客户端发送消息请求,使用api发送消息
|
|
|
|
|
type NewMessageRequest struct {
|
|
|
|
|
Waiter bool `json:"waiter"` //是否是客服发送,客服没有userId
|
|
|
|
|
SessionId string `json:"sessionId"`
|
|
|
|
|
Message
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 服务端接收到消息后,使用websocket发送给userId关联的客户端,通知客户端有新消息,然后调用接口获取消息
|
|
|
|
|
type NewMessageNotice struct {
|
|
|
|
|
Name string `json:"name"` //名字
|
|
|
|
|
UserId int64 `json:"userId"` //用户id
|
|
|
|
|
SessionId string `json:"sessionId"`
|
|
|
|
|
MessageId int64 `json:"messageId"` //消息id
|
|
|
|
|
//NewMsgTotal int64 `json:"newMsgTotal"` //新消息数量
|
|
|
|
|
//Active bool `json:"active"` //是否在线
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取会话列表
|
|
|
|
|
type SessionType struct {
|
|
|
|
|
NewMessageNotice
|
|
|
|
|
RecentMessage []*Message `json:"recentMessage"` //最近消息
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type MessageListType struct {
|
|
|
|
|
ID int64 `json:"ID"`
|
|
|
|
|
CreatedAt string `json:"createdAt"`
|
|
|
|
|
UserId int64 `json:"userId"`
|
|
|
|
|
Name string `json:"name"`
|
|
|
|
|
Message Message `json:"message"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (m *MessageListType) BuildMessage(data *accountFiee.ChatRecordData) {
|
|
|
|
|
m.ID = data.ID
|
|
|
|
|
m.CreatedAt = data.CreatedAt
|
|
|
|
|
m.UserId = data.UserId
|
|
|
|
|
m.Name = data.Name
|
|
|
|
|
switch data.MsgType {
|
|
|
|
|
case accountFiee.MsgType_TextMsgType:
|
|
|
|
|
m.Message = Message{
|
|
|
|
|
MsgType: accountFiee.MsgType_TextMsgType,
|
|
|
|
|
Text: data.Content,
|
|
|
|
|
Media: []MessageMedia{},
|
|
|
|
|
LocalStamp: data.LocalStamp,
|
|
|
|
|
}
|
|
|
|
|
case accountFiee.MsgType_ImageMsgType, accountFiee.MsgType_AudioMsgType, accountFiee.MsgType_VideoMsgType:
|
|
|
|
|
m.Message.MsgType = data.MsgType
|
|
|
|
|
m.Message.Text = data.Content
|
|
|
|
|
m.Message.LocalStamp = data.LocalStamp
|
|
|
|
|
if data.Medias != nil {
|
|
|
|
|
for _, media := range data.Medias {
|
|
|
|
|
m.Message.Media = append(m.Message.Media, MessageMedia{
|
|
|
|
|
MediaId: media.ID,
|
|
|
|
|
MediaSize: media.Size,
|
|
|
|
|
Ext: media.Ext,
|
|
|
|
|
Url: media.Url,
|
|
|
|
|
ConvText: media.ConvText,
|
|
|
|
|
Duration: media.Duration,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
func (m *MessageListType) ToJson() string {
|
|
|
|
|
jsonBytes, _ := json.Marshal(m)
|
|
|
|
|
return string(jsonBytes)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type UserMsgStatic struct {
|
|
|
|
|
UserId int64 `json:"userId"` //用户id
|
|
|
|
|
Name string `json:"name"` //名称
|
2025-06-12 11:31:40 +00:00
|
|
|
|
ArtistUid string `json:"artistUid,omitempty"`
|
2025-06-12 09:07:49 +00:00
|
|
|
|
SessionId string `json:"sessionId"` //会话id
|
|
|
|
|
Total int64 `json:"total"` //新消息数量
|
|
|
|
|
//NewMessageTime string `json:"newMessageTime"` //最新消息的创建时间
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type MessageListRequest struct {
|
|
|
|
|
SessionId string `json:"sessionId"` //不传则获取自己的会话消息里列表
|
|
|
|
|
CurrentId int64 `json:"currentId"` //组合查询条件1:基于某个消息id,向前或向后查找。两种组合条件不能同时使用
|
|
|
|
|
Direction int `json:"direction"` //组合查询条件1:方向 1=向前查找 2=向后查找
|
|
|
|
|
Recent bool `json:"recent"` //组合查询条件2:查找最新的若干条消息。两种组合条件不能同时使用
|
|
|
|
|
InHour time.Duration `json:"inHour"` //组合查询条件2:可选,查询指定小时内的数据
|
|
|
|
|
PageSize int64 `json:"pageSize"` //查找数量
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type VoiceToTextRequest struct {
|
|
|
|
|
MediaId int64 `json:"mediaId"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type ArtistInfoRequest struct {
|
|
|
|
|
UserId int64 `json:"userId"`
|
|
|
|
|
}
|
|
|
|
|
type ArtistInfo struct {
|
|
|
|
|
Tnum string `json:"tnum"`
|
|
|
|
|
ArtistName string `json:"artistName"`
|
|
|
|
|
Age int64 `json:"age"`
|
|
|
|
|
Sex string `json:"sex"`
|
|
|
|
|
NativePlace string `json:"nativePlace"`
|
|
|
|
|
TelNum string `json:"telNum"`
|
|
|
|
|
RecentPhoto string `json:"recentPhoto"`
|
|
|
|
|
}
|
2025-06-12 11:31:40 +00:00
|
|
|
|
|
|
|
|
|
type GetChatAutoReplyRulerListRequest struct {
|
|
|
|
|
Page int64 `json:"page"`
|
|
|
|
|
PageSize int64 `json:"pageSize"`
|
|
|
|
|
accountFiee.ChatAutoReplyRulerData
|
|
|
|
|
}
|
2025-06-13 07:28:23 +00:00
|
|
|
|
type ErpLoginDemoReq struct {
|
|
|
|
|
TelNum string `json:"telNum"`
|
|
|
|
|
Password string `json:"password"`
|
|
|
|
|
Nickname string `json:"nickname"`
|
|
|
|
|
RealName string `json:"realName"`
|
|
|
|
|
}
|
2025-06-14 06:46:01 +00:00
|
|
|
|
|
|
|
|
|
type ChatAutoReplyData struct {
|
|
|
|
|
ID int64 `json:"id"`
|
|
|
|
|
Title string `json:"title"`
|
|
|
|
|
Rules map[string]*AutoReplyRule `json:"rules"`
|
|
|
|
|
Response string `json:"response"`
|
|
|
|
|
CreatedAt string `json:"createdAt"`
|
|
|
|
|
UpdatedAt string `json:"updatedAt"`
|
|
|
|
|
Status int32 `json:"status"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (r *ChatAutoReplyData) ToProtoData() (data *accountFiee.ChatAutoReplyRulerData) {
|
|
|
|
|
jsonBytes, _ := json.Marshal(r.Rules)
|
|
|
|
|
data = &accountFiee.ChatAutoReplyRulerData{
|
|
|
|
|
ID: r.ID,
|
|
|
|
|
CreatedAt: r.CreatedAt,
|
|
|
|
|
UpdatedAt: r.UpdatedAt,
|
|
|
|
|
Title: r.Title,
|
|
|
|
|
Ruler: string(jsonBytes),
|
|
|
|
|
Status: r.Status,
|
|
|
|
|
Response: r.Response,
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
func (r *ChatAutoReplyData) Parse(data *accountFiee.ChatAutoReplyRulerData) {
|
|
|
|
|
err := json.Unmarshal([]byte(data.Ruler), &r.Rules)
|
|
|
|
|
log.Printf("ChatAutoReplyData parse err:%v\n", err)
|
|
|
|
|
r.ID = data.ID
|
|
|
|
|
r.CreatedAt = data.CreatedAt
|
|
|
|
|
r.UpdatedAt = data.UpdatedAt
|
|
|
|
|
r.Title = data.Title
|
|
|
|
|
r.Status = data.Status
|
|
|
|
|
r.Response = data.Response
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type AutoReplyRule struct {
|
|
|
|
|
Enable bool `json:"enable"`
|
|
|
|
|
Content string `json:"content,omitempty"`
|
|
|
|
|
SecondDuration time.Duration `json:"secondDuration,omitempty"`
|
|
|
|
|
}
|