Activity.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace app\common\model;
  3. use app\common\library\Redis;
  4. use think\Model;
  5. class Activity extends Model
  6. {
  7. // 表名
  8. protected $table = 'activity';
  9. // 自动写入时间戳字段
  10. protected $autoWriteTimestamp = 'int';
  11. // 定义时间戳字段名
  12. protected $createTime = 'createtime';
  13. protected $updateTime = 'updatetime';
  14. // 追加属性
  15. protected $append = [
  16. 'starttime_text',
  17. 'endtime_text',
  18. 'status_text',
  19. 'pop_status_text'
  20. ];
  21. public function getStatusList()
  22. {
  23. return ['1' => __('正常'),'0' => __('隐藏')];
  24. }
  25. public function getPopStatusList()
  26. {
  27. return ['1' => __('开启'),'0' => __('关闭')];
  28. }
  29. public function getStarttimeTextAttr($value, $data)
  30. {
  31. $value = $value ? $value : $data['starttime'];
  32. return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
  33. }
  34. public function getPopRangeList()
  35. {
  36. return ['0' => __('最近阅读'),'1' => __('男生'),'2' => __('女生'),'3' => __('个人中心'),'4' => __('分类'),'5' => __('免费'),'6' => __('完本')];
  37. }
  38. public function getEndtimeTextAttr($value, $data)
  39. {
  40. $value = $value ? $value : $data['endtime'];
  41. return is_numeric($value) ? date("Y-m-d H:i:s", intval($value)) : $value;
  42. }
  43. public function getStatusTextAttr($value, $data)
  44. {
  45. $value = $value ? $value : $data['status'];
  46. $list = $this->getStatusList();
  47. return isset($list[$value]) ? $list[$value] : '';
  48. }
  49. public function getPopStatusTextAttr($value, $data)
  50. {
  51. $value = $value ? $value : $data['pop_status'];
  52. $list = $this->getPopStatusList();
  53. return isset($list[$value]) ? $list[$value] : '';
  54. }
  55. protected function setStarttimeAttr($value)
  56. {
  57. return $value && !is_numeric($value) ? strtotime($value) : $value;
  58. }
  59. protected function setEndtimeAttr($value)
  60. {
  61. return $value && !is_numeric($value) ? strtotime($value) : $value;
  62. }
  63. protected function setPopstarttimeAttr($value)
  64. {
  65. return $value && !is_numeric($value) ? strtotime($value) : $value;
  66. }
  67. protected function setPopendtimeAttr($value)
  68. {
  69. return $value && !is_numeric($value) ? strtotime($value) : $value;
  70. }
  71. /**
  72. * 检查是不是渠道自定义活动
  73. * @param $activity_id
  74. * @return bool
  75. */
  76. public function checkIsChannelActivity($activity_id)
  77. {
  78. if (!$res = model('Activity')->where('id', $activity_id)->find()) {
  79. return false;
  80. }
  81. if (intval($res['type']) == 1) {
  82. return true;
  83. }
  84. return false;
  85. }
  86. /**
  87. * 检查是不是赠币活动
  88. * @param $activity_id
  89. * @return bool
  90. */
  91. public function checkIsGiveActivity($activity_id)
  92. {
  93. if (!$res = model('Activity')->getInfo($activity_id)) {
  94. return false;
  95. }
  96. if (intval($res['type']) == 3) {
  97. return true;
  98. }
  99. return false;
  100. }
  101. /**
  102. * 加活动信息
  103. * @param $activity_id
  104. * @return array
  105. * @throws \think\Exception
  106. */
  107. public function getInfo($activity_id)
  108. {
  109. $row = [];
  110. $key = 'A-I:'.$activity_id;
  111. $redis = Redis::instance();
  112. if ($redis->exists($key)) {
  113. $redis_key_type = $redis->type($key);
  114. if($redis_key_type == \Redis::REDIS_STRING){
  115. $row = [];
  116. }else{
  117. $row = $redis->hGetAll($key);
  118. }
  119. } else {
  120. $rowModel = model('Activity')->where('id', $activity_id)->find();
  121. if ($rowModel) {
  122. $row = $rowModel->toArray();
  123. $redis->hMSet($key, $row);
  124. $redis->expire($key, 600);
  125. } else {
  126. $redis->set($key, 'null', 600);
  127. }
  128. }
  129. return $row;
  130. }
  131. }