Logininfo.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\common\model;
  3. use think\Cache;
  4. /**
  5. * 前台用户登录日志表
  6. *
  7. */
  8. class Logininfo extends \think\Model
  9. {
  10. protected $pk = 'id';
  11. protected $table = 'cy_logininfo';
  12. protected $limitInsertExpire= 20; //玩家登录日志插入的限制时间
  13. /**
  14. * 判断一个渠道是否活跃渠道
  15. * @param int $channel_id
  16. * @param int $gameid
  17. * @param int $day_limit
  18. * @return boolean
  19. */
  20. public function isActiveChannel($channel_id, $gameid, $day_limit){
  21. $map = [];
  22. $map['channel_id'] = $channel_id;
  23. $map['gameid'] = $gameid;
  24. $map['login_time'] = array('gt',NOW_TIMESTAMP - abs($day_limit)*86400);
  25. /*
  26. $login_time = $this
  27. ->where($map)
  28. ->order('id DESC')
  29. ->value('login_time');
  30. if(!empty($login_time)) {
  31. if((NOW_TIMESTAMP-$login_time) < (abs($day_limit)*86400) ) {
  32. return true;
  33. }
  34. }
  35. */
  36. $LoginInfo = $this->where($map)->find();
  37. // var_dump($LoginInfo);
  38. if(!empty($LoginInfo)){
  39. return true;
  40. }
  41. return false;
  42. }
  43. /**
  44. * 限制玩家登录日志插入处理
  45. *
  46. * @param $data: array 插入的数据
  47. */
  48. public function limitInsert($data)
  49. {
  50. $userid = $data['userid'];
  51. $gameid = $data['gameid'];
  52. $sub_id = $data['sub_id'];
  53. // 限制插入登录日志的redis
  54. $cache_key = 'logininfo_insert_limit:'.$userid.':'.$gameid.':'.$sub_id;
  55. $redis = Cache::store('default');
  56. //限制插入登录日志的redis不存在时
  57. if(!$redis->has($cache_key)) {
  58. $this->insert($data);
  59. $redis->set($cache_key, '', $this->limitInsertExpire);
  60. }
  61. }
  62. }