ServerCommerceMiddle.lua 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. local Util = require("common.Util")
  2. local WarZoneConf = require("excel.WarZone")
  3. local MiddleConnect = require("middle.MiddleConnect")
  4. local MiddleManager = require("middle.MiddleManager")
  5. local InnerMsg = require("core.InnerMsg")
  6. local Config = require("Config")
  7. local CommonDB = require("common.CommonDB")
  8. local Timer = require("core.Timer")
  9. local CommonDefine = require("common.CommonDefine")
  10. local ServerCommerceManger = require("serverCommerce.ServerCommerceManager")
  11. local ServerCommerceActDefine = require("serverCommerce.ServerCommerceActDefine")
  12. local ServerCommerceRank = require("serverCommerce.ServerCommerceActRank")
  13. -- 缓存开服天数
  14. local tServerOpenDay = nil
  15. local SERVERCOMMERCEOPENDAY = 8 -- 活动开启要求天数
  16. -- 起服获取信息
  17. function CommerceMiddle_InitServer()
  18. if _G.is_middle ~= true then
  19. return
  20. end
  21. Timer.addLater(ServerCommerceActDefine.COMMERCEACT_INITOPENDAY, CommerceMiddle_GetOpen)
  22. print("[CommerceMiddle_InitServer] 起服定时去获取数据 nTime = "..ServerCommerceActDefine.COMMERCEACT_INITOPENDAY)
  23. end
  24. -- 获取(中心服主动去获取)
  25. function CommerceMiddle_GetOpen()
  26. if _G.is_middle ~= true then
  27. return
  28. end
  29. print("[CommerceMiddle_GetOpen] 开始去获取服务器开启信息")
  30. local tWarZoneConf = WarZoneConf.group
  31. for _, v in ipairs(tWarZoneConf) do
  32. local nFirstServerID = MiddleConnect.MiddleConnect_ConfServerID2TrueServerID(v.nMinServerID)
  33. print("[CommerceMiddle_GetOpen] nMinServerID = "..v.nMinServerID.." nFirstServerID = "..nFirstServerID)
  34. local fd = MiddleManager.getFDBySvrIndex(nFirstServerID)
  35. if fd then
  36. print("[CommerceMiddle_GetOpen] 中心服主动去获取数据 nFirstServerID = "..nFirstServerID)
  37. local tMsgData = InnerMsg.wl.WL_COMMERCE_QUERYOPENDAY
  38. InnerMsg.sendMsg(fd, tMsgData)
  39. print("[CommerceMiddle_GetOpen] 发送结束")
  40. else
  41. print("[CommerceMiddle_GetOpen] 中心服主动去获取数据, 但是获取不到fd nFirstServerID = "..nFirstServerID)
  42. end
  43. end
  44. end
  45. -- 回复开服天数
  46. function CommerceMiddle_SendOpenDay(fd, msg)
  47. local nOpenDay = msg.nOpenDay
  48. local nServerConfID = MiddleConnect.MiddleConnect_TrueServerID2ConfServerID(msg.nSrcServerID)
  49. if not tServerOpenDay then
  50. tServerOpenDay = {}
  51. end
  52. tServerOpenDay[nServerConfID] = nOpenDay
  53. print("[CommerceMiddle_SendOpenDay] 回复开服天数 nServerConfID = "..nServerConfID.." nOpenDay = "..nOpenDay)
  54. end
  55. -- 请求开服天数
  56. function CommerceMiddle_QueryOpenDay(fd, msg)
  57. local tMsgData = InnerMsg.lw.LW_COMMERCE_SENDOPENDAY
  58. tMsgData.nOpenDay = CommonDB.getServerOpenDay()
  59. tMsgData.nSrcServerID = Config.SVR_INDEX
  60. InnerMsg.sendMsg(0, tMsgData)
  61. print("[CommerceMiddle_QueryOpenDay] 请求开服天数")
  62. end
  63. function CommerceMiddle_QueryOpenAct(fd, msg)
  64. local nConfServerID = MiddleConnect.MiddleConnect_TrueServerID2ConfServerID(msg.nSrcServerID)
  65. local nFirstServerID
  66. for _, v in ipairs(WarZoneConf.group) do
  67. if v.nMinServerID <= nConfServerID and v.nMaxServerID >= nConfServerID then
  68. nFirstServerID = v.nMinServerID
  69. break
  70. end
  71. end
  72. if nil == nFirstServerID or not tServerOpenDay or not tServerOpenDay[nFirstServerID] then
  73. print("[QueryOpenAct] 获取不到战区的第一个服务器\n")
  74. return
  75. end
  76. local nSrcFD = MiddleManager.getFDBySvrIndex(msg.nSrcServerID)
  77. if not nSrcFD then
  78. return
  79. end
  80. local tMsgData = InnerMsg.wl.WL_COMMERCE_ACTOPEN
  81. tMsgData.nOpen = tServerOpenDay[nFirstServerID] >= SERVERCOMMERCEOPENDAY and 1 or 0
  82. tMsgData.nOperate = msg.nOperate
  83. tMsgData.nServerKey = nFirstServerID
  84. InnerMsg.sendMsg(nSrcFD, tMsgData)
  85. print("[CommerceMiddle_QueryOpenAct] 请求中心服活动是否开启 nOpen = "..tMsgData.nOpen)
  86. end
  87. function CommerceMiddle_SendOpenAct(fd, msg)
  88. print("[CommerceMiddle_SendOpenAct] 获取到中心服发送的是否开服数据 nOpen = "..msg.nOpen)
  89. ServerCommerceManger.CommerceAct_ActCheckOpen(msg.nOpen, msg.nOperate, msg.nServerKey)
  90. end
  91. -- 发送玩家排行榜信息
  92. function CommerveMiddle_HumanPointChange(human, nPoint)
  93. local tMsgData = InnerMsg.lw.LW_COMMERCE_RANK_POINT_CHANGE
  94. tMsgData.uuid = human.db._id
  95. tMsgData.name = human.db.name
  96. tMsgData.head = human.db.head
  97. tMsgData.headFrame = human.db.headFrame
  98. tMsgData.nSrcServerID = Config.SVR_INDEX
  99. tMsgData.nValue = nPoint
  100. tMsgData.nRankType = CommonDefine.COMMONRANK_TYPE_SERVERCOMMERCE
  101. tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_HUMAN
  102. tMsgData.nOperate = CommonDefine.COMMONRANK_VALUE_REPLACE
  103. tMsgData.servername = "寻宝"..Config.NEW_SVR_INDEX.."区"
  104. InnerMsg.sendMsg(0, tMsgData)
  105. print("[CommerveMiddle_HumanPointChange] 发送玩家排行榜信息结束 name = "..tMsgData.name.." nValue = "..tMsgData.nValue)
  106. end
  107. -- 服务器点数改变发送排行榜信息
  108. function CommerveMiddle_ServerPointChange(nPoint)
  109. local tMsgData = InnerMsg.lw.LW_COMMERCE_RANK_POINT_CHANGE
  110. tMsgData.uuid = Config.NEW_SVR_INDEX
  111. tMsgData.name = "寻宝"..Config.NEW_SVR_INDEX.."区"
  112. tMsgData.head = -1
  113. tMsgData.headFrame = -1
  114. tMsgData.nSrcServerID = Config.SVR_INDEX
  115. tMsgData.nValue = nPoint
  116. tMsgData.nRankType = CommonDefine.COMMONRANK_TYPE_SERVERCOMMERCE
  117. tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_SERVER
  118. tMsgData.nOperate = CommonDefine.COMMONRANK_VALUE_REPLACE
  119. tMsgData.servername = "寻宝"..Config.NEW_SVR_INDEX.."区"
  120. InnerMsg.sendMsg(0, tMsgData)
  121. print("[CommerveMiddle_HumanPointChange] 发送服务器排行榜信息结束 name = "..tMsgData.name.." nValue = "..tMsgData.nValue)
  122. end
  123. -- 请求排行榜数据
  124. function CommerveMiddle_QueryRankInfo(nRankType, nRankSubType)
  125. local tMsgData = InnerMsg.lw.LW_COMMERCE_QUERY_RANK_INFO
  126. tMsgData.nRankType = nRankType
  127. tMsgData.nRankSubType = nRankSubType
  128. tMsgData.nSrcServerID = Config.SVR_INDEX
  129. InnerMsg.sendMsg(0, tMsgData)
  130. print("[CommerveMiddle_QueryRankInfo] 向中心服请求排行榜数据")
  131. end
  132. -- 获取到排行榜数据
  133. function CommerveMiddle_GetRankInfo(tData)
  134. ServerCommerceRank.CommercerActRank_GetRankInfo(tData)
  135. end
  136. ------------------ 活动管理器操作 ------------------------
  137. -- 请求活动是否开启
  138. function CommerceMiddle_IsActOpen(nOperate)
  139. local tMsgData = InnerMsg.lw.LW_COMMERCE_ACTOPEN
  140. tMsgData.nSrcServerID = Config.SVR_INDEX
  141. tMsgData.nOperate = nOperate
  142. InnerMsg.sendMsg(0, tMsgData)
  143. print("[CommerceMiddle_IsActOpen] 普通服开始请求活动信息")
  144. end
  145. -- 请求当前服务器排行最新的排名
  146. function CommerceMiddle_QueryServerRank(nOperate)
  147. local tMsgData = InnerMsg.lw.LW_COMMERCE_QUERY_SERVER_RANK
  148. tMsgData.nSrcServerID = Config.SVR_INDEX
  149. tMsgData.nServerUuid = tostring(Config.NEW_SVR_INDEX)
  150. tMsgData.nOperate = nOperate
  151. InnerMsg.sendMsg(0, tMsgData)
  152. end
  153. -- 获取到 当前服务器排行最新的排名
  154. function CommerceMiddle_GetServerRank(msg)
  155. ServerCommerceRank.CommercerActRank_GetServerRank(msg)
  156. end
  157. -- 通知中心服当前服务器在线全服玩家邮件结束
  158. function CommerceMiddle_TellServerMailOk()
  159. local tMsgData = InnerMsg.lw.LW_COMMERCE_TELL_SERVER_MAILOK
  160. tMsgData.nSrcServerID = Config.SVR_INDEX
  161. InnerMsg.sendMsg(0, tMsgData)
  162. print("[CommerceMiddle_TellServerMailOk] 通知中心服当前服务器在线全服玩家邮件结束")
  163. end
  164. function CommerceMiddle_GetHumanRank(msg)
  165. ServerCommerceRank.CommercerActRank_SendHumanRankPrize(msg)
  166. end
  167. function CommerceMiddle_ClearRank()
  168. local tMsgData = InnerMsg.lw.LW_COMMERCE_CLEAR_RANK
  169. tMsgData.nRankType = CommonDefine.COMMONRANK_TYPE_SERVERCOMMERCE
  170. tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_SERVER
  171. tMsgData.nSrcServerID = Config.SVR_INDEX
  172. InnerMsg.sendMsg(0, tMsgData)
  173. tMsgData.nRankSubType = CommonDefine.COMMONRANK_SUB_TYPE_SERVERCOMMERCE_HUMAN
  174. InnerMsg.sendMsg(0, tMsgData)
  175. end
  176. function CommerceMiddle_GMClearMiddleMail()
  177. local tMsgData = InnerMsg.lw.LW_COMMERCE_GM_CLEAR_MAIL
  178. tMsgData.nSrcServerID = Config.SVR_INDEX
  179. InnerMsg.sendMsg(0, tMsgData)
  180. end