fcm ios push badge

This commit is contained in:
Gordon 2022-09-02 16:36:47 +08:00
parent 3f87958328
commit 72aff32024
7 changed files with 101 additions and 61 deletions

View File

@ -138,6 +138,7 @@ func main() {
thirdGroup.POST("/get_rtc_invitation_start_app", apiThird.GetRTCInvitationInfoStartApp) thirdGroup.POST("/get_rtc_invitation_start_app", apiThird.GetRTCInvitationInfoStartApp)
thirdGroup.POST("/fcm_update_token", apiThird.FcmUpdateToken) thirdGroup.POST("/fcm_update_token", apiThird.FcmUpdateToken)
thirdGroup.POST("/aws_storage_credential", apiThird.AwsStorageCredential) thirdGroup.POST("/aws_storage_credential", apiThird.AwsStorageCredential)
thirdGroup.POST("/set_app_badge", apiThird.SetAppBadge)
} }
//Message //Message
chatGroup := r.Group("/msg") chatGroup := r.Group("/msg")

View File

@ -0,0 +1,50 @@
package apiThird
import (
api "Open_IM/pkg/base_info"
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/utils"
"github.com/gin-gonic/gin"
"net/http"
)
func SetAppBadge(c *gin.Context) {
var (
req api.SetAppBadgeReq
resp api.SetAppBadgeResp
)
if err := c.Bind(&req); err != nil {
log.NewError("0", utils.GetSelfFuncName(), "BindJSON failed ", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req)
var ok bool
var errInfo, opUserID string
ok, opUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
if !ok {
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": errMsg})
return
}
if !token_verify.CheckAccess(opUserID, req.FromUserID) {
log.NewError(req.OperationID, "CheckAccess false ", opUserID, req.FromUserID)
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "no permission"})
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), req, opUserID)
err := db.DB.SetUserBadgeUnreadCountSum(req.FromUserID, int(req.AppUnreadCount))
if err != nil {
errMsg := req.OperationID + " " + "SetUserBadgeUnreadCountSum failed " + err.Error() + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
resp.ErrCode = 500
resp.ErrMsg = errMsg
c.JSON(http.StatusInternalServerError, resp)
return
}
c.JSON(http.StatusOK, resp)
return
}

View File

@ -75,14 +75,6 @@ func (rpc *rpcConversation) ModifyConversationField(c context.Context, req *pbCo
case constant.FieldUnread: case constant.FieldUnread:
isSyncConversation = false isSyncConversation = false
err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"update_unread_count_time": conversation.UpdateUnreadCountTime}) err = imdb.UpdateColumnsConversations(haveUserID, req.Conversation.ConversationID, map[string]interface{}{"update_unread_count_time": conversation.UpdateUnreadCountTime})
for _, v := range req.UserIDList {
if err = db.DB.SetUserBadgeUnreadCountSum(v, int(req.BadgeUnreadCountSum)); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetUserBadgeUnreadCountSum, rpc return", err.Error())
resp.CommonResp = &pbConversation.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}
return resp, nil
}
}
} }
if err != nil { if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateColumnsConversations error", err.Error()) log.NewError(req.OperationID, utils.GetSelfFuncName(), "UpdateColumnsConversations error", err.Error())

View File

@ -61,10 +61,9 @@ type SetConversationResp struct {
} }
type ModifyConversationFieldReq struct { type ModifyConversationFieldReq struct {
Conversation Conversation
FieldType int32 `json:"fieldType" binding:"required"` FieldType int32 `json:"fieldType" binding:"required"`
UserIDList []string `json:"userIDList" binding:"required"` UserIDList []string `json:"userIDList" binding:"required"`
BadgeUnreadCountSum int32 `json:"badgeUnreadCountSum"` OperationID string `json:"operationID" binding:"required"`
OperationID string `json:"operationID" binding:"required"`
} }
type ModifyConversationFieldResp struct { type ModifyConversationFieldResp struct {
CommResp CommResp

View File

@ -112,3 +112,12 @@ type FcmUpdateTokenReq struct {
type FcmUpdateTokenResp struct { type FcmUpdateTokenResp struct {
CommResp CommResp
} }
type SetAppBadgeReq struct {
OperationID string `json:"operationID" binding:"required"`
FromUserID string `json:"fromUserID" binding:"required"`
AppUnreadCount int32 `json:"appUnreadCount"`
}
type SetAppBadgeResp struct {
CommResp
}

View File

@ -35,7 +35,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} }
func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (m *CommonResp) String() string { return proto.CompactTextString(m) }
func (*CommonResp) ProtoMessage() {} func (*CommonResp) ProtoMessage() {}
func (*CommonResp) Descriptor() ([]byte, []int) { func (*CommonResp) Descriptor() ([]byte, []int) {
return fileDescriptor_conversation_f01d9caff8d16987, []int{0} return fileDescriptor_conversation_ac55165355a1b6e6, []int{0}
} }
func (m *CommonResp) XXX_Unmarshal(b []byte) error { func (m *CommonResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommonResp.Unmarshal(m, b) return xxx_messageInfo_CommonResp.Unmarshal(m, b)
@ -94,7 +94,7 @@ func (m *Conversation) Reset() { *m = Conversation{} }
func (m *Conversation) String() string { return proto.CompactTextString(m) } func (m *Conversation) String() string { return proto.CompactTextString(m) }
func (*Conversation) ProtoMessage() {} func (*Conversation) ProtoMessage() {}
func (*Conversation) Descriptor() ([]byte, []int) { func (*Conversation) Descriptor() ([]byte, []int) {
return fileDescriptor_conversation_f01d9caff8d16987, []int{1} return fileDescriptor_conversation_ac55165355a1b6e6, []int{1}
} }
func (m *Conversation) XXX_Unmarshal(b []byte) error { func (m *Conversation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Conversation.Unmarshal(m, b) return xxx_messageInfo_Conversation.Unmarshal(m, b)
@ -224,7 +224,6 @@ type ModifyConversationFieldReq struct {
FieldType int32 `protobuf:"varint,2,opt,name=fieldType" json:"fieldType,omitempty"` FieldType int32 `protobuf:"varint,2,opt,name=fieldType" json:"fieldType,omitempty"`
UserIDList []string `protobuf:"bytes,3,rep,name=userIDList" json:"userIDList,omitempty"` UserIDList []string `protobuf:"bytes,3,rep,name=userIDList" json:"userIDList,omitempty"`
OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"` OperationID string `protobuf:"bytes,4,opt,name=operationID" json:"operationID,omitempty"`
BadgeUnreadCountSum int32 `protobuf:"varint,5,opt,name=badgeUnreadCountSum" json:"badgeUnreadCountSum,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -234,7 +233,7 @@ func (m *ModifyConversationFieldReq) Reset() { *m = ModifyConversationFi
func (m *ModifyConversationFieldReq) String() string { return proto.CompactTextString(m) } func (m *ModifyConversationFieldReq) String() string { return proto.CompactTextString(m) }
func (*ModifyConversationFieldReq) ProtoMessage() {} func (*ModifyConversationFieldReq) ProtoMessage() {}
func (*ModifyConversationFieldReq) Descriptor() ([]byte, []int) { func (*ModifyConversationFieldReq) Descriptor() ([]byte, []int) {
return fileDescriptor_conversation_f01d9caff8d16987, []int{2} return fileDescriptor_conversation_ac55165355a1b6e6, []int{2}
} }
func (m *ModifyConversationFieldReq) XXX_Unmarshal(b []byte) error { func (m *ModifyConversationFieldReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ModifyConversationFieldReq.Unmarshal(m, b) return xxx_messageInfo_ModifyConversationFieldReq.Unmarshal(m, b)
@ -282,13 +281,6 @@ func (m *ModifyConversationFieldReq) GetOperationID() string {
return "" return ""
} }
func (m *ModifyConversationFieldReq) GetBadgeUnreadCountSum() int32 {
if m != nil {
return m.BadgeUnreadCountSum
}
return 0
}
type ModifyConversationFieldResp struct { type ModifyConversationFieldResp struct {
CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"` CommonResp *CommonResp `protobuf:"bytes,1,opt,name=commonResp" json:"commonResp,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -300,7 +292,7 @@ func (m *ModifyConversationFieldResp) Reset() { *m = ModifyConversationF
func (m *ModifyConversationFieldResp) String() string { return proto.CompactTextString(m) } func (m *ModifyConversationFieldResp) String() string { return proto.CompactTextString(m) }
func (*ModifyConversationFieldResp) ProtoMessage() {} func (*ModifyConversationFieldResp) ProtoMessage() {}
func (*ModifyConversationFieldResp) Descriptor() ([]byte, []int) { func (*ModifyConversationFieldResp) Descriptor() ([]byte, []int) {
return fileDescriptor_conversation_f01d9caff8d16987, []int{3} return fileDescriptor_conversation_ac55165355a1b6e6, []int{3}
} }
func (m *ModifyConversationFieldResp) XXX_Unmarshal(b []byte) error { func (m *ModifyConversationFieldResp) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ModifyConversationFieldResp.Unmarshal(m, b) return xxx_messageInfo_ModifyConversationFieldResp.Unmarshal(m, b)
@ -407,42 +399,40 @@ var _Conversation_serviceDesc = grpc.ServiceDesc{
} }
func init() { func init() {
proto.RegisterFile("conversation/conversation.proto", fileDescriptor_conversation_f01d9caff8d16987) proto.RegisterFile("conversation/conversation.proto", fileDescriptor_conversation_ac55165355a1b6e6)
} }
var fileDescriptor_conversation_f01d9caff8d16987 = []byte{ var fileDescriptor_conversation_ac55165355a1b6e6 = []byte{
// 513 bytes of a gzipped FileDescriptorProto // 494 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x5d, 0x8b, 0x13, 0x3f, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x5f, 0x8b, 0x13, 0x31,
0x18, 0xc5, 0x99, 0xbe, 0x6d, 0xfb, 0xb4, 0xdb, 0xff, 0x9f, 0x88, 0x1a, 0xba, 0xbe, 0x94, 0x22, 0x14, 0xc5, 0x99, 0x6e, 0xb7, 0xdb, 0xde, 0x76, 0xab, 0x04, 0xd4, 0xd0, 0xf5, 0x4f, 0x19, 0x44,
0x32, 0x7a, 0x51, 0x65, 0xf5, 0x42, 0x10, 0x16, 0xb4, 0x45, 0x19, 0xb0, 0xba, 0xc4, 0x2e, 0x82, 0x46, 0x1f, 0x2a, 0xac, 0x3e, 0x08, 0xc2, 0x82, 0x4e, 0x51, 0x06, 0xac, 0x2e, 0xa1, 0x8b, 0xe0,
0x77, 0xb3, 0x9d, 0xa7, 0xdd, 0x80, 0x4d, 0xc6, 0x24, 0x53, 0xbb, 0x37, 0x7e, 0x06, 0x3f, 0xa9, 0xdb, 0xd8, 0xb9, 0xed, 0x06, 0x6c, 0x32, 0x26, 0x99, 0xda, 0x7d, 0xf1, 0x33, 0xf8, 0x81, 0xfc,
0x9f, 0x41, 0x92, 0x69, 0xb7, 0xc9, 0xba, 0x05, 0x2f, 0x9f, 0x5f, 0x32, 0x27, 0xe7, 0xa4, 0xa7, 0x70, 0x92, 0x4c, 0xbb, 0x4d, 0x56, 0x0b, 0x3e, 0xde, 0x5f, 0xee, 0x9c, 0x9c, 0x33, 0x3d, 0x1d,
0x81, 0x87, 0x33, 0x29, 0x56, 0xa8, 0x74, 0x6a, 0xb8, 0x14, 0xcf, 0xfc, 0x61, 0x98, 0x2b, 0x69, 0x78, 0x34, 0x93, 0x62, 0x85, 0x4a, 0xe7, 0x86, 0x4b, 0xf1, 0xdc, 0x1f, 0x46, 0xa5, 0x92, 0x46,
0x24, 0xe9, 0xf8, 0x6c, 0x70, 0x02, 0x30, 0x92, 0xcb, 0xa5, 0x14, 0x0c, 0x75, 0x4e, 0x28, 0x1c, 0x92, 0x9e, 0xcf, 0xe2, 0x33, 0x80, 0x54, 0x2e, 0x97, 0x52, 0x30, 0xd4, 0x25, 0xa1, 0x70, 0x84,
0xa0, 0x52, 0x23, 0x99, 0x21, 0x8d, 0xfa, 0x51, 0x5c, 0x67, 0xdb, 0x91, 0xdc, 0x81, 0x06, 0x2a, 0x4a, 0xa5, 0xb2, 0x40, 0x1a, 0x0d, 0xa3, 0xe4, 0x90, 0x6d, 0x47, 0x72, 0x17, 0x5a, 0xa8, 0xd4,
0x35, 0xd1, 0x0b, 0x5a, 0xe9, 0x47, 0x71, 0x8b, 0x6d, 0xa6, 0xc1, 0xaf, 0x1a, 0x74, 0x46, 0x9e, 0x44, 0x2f, 0x68, 0x63, 0x18, 0x25, 0x1d, 0xb6, 0x99, 0xe2, 0x5f, 0x4d, 0xe8, 0xa5, 0x9e, 0x20,
0x20, 0xe9, 0x43, 0x5b, 0xfe, 0x10, 0xa8, 0xce, 0x34, 0xaa, 0x64, 0xec, 0x64, 0x5a, 0xcc, 0x47, 0x19, 0x42, 0x57, 0xfe, 0x10, 0xa8, 0x2e, 0x34, 0xaa, 0x6c, 0xec, 0x64, 0x3a, 0xcc, 0x47, 0xe4,
0xe4, 0x31, 0x74, 0x7d, 0x0b, 0xc9, 0x78, 0x23, 0x79, 0x8d, 0x92, 0x07, 0x00, 0x0a, 0x67, 0xab, 0x09, 0xf4, 0x7d, 0x0b, 0xd9, 0x78, 0x23, 0x79, 0x83, 0x92, 0x87, 0x00, 0x0a, 0x67, 0xab, 0x89,
0x89, 0x5e, 0x7c, 0xca, 0x0d, 0xad, 0x3a, 0x3f, 0x1e, 0x21, 0x4f, 0xe1, 0x7f, 0xff, 0x8b, 0xe9, 0x5e, 0x7c, 0x2a, 0x0d, 0x3d, 0x70, 0x7e, 0x3c, 0x42, 0x9e, 0xc1, 0x6d, 0xff, 0x89, 0xe9, 0x55,
0x65, 0x8e, 0xb4, 0xe6, 0x76, 0xfd, 0xc5, 0xad, 0xfd, 0xa2, 0x34, 0x54, 0x2f, 0xed, 0x97, 0x93, 0x89, 0xb4, 0xe9, 0xb6, 0xfe, 0xe2, 0xd6, 0x7e, 0x55, 0x1b, 0x3a, 0xac, 0xed, 0xd7, 0x93, 0x0d,
0x0d, 0xbc, 0x50, 0xb2, 0xc8, 0x93, 0x31, 0x6d, 0xb8, 0x85, 0xed, 0x68, 0x73, 0x14, 0x42, 0x61, 0xbc, 0x50, 0xb2, 0x2a, 0xb3, 0x31, 0x6d, 0xb9, 0x83, 0xed, 0x68, 0x73, 0x54, 0x42, 0x61, 0x5e,
0x9a, 0x8d, 0x64, 0x21, 0x0c, 0x3d, 0x70, 0xc2, 0x3e, 0x22, 0x8f, 0xe0, 0x30, 0x53, 0xe9, 0xdc, 0xa4, 0xb2, 0x12, 0x86, 0x1e, 0x39, 0x61, 0x1f, 0x91, 0xc7, 0x70, 0x5c, 0xa8, 0x7c, 0x6e, 0xa6,
0x4c, 0x71, 0x6d, 0xa6, 0x7c, 0x89, 0xb4, 0xd9, 0x8f, 0xe2, 0x2a, 0x0b, 0x21, 0xe9, 0x41, 0x93, 0xb8, 0x36, 0x53, 0xbe, 0x44, 0xda, 0x1e, 0x46, 0xc9, 0x01, 0x0b, 0x21, 0x19, 0x40, 0x9b, 0xeb,
0xeb, 0x53, 0x2e, 0x04, 0x66, 0xb4, 0xd5, 0x8f, 0xe2, 0x26, 0xbb, 0x9a, 0xc9, 0x00, 0x3a, 0xa9, 0x73, 0x2e, 0x04, 0x16, 0xb4, 0x33, 0x8c, 0x92, 0x36, 0xbb, 0x9e, 0x49, 0x0c, 0xbd, 0xdc, 0x98,
0x31, 0xe9, 0xec, 0x02, 0xb3, 0x44, 0xcc, 0x25, 0x05, 0x67, 0x21, 0x60, 0xf6, 0x14, 0xae, 0x4f, 0x7c, 0x76, 0x89, 0x45, 0x26, 0xe6, 0x92, 0x82, 0xb3, 0x10, 0x30, 0x7b, 0x0b, 0xd7, 0xe7, 0x8a,
0x15, 0x5f, 0xa5, 0x06, 0x47, 0x17, 0xa9, 0xa1, 0x6d, 0x27, 0x12, 0x42, 0xeb, 0xd6, 0x19, 0x7f, 0xaf, 0x72, 0x83, 0xe9, 0x65, 0x6e, 0x68, 0xd7, 0x89, 0x84, 0xd0, 0xba, 0x75, 0xc6, 0xdf, 0x18,
0x63, 0xdc, 0x35, 0x74, 0x4a, 0xb7, 0x1e, 0xb2, 0x67, 0x71, 0xfd, 0x51, 0x9a, 0x44, 0xbc, 0xb7, 0xf7, 0x1a, 0x7a, 0xb5, 0x5b, 0x0f, 0xd9, 0xbb, 0xb8, 0xfe, 0x28, 0x4d, 0x26, 0xde, 0x5b, 0x4a,
0x94, 0x1e, 0x3a, 0x99, 0x80, 0x91, 0x2e, 0x54, 0x70, 0x4d, 0xbb, 0xce, 0x45, 0x05, 0xd7, 0xe4, 0x8f, 0x9d, 0x4c, 0xc0, 0x48, 0x1f, 0x1a, 0xb8, 0xa6, 0x7d, 0xe7, 0xa2, 0x81, 0x6b, 0xf2, 0x12,
0x25, 0xdc, 0x2e, 0xf2, 0x2c, 0x35, 0x78, 0xb6, 0x8b, 0xed, 0x92, 0xfe, 0xe7, 0x92, 0xde, 0xbc, 0xee, 0x54, 0x65, 0x91, 0x1b, 0xbc, 0xd8, 0xc5, 0x76, 0x49, 0x6f, 0xb9, 0xa4, 0xff, 0x3e, 0x8c,
0x38, 0xf8, 0x1d, 0x41, 0x6f, 0x22, 0x33, 0x3e, 0xbf, 0xf4, 0x8b, 0xf1, 0x8e, 0xe3, 0xb7, 0x8c, 0x7f, 0x47, 0x30, 0x98, 0xc8, 0x82, 0xcf, 0xaf, 0xfc, 0x62, 0xbc, 0xe3, 0xf8, 0xad, 0x60, 0xf8,
0xe1, 0x77, 0x72, 0x02, 0x41, 0x03, 0x5d, 0x43, 0xda, 0xc7, 0xbd, 0x61, 0x50, 0x55, 0xff, 0x4b, 0x9d, 0x9c, 0x41, 0xd0, 0x40, 0xd7, 0x90, 0xee, 0xe9, 0x60, 0x14, 0x54, 0xd5, 0x7f, 0x92, 0x05,
0x16, 0xec, 0x27, 0xf7, 0xa0, 0x35, 0xb7, 0x5a, 0x2e, 0x68, 0xc5, 0x05, 0xdd, 0x01, 0x5b, 0x9a, 0xfb, 0xe4, 0x3e, 0x74, 0xe6, 0x56, 0xcb, 0x05, 0x6d, 0xb8, 0xa0, 0x3b, 0x60, 0x4b, 0x53, 0xff,
0xf2, 0xa7, 0xfd, 0xc0, 0xb5, 0x2d, 0x4d, 0x35, 0x6e, 0x31, 0x8f, 0xb8, 0x7a, 0xe6, 0xa8, 0xb6, 0xb4, 0x1f, 0xb8, 0xb6, 0xa5, 0x39, 0x48, 0x3a, 0xcc, 0x23, 0xae, 0x9e, 0x25, 0xaa, 0x6d, 0xf3,
0xcd, 0xab, 0x6d, 0xea, 0xb9, 0x43, 0xe4, 0x39, 0xdc, 0x3a, 0x4f, 0xb3, 0x85, 0x1f, 0xeb, 0x73, 0x9a, 0x9b, 0x7a, 0xee, 0x50, 0xfc, 0x19, 0x4e, 0xf6, 0xba, 0xd7, 0x25, 0x79, 0x05, 0x30, 0xbb,
0xb1, 0x74, 0xbd, 0xa9, 0xb3, 0x9b, 0x96, 0x06, 0x5f, 0xe0, 0x68, 0x6f, 0x5e, 0x9d, 0x93, 0x57, 0xfe, 0xc3, 0x6c, 0xcc, 0xd3, 0x9b, 0xe6, 0xb7, 0xe7, 0xcc, 0xdb, 0x3d, 0xfd, 0x19, 0x06, 0x27,
0x00, 0xb3, 0xab, 0xbf, 0xd8, 0x26, 0x2e, 0xbd, 0x1e, 0x77, 0xbb, 0xce, 0xbc, 0xbd, 0xc7, 0x3f, 0x02, 0xee, 0xed, 0xb9, 0x88, 0x24, 0xa1, 0xe0, 0xfe, 0xb7, 0x39, 0x78, 0xfa, 0x9f, 0x9b, 0xba,
0xc3, 0xab, 0x22, 0x02, 0xee, 0xee, 0x39, 0x88, 0xc4, 0xa1, 0xe0, 0xfe, 0xfb, 0xef, 0x3d, 0xf9, 0x7c, 0xfb, 0xe0, 0xcb, 0xc9, 0x28, 0xf8, 0x20, 0xbc, 0xf6, 0x87, 0xaf, 0x2d, 0xf7, 0x79, 0x78,
0xc7, 0x9d, 0x3a, 0x7f, 0x7b, 0xff, 0xeb, 0xd1, 0x30, 0x78, 0x42, 0x5e, 0xfb, 0xc3, 0x79, 0xc3, 0xf1, 0x27, 0x00, 0x00, 0xff, 0xff, 0x12, 0x56, 0xaa, 0x7b, 0x41, 0x04, 0x00, 0x00,
0x3d, 0x28, 0x2f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9a, 0xf4, 0x2a, 0xa6, 0x73, 0x04, 0x00,
0x00,
} }

View File

@ -29,7 +29,6 @@ message ModifyConversationFieldReq{
int32 fieldType = 2; int32 fieldType = 2;
repeated string userIDList = 3; repeated string userIDList = 3;
string operationID = 4; string operationID = 4;
int32 badgeUnreadCountSum = 5;
} }
message ModifyConversationFieldResp{ message ModifyConversationFieldResp{