任务功能提交-联调-提交

This commit is contained in:
2025-12-11 17:12:15 +08:00
parent f6869b0941
commit d57faa5166

View File

@@ -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,28 +241,39 @@ 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'];
$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];
}
if($task_info['target_quantity']==$user_daily_tasks['current_progress'] && $ext_value==2){
$is_completed = 1;
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']==$current_progress){
$is_completed = 1;
}
}
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{
$is_completed = 0;
if($task_info['target_quantity'] == 1){
$is_completed = 1;
}
@@ -255,6 +287,8 @@ class Tasks extends Model
'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);