|
|
|
/*
|
|
|
|
** description("").
|
|
|
|
** copyright('open-im,www.open-im.io').
|
|
|
|
** author("fg,Gordon@tuoyun.net").
|
|
|
|
** time(2021/9/15 15:23).
|
|
|
|
*/
|
|
|
|
package manage
|
|
|
|
|
|
|
|
import "github.com/gin-gonic/gin"
|
|
|
|
|
|
|
|
//
|
|
|
|
//var validate *validator.Validate
|
|
|
|
//
|
|
|
|
//
|
|
|
|
//func newUserSendMsgReq(params *paramsManagementSendMsg) *pbChat.SendMsgReq {
|
|
|
|
// var newContent string
|
|
|
|
// switch params.ContentType {
|
|
|
|
// case constant.Text:
|
|
|
|
// newContent = params.Content["text"].(string)
|
|
|
|
// case constant.Picture:
|
|
|
|
// fallthrough
|
|
|
|
// case constant.Custom:
|
|
|
|
// fallthrough
|
|
|
|
// case constant.Voice:
|
|
|
|
// fallthrough
|
|
|
|
// case constant.File:
|
|
|
|
// newContent = utils.StructToJsonString(params.Content)
|
|
|
|
// default:
|
|
|
|
// }
|
|
|
|
// options := make(map[string]bool, 2)
|
|
|
|
// if params.IsOnlineOnly {
|
|
|
|
// utils.SetSwitchFromOptions(options, constant.IsOfflinePush, false)
|
|
|
|
// utils.SetSwitchFromOptions(options, constant.IsHistory, false)
|
|
|
|
// utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
|
|
|
|
// }
|
|
|
|
// pbData := pbChat.SendMsgReq{
|
|
|
|
// OperationID: params.OperationID,
|
|
|
|
// MsgData: &open_im_sdk.MsgData{
|
|
|
|
// SendID: params.SendID,
|
|
|
|
// RecvID: params.RecvID,
|
|
|
|
// GroupID: params.GroupID,
|
|
|
|
// ClientMsgID: utils.GetMsgID(params.SendID),
|
|
|
|
// SenderPlatformID: params.SenderPlatformID,
|
|
|
|
// SenderNickName: params.SenderNickName,
|
|
|
|
// SenderFaceURL: params.SenderFaceURL,
|
|
|
|
// SessionType: params.SessionType,
|
|
|
|
// MsgFrom: constant.SysMsgType,
|
|
|
|
// ContentType: params.ContentType,
|
|
|
|
// Content: []byte(newContent),
|
|
|
|
// ForceList: params.ForceList,
|
|
|
|
// CreateTime: utils.GetCurrentTimestampByNano(),
|
|
|
|
// Options: options,
|
|
|
|
// OfflinePushInfo: params.OfflinePushInfo,
|
|
|
|
// },
|
|
|
|
// }
|
|
|
|
// return &pbData
|
|
|
|
//}
|
|
|
|
//func init() {
|
|
|
|
// validate = validator.New()
|
|
|
|
//}
|
|
|
|
func ManagementSendMsg(c *gin.Context) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//func ManagementSendMsg(c *gin.Context) {
|
|
|
|
// var data interface{}
|
|
|
|
// params := paramsManagementSendMsg{}
|
|
|
|
// if err := c.BindJSON(¶ms); err != nil {
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
|
|
|
// log.ErrorByKv("json unmarshal err", c.PostForm("operationID"), "err", err.Error(), "content", c.PostForm("content"))
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// switch params.ContentType {
|
|
|
|
// case constant.Text:
|
|
|
|
// data = TextElem{}
|
|
|
|
// case constant.Picture:
|
|
|
|
// data = PictureElem{}
|
|
|
|
// case constant.Voice:
|
|
|
|
// data = SoundElem{}
|
|
|
|
// case constant.Video:
|
|
|
|
// data = VideoElem{}
|
|
|
|
// case constant.File:
|
|
|
|
// data = FileElem{}
|
|
|
|
// //case constant.AtText:
|
|
|
|
// // data = AtElem{}
|
|
|
|
// //case constant.Merger:
|
|
|
|
// // data =
|
|
|
|
// //case constant.Card:
|
|
|
|
// //case constant.Location:
|
|
|
|
// case constant.Custom:
|
|
|
|
// data = CustomElem{}
|
|
|
|
// //case constant.Revoke:
|
|
|
|
// //case constant.HasReadReceipt:
|
|
|
|
// //case constant.Typing:
|
|
|
|
// //case constant.Quote:
|
|
|
|
// default:
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 404, "errMsg": "contentType err"})
|
|
|
|
// log.ErrorByKv("contentType err", c.PostForm("operationID"), "content", c.PostForm("content"))
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// if err := mapstructure.WeakDecode(params.Content, &data); err != nil {
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 401, "errMsg": err.Error()})
|
|
|
|
// log.ErrorByKv("content to Data struct err", "", "err", err.Error())
|
|
|
|
// return
|
|
|
|
// } else if err := validate.Struct(data); err != nil {
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 403, "errMsg": err.Error()})
|
|
|
|
// log.ErrorByKv("data args validate err", "", "err", err.Error())
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// token := c.Request.Header.Get("token")
|
|
|
|
// claims, err := token_verify.ParseToken(token)
|
|
|
|
// if err != nil {
|
|
|
|
// log.NewError(params.OperationID, "parse token failed", err.Error())
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "parse token failed", "sendTime": 0, "MsgID": ""})
|
|
|
|
// }
|
|
|
|
// if !utils.IsContain(claims.UID, config.Config.Manager.AppManagerUid) {
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "not authorized", "sendTime": 0, "MsgID": ""})
|
|
|
|
// return
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// switch params.SessionType {
|
|
|
|
// case constant.SingleChatType:
|
|
|
|
// if len(params.RecvID) == 0 {
|
|
|
|
// log.NewError(params.OperationID, "recvID is a null string")
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "recvID is a null string", "sendTime": 0, "MsgID": ""})
|
|
|
|
// }
|
|
|
|
// case constant.GroupChatType:
|
|
|
|
// if len(params.GroupID) == 0 {
|
|
|
|
// log.NewError(params.OperationID, "groupID is a null string")
|
|
|
|
// c.JSON(http.StatusBadRequest, gin.H{"errCode": 405, "errMsg": "groupID is a null string", "sendTime": 0, "MsgID": ""})
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// }
|
|
|
|
// log.InfoByKv("Ws call success to ManagementSendMsgReq", params.OperationID, "Parameters", params)
|
|
|
|
//
|
|
|
|
// pbData := newUserSendMsgReq(¶ms)
|
|
|
|
// log.Info("", "", "api ManagementSendMsg call start..., [data: %s]", pbData.String())
|
|
|
|
//
|
|
|
|
// etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfflineMessageName)
|
|
|
|
// client := pbChat.NewChatClient(etcdConn)
|
|
|
|
//
|
|
|
|
// log.Info("", "", "api ManagementSendMsg call, api call rpc...")
|
|
|
|
//
|
|
|
|
// reply, err := client.SendMsg(context.Background(), pbData)
|
|
|
|
// if err != nil {
|
|
|
|
// log.NewError(params.OperationID, "call delete UserSendMsg rpc server failed", err.Error())
|
|
|
|
// c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call UserSendMsg rpc server failed"})
|
|
|
|
// return
|
|
|
|
// }
|
|
|
|
// log.Info("", "", "api ManagementSendMsg call end..., [data: %s] [reply: %s]", pbData.String(), reply.String())
|
|
|
|
//
|
|
|
|
// c.JSON(http.StatusOK, gin.H{
|
|
|
|
// "errCode": reply.ErrCode,
|
|
|
|
// "errMsg": reply.ErrMsg,
|
|
|
|
// "sendTime": reply.SendTime,
|
|
|
|
// "msgID": reply.ClientMsgID,
|
|
|
|
// })
|
|
|
|
//
|
|
|
|
//}
|
|
|
|
|
|
|
|
//type MergeElem struct {
|
|
|
|
// Title string `json:"title"`
|
|
|
|
// AbstractList []string `json:"abstractList"`
|
|
|
|
// MultiMessage []*MsgStruct `json:"multiMessage"`
|
|
|
|
//}
|
|
|
|
|
|
|
|
//type QuoteElem struct {
|
|
|
|
// Text string `json:"text"`
|
|
|
|
// QuoteMessage *MsgStruct `json:"quoteMessage"`
|
|
|
|
//}
|