friends.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package friends
  2. import (
  3. "server/console"
  4. usercenter "server/datacenter"
  5. requestaddfriend "server/datacenter/request_add_friend"
  6. agentmanager "server/game/agentManager"
  7. "server/msg"
  8. "github.com/name5566/leaf/gate"
  9. )
  10. // 获取用户的好友列表
  11. func GetFriendsListByUserId(args []interface{}) {
  12. m := args[0].(*msg.ReqFriendList)
  13. a := args[1].(gate.Agent)
  14. UserId := m.UserId
  15. mysql_user_data, err := usercenter.GetUserByID(UserId)
  16. if err != nil {
  17. a.WriteMsg(&msg.ResFriendList{
  18. Success: false,
  19. ErrMsg: &msg.MsgError{
  20. ErrorCode: 101,
  21. ErrorMsg: "error",
  22. },
  23. })
  24. return
  25. }
  26. users, err := mysql_user_data.GetAllFriend()
  27. if err == nil {
  28. var temp = make([]*msg.UserInfo, 0)
  29. for _, v := range users {
  30. temp = append(temp, &msg.UserInfo{
  31. UserId: v.UserID,
  32. MHead: v.Head,
  33. Name: v.Name,
  34. })
  35. }
  36. a.WriteMsg(&msg.ResFriendList{
  37. Success: true,
  38. ErrMsg: nil,
  39. List: temp,
  40. })
  41. } else {
  42. a.WriteMsg(&msg.ResFriendList{
  43. Success: false,
  44. ErrMsg: &msg.MsgError{
  45. ErrorCode: 101,
  46. ErrorMsg: "error",
  47. },
  48. })
  49. }
  50. }
  51. func DeleteFriend(args []interface{}) {
  52. }
  53. // 获取好友申请列表
  54. func GetFriendRquestList(args []interface{}) {
  55. m := args[0].(*msg.ReqFriendRequestList)
  56. a := args[1].(gate.Agent)
  57. user_id := m.UserId
  58. list, err := requestaddfriend.GetRequests(user_id)
  59. if err != nil {
  60. a.WriteMsg(&msg.ResFriendRequestList{
  61. Success: false,
  62. ErrMsg: &msg.MsgError{
  63. ErrorCode: 101,
  64. ErrorMsg: "error",
  65. },
  66. })
  67. return
  68. }
  69. var ids = make([]string, 0)
  70. var user_list = make(map[string]*requestaddfriend.FriendRequest, 0)
  71. for _, v := range list {
  72. ids = append(ids, v.FromUserID)
  73. user_list[v.FromUserID] = v
  74. }
  75. users, err := usercenter.GetUsersByIDs(ids)
  76. if err == nil {
  77. var temp = make([]*msg.FriendRequestItem, 0)
  78. for _, v := range users {
  79. temp = append(temp, &msg.FriendRequestItem{
  80. RequestMsg: user_list[v.UserID].Message,
  81. Status: int32(user_list[v.UserID].Status),
  82. CreateTime: user_list[v.UserID].CreateTime.GoString(),
  83. Info: &msg.UserInfo{
  84. UserId: v.UserID,
  85. MHead: v.Head,
  86. Name: v.Name,
  87. },
  88. })
  89. }
  90. a.WriteMsg(&msg.ResFriendRequestList{
  91. Success: true,
  92. List: temp,
  93. })
  94. } else {
  95. a.WriteMsg(&msg.ResFriendRequestList{
  96. Success: false,
  97. ErrMsg: &msg.MsgError{
  98. ErrorCode: 101,
  99. ErrorMsg: "error",
  100. },
  101. })
  102. }
  103. }
  104. // 添加好友请求
  105. func AddFriendrRquest(args []interface{}) {
  106. m := args[0].(*msg.ReqAddFriend)
  107. a := args[1].(gate.Agent)
  108. FromUserInfo := a.UserData().(*msg.UserInfo)
  109. FromUserID := FromUserInfo.UserId
  110. ToUserID := m.ToUserID
  111. requestaddfriend.CreateFriendRequest(FromUserID, ToUserID, m.Msg)
  112. NotifyFriendAddFriend(ToUserID, FromUserInfo)
  113. }
  114. // 通知添加好友请求
  115. func NotifyFriendAddFriend(ToUserID string, FromUserID *msg.UserInfo) {
  116. ag := agentmanager.GetAgentByUserID(ToUserID)
  117. if ag != nil {
  118. ag.WriteMsg(&msg.RecvAddFriendRequest{
  119. Info: &msg.UserInfo{
  120. MHead: FromUserID.MHead,
  121. Name: FromUserID.Name,
  122. UserId: FromUserID.UserId,
  123. },
  124. })
  125. }
  126. }
  127. // 反馈操作好友请求
  128. func OptFriendrRquest(args []interface{}) {
  129. m := args[0].(*msg.OptAddFriendRequest)
  130. var user_data *usercenter.User
  131. var err error
  132. user_data, err = usercenter.GetUserByID(m.Info.FromUserID)
  133. if err == nil {
  134. user_data.AddFriend(m.Info.ToUserID)
  135. }
  136. user_data, err = usercenter.GetUserByID(m.Info.ToUserID)
  137. if err == nil {
  138. user_data.AddFriend(m.Info.FromUserID)
  139. }
  140. var request_data *requestaddfriend.FriendRequest
  141. request_data, err = requestaddfriend.ProcessFriendRequest(m.Info.RequestID, int(m.Info.Status))
  142. if err == nil {
  143. request_data.Status = int(m.Info.Status)
  144. NotifyOptFriend(m.Info.FromUserID, request_data)
  145. } else {
  146. console.Log("反馈操作好友请求 error:", err)
  147. }
  148. }
  149. // 通知好友操作的结果
  150. func NotifyOptFriend(FromUserID string, request_data *requestaddfriend.FriendRequest) {
  151. ag := agentmanager.GetAgentByUserID(FromUserID)
  152. if ag != nil {
  153. ag.WriteMsg(&msg.NotifyOptFriend{
  154. Info: &msg.RequestAddFriendItem{
  155. Status: int32(request_data.Status),
  156. ToUserID: request_data.ToUserID,
  157. },
  158. })
  159. }
  160. }
  161. // 搜索玩家
  162. func SearchUser(args []interface{}) {
  163. m := args[0].(*msg.SearchUser)
  164. a := args[1].(gate.Agent)
  165. user_data, err := usercenter.GetUserByID(m.UserId)
  166. if err != nil {
  167. a.WriteMsg(&msg.ResSearchUser{
  168. Success: false,
  169. ErrMsg: &msg.MsgError{
  170. ErrorCode: 101,
  171. ErrorMsg: err.Error(),
  172. },
  173. })
  174. } else {
  175. a.WriteMsg(&msg.ResSearchUser{
  176. Success: true,
  177. ErrMsg: nil,
  178. Info: &msg.UserInfo{
  179. MHead: user_data.Head,
  180. Name: user_data.Name,
  181. UserId: user_data.UserID,
  182. },
  183. })
  184. }
  185. }
  186. // 通知给在线的好友自己上线
  187. // 通知给在线的好友自己下线
  188. // 发送好友聊天消息
  189. // 筛选在线的好友