StatisticsProc.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. <?php
  2. /*
  3. * To change this license header, choose License Headers in Project Properties.
  4. * To change this template file, choose Tools | Templates
  5. * and open the template in the editor.
  6. */
  7. namespace loyalsoft;
  8. /**
  9. * Description of StatisticsProc
  10. *
  11. * @author cyzhao
  12. */
  13. class StatisticsProc {
  14. /**
  15. * 已经完成新手引导的玩家记录
  16. * @param type $uid
  17. * @param type $index
  18. */
  19. static function NewbieGuideRecord($uid,$index) {
  20. if($index == 2){//现在游戏新手引导就2步
  21. $key = "NewbieGuideRecord-".req()->zoneid;
  22. gMem()->lpush($key, $uid);
  23. }
  24. }
  25. /**
  26. * 玩家自己任务完成统计-----每日任务进度变化--主线,学院,日程,悬赏的任务全记录在这
  27. * @param type $id
  28. */
  29. static function SelfTaskDataCollect($taskId) {
  30. $task = $taskId."-".time();
  31. $arr = array();
  32. $arr[] = $task;
  33. $num = gMem()->rpush("SelfTaskDataCollect-".req()->uid."-". req()->zoneid, $arr);
  34. }
  35. /**
  36. * 全区:记录uid-主线任务id,玩家做任务更新id,以获取最高任务--------主线,学院,日程,悬赏的任务全记录在这
  37. * @param type $taskId
  38. */
  39. static function TaskDataCollect($taskId) {
  40. $taskMo = GameConfig::item_taskcard_getItem($taskId);
  41. if($taskMo->type == 1){//主线
  42. $key = "TaskDataCollect-".req()->zoneid;
  43. gMem()->hset($key, req()->uid, $taskId);
  44. } else {//主线任务外其他的
  45. $key = "TaskDataCollectOther-".req()->zoneid;
  46. gMem()->hset($key, req()->uid, $taskId);
  47. }
  48. }
  49. /**
  50. * 全区--玩家解锁课程进度:uid-courseId
  51. * @param type $courseId
  52. */
  53. static function UserCourseIngRecord($courseId){
  54. $key = "UserCourseIngRecord-".req()->zoneid;
  55. gMem()->hset($key, req()->uid, $courseId);
  56. }
  57. /*
  58. * 统计全区------玩家最新解锁建筑
  59. */
  60. static function unlockBuild($buildId) {
  61. $key = "unlockBuild-".req()->zoneid;
  62. gMem()->hset($key, req()->uid, $buildId);
  63. }
  64. /**
  65. * 统计全区------玩家最新解锁关卡
  66. * @param type $gateId
  67. */
  68. static function unlockGate($gateId) {
  69. $key = "unlockGate-".req()->zoneid;
  70. gMem()->hset($key, req()->uid, $gateId);
  71. }
  72. /*
  73. * 某言灵的拥有人数
  74. */
  75. static function yanling_UserNumRecord($yanlingId) {
  76. $key = "yanling_UserNumRecord-".req()->zoneid;
  77. $arr = array();
  78. if(gMem()->hexists($key, $yanlingId)){
  79. $arr = gMem()->hget($key, $yanlingId);
  80. }
  81. if(!in_array(req()->uid, $arr)){
  82. $arr[] = req()->uid;
  83. }
  84. gMem()->hset($key,$yanlingId, $arr);
  85. }
  86. /**
  87. * $yanlingId
  88. * @param type $yanlingId
  89. * @param type $type 1 代表装备(替换)//0代表卸载
  90. */
  91. static function yanlingEquipRecord($yanlingId,$type) {
  92. $key = "yanlingEquipRecord-".req()->zoneid;
  93. $arr = array();
  94. if(gMem()->hexists($key, $yanlingId)){
  95. $arr = gMem()->hget($key, $yanlingId);
  96. }
  97. if($type == 1){
  98. $arr[] = req()->uid;
  99. gMem()->hset($key,$yanlingId, req()->uid);
  100. } else {
  101. if(in_array(req()->uid, $arr)){
  102. $arrNew = array();
  103. foreach ($arr as $uid) {
  104. if($uid == req()->uid){
  105. continue;
  106. }
  107. $arrNew[] = $uid;
  108. }
  109. gMem()->hset($key,$yanlingId,req()->uid);
  110. }
  111. }
  112. }
  113. static function dailyTaskInit() {
  114. $list = GameConfig::item_taskcard_type_getItemArray(2);
  115. if($list == null || count($list) == 0){
  116. return;
  117. }
  118. $key = "TargetStatistics-".req()->zoneid;
  119. foreach ($list as $value) {
  120. $str = "dailyTaskId_ComUserNum-".$value->typeId;
  121. if(gMem()->hexists($key, $str)){
  122. break;
  123. }
  124. gMem()->hset($key,$str,0);
  125. }
  126. }
  127. /**
  128. *
  129. * @param type $type
  130. * @param type $id--id
  131. * @param type $ctx 当前指标
  132. * @param type $lastCtx 前一个指标 需要减一
  133. */
  134. static function TargetStatistics($type,$id = 0,$ctx = "0",$lastCtx = 0) {
  135. $key = "TargetStatistics-".req()->zoneid;
  136. $specialArr = array();
  137. switch ($type) {
  138. case Enum_TargetStatistics::registerUserNum:
  139. $field = "registerUserNum";
  140. break;
  141. case Enum_TargetStatistics::comNewGuide_UserNum:
  142. $field = "comNewGuideUserNum";
  143. break;
  144. case Enum_TargetStatistics::unlockbuidId:
  145. $field = "unlockbuidId-".$id;
  146. break;
  147. case Enum_TargetStatistics::mainTaskId_ComUserNum:
  148. $field = "mainTaskId_ComUserNum-".$id;
  149. break;
  150. case Enum_TargetStatistics::shopTaskId_ComUserNum:
  151. $field = "shopTaskId_ComUserNum-".$id;
  152. break;
  153. case Enum_TargetStatistics::shopTaskId_BuyUserNum:
  154. $field = "shopTaskId_BuyUserNum-".$id;
  155. break;
  156. case Enum_TargetStatistics::collegeTaskId_ComUserNum:
  157. $field = "collegeTaskId_ComUserNum-".$id;
  158. break;
  159. case Enum_TargetStatistics::collegeCouseId_UnlockUserNum:
  160. $field = "collegeCouseId_UnlockUserNum-".$id;
  161. break;
  162. case Enum_TargetStatistics::dailyTaskId_ComUserNum:
  163. $field = "dailyTaskId_ComUserNum-".$id;
  164. break;
  165. case Enum_TargetStatistics::storyGateId_ComUserNum:
  166. $field = "storyGateId_ComUserNum-".$id;
  167. break;
  168. case Enum_TargetStatistics::storyGateId_BattleNum:
  169. $field = "storyGateId_BattleNum-".$id;
  170. $specialArr[] = Enum_TargetStatistics::storyGateId_BattleNum;
  171. break;
  172. case Enum_TargetStatistics::HuanLingShiGateId_ComUserNum:
  173. $field = "HuanLingShiGateId_ComUserNum-".$id;
  174. break;
  175. case Enum_TargetStatistics::HuanLingShiGateId_BattleNum:
  176. $field = "HuanLingShiGateId_BattleNum-".$id;
  177. $specialArr[] = Enum_TargetStatistics::HuanLingShiGateId_BattleNum;
  178. break;
  179. case Enum_TargetStatistics::WeaponGateId_ComUserNum:
  180. $field = "WeaponGateId_ComUserNum-".$id;
  181. break;
  182. case Enum_TargetStatistics::WeaponGateId_BattleNum:
  183. $field = "WeaponGateId_BattleNum-".$id;
  184. $specialArr[] = Enum_TargetStatistics::WeaponGateId_BattleNum;
  185. break;
  186. case Enum_TargetStatistics::YanLingGateId_ComUserNum:
  187. $field = "YanLingGateId_ComUserNum-".$id;
  188. break;
  189. case Enum_TargetStatistics::YanLingGateId_BattleNum:
  190. $field = "YanLingGateId_BattleNum-".$id;
  191. $specialArr[] = Enum_TargetStatistics::YanLingGateId_BattleNum;
  192. break;
  193. case Enum_TargetStatistics::userlevel:
  194. $field = "userlevel-".$id;
  195. $fieldNew = "userlevel-".$lastCtx;
  196. break;
  197. case Enum_TargetStatistics::newUserLotteryDraw_one:
  198. $field = "newUserLotteryDraw_one";
  199. break;
  200. case Enum_TargetStatistics::newUserLotteryDraw_ten:
  201. $field = "newUserLotteryDraw_ten";
  202. break;
  203. case Enum_TargetStatistics::yanLingLotteryDraw_one:
  204. $field = "yanLingLotteryDraw_one";
  205. break;
  206. case Enum_TargetStatistics::yanLingLotteryDraw_ten:
  207. $field = "yanLingLotteryDraw_ten";
  208. break;
  209. case Enum_TargetStatistics::weaponLotteryDraw_one:
  210. $field = "weaponLotteryDraw_one";
  211. break;
  212. case Enum_TargetStatistics::weaponLotteryDraw_ten:
  213. $field = "weaponLotteryDraw_ten";
  214. break;
  215. case Enum_TargetStatistics::commonLotteryDraw_one:
  216. $field = "commonLotteryDraw_one";
  217. break;
  218. case Enum_TargetStatistics::commonLotteryDraw_ten:
  219. $field = "commonLotteryDraw_ten";
  220. break;
  221. case Enum_TargetStatistics::HuanLingShiLevel_UserNum:
  222. $field = "HuanLingShiLevel_UserNum-".$id."-level".$ctx;
  223. $fieldNew = "HuanLingShiLevel_UserNum-".$id."-level".$lastCtx;
  224. break;
  225. case Enum_TargetStatistics::HuanLingShiId_UserNum:
  226. $field = "HuanLingShiId_UserNum-".$id;
  227. break;
  228. case Enum_TargetStatistics::YanLingId_UserNum:
  229. $field = "YanLingId_UserNum-".$id;
  230. break;
  231. case Enum_TargetStatistics::YanLingIdLevel_UserNum:
  232. $field = "YanLingIdLevel_UserNum-".$id."-level".$ctx;
  233. $fieldNew ="YanLingIdLevel_UserNum-".$id."-level".$lastCtx;
  234. break;
  235. case Enum_TargetStatistics::WeaponId_UserNum:
  236. $field = "WeaponId_UserNum-".$id;
  237. break;
  238. case Enum_TargetStatistics::WeaponIdLevel_UserNum:
  239. $field = "WeaponIdLevel_UserNum-".$id."-level".$ctx;
  240. $fieldNew = "WeaponIdLevel_UserNum-".$id."-level".$lastCtx;
  241. break;
  242. default:
  243. break;
  244. }
  245. if(in_array($type,$specialArr)){
  246. $val = gMem()->hget($key,$field);
  247. if($val == null){
  248. $val = $ctx;
  249. } else {
  250. $vlist = explode('/',$val);
  251. $clist = explode('/',$ctx);
  252. $n1 = $vlist[0]+$clist[0];
  253. $n2 = $vlist[1]+$clist[1];
  254. $val = $n1."/".$n2;
  255. }
  256. gMem()->hset($key,$field,$val);
  257. } else {
  258. if($lastCtx != null){
  259. $count = gMem()->hget($key,$fieldNew);
  260. if($count != null){
  261. $count -= 1;
  262. if($count <= 0){
  263. $count = 0;
  264. }
  265. gMem()->hset($key,$field,$count);
  266. }
  267. }
  268. // $count = gMem()->hget($key,$field);
  269. // if($count == null){
  270. // $count = 0;
  271. // }
  272. // gMem()->hset($key,$field,$count+1);
  273. gMem()->hincrby($key, $field, 1);
  274. }
  275. }
  276. }