1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Db;
- /**
- * 选手
- */
- class Player extends Api
- {
- protected $noNeedLogin = [];
- protected $noNeedRight = ['*'];
- //给选手投票
- public function record(){
- $player_id = input('player_id','');
- if(!$player_id){
- $this->error();
- }
- Db::startTrans();
- //check player
- $player_info = Db::name('vote_player')->field('id,votes,renqi,subject_id,user_id')->where(['id'=>$player_id,'status'=>1])->lock(true)->find();
- if(!$player_info){
- Db::rollback();
- $this->error('不存在的选手');
- }
- $subject_id = $player_info['subject_id'];
- //check subject
- $subject = Db::name('vote_subject')->field('id,status')->where(['id'=>$subject_id])->find();
- if($subject['status'] != 1){
- Db::rollback();
- $this->error('投票活动未开始');
- }
- //大检查
- $check_rs = $this->record_check($this->auth->id,$player_id);
- if($check_rs['status'] === false){
- Db::rollback();
- $this->error($check_rs['msg']);
- }
- $update_data = [
- 'votes' => $player_info['votes'] + $check_rs['votes'],
- 'renqi' => $player_info['renqi'] + $check_rs['renqi'],
- ];
- //入库
- $update_rs = Db::name('vote_player')->where('id',$player_id)->update($update_data);
- if($update_rs === false){
- Db::rollback();
- $this->error('投票失败');
- }
- //日志
- $data = [
- 'user_id' => $this->auth->id,
- 'subject_id' => $subject_id,
- 'player_id' => $player_id,
- 'player_uid' => $player_info['user_id'],
- 'remark' => '票'.$check_rs['votes'].',人气'.$check_rs['renqi'],
- 'ip' => request()->ip(),
- 'createtime' => time(),
- 'updatetime' => time(),
- ];
- $log_id = Db::name('vote_record')->insertGetId($data);
- if(!$log_id){
- Db::rollback();
- $this->error('投票失败');
- }
- //票数减少
- $rs_wallet = model('wallet')->lockChangeAccountRemain($this->auth->id,'votenum',-1,26,'投出一票','vote_record',$log_id);
- if($rs_wallet['status'] === false){
- Db::rollback();
- $this->error($rs_wallet['msg']);
- }
- Db::commit();
- $this->success('投票成功');
- }
- private function record_check($uid,$player_id){
- $result = array(
- 'status'=>true,
- 'msg'=>'',
- 'votes'=>1,
- 'renqi'=>1,
- );
- return $result;
- }
- }
|