MaiDianLogic.lua 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. --------------------------------
  2. -- 文件名 : MaiDianLogic.lua
  3. -- 文件说明 : 埋点处理
  4. -- 创建时间 : 2024/12/03
  5. -- 创建人 : FC
  6. --------------------------------
  7. local MaiDianDefine = require("MaiDian.MaiDianDefine")
  8. local Util = require("common.Util")
  9. local Log = require("common.Log")
  10. -- 埋点玩家信息
  11. tMaiDianPlay =
  12. {
  13. --[[
  14. [human.db._id] =
  15. {
  16. [类型] = value -- 当前类型所在的值
  17. }
  18. ]]
  19. }
  20. -- 写日志
  21. local function MaiDian_WriteLog(sztext)
  22. Log.write(Log.LOGID_OSS_MAIDIAN, sztext)
  23. end
  24. -- 排序
  25. local function MainDian_Sort(l, r)
  26. return l.key < r.key
  27. end
  28. -- 定时写日志
  29. function MaiDian_OnTime()
  30. print("[MaiDian_OnTime] 写日志开始")
  31. if not tMaiDianPlay or not _G.next(tMaiDianPlay) then
  32. print("[MaiDian_OnTime] 无数据直接返回")
  33. return
  34. end
  35. local tTotalInfo = {}
  36. -- 先汇总
  37. for _, tTypeData in pairs(tMaiDianPlay) do
  38. for nType, v in pairs(tTypeData) do
  39. if not tTotalInfo[nType] then
  40. tTotalInfo[nType] = {}
  41. end
  42. if not tTotalInfo[nType][v] then
  43. tTotalInfo[nType][v] = {
  44. key = v,
  45. nValue = 0
  46. }
  47. end
  48. tTotalInfo[nType][v].nValue = tTotalInfo[nType][v].nValue + 1
  49. end
  50. end
  51. local tSortData ={}
  52. for nType, tData in pairs(tTotalInfo) do
  53. if not tSortData[nType] then
  54. tSortData[nType] = {}
  55. end
  56. for key, v in pairs(tData) do
  57. table.insert(tSortData[nType], v)
  58. end
  59. table.sort(tSortData[nType], MainDian_Sort)
  60. end
  61. for nType, tData in pairs(tSortData) do
  62. local sztext = " nType = "..nType.." "
  63. for key, v in pairs(tData) do
  64. sztext = sztext.."{"..v.key..","..v.nValue.."},"
  65. end
  66. MaiDian_WriteLog(sztext)
  67. end
  68. print("[MaiDian_OnTime] 写日志结束 ")
  69. -- 重置
  70. tMaiDianPlay = {}
  71. end
  72. -- 回调
  73. function MaiDian_Begin(human, nType, tData)
  74. if not human or MaiDianDefine.MAIDIAN_TYPE_MIN > nType or MaiDianDefine.MAIDIAN_TYPE_MAX < nType or not tData then
  75. return
  76. end
  77. if "table" ~= type(tData) then
  78. print("[MaiDian_Begin] 不正确的value")
  79. return
  80. end
  81. local nValue = tData.nValue
  82. local nHumanID = human.db._id
  83. if not tMaiDianPlay[nHumanID] then
  84. tMaiDianPlay[nHumanID] = {}
  85. end
  86. tMaiDianPlay[nHumanID][nType] = nValue
  87. end