From 51ab47a3f66899274870c10411b7e1b5d3e205fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=92=8A?= Date: Wed, 10 Dec 2025 18:44:16 +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=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/adminapi/controller/Tasks.php | 30 +- application/api/controller/Dailytasks.php | 10 +- application/api/model/Tasks.php | 566 ++++++++++++++++++++++ 3 files changed, 578 insertions(+), 28 deletions(-) create mode 100644 application/api/model/Tasks.php diff --git a/application/adminapi/controller/Tasks.php b/application/adminapi/controller/Tasks.php index 6aff628c..5b804728 100644 --- a/application/adminapi/controller/Tasks.php +++ b/application/adminapi/controller/Tasks.php @@ -18,20 +18,7 @@ class Tasks extends adminApi { protected $noNeedLogin = []; protected $noNeedRight = []; - protected $table = 'vs_daily_tasks'; -// public $task_type = [ -// '1' => '每日任务', -// '2' => '每日特殊任务', -// '3' => '平台常规任务', -// '4' => '师徒任务' -// ]; - public $task_type = [ - '1' => '新手任务', - '2' => '每日任务', - '3' => '师徒任务', - '4' => '情侣任务', - '5' => '签到任务', - ]; + protected $table = 'vs_tasks'; public function _initialize() { parent::_initialize(); @@ -48,29 +35,29 @@ class Tasks extends adminApi if($seach_task_type != ''){ $where['task_type'] = $seach_task_type; } - $list = db::name('vs_daily_tasks')->where(['delete_time'=>0])->where($where)->page($page, $page_limit)->order(['sort'=>'desc','task_id'=>'desc'])->select(); - $count = db::name('vs_daily_tasks')->where(['delete_time'=>0])->where($where)->count(); + $list = db::name('vs_tasks')->where(['delete_time'=>0])->where($where)->page($page, $page_limit)->order(['sort'=>'desc','task_id'=>'desc'])->select(); + $count = db::name('vs_tasks')->where(['delete_time'=>0])->where($where)->count(); $list_data = []; foreach ($list as $k=>$v){ $list_data[$k]['task_id'] = $v['task_id']; $list_data[$k]['icon'] = $v['icon']; $list_data[$k]['task_name'] = $v['task_name']; $list_data[$k]['task_description'] = $v['task_description']??""; - $list_data[$k]['gold_reward'] = $v['gold_reward']; $list_data[$k]['target_quantity'] = $v['target_quantity']; $list_data[$k]['task_type'] = $v['task_type']; - $list_data[$k]['task_type_str'] = $this->task_type[$v['task_type']]?? ''; + $list_data[$k]['task_type_str'] = model('api/Tasks')->task_type[$v['task_type']]?? ''; $list_data[$k]['sort'] = $v['sort']; $list_data[$k]['bag_id'] = $v['bag_id']; $list_data[$k]['bag_name'] = $v['bag_id']?db::name('vs_gift_bag')->where(['id'=>$v['bag_id']])->value('name'):''; $list_data[$k]['is_active'] = $v['is_active']; + $list_data[$k]['tasks_bag_id'] = $v['tasks_bag_id']; } $return_data = [ 'page' =>$page, 'page_limit' => $page_limit, 'count' => $count, 'lists' => $list_data, - 'task_type' => $this->task_type, + 'task_type' => model('api/Tasks')->task_type, ]; return V(1,"成功", $return_data); } @@ -102,7 +89,7 @@ class Tasks extends adminApi $data['sort'] = $sort; } if($bag_id != ''){ - $data['bag_id'] = $bag_id; + $data['tasks_bag_id'] = $bag_id; } if($is_active != ''){ $data['is_active'] = $is_active; @@ -110,9 +97,6 @@ class Tasks extends adminApi if($task_type != ''){ $data['task_type'] = $task_type; } - if($gold_reward != ''){ - $data['gold_reward'] = $gold_reward; - } if($target_quantity){ $data['target_quantity'] = $target_quantity; } diff --git a/application/api/controller/Dailytasks.php b/application/api/controller/Dailytasks.php index 76218d72..ba0acd0a 100644 --- a/application/api/controller/Dailytasks.php +++ b/application/api/controller/Dailytasks.php @@ -21,7 +21,7 @@ class Dailytasks extends BaseCom public function dailyTasksList() { $user_id = $this->uid; - $reslut = model('DailyTasks')->dailyTasksList($user_id); + $reslut = model('Tasks')->dailyTasksList($user_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } @@ -34,7 +34,7 @@ class Dailytasks extends BaseCom if (!$task_id) { return V(0,'请选择任务'); } - $reslut = model('DailyTasks')->tasks_complete($user_id,$task_id); + $reslut = model('Tasks')->tasks_complete($user_id,$task_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } //领取每日任务金币奖励 @@ -45,7 +45,7 @@ class Dailytasks extends BaseCom if (!$task_id) { return V(0,'请选择任务'); } - $reslut = model('DailyTasks')->daily_tasks_receive($user_id,$task_id); + $reslut = model('Tasks')->daily_tasks_receive($user_id,$task_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } //开启礼盒 @@ -56,14 +56,14 @@ class Dailytasks extends BaseCom if (!$gift_box_id) { return V(0,'请选择礼盒'); } - $reslut = model('DailyTasks')->open_gift_box($user_id,$gift_box_id); + $reslut = model('Tasks')->open_gift_box($user_id,$gift_box_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } //礼盒记录 public function dailyTasksBoxRecord() { $user_id = $this->uid; - $reslut = model('DailyTasks')->gift_bag_receive_list($user_id); + $reslut = model('Tasks')->gift_bag_receive_list($user_id); return V($reslut['code'],$reslut['msg'], $reslut['data']); } //签到 diff --git a/application/api/model/Tasks.php b/application/api/model/Tasks.php new file mode 100644 index 00000000..011b10bc --- /dev/null +++ b/application/api/model/Tasks.php @@ -0,0 +1,566 @@ + '新手任务', + '2' => '每日任务', + '3' => '师徒任务', + '4' => '情侣任务', + '5' => '签到任务', + ]; + //每日任务类型枚举 + public $processing_type_str = [ + 1 => '登录', + 2 => '去观看', + 3 => '去完成', + 4 => '去送礼', + 5 => '去邀请', + 6 => '去充值', + 7 => '去发布', + 8 => '签到', + 9 => '自动完成', + ]; + //任务跳转类型: + public $jump_type = [ + 0 => '不跳转', + 1 => '跳转实名', + 2 => '跳转我的相册', + 3 => '跳转绑定管理', + 4 => '跳转房间', + 5 => '跳转申请加入公会', + 6 => '跳转充值', + ]; + + public function __construct($data = []) + { + $prefix = config('database.prefix'); + $this->table = $prefix . 'vs_tasks'; + parent::__construct($data); + + } + //每日任务列表 + public function dailyTasksList($user_id=''){ + $reslut = []; + //用户今日充值金币数量 + $user_gold = Db::name('vs_user_money_log')->where(['user_id'=>$user_id,'change_type'=>2,'money_type'=>1]) + ->whereTime('createtime', 'today') + ->sum('change_value'); + $reslut['user_gold'] = $user_gold ? $user_gold : 0; + //礼盒列表 + $gift_box = Db::name('vs_gift_bag')->where('status',1)->where('activities_id',2)->select(); + $reslut['gift_box_list'] = []; + foreach ($this->task_type as $key => $value) { + $reslut['tasks'][$key-1]['task_type_id'] = $key; + $reslut['tasks'][$key-1]['task_type_name'] = $value; + } + foreach ($gift_box as $key => $val) { + $reslut['gift_box_list'][$key]['id'] = $val['id']; + $reslut['gift_box_list'][$key]['name'] = $val['name']; + $reslut['gift_box_list'][$key]['title'] = $val['title']; + $reslut['gift_box_list'][$key]['icon'] = localpath_to_netpath($val['icon']); + $ext = json_decode($val['ext'],true); + $reslut['gift_box_list'][$key]['highest_gain'] = $ext['highest_gain']; + $reslut['gift_box_list'][$key]['meet'] = $ext['meet'] ? $ext['meet'] : 0; + //解锁进度 + if($ext['meet']){ + if($user_gold > $ext['meet']){ + $reslut['gift_box_list'][$key]['unlock_progress'] = 1; + }else{ + $reslut['gift_box_list'][$key]['unlock_progress'] = round(( $user_gold / $ext['meet']),2); + } + }else{ + $reslut['gift_box_list'][$key]['unlock_progress'] = 0; + } + //今日可抽奖次数 + $reslut['gift_box_list'][$key]['all_number'] = $ext['num'] ? $ext['num'] : 0; + //今日已抽奖次数 + $reslut['gift_box_list'][$key]['taday_number'] = Db::name('vs_gift_bag_receive_log')->where('user_id',$user_id)->where('gift_bag_id',$val['id'])->whereTime('createtime', 'today')->count(); + //今日剩余抽奖次数 + $reslut['gift_box_list'][$key]['taday_number_left'] = $ext['num'] - $reslut['gift_box_list'][$key]['taday_number']; + //状态 + if ($user_gold < $ext['meet']) { + $reslut['gift_box_list'][$key]['status'] = 0; + $reslut['gift_box_list'][$key]['status_str'] = '未解锁'; + } else { + $reslut['gift_box_list'][$key]['status'] = 1; + $reslut['gift_box_list'][$key]['status_str'] = '已解锁('.$reslut['gift_box_list'][$key]['taday_number'].'/'.$ext['num'].')'; + } + if ($reslut['gift_box_list'][$key]['taday_number']>=$ext['num']) { + $reslut['gift_box_list'][$key]['status'] = 2; + $reslut['gift_box_list'][$key]['status_str'] = '已用完('.$reslut['gift_box_list'][$key]['taday_number'].'/'.$ext['num'].')'; + } + } + //任务列表 + $data = db::name('vs_tasks') + ->field('id as task_id,icon,task_name,target_quantity,task_type,jump_type,tasks_bag_id') + ->where('delete_time',0) + ->where('is_active',1) + ->order('sort asc')->select(); + foreach ($data as $k => $v) { + //完成进度 + if(in_array($v['task_type'],[1,2])){ + //今日完成进度 + $user_daily_tasks = Db::name('vs_tasks_user_daily') + ->where('user_id',$user_id) + ->where('task_id',$v['task_id']) + ->whereTime('createtime', 'today') + ->find(); + }elseif($v['task_id'] == 24){ + //师徒任务 + //师傅签约返还 + $user_sign_task = Db::name('vs_user_sign_task')->where(['user_id'=>$user_id,'day'=>date('Y-m-d')])->find(); + if(empty($user_sign_task)){ + 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){ + if($user_sign_task['status']==1){ + $progress = $user_sign_task['times'] ?? 0; + }else{ + $progress = $user_sign_task['times']-1 ?? 0; + } + + } + $quantity_str = ""; + if($v['target_quantity']!=1){ + $quantity_str= "({$progress}/{$v['target_quantity']})"; + } + $v['task_name'] = $v['task_name'].$quantity_str; + //处理状态 + $v['task_status'] = 1; + $v['task_type_str'] = "去完成"; + if(isset($user_daily_tasks['is_completed']) && $user_daily_tasks['is_completed'] ==1){ //已完成 + $v['task_status'] = 2; + $v['task_type_str'] = "领取金币"; + } + if(isset($user_daily_tasks['is_claimed']) && $user_daily_tasks['is_claimed'] ==1){ //已完成 + $v['task_status'] = 3; + $v['task_type_str'] = "已领取"; + } + if($v['task_id']==1){//每日签到处理 + $sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$user_id,'sign_in_date'=>date('Y-m-d')])->find(); + if ($sign_in_info) { + $v['task_status'] =3; + $v['task_type_str'] = "已签到"; + }else{ + $v['task_status'] = 1; + $v['task_type_str'] = "去签到"; + } + } +// if($v['task_id'] == 17){ +// if($user_sign_task['status'] == 0){ +// $v['task_status'] = 2; +// $v['task_type_str'] = "领取钻石"; +// }else{ +// $v['task_status'] = 3; +// $v['task_type_str'] = "已领取"; +// } +// } + $v['from_id'] = 0; + $v['is_time'] = 0; + if(in_array($v['task_id'],[8,9])){ + $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; + }elseif(in_array($v['task_id'],[10])){ + $v['processing_type'] = 7; + $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'); + } else{ + $v['processing_type'] = 9; + $v['processing_type_str'] = $this->processing_type_str[$v['processing_type']]; + } + //返回任务列表 + $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=''){ + if($task_id ==15){ + $current_progress = $ext_value!='' ? $ext_value : 1; + }else{ + $current_progress =1; + } + //查询任务 + $task_info = Db::name('vs_tasks')->where('task_id',$task_id)->where('delete_time',0)->where('is_active',1)->find(); + if(empty($task_info)){ + return ['code' => 0, 'msg' => '任务不存在或已删除','data' => null]; + } + //查询用户每日任务进度表 + if($task_info['task_type']==2){ + $user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->whereTime('createtime', 'today')->find(); + }else{ + $user_daily_tasks = Db::name('vs_tasks_user_daily')->where('user_id',$user_id)->where('task_id',$task_id)->find(); + } + 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; + } + } + $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; + } + $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]]; + }else{ + return ['code' => 1, 'msg' => '操作成功','data' => ['is_completed'=>0]]; + } + } else { + return ['code' => 0, 'msg' => '操作失败','data' => null]; + } + } + + //领取每日任务奖励 + public function daily_tasks_receive($user_id,$task_id){ + //查询是否实名认证 + $is_real = model('UserData')->real_name_info($user_id); + if($is_real['code']==0){ + return ['code' => 0, 'msg' => '请先实名认证','data' => null]; + }else{ + if($is_real['data']['is_real'] !=1){ + return ['code' => 0, 'msg' => '请先实名认证','data' => null]; + } + } + $task_info = Db::name('vs_tasks')->where('task_id',$task_id)->find(); + if (!$task_info) { + return ['code' => 0, 'msg' => '任务不存在','data' => null]; + } + if($task_id==24){ + //师徒任务 + //师傅签约返还 + $user_sign_task = Db::name('vs_user_sign_task')->where(['user_id'=>$user_id,'day'=>date('Y-m-d')])->find(); + if (!$user_sign_task) { + return ['code' => 0, 'msg' => '任务不存在或已结束','data' => null]; + } + if($user_sign_task['status']==1){ + 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(); + }else{ + $user_daily_tasks = Db::name('vs_user_daily_tasks')->where('user_id',$user_id)->where('task_id',$task_id)->find(); + } + if (!$user_daily_tasks) { + return ['code' => 0, 'msg' => '请完成该任务','data' => null]; + } + if ($user_daily_tasks['is_completed'] == 0) { + return ['code' => 0, 'msg' => '请完成该任务','data' => null]; + } + if ($user_daily_tasks['is_claimed'] == 1) { + return ['code' => 0, 'msg' => '您已领取该奖励','data' => null]; + } + } + Db::startTrans(); + try { + if($task_id==24){ + //师徒任务 + $reslut = Db::name('vs_user_sign_task')->where('id',$user_sign_task['id'])->update([ + 'status' => 1 + ]); + if (!$reslut) { + Db::rollback(); + return ['code' => 0, 'msg' => '操作失败', 'data' => null]; + } + }else{ + $reslut = Db::name('vs_user_daily_tasks')->where('id',$user_daily_tasks['id'])->update([ + 'is_claimed' => 1, + 'updatetime' => time(), + ]); + if (!$reslut) { + Db::rollback(); + return ['code' => 0, 'msg' => '操作失败', 'data' => null]; + } + } + //发放任务礼包 + $op_bag_re = $this->open_tasks_bag($user_id,$task_info['tasks_bag_id']); + if ($op_bag_re['code'] != 1) { + Db::rollback(); + return ['code' => 0, 'msg' => '操作失败', 'data' => null]; + } + // 提交事务 + Db::commit(); + return ['code' => 1, 'msg' => "领取成功", 'data' => null]; + }catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return ['code' => 0, 'msg' => "请重试", 'data' => null]; + } + } + + //任务礼盒发放 + public function open_tasks_bag($user_id,$gift_box_id){ + $gift_box_info = Db::name('vs_gift_bag')->where('id',$gift_box_id)->find(); + if (!$gift_box_info) { + return ['code' => 0, 'msg' => '礼包不存在','data' => null]; + } + //查询礼盒详情 + $gift_bag_detail = DB::name('vs_gift_bag_detail')->where(['gift_bag_id'=>$gift_box_id])->select(); + if (!$gift_bag_detail) { + return ['code' => 0, 'msg' => '礼包未配置','data' => null]; + } + foreach ($gift_bag_detail as $k=>$v){ + switch ($v['type']) { + case 1: //金币 方法1:直接添加到用户钱包 + $res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::DROP_GIFT_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::DROP_GIFT_REWARD)); + break; + case 2: //礼物 方法2:添加到用户礼物背包 + $res = model('UserGiftPack')->change_user_gift_pack($user_id,$v['foreign_id'],$v['quantity'],model('UserGiftPack')::DRAW_GIFT,"天降好礼获得礼物"); + break; + case 3: //坐骑 方法3:添加到用户装扮 + $decorate_price_info = db::name('vs_decorate_price')->where(['id'=>$v['foreign_id']])->find(); + if(empty($decorate_price_info)){ + break; + } + $res = model('Decorate')->pay_decorate($user_id,$decorate_price_info['did'],$decorate_price_info['day'],6); + break; + case 4: //道具 方法5:钻石 + $res = model('common/UserWallet')->change_user_money($user_id, $v['quantity'], model('common/UserWallet')::MONEYTYPEARNINGS, model('common/UserWallet')::DROP_GIFT_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::DROP_GIFT_REWARD)); + default: + break; + } + if ($res['code'] != 1) { + return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; + } + // 记录日志 + //添加礼盒记录 + $reslut = Db::name('vs_gift_bag_receive_log')->insert([ + 'user_id' => $user_id, + 'gift_bag_id' => $gift_box_id, + 'parent_id' => $v['id'], + 'gift_id'=> $v['foreign_id'], + 'num' => $v['quantity'], + 'bag_price' => $gift_box_info['money'], + 'gift_price' => $v['gold'], + 'createtime' => time(), + 'updatetime' => time() + ]); + if (!$reslut) { + return ['code' => 0, 'msg' => '操作失败', 'data' => null]; + } + } + return ['code' => 1, 'msg' => '操作成功','data' => null]; + } + + /* + * 开启礼盒 + * $user_id 用户id + * $gift_box_id 礼盒id + */ + public function open_gift_box($user_id,$gift_box_id){ + $gift_box_info = Db::name('vs_gift_bag')->where('id',$gift_box_id)->find(); + if (!$gift_box_info) { + return ['code' => 0, 'msg' => '礼盒不存在','data' => null]; + } + $ext = json_decode($gift_box_info['ext'],true); + $gift_bag_receive_num = Db::name('vs_gift_bag_receive_log')->where('user_id',$user_id)->where('gift_bag_id',$gift_box_id)->whereTime('createtime', 'today')->count(); + if ($gift_bag_receive_num >= $ext['num']) { + return ['code' => 0, 'msg' => '您已领取该礼盒','data' => null]; + } + //查询礼盒详情 + $user_gift_box_details = db::name("vs_gift_bag_detail")->where('gift_bag_id',$gift_box_id)->orderRaw('rand()')->find(); + if (!$user_gift_box_details) { + return ['code' => 0, 'msg' => '礼盒不存在','data' => null]; + } + Db::startTrans(); + try { + switch ($user_gift_box_details['type']) { + case 1: //金币 方法1:直接添加到用户钱包 + $res = model('common/UserWallet')->change_user_money($user_id, $user_gift_box_details['quantity'], model('common/UserWallet')::MONEYTYPECOIN, model('common/UserWallet')::GIFT_BOX_REWARD,model('common/UserWallet')::ChangeTypeLable(model('common/UserWallet')::GIFT_BOX_REWARD)); + $return_data['gift_name']= "恭喜获得".$user_gift_box_details['gold']."金币"; + break; + case 2: //礼物 方法2:添加到用户礼物背包 + $res = model('UserGiftPack')->change_user_gift_pack($user_id,$user_gift_box_details['foreign_id'],$user_gift_box_details['quantity'],model('UserGiftPack')::GIFT_PACK_GET,$gift_box_info['name']); + $return_data['gift_name']= "恭喜获得".$user_gift_box_details['quantity']."X".$user_gift_box_details['name']; + break; + case 3: //坐骑 方法3:添加到用户装扮 + $res = model('Decorate')->pay_decorate($user_id,$user_gift_box_details['foreign_id'],$user_gift_box_details['days'],3); + $return_data['gift_name']= "恭喜获得".$user_gift_box_details['quantity']."天".$user_gift_box_details['name']; + break; + default: + break; + } + if ($res['code'] != 1) { + Db::rollback(); + return ['code' => 0, 'msg' => $res['msg'], 'data' => null]; + } + //添加礼盒记录 + $reslut = Db::name('vs_gift_bag_receive_log')->insert([ + 'user_id' => $user_id, + 'gift_bag_id' => $gift_box_id, + 'parent_id' => $user_gift_box_details['id'], + 'gift_id' => $user_gift_box_details['foreign_id'], + 'num' => $user_gift_box_details['quantity'], + 'gift_price' => $user_gift_box_details['gold'], + 'bag_price' => $ext['meet'], + 'createtime' => time(), + 'updatetime' => time() + ]); + if ($reslut) { + // 提交事务 + Db::commit(); + return ['code' => 1, 'msg' => '操作成功','data' => $return_data]; + } else { + Db::rollback(); + return ['code' => 0, 'msg' => '操作失败','data' => null]; + } + }catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return ['code' => 0, 'msg' => "请重试", 'data' => null]; + } + } + + /* + * 礼盒记录 + * + */ + public function gift_bag_receive_list($user_id){ + //查询每日任务礼盒记录 + $gift_bag_receive_list = Db::name('vs_gift_bag_receive_log') + ->field('bag.name as gift_bag_name,re.createtime as createtime,de.name as gift_name,de.quantity,de.type,de.foreign_id,de.days,de.gold') + ->alias('re') + ->join('vs_gift_bag bag', 'bag.id = re.gift_bag_id', 'LEFT') + ->join('vs_gift_bag_detail de', 'de.id = re.parent_id', 'LEFT') + ->where(['re.user_id'=>$user_id,'bag.activities_id'=>2,'bag.status'=>1]) + ->order('re.createtime desc') + ->select(); + if (!$gift_bag_receive_list) { + return ['code' => 0, 'msg' => '没有礼盒记录','data' => null]; + } + $result = []; + foreach ($gift_bag_receive_list as $k=>$v){ + $result[$k]['gift_bag_name'] = $v['gift_bag_name']; + if($v['type'] == 1){ + $result[$k]['gift_name'] = $v['gold'].'金币'; + }elseif ($v['type'] == 2){ + $result[$k]['gift_name'] = $v['gift_name'].' x '.$v['quantity']; + }elseif ($v['type'] == 3){ + $result[$k]['gift_name'] = $v['gift_name'].' x '.$v['days'].'天'; + } + $result[$k]['createtime'] = date('Y-m-d H:i:s',$v['createtime']); + } + return ['code' => 1, 'msg' => '操作成功','data' => $result]; + } + + /* + * 用户签到 + */ + public function sign_in($user_id){ + $sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$user_id,'sign_in_date'=>date('Y-m-d')])->find(); + if ($sign_in_info) { + return ['code' => 0, 'msg' => '今天已经签到过了','data' => null]; + } + Db::startTrans(); + try { + //每日签到 【完成任务】 + $this->tasks_complete($user_id,1); + //判断连续签到 + $continuous = 1; + $sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$user_id])->order('id desc')->find(); + if ($sign_in_info) { + if ($sign_in_info['sign_in_date'] == date('Y-m-d',strtotime('-1 day'))) { + $continuous = $sign_in_info['continuous'] + 1; + } else { + $continuous = 1; + } + } + if($continuous>1){ + //连续签到任务送金币 + //连续签到7天 【完成任务】 + //$this->tasks_complete($user_id,2); + //连续签到任务抽礼包【完成任务】 + //连续签到7天 【完成任务】 + //$this->tasks_complete($user_id,7); + } + $reslut = Db::name('vs_user_tasks_sign_in')->insert([ + 'user_id' => $user_id, + 'sign_in_date' => date('Y-m-d'), + 'continuous' => $continuous, + 'createtime' => time(), + 'updatetime' => time() + ]); + if ($reslut) { + // 提交事务 + Db::commit(); + return ['code' => 1, 'msg' => '操作成功','data' => null]; + } else { + Db::rollback(); + return ['code' => 0, 'msg' => '操作失败','data' => null]; + } + } catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return ['code' => 0, 'msg' => "请重试", 'data' => null]; + } + } + /* + * 今日签到状态 + */ + public function daily_tasks_sign_in_status($user_id){ + $sign_in_info = Db::name('vs_user_tasks_sign_in')->where(['user_id'=>$user_id,'sign_in_date'=>date('Y-m-d')])->find(); + $result = []; + if ($sign_in_info) { + $result['status'] = 1; + $result['status_str'] = "已签到"; + }else{ + $result['status'] = 0; + $result['status_str'] = "未签到"; + } + return ['code' => 1, 'msg' => '成功','data' => $result]; + } + +}