Files
baseapi/platformapi/ebaiapi/im.go
richboo111 6d8e85adf5 1
2024-01-30 09:38:11 +08:00

153 lines
4.7 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 ebaiapi
import (
"errors"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals"
)
const (
IMStoreStatusOnLine = "ONLINE" // 门店im在线状态
IMStoreStatusBusy = "BUSY" // 忙碌状态
IMType = "IM" // 业务类型,消息默认IM
IMTypeSendMsg = "SEND_MESSAGE" //
IMTypeReadMsg = "READ_MESSAGE" //
IMTypeGetMedia = "GET_MEDIA_URL" //
DefaultUrlExpireTime = 86400 //s
//消息类型
ContentTypeNormal = 1 //普通文本信息
ContentTypeAt = 8 //@ 消息
//门店im状态
ImStatusOpen = 1 //开启
ImStatusClose = -1 //关闭
//10(用户)、20(骑手)、30(商家)、32连锁账号登录、95系统
SenderTypeUser = "10"
SenderTypeRider = "20"
SenderTypeBusiness = "30"
SenderTypeChainedAccountLogin = "32"
SenderTypeSystem = "95"
)
// BusinessSendMsgReq im发送消息
type BusinessSendMsgReq struct {
PlatformShopId string `json:"platformShopId"` // 平台门店id
BizType string `json:"bizType"` // 业务类型IM消息。默认值IM
SubBizType string `json:"subBizType"` // 子业务类型发送消息。默认值SEND_MESSAGE
PayLoad BusinessMsgPayload `json:"payLoad"`
}
type BusinessMsgPayload struct {
GroupId string `json:"groupId"` // 会话ID
MsgId string `json:"msgId"` // 消息ID
ReceiverIds []string `json:"receiverIds"` // 接收人列表
Content string `json:"content"` // 发送内容格式JSON {"text":"msg"}
ContentType string `json:"contentType"` // 内容类型,目前只支持文本消息。枚举值: 1-普通文本
}
// BusinessSendMsg 门店老板发送消息
func (a *API) BusinessSendMsg(param *BusinessSendMsgReq) error {
result, err := a.AccessAPI("im.message.send", utils.Struct2MapByJson(param))
if err != nil {
return err
}
if result.ErrNo != 0 {
globals.SugarLogger.Debugf("ebaiBusinessSendMsg err=%v", result.Error)
return errors.New(result.Error)
}
return nil
}
// GetMediaUrl 获取多媒体文件url
func (a *API) GetMediaUrl(platformShopId, mediaID string) (url string, err error) {
result, err := a.AccessAPI("im.get.media.url", map[string]interface{}{
"platformShopId": platformShopId,
"bizType": IMType,
"subBizType": IMTypeGetMedia,
"payload": map[string]interface{}{
"mediaId": mediaID,
"urlExpireTime": DefaultUrlExpireTime,
},
})
if err != nil {
return "", err
}
if result.ErrNo != 0 {
return "", errors.New(result.Error)
}
return result.Data.(map[string]interface{})["url"].(string), nil
}
// GetStoreIMStatus 获取门店的im状态 1开启-1关闭
func (a *API) GetStoreIMStatus(platformShopId string) (string, error) {
result, err := a.AccessAPI("im.getIMStatus", map[string]interface{}{"platformShopId": platformShopId})
if err != nil {
return "0", err
}
if result.ErrNo != 0 {
return "0", errors.New(result.Error)
}
return result.Data.(map[string]interface{})["imStatus"].(string), nil
}
// UpdateIMStatus 更新店铺IM开关状态 1-开启,-1-关闭
func (a *API) UpdateIMStatus(platformShopId string, status int) error {
result, err := a.AccessAPI("im.updateIMStatus", map[string]interface{}{"platformShopId": platformShopId, "status": status})
if err != nil {
return err
}
if result.ErrNo != 0 {
return errors.New(result.Error)
}
return nil
}
// SettingStoreMsgRead 设置消息已读
//func (a *API) SettingStoreMsgRead(platformShopId string, msgId string) error {
// result, err := a.AccessAPI("im.message.read", map[string]interface{}{
// "platformShopId": platformShopId,
// "bizType": IMType,
// "subBizType": ReadIMType,
// "payload": map[string]string{"msgId": msgId},
// })
// if err != nil {
// return err
// }
// if result.ErrNo != 0 {
// return errors.New(result.Error)
// }
// return nil
//}
// GetImOnlineStatus 获取门店IM线上状态
//func (a *API) GetImOnlineStatus(platformShopId string) (int, error) {
// result, err := a.AccessAPI("im.getIMOnlineStatus", map[string]interface{}{"platformShopId": platformShopId})
// if err != nil {
// return 0, err
// }
// if result.ErrNo != 0 {
// return 0, errors.New(result.Error)
// }
//
// return result.Data.(map[string]interface{})["status"].(int), nil
//}
// SetImOnlineStatus 设置im线上状态 ONLINE - 在线 BUSY - 忙碌
//func (a *API) SetImOnlineStatus(platformShopId string, status string) error {
// result, err := a.AccessAPI("im.updateIMOnlineStatus", map[string]interface{}{"platformShopId": platformShopId, "status": status})
// if err != nil {
// return err
// }
// if result.ErrNo != 0 {
// return errors.New(result.Error)
// }
//
// return nil
//}