GuaGuaService.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace bizHd\promote\services;
  3. use bizHd\base\services\BaseService;
  4. use bizHd\promote\classes\GuaGuaClass;
  5. use Yii;
  6. class GuaGuaService extends BaseService
  7. {
  8. public static $baseFile = '\bizHd\promote\classes\GuaGuaClass';
  9. //将刮刮卡缓存保存到数据库 ssh 2019.8.12
  10. public static function putGuaCacheToSave()
  11. {
  12. $list = [['id' => 22, 'drawUser' => 1, 'visitUser' => 2, 'visitNum' => 3, 'winUser' => 3]];
  13. foreach ($list as $card) {
  14. $id = $card['id'];
  15. $data = [];
  16. $yesterday = date("Ymd", strtotime("-1 day"));
  17. //昨天的访问次数
  18. $visitKey = GuaGuaClass::getGuGuaVisitCacheKey($id, $yesterday);
  19. $num = Yii::$app->redis->executeCommand('GET', [$visitKey]);
  20. if (is_numeric($num)) {
  21. Yii::$app->redis->executeCommand('DEL', [$visitKey]);
  22. $data['visitNum'] = $card['visitNum'] + $num;
  23. }
  24. //昨天的访问人数
  25. $visitUserKey = GuaGuaClass::getGuaGuaVisitUserCacheKey($id, $yesterday);
  26. $userNum = Yii::$app->redis->executeCommand('ZCARD', [$visitUserKey]);
  27. if (is_numeric($userNum)) {
  28. $data['visitUser'] = $card['visitUser'] + $userNum;
  29. }
  30. if (!empty($data)) {
  31. GuaGuaService::updateById($id, $data);
  32. }
  33. Yii::$app->redis->executeCommand('DEL', [$visitKey]);
  34. Yii::$app->redis->executeCommand('DEL', [$visitUserKey]);
  35. }
  36. }
  37. //访问次数和用户数增加 ssh 2019.8.12
  38. public static function addVisit($id, $userId)
  39. {
  40. $key = GuaGuaClass::getGuGuaVisitCacheKey($id);
  41. Yii::$app->redis->executeCommand('INCR', [$key]);
  42. if (isset(Yii::$app->params['isLogin'])) {
  43. $key = GuaGuaClass::getGuaGuaVisitUserCacheKey($id);
  44. Yii::$app->redis->executeCommand('SADD', [$key, $userId]);
  45. }
  46. }
  47. /**
  48. * 获取当前总访问量 ssh 2019.8.12
  49. * a.昨天的缓存+今天的缓存+数据库的就是总数
  50. * b.如果每天凌晨00:30跑脚本,00:00 - 00:30时段会出现昨天今天都有缓存数据
  51. */
  52. public static function getCurrentVisitNum($card)
  53. {
  54. $id = $card['id'];
  55. //今天
  56. $key = GuaGuaClass::getGuGuaVisitCacheKey($id);
  57. $todayNum = Yii::$app->redis->executeCommand('GET', [$key]);
  58. $todayNum = is_numeric($todayNum) ? $todayNum : 0;
  59. //昨天
  60. $yesterday = date("Ymd", strtotime("-1 day"));
  61. $yesKey = GuaGuaClass::getGuGuaVisitCacheKey($id, $yesterday);
  62. $yesNum = Yii::$app->redis->executeCommand('GET', [$yesKey]);
  63. $yesNum = is_numeric($yesNum) ? $yesNum : 0;
  64. //总数
  65. $total = $card['visitNum'] + $todayNum + $yesNum;
  66. return $total;
  67. }
  68. /**
  69. * 获取当前访问用户的总数量 ssh 2019.8.12
  70. * a.昨天的缓存+今天的缓存+数据库的就是总数
  71. * b.如果每天凌晨00:30跑脚本,00:00 - 00:30时段会出现昨天今天都有缓存数据
  72. */
  73. public static function getCurrentVisitUserNum($card)
  74. {
  75. $id = $card['id'];
  76. //今天
  77. $key = GuaGuaClass::getGuaGuaVisitUserCacheKey($id);
  78. $todayNum = Yii::$app->redis->executeCommand('SCARD', [$key]);
  79. $todayNum = is_numeric($todayNum) ? $todayNum : 0;
  80. //昨天
  81. $yesterday = date("Ymd", strtotime("-1 day"));
  82. $yesKey = GuaGuaClass::getGuaGuaVisitUserCacheKey($id, $yesterday);
  83. $yesNum = Yii::$app->redis->executeCommand('SCARD', [$yesKey]);
  84. $yesNum = is_numeric($yesNum) ? $yesNum : 0;
  85. //总数
  86. $total = $todayNum + $card['visitUser'] + $yesNum;
  87. return $total;
  88. }
  89. //取最新的活动id,没有活动返回0 ssh 2019.9.25
  90. public static function getNewestId($sjId)
  91. {
  92. $respond = self::getByCondition(['sjId' => $sjId], true, 'id desc');
  93. $id = !empty($respond) ? $respond->id : 0;
  94. return $id;
  95. }
  96. }