提交 270f952a 编写于 作者: W wuhanqing

UPDATE database table

上级 491483ff
package database
type ChatGroup struct {
BaseModel `xorm:"extends"`
UserID int64 `xorm:"notnull 'user_id'"` // 创建者user_id
Name string `xorm:"varchar(64) notnull"`
// 进群是否审核.0不需要1需要.默认0 需要审核时使用GroupUserAddLog
JoinCheck bool `xorm:"notnull default(0) 'join_check'"`
Status uint8 `xorm:"SMALLINT notnull default(0)"` // 0正常 1全体禁言
}
func (c ChatGroup) TableName() string {
return "chat_groups"
}
package database
type ChatGroupUser struct {
BaseModel `xorm:"extends"`
GroupID int64 `xorm:"notnull 'group_id'"` // 聊天群ID
UserID int64 `xorm:"notnull 'user_id'"` // 聊天群成员用户ID
Status uint8 `xorm:"SMALLINT notnull default(0)"` // 0正常 1禁言
Sort int `xorm:"notnull default(0)"` // 按从大到小排序。置顶时, sort值+1
BeQuiet bool `xorm:"notnull 'be_quiet'"` // 消息免打扰
}
func (c ChatGroupUser) TableName() string {
return "chat_group_users"
}
package database
type ChatGroupUserAddLog struct {
BaseModel `xorm:"extends"`
GroupID int64 `xorm:"notnull 'group_id'"`
UserID int64 `xorm:"notnull 'user_id'"`
Status uint8 `xorm:"SMALLINT notnull default(0)"` // 0未同意,1已同意,2已拒绝
}
func (g ChatGroupUserAddLog) TableName() string {
return "chat_group_user_add_logs"
}
......@@ -3,6 +3,11 @@ package database
func getAllTables() []interface{} {
return []interface{}{
new(User),
new(ChatGroup),
new(ChatGroupUser),
new(ChatGroupUserAddLog),
new(Friend),
new(FriendAddLog),
// Code generated Begin; DO NOT EDIT.
// Code generated End; DO NOT EDIT.
}
......
package database
type Friend struct {
BaseModel `xorm:"extends"`
UserID int64 `xorm:"notnull 'user_id'"`
FriendID int64 `xorm:"notnull 'friend_id'"`
Remark string `xorm:"varchar(64) notnull"`
Sort int `xorm:"notnull default(0)"` // 按从大到小排序。置顶时, sort值+1
// Status uint8 `xorm:"SMALLINT notnull default(0)"`
}
func (f Friend) TableName() string {
return "friends"
}
package database
type FriendAddLog struct {
BaseModel `xorm:"extends"`
UserID int64 `xorm:"notnull 'user_id'"`
FriendID int64 `xorm:"notnull 'friend_id'"`
Msg string `xorm:"varchar(64) notnull"`
Status uint8 `xorm:"SMALLINT notnull default(0)"` // 0未同意,1已同意,2已拒绝
}
func (f FriendAddLog) TableName() string {
return "friend_add_logs"
}
......@@ -101,20 +101,16 @@ func (s *Server) HandlerMsg(u contract.IUser, data []byte) error {
addr := u.GetConn().RemoteAddr().String()
uu := s.addrToUser[addr]
// 根据access_token进行用户身份鉴权
if uu.GetID() != msg.FromUserId || !uu.CheckToken(msg.AccessToken) {
errMsg := "access_token 或 from_user_id 不正确"
msg.MsgType = model.Msg_NOTIFY
msg.ToUserId = msg.FromUserId
msg.FromUserId = "notify"
msg.Content = errMsg
return s.SendMsg(u, &msg)
b, err := s.checkToken(uu, u, &msg)
if !b {
return err
}
room, ok := s.addrToRoom[addr]
if ok {
return room.ReceiveDataToSend(&msg)
}
// TODO 保存离线消息,下次上线时发送
// TODO 对未上线的发送对象,保存离线消息,下次上线时发送
return nil
}
......@@ -157,12 +153,30 @@ func (s *Server) getChatRoom(from, to string, chatType model.Msg_ChatType) (room
return
}
func (s *Server) checkToken(uu *user.User, u contract.IUser, msg *model.Msg) (bool, error) {
if uu.GetID() != msg.FromUserId || !uu.CheckToken(msg.AccessToken) {
errMsg := "access_token 或 from_user_id 不正确"
msg.MsgType = model.Msg_NOTIFY
msg.ToUserId = msg.FromUserId
msg.FromUserId = "notify"
msg.Content = errMsg
return false, s.SendMsg(u, msg)
}
return true, nil
}
func (s *Server) UserOnline(u contract.IUser, msg *model.Msg) error {
addr := u.GetConn().RemoteAddr().String()
uu := user.NewUser(msg.FromUserId)
b, err := s.checkToken(uu, u, msg)
if !b {
return err
}
s.Lock()
_, ok := s.addrToUser[addr]
if !ok {
s.addrToUser[addr] = user.NewUser(msg.FromUserId)
fmt.Println("UserOnline:", addr)
s.addrToUser[addr] = uu
s.uidToAddr[msg.FromUserId] = addr
roomKey, room := s.getChatRoom(msg.FromUserId, msg.ToUserId, msg.ChatType)
// 加入聊天室
......@@ -181,6 +195,7 @@ func (s *Server) UserOnline(u contract.IUser, msg *model.Msg) error {
msg.Content = "SUCCESS"
msg.ToUserId = msg.FromUserId
msg.FromUserId = model.MSG_KEEP_ALIVE
// TODO 读取离线消息,有则发送
return s.SendMsg(u, msg)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册