| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- namespace App\Http\Controllers;
- use App\ActivityInfo;
- use Illuminate\Support\Facades\Cache;
- use Log;
- use App\Group;
- use App\Player;
- use App\Vote;
- use EasyWeChat\Foundation\Application;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- class VoteController extends Controller
- {
- public $wechat;
- public function __construct(Application $wechat) {
- //$this->middleware('wechat.oauth', ['only' => ['process', 'group']]);
- $this->wechat = $wechat;
- }
- /**
- * 投票首页显示
- * */
- public function index(Request $request) {
- $activity_info = ActivityInfo::first();
- $activity_info->count_views = $activity_info->count_views + 1;
- $activity_info->save();
- // 变量要验证, 不然会报错
- $groups = \App\Group::get();
- $player_count = Player::count();
- $vote_count = Vote::count();
- $votes = [];
- $players = Player::orderBy("no")
- ->get();
- foreach($players as $player) {
- $votes[$player->id] = Vote::where('player_id', $player->id)->count();
- }
- return view('front.vote.index', ['vote_count'=>$vote_count ,'player_count'=>$player_count , 'groups'=>$groups, 'votes'=>$votes, 'activity_info'=>$activity_info ]);
- }
- /**
- * 投票分组显示
- * */
- public function group(Request $request) {
- $activity_info = ActivityInfo::first();
- if(Cache::get($request->ip()) == null) {
- Cache::put($request->ip(), '1', 60*12); // 将openid存入cache
- $activity_info->count_views = $activity_info->count_views + 1;
- $activity_info->save();
- }
- $group_id = $request->group_id;
- $votes = [];
- $players = Player::where('group_id',$group_id)
- ->orderBy("no")
- ->get();
- foreach($players as $player) {
- $votes[$player->id] = Vote::where('player_id', $player->id)->count();
- }
- $group = Group::find($group_id);
- $player_count = Player::count();
- $status = empty($request->status) ? null : $request->status;
- return view('front.vote.group', ['players'=>$players, 'group'=>$group, 'votes'=>$votes,'status'=>$status]);
- }
- /**
- * 排名显示
- * */
- public function rank() {
- $player_count = Player::count();
- $vote_count = Vote::count();
- $activity_info = ActivityInfo::first();
- // if(Cache::get($we_user->getId()) == null) {
- // Cache::put($we_user->getId(), '1', 60*24); // 将openid存入cache
- // $activity_info->count_views = $activity_info->count_views + 1;
- // $activity_info->save();
- // }
- $rank_color = ['#007500', '#996600', '#666666', '#3399CC', '#548C00', '#336633', '#CC9900', '#FF3300', '#CC0033', '#FFCC00', '#FF6600', '#669900', '#FF9900', '#CCCC00', '#CC6600'];
- $sql = "SELECT *,(SELECT COUNT(*) FROM votes WHERE votes.player_id = players.id) AS count_votes FROM players ORDER BY count_votes DESC";
- $players = DB::select($sql);
- return view('front.vote.rank', ['vote_count'=>$vote_count ,'player_count'=>$player_count , 'players'=>$players, 'rank_color'=>$rank_color, 'activity_info'=>$activity_info]);
- }
- /**
- * 投票处理
- * @param $player_id 选手id
- *
- * */
- public function process(Request $request, $player_id) {
- $we_user = session('wechat.oauth_user'); // 拿到授权用户资料
- $user = $this->wechat->user->get($we_user->getId());
- // 获取group_id
- $player = Player::select('group_id')->find($player_id);
- // 获取投票ip地址
- $vote_ip = $request->ip();
- if(!$user){
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '2');
- }
- // 根据openid, 获取今日投票总和
- $today_count = Vote::where('openid', $user->openid)->where('created_at', 'like', '%'.date('Y-m-d', time()).'%')->count();
- // 结束时间 和 开始时间
- $time_obj = ActivityInfo::select('end_time', 'start_time')->first();
- // 根据openid, 获取今日分组投票总和
- $group_count = Vote::where('openid', $user->openid)->where('group_id', $player->group_id)->where('created_at', 'like', '%'.date('Y-m-d', time()).'%')->count();
- // 根据ip, 获取今日投票总和
- $ip_count = Vote::where('ip', $vote_ip)->where('created_at', 'like', '%'.date('Y-m-d', time()).'%')->count();
- // ************* 测试服务器时区是否正确 *****************
- // dump($end_time_obj->end_time);
- // dump(strtotime($end_time_obj->end_time));
- // dd(date("Y-m-d H:i:s", strtotime($end_time_obj->end_time)));
- //*** status=1 : 投票成功
- //*** status=6 : 微信号投票限制
- //*** status=2 : 未关注公众号
- //*** status=3 : 投票已结束
- //*** status=4 : 投票ip限制,防止刷票
- //*** status=5 : 投票未开始
- //*** status=7 : 分组投票限制
- if( time() <= strtotime($time_obj->start_time) ) {
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '5');
- } elseif( time() >= strtotime($time_obj->end_time) ) {
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '3');
- }/*elseif($user->subscribe != 1) {
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '2');
- }*/elseif($today_count >= 5) {
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '6');
- // }elseif($group_count >= 5) {
- // return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '7');
- }elseif( $ip_count >= 100 ) {
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '4');
- }else {
- $votes = new Vote;
- $votes->player_id = $player_id;
- $votes->group_id = $player->group_id;
- $votes->openid = $user->openid;
- $votes->we_nickname = $user->nickname+"";
- $votes->we_image = $user->headimgurl+"";
- $votes->ip = $vote_ip;
- $votes->save();
- return redirect()->route('vote.group', ['group_id' => $player->group_id])->with('status', '1');
- }
- }
- }
|