Browse Source

一次投多票

lizhen_gitee 4 months ago
parent
commit
bdcc2816f6
1 changed files with 22 additions and 20 deletions
  1. 22 20
      application/api/controller/Player.php

+ 22 - 20
application/api/controller/Player.php

@@ -51,16 +51,17 @@ class Player extends Api
 
     //给选手投票
     public function record(){
-        $this->error('接口作废');
+//        $this->error('接口作废');
         if(!$this->apiLimit('操作太快了,休息一下吧'));
 
         $player_id = input('player_id','');
+        $vote      = input('vote',1);
         if(!$player_id){
             $this->error();
         }
 
         //登录用户票数的检查
-        $check_rs = $this->record_check($this->auth->id);
+        $check_rs = $this->record_check($this->auth->id,$vote);
         if($check_rs['status'] === false){
             $this->error($check_rs['msg'],null,$check_rs['code']);//给不同的code,0报错,2跳到答题
         }
@@ -76,7 +77,7 @@ class Player extends Api
 
         //给选手加票
         $update_data = [
-            'votes' => $player_info['votes'] + 1,
+            'votes' => $player_info['votes'] + $vote,
         ];
         $update_rs = Db::name('vote_player')->where('id',$player_id)->update($update_data);
         if($update_rs === false){
@@ -89,6 +90,7 @@ class Player extends Api
             'user_id' => $this->auth->id,
             'subject_id' => $player_info['subject_id'],
             'player_id' => $player_id,
+            'vote' => $vote,
             'createdate' => strtotime(date('Y-m-d')),
             'createtime' => time(),
         ];
@@ -104,14 +106,12 @@ class Player extends Api
         RedisUtil::getInstance(RedisKeyEnum::VOTE_RECORD.date('Y-m-d').':'.$this->auth->id)->incr_expire(86400);
 
 
-        //剩余票数,
-        $check_rs['uservote'] - 1;
 
         $this->success('投票成功');
     }
 
     //投票检查
-    private function record_check($uid){
+    private function record_check($user_id,$vote){
         $result = array(
             'status'=>true,
             'code'=>1,
@@ -121,8 +121,8 @@ class Player extends Api
 
 
         //今天,投了几票
-//        $today_record = Db::name('vote_record')->where('createdate',strtotime(date('Y-m-d')))->where('user_id',$uid)->count();
-        $today_record = RedisUtil::getInstance(RedisKeyEnum::VOTE_RECORD.date('Y-m-d').':'.$this->auth->id)->get();
+
+        $today_record = RedisUtil::getInstance(RedisKeyEnum::VOTE_RECORD.date('Y-m-d').':'.$user_id)->get();
         //今天,免费的的票
         $gift_votes = config('site.gift_votes_user_eday');
         //今天,免费的答题次数
@@ -132,39 +132,41 @@ class Player extends Api
         if($today_record >= $gift_votes + $exam_times){
             $result['status'] = false;
             $result['code'] = 0;
-            $result['msg'] = '投票失败,您今日剩余投票次数: 0次,明天再来吧';
+            $result['msg'] = '投票失败,您今日剩余0票,明天再来吧';
             $result['uservote'] = 0;
             return $result;
         }
 
         //今天,用户答对的次数,也就是答题获得的票数
-//        $question_vote  = Db::name('user_question_log')->where('createdate',strtotime(date('Y-m-d')))->where('user_id',$uid)->where('is_right',1)->count();
-        $question_vote  = RedisUtil::getInstance(RedisKeyEnum::EAXM_RIGHT.date('Y-m-d').':'.$this->auth->id)->get();
 
-        //投票次数  >= 免费票 + 答对次数
-        if($today_record >= $gift_votes + $question_vote){
+        $question_vote  = RedisUtil::getInstance(RedisKeyEnum::EAXM_RIGHT.date('Y-m-d').':'.$user_id)->get();
+
+        //免费票 + 答对次数 - 已投票次数 < vote
+        $times = $gift_votes + $question_vote - $today_record;
+        if($times < 0){$times = 0;}
+        if($times < $vote){
             $result['status'] = false;
             $result['code'] = 0;
-            $result['msg'] = '投票失败,您今日剩余投票次数: 0次,明天再来吧';
-            $result['uservote'] = 0;
+            $result['msg'] = '投票失败,您今日剩余: '.$times.'票';
+            $result['uservote'] = $times;
 
             //今天,用户答题的次数
-//            $today_question = Db::name('user_question_log')->where('createdate',strtotime(date('Y-m-d')))->where('user_id',$uid)->count();
-            $today_question = RedisUtil::getInstance(RedisKeyEnum::EAXM_TIMES.date('Y-m-d').':'.$this->auth->id)->get();
+
+            $today_question = RedisUtil::getInstance(RedisKeyEnum::EAXM_TIMES.date('Y-m-d').':'.$user_id)->get();
 
             //还有答题机会
             if($exam_times > $today_question){
                 $result['status'] = false;
                 $result['code'] = 2;
-                $result['msg'] = '投票失败,您今日剩余投票次数: 0次,可通过答题增加票数';
-                $result['uservote'] = 0;
+                $result['msg'] = '投票失败,您今日剩余: '.$times.'票,可通过答题增加票数';
+                $result['uservote'] = $times;
             }
 
             return $result;
         }
 
         //剩余票数
-        $result['uservote'] = $gift_votes + $question_vote - $today_record;
+        $result['uservote'] = $times;
 
 
         return $result;