From d57faa5166bf19ea47e75bdba882adca9e5f8add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Thu, 11 Dec 2025 17:12:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=8A=9F=E8=83=BD=E6=8F=90?= =?UTF-8?q?=E4=BA=A4-=E8=81=94=E8=B0=83-=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/api/model/Tasks.php | 183 ++++++++++++++++++++------------ 1 file changed, 116 insertions(+), 67 deletions(-) diff --git a/application/api/model/Tasks.php b/application/api/model/Tasks.php index e04ec3f6..d9f53c8d 100644 --- a/application/api/model/Tasks.php +++ b/application/api/model/Tasks.php @@ -112,6 +112,26 @@ class Tasks extends Model ->order('sort asc')->select(); foreach ($data as $k => $v) { //完成进度 + $v['from_id'] = 0; + $v['is_time'] = 0; + //奖励详情 + $v['reward_str'] = ""; + $reward_info = db::name('vs_gift_bag_detail')->where('gift_bag_id',$v['tasks_bag_id'])->select(); + foreach ($reward_info as $key => $value) { + if($value['type'] == 1){ + $reward_name = $value['quantity'].$value['name']; + }elseif($value['type'] == 2){ + $reward_name = $value['name'].'x'.$value['quantity']; + }elseif($value['type'] == 3){ + $reward_name = $value['name'].'x'.$value['days'].'天'; + }else{ + $reward_name = $value['quantity'].$value['name']; + } + $v['reward_str'] =$v['reward_str'].$reward_name." "; + if($v['task_id'] == 24){ + $v['reward_str'] = $v['gold_reward']."钻石"; + } + } if(in_array($v['task_type'],[1,2])){ //今日完成进度 $user_daily_tasks = Db::name('vs_tasks_user_daily') @@ -119,6 +139,31 @@ class Tasks extends Model ->where('task_id',$v['task_id']) ->whereTime('createtime', 'today') ->find(); + }elseif(in_array($v['task_id'],[21,22,23])){ + $first_sign_student_list = db::name('vs_tasks_student') + ->where('user_id',$user_id) + ->where('task_id',$v['task_id']) + ->where('delete_time', 0) + ->select(); + if(empty($first_sign_student_list)){ + continue; + }else{ + //徒弟列表 + foreach ($first_sign_student_list as $key => $value) { + if($v['task_id'] = 21){ + $title = "拍卖房停留({$value['value']} / {$v['target_quantity']})分钟"; + }elseif($v['task_id'] = 22){ + $title = "点唱房点歌({$value['value']} / {$v['target_quantity']})首"; + }elseif($v['task_id'] = 23){ + $title = "交友房停留({$value['value']} / {$v['target_quantity']})分钟"; + } + $v['sign_student_list']['task_id'] = $v['task_id']; + $v['sign_student_list']['student_id'] = $value['student_id']; + $v['sign_student_list']['student_nickname'] = db::name('vs_user')->where('id',$value['student_id'])->value('nickname'); + $v['sign_student_list']['task_name'] = '邀请'.$v['sign_student_list']['student_nickname']."徒弟在{$title},并送给徒弟特殊礼物"; + $v['sign_student_list']['reward_str'] = $v['reward_str']; + } + } }elseif($v['task_id'] == 24){ //师徒任务 //师傅签约返还 @@ -127,18 +172,22 @@ class Tasks extends Model continue; } $v['gold_reward'] = $user_sign_task['value']; - }else{ - $user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$v['task_id'])->find(); - } - $progress = isset($user_daily_tasks['current_progress']) ? $user_daily_tasks['current_progress'] : 0; - if($v['task_id'] == 24){ + $v['target_quantity'] = $v['target_quantity'] * 60; + $v['is_time'] = 1; if($user_sign_task['status']==1){ $progress = $user_sign_task['times'] ?? 0; }else{ $progress = $user_sign_task['times']-1 ?? 0; } - + }else{ + $user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$v['task_id'])->find(); + if($v['jump_type']==4){ + //跳转的房间路径 + $v['from_id'] = model('api/Room')->task_jump_room_recommend($v['task_id']); + } } + $progress = isset($user_daily_tasks['current_progress']) ? $user_daily_tasks['current_progress'] : 0; + $v['is_time'] = 0; $quantity_str = ""; if($v['target_quantity']!=1){ $quantity_str= "({$progress}/{$v['target_quantity']})"; @@ -166,41 +215,13 @@ class Tasks extends Model } } $v['jump_type_str'] = $this->jump_type[$v['jump_type']]; - $v['from_id'] = 0; - $v['is_time'] = 0; - if(in_array($v['task_id'],[18,19,20])){ - $v['processing_type'] = 2; - $v['processing_type_str'] = $this->processing_type_str[$v['processing_type']]; - //跳转的房间路径 - $v['from_id'] = db::name('vs_room')->where(['delete_time'=>0,'room_status'=>1,'type_id'=>['<>',6],'apply_status'=>2])->orderRaw('rand()')->value('id'); - $v['target_quantity'] = $v['target_quantity'] * 60; - $v['is_time'] = 1; - } else{ - $v['processing_type'] = 9; - $v['processing_type_str'] = $this->processing_type_str[$v['processing_type']]; - } - //奖励详情 - $v['reward_str'] = ""; - $reward_info = db::name('vs_gift_bag_detail')->where('gift_bag_id',$v['tasks_bag_id'])->select(); - foreach ($reward_info as $key => $value) { - if($value['type'] == 1){ - $reward_name = $value['quantity'].$value['name']; - }elseif($value['type'] == 2){ - $reward_name = $value['name'].'x'.$value['quantity']; - }elseif($value['type'] == 3){ - $reward_name = $value['name'].'x'.$value['days'].'天'; - }else{ - $reward_name = $value['quantity'].$value['name']; - } - $v['reward_str'] =$v['reward_str'].$reward_name." "; - } //返回任务列表 $reslut['tasks'][$v['task_type']-1]['task_list'][] = $v; } return ['code' => 1, 'msg' => '获取成功', 'data' => $reslut]; } //完成每日任务 - public function tasks_complete($user_id,$task_id,$ext_value=''){ + public function tasks_complete($user_id,$task_id,$ext_value='',$student_id = 0){ if($task_id ==15){ $current_progress = $ext_value!='' ? $ext_value : 1; }else{ @@ -220,41 +241,54 @@ class Tasks extends Model if ($user_daily_tasks && $user_daily_tasks['is_completed'] == 1) { return ['code' => 0, 'msg' => '您已完成该任务','data' => null]; } - if ($user_daily_tasks) { - $current_progress = $user_daily_tasks['current_progress'] +$current_progress; - $is_completed = 0; - if(in_array($task_id,[21,22,23])){ - if($ext_value==2){ - $current_progress = $user_daily_tasks['current_progress']; - } - if($task_info['target_quantity']==$user_daily_tasks['current_progress'] && $ext_value==2){ - $is_completed = 1; - } - }else{ - if($task_info['target_quantity']==$current_progress){ - $is_completed = 1; - } + if(in_array($task_id,[21,22,23])){ + $task_student_data =[]; + $task_student = Db::name('vs_tasks_student')->where(['user_id'=>$user_id,'task_id'=>$task_id,'student_id'=>$student_id,'status'=>0,'delete_time'=>0])->find(); + if(empty($task_student)){ + return ['code' => 0, 'msg' => '任务不存在或已删除','data' => null]; } - $reslut = Db::name('vs_tasks_user_daily')->where('id',$user_daily_tasks['id'])->update([ - 'current_progress' => $current_progress, - 'is_completed'=> $is_completed, - 'ext' => $ext_value, - ]); + if($ext_value==1){ + $current_progress = $task_student['value']+1; + if($task_info['target_quantity']==$current_progress && $task_student['is_reward']==1){ + $task_student_data['status'] = 1; + } + $task_student_data['value'] = $current_progress; + }else{ + $current_progress = $task_student['value']; + if($task_info['target_quantity']==$current_progress){ + $task_student_data['status'] = 1; + } + $task_student_data['is_reward'] = 1; + } + $reslut = Db::name('vs_tasks_student')->where('id',$task_student['id'])->update($task_student_data); }else{ $is_completed = 0; - if($task_info['target_quantity'] == 1){ + if($task_info['target_quantity']==$current_progress){ $is_completed = 1; } - $reslut = Db::name('vs_tasks_user_daily')->insert([ - 'user_id' => $user_id, - 'task_id' => $task_id, - 'current_progress' => $current_progress, - 'tasks_bag_id' => $task_info['tasks_bag_id'], - 'is_completed' => $is_completed, - 'ext' => $ext_value, - 'createtime' => time(), - ]); + if ($user_daily_tasks) { + $current_progress = $user_daily_tasks['current_progress'] +$current_progress; + $reslut = Db::name('vs_tasks_user_daily')->where('id',$user_daily_tasks['id'])->update([ + 'current_progress' => $current_progress, + 'is_completed'=> $is_completed, + 'ext' => $ext_value, + ]); + }else{ + if($task_info['target_quantity'] == 1){ + $is_completed = 1; + } + $reslut = Db::name('vs_tasks_user_daily')->insert([ + 'user_id' => $user_id, + 'task_id' => $task_id, + 'current_progress' => $current_progress, + 'tasks_bag_id' => $task_info['tasks_bag_id'], + 'is_completed' => $is_completed, + 'ext' => $ext_value, + 'createtime' => time(), + ]); + } } + if ($reslut) { if($is_completed==1){ return ['code' => 1, 'msg' => '操作成功','data' => ['is_completed'=>1]]; @@ -267,7 +301,7 @@ class Tasks extends Model } //领取每日任务奖励 - public function daily_tasks_receive($user_id,$task_id){ + public function daily_tasks_receive($user_id,$task_id,$student_id = 0){ //查询是否实名认证 $is_real = model('UserData')->real_name_info($user_id); if($is_real['code']==0){ @@ -291,6 +325,15 @@ class Tasks extends Model if($user_sign_task['status']==1){ return ['code' => 0, 'msg' => '您已领取该奖励','data' => null]; } + }elseif(in_array($task_id,[21,22,23])){ + if($student_id){ + $task_student = Db::name('vs_tasks_student')->where(['user_id'=>$user_id,'task_id'=>$task_id,'student_id'=>$student_id,'status'=>1,'delete_time'=>0])->find(); + if (!$task_student) { + return ['code' => 0, 'msg' => '任务不存在或已结束','data' => null]; + } + }else{ + return ['code' => 0, 'msg' => '任务不存在','data' => null]; + } }else{ if($task_info['task_type']==2){ $user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find(); @@ -318,7 +361,13 @@ class Tasks extends Model Db::rollback(); return ['code' => 0, 'msg' => '操作失败', 'data' => null]; } - }else{ + }elseif(in_array($task_id,[21,22,23])){ + $reslut = Db::name('vs_tasks_student')->where('id',$task_student['id'])->update([ + 'status' => 2, + 'updatetime' => time(), + ]); + } + else{ $reslut = Db::name('vs_user_daily_tasks')->where('id',$user_daily_tasks['id'])->update([ 'is_claimed' => 1, 'updatetime' => time(), @@ -524,7 +573,7 @@ class Tasks extends Model if($continuous>1){ //连续签到任务送金币 //连续签到7天 【完成任务】 - //$this->tasks_complete($user_id,2); + $this->tasks_complete($user_id,2); //连续签到任务抽礼包【完成任务】 //连续签到7天 【完成任务】 //$this->tasks_complete($user_id,7);