FriendRecruitData.lua 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. local FriendRecruitData = class("FriendRecruitData")
  2. function FriendRecruitData:ctor()
  3. end
  4. function FriendRecruitData:RegisterEvents()
  5. ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.FRIEND_INVITATION_QUERY_STUDENT_LIST_INFO, self, self.OnStudentDatasRefresh)
  6. end
  7. function FriendRecruitData:UnRegisterEvents()
  8. ManagerContainer.LuaEventMgr:UnRegisterEvent(UIEventNames.FRIEND_INVITATION_QUERY_STUDENT_LIST_INFO, self, self.OnStudentDatasRefresh)
  9. end
  10. function FriendRecruitData:RegisterNetEvents()
  11. self:RegisterEvents()
  12. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_CHANG_NTF,self.RefreshData,self)
  13. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_NUMBER_ACK,self.InvitationNumberAck,self)
  14. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_NUMBER_USER_INFO_ACK,self.InvitationNumberUserInfoAck,self)
  15. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_BE_TO_MEMBER_ACK,self.InvitationBeToMemberAck,self)
  16. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_CLICK_ACK,self.InvitationClickAck,self)
  17. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_CLICK_REPLAY_ACK,self.InvitationClickReplayAck,self)
  18. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_DEL_MEMBER_ACK,self.InvitationDelMemberAck,self)
  19. ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_INVITATION_TASK_REWARD_ACK,self.InvitationTaskRewardAck,self)
  20. end
  21. function FriendRecruitData:UnRegisterNetEvents()
  22. self:UnRegisterEvents()
  23. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_CHANG_NTF)
  24. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_NUMBER_ACK)
  25. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_NUMBER_USER_INFO_ACK)
  26. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_CLICK_ACK)
  27. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_CLICK_REPLAY_ACK)
  28. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_DEL_MEMBER_ACK)
  29. ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_INVITATION_TASK_REWARD_ACK)
  30. end
  31. function FriendRecruitData:InitData(data)
  32. self.recruitData = ProtocalDataNormal.ParseRoleInvitation(data.invitation_info)
  33. table.sort(self.recruitData.memberUidList, function (a,b)
  34. if a.resVal == b.resVal then
  35. return a.uid < b.uid
  36. end
  37. return a.resVal > b.resVal
  38. end)
  39. self.studentDatas = {}
  40. end
  41. function FriendRecruitData:ClearStudentDatas()
  42. self.studentDatas = {}
  43. end
  44. function FriendRecruitData:RefreshData(data)
  45. if data.invitation_info then
  46. self:InitData(data.invitation_info)
  47. end
  48. self.delMemberUidList = data.del_member_uid_list
  49. end
  50. function FriendRecruitData:GetMasterUId()
  51. return self.recruitData.masterUid
  52. end
  53. function FriendRecruitData:GetRecruitTaskDataByCfgId(cfgId)
  54. return self.recruitData.taskList[cfgId]
  55. end
  56. function FriendRecruitData:GetMyRecruitCode()
  57. return self.recruitData.selfInvitationNumber
  58. end
  59. function FriendRecruitData:GetMyStudentInfoDatas()
  60. return self.studentDatas
  61. end
  62. function FriendRecruitData:GetMyStudentCount()
  63. return #self.recruitData.memberUidList
  64. end
  65. function FriendRecruitData:GetRemainClapCount()
  66. return self.recruitData.clickNum
  67. end
  68. function FriendRecruitData:GetMyStudentDataByUid(uid)
  69. for _,v in pairs(self.recruitData.memberUidList) do
  70. if v.uid == uid then
  71. return v
  72. end
  73. end
  74. return nil
  75. end
  76. function FriendRecruitData:IsStudentClappedByUid(uid)
  77. return CommonUtil.EleInTable(uid, self.recruitData.clickMemberList)
  78. end
  79. function FriendRecruitData:InvitationNumberReq()
  80. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_NUMBER_REQ, {})
  81. end
  82. function FriendRecruitData:InvitationNumberAck(data)
  83. if data.error == Enum.NetErrorCode.ERROR_OK then
  84. end
  85. end
  86. function FriendRecruitData:InvitationNumberUserInfoReq(number)
  87. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_NUMBER_USER_INFO_REQ, {invitation_number = number})
  88. end
  89. function FriendRecruitData:InvitationNumberUserInfoAck(data)
  90. if data.error == Enum.NetErrorCode.ERROR_OK then
  91. local invitationTeaherBrief = ProtocalDataNormal.ParseCommonPlayerBriefInfo(data.brief)
  92. local teacherInvitationCount = data.member_num
  93. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.FRIEND_INVITATION_QUERY_MASTER_INFO, invitationTeaherBrief, teacherInvitationCount)
  94. end
  95. end
  96. function FriendRecruitData:InvitationBeToMemberReq(teacherNumber, teacherUid)
  97. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_BE_TO_MEMBER_REQ, {master_invitation_number = teacherNumber, master_uid = teacherUid})
  98. end
  99. function FriendRecruitData:InvitationBeToMemberAck(data)
  100. if data.error == Enum.NetErrorCode.ERROR_OK then
  101. end
  102. end
  103. function FriendRecruitData:InvitationClickReq(list)
  104. if self.recruitData.clickNum == 0 then
  105. return
  106. end
  107. if not list then
  108. list = {}
  109. for _,v in pairs(self.recruitData.memberUidList) do
  110. local uid = v.uid
  111. if not CommonUtil.EleInTable(uid, self.recruitData.clickMemberList) then
  112. if self.recruitData.clickNum == 0 then
  113. break
  114. end
  115. if self.recruitData.clickNum > 0 then
  116. self.recruitData.clickNum = self.recruitData.clickNum - 1
  117. list[#list + 1] = uid
  118. end
  119. end
  120. end
  121. else
  122. self.recruitData.clickNum = self.recruitData.clickNum - 1
  123. end
  124. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_CLICK_REQ, {member_uid_list = list})
  125. end
  126. function FriendRecruitData:InvitationClickAck(data)
  127. if data.error == Enum.NetErrorCode.ERROR_OK then
  128. CommonUtil.ACKShowRewardList(data.reward_item_list)
  129. end
  130. end
  131. function FriendRecruitData:InvitationClickReplayReq(uid)
  132. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_CLICK_REPLAY_REQ, {master_uid = uid})
  133. end
  134. function FriendRecruitData:InvitationClickReplayAck(data)
  135. if data.error == Enum.NetErrorCode.ERROR_OK then
  136. CommonUtil.ACKShowRewardList(data.reward_item_list)
  137. end
  138. end
  139. function FriendRecruitData:InvitationDelMemberReq(list)
  140. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_DEL_MEMBER_REQ, {del_member_uid_list = list})
  141. end
  142. function FriendRecruitData:InvitationDelMemberAck(data)
  143. if data.error == Enum.NetErrorCode.ERROR_OK then
  144. --删除学员
  145. if self.recruitData.memberUidList then
  146. local memberUidList = self.recruitData.memberUidList
  147. for i = 1,#data.del_member_uid_list do
  148. local uid = data.del_member_uid_list[i]
  149. for j = #memberUidList, 1, -1 do
  150. if uid == memberUidList[j].strVal then
  151. table.remove(memberUidList, j)
  152. end
  153. end
  154. end
  155. end
  156. end
  157. end
  158. function FriendRecruitData:InvitationTaskRewardReq(taskList)
  159. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_INVITATION_TASK_REWARD_REQ, {task_id_list = taskList})
  160. end
  161. function FriendRecruitData:InvitationTaskRewardAck(data)
  162. if data.error == Enum.NetErrorCode.ERROR_OK then
  163. CommonUtil.ACKShowRewardList(data.reward_item_list)
  164. end
  165. end
  166. function FriendRecruitData:QueryNextStudentBriefInfo()
  167. local count = #self.studentDatas
  168. local memberCount = #self.recruitData.memberUidList
  169. if count == memberCount then
  170. return false
  171. end
  172. local startIdx, endIdx = count + 1, count + 10
  173. if memberCount == 0 then
  174. return false
  175. end
  176. local length = math.min(endIdx, memberCount)
  177. local list = {}
  178. for i = startIdx, length do
  179. local data = self.recruitData.memberUidList[i]
  180. table.insert(list, data.uid)
  181. end
  182. if #list == 0 then
  183. return true
  184. end
  185. ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_GET_OTHER_PLAYER_BRIEF_INFO_REQ, {type=Enum.FriendTogglePageType.InvitationStudentListQuery, player_list=list})
  186. return true
  187. end
  188. function FriendRecruitData:OnStudentDatasRefresh(briefInfos)
  189. for i = 1, #briefInfos do
  190. local briefInfo = ProtocalDataNormal.ParseCommonPlayerBriefInfo(briefInfos[i])
  191. self.studentDatas[i] = briefInfo
  192. end
  193. ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.FRIEND_INVITATION_QUERY_STUDENT_LIST_INFO)
  194. end
  195. function FriendRecruitData:IsStudentListWhole()
  196. return #self.studentDatas == #self.recruitData.memberUidList
  197. end
  198. function FriendRecruitData:Clear()
  199. self.recruitData = nil
  200. self.delMemberUidList = nil
  201. self.studentDatas = nil
  202. self.invitationTeaherBrief = nil
  203. self.teacherInvitationCount = nil
  204. end
  205. return FriendRecruitData