Subject.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <?php
  2. namespace app\api\controller\newvote;
  3. use app\common\controller\Api;
  4. use think\Db;
  5. use think\cache;
  6. /**
  7. * 投票
  8. */
  9. class Subject extends Api
  10. {
  11. protected $noNeedLogin = ['*'];
  12. protected $noNeedRight = ['*'];
  13. //进行中的唯一一个投票活动
  14. public function info(){
  15. $find = Db::name('vote_subject')->where('status',1)->order('id desc')->find();
  16. if(!$find){
  17. $this->error('没有进行中的投票活动');
  18. }
  19. $find = info_domain_image($find,['video_file']);
  20. $this->success(1,$find);
  21. }
  22. //获取活动分享链接
  23. public function activelink() {
  24. $access_token = Cache::get('access_token_link');
  25. if (!$access_token) {
  26. //获取$access_token
  27. $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.config('wxMiniProgram.appid').'&secret='.config('wxMiniProgram.secret');
  28. $result = file_get_contents($url);
  29. $result = json_decode($result, true);
  30. $access_token = $result['access_token'];
  31. //缓存
  32. Cache::set('access_token_link', $access_token, 7000);
  33. }
  34. if (!$access_token) {
  35. $this->error('参数缺失');
  36. }
  37. $data['page_url'] = 'pages/login/login';
  38. $data['page_title'] = '玫瑰少年rose';
  39. $data = json_encode($data, 320);
  40. $url = 'https://api.weixin.qq.com/wxa/genwxashortlink?access_token='.$access_token;
  41. $rs = httpRequest($url, 'POST', $data);
  42. $rs = json_decode($rs, true);
  43. dump($rs);
  44. if ($rs['errcode'] != 0) {
  45. $this->error('网络延迟');
  46. }
  47. $this->success('分享链接', $rs['link']);
  48. }
  49. //排行榜列表
  50. public function playerlist_votes(){
  51. $subject_id = Db::name('vote_subject')->where('status',1)->order('id desc')->value('id');
  52. if(!$subject_id){
  53. $this->success(1,[]);
  54. }
  55. $map = [
  56. 'subject_id' => $subject_id,
  57. 'status' => 1,
  58. ];
  59. //搜索
  60. $keyword = input('keyword','');
  61. if($keyword){
  62. $map['title|suozaidanwei|tuijiangonghui'] = ['LIKE','%'.$keyword.'%'];
  63. }
  64. $lists = Db::name('vote_player')
  65. ->where($map)->order('votes desc,id desc')->autopage()->select();
  66. $lists = list_domain_image($lists,['avatar']);
  67. $lists = $this->mingci($subject_id,$lists);
  68. $this->success(1,$lists);
  69. }
  70. //选手详情
  71. public function playerinfo(){
  72. $player_id = input('player_id');
  73. if(!$player_id){
  74. $this->error();
  75. }
  76. $map = [
  77. 'p.id' => $player_id,
  78. ];
  79. $info = Db::name('vote_player')->alias('p')
  80. ->field('p.id,p.mobile,p.video_file,p.votes,p.renqi,p.subject_id')
  81. ->where($map)->find();
  82. $info = info_domain_image($info,['video_file']);
  83. //名次
  84. $players = Db::name('vote_player')->where(['subject_id'=>$info['subject_id'],'status'=>1])->order('votes desc')->column('id,votes');
  85. $id_arr = array_keys($players);
  86. $mingci = 1; //名次
  87. $mingci = array_search($info['id'],$id_arr);
  88. $mingci++;
  89. $info['mingci'] = $mingci;
  90. $this->success(1,$info);
  91. }
  92. //获得我的名次,票数导向
  93. private function mingci($subject_id,$list){
  94. if(empty($list)){
  95. return $list;
  96. }
  97. //准备数据
  98. $players = Db::name('vote_player')->where(['subject_id'=>$subject_id,'status'=>1])->order('votes desc,id desc')->column('id,votes');
  99. $id_arr = array_keys($players);
  100. foreach($list as $key => $val)
  101. {
  102. $mingci = 1; //名次
  103. $mingci = array_search($val['id'],$id_arr);
  104. $mingci++;
  105. //赋值名次
  106. $list[$key]['mingci'] = $mingci;
  107. }
  108. return $list;
  109. }
  110. }