taskModel = new \app\common\model\Task(); $this->tasklogModel = new \app\common\model\TaskLog(); } /** * 获取任务列表 */ public function getTaskList() { $type_id = $this->request->request("type_id",1); // 任务类型:1=实时任务,2=每日任务 $plat = $this->request->request("plat",1); // 平台:1=安卓,2=ios $urlArr = ["1"=>"android_url","2"=>"ios_url"]; $jump_url = $urlArr[$plat]; if($type_id == 2) { // 获取所有基础任务 $where = []; $where["type_id"] = 2; $where["is_show"] = 1; $taskList = Db::name('task') ->field("id,type_id,image,name,exp,number,".$jump_url." as jump_url,url_type") ->where($where) ->autopage() ->select(); $taskList = list_domain_image($taskList,['image']); $today = strtotime(date("Y-m-d 00:00:00")); //今日开始的任务 $where = []; $where["user_id"] = $this->auth->id; $where["createtime"] = ["gt",$today]; $finishInfo = \app\common\model\TaskLog::where($where)->select(); $finishIds = []; if($finishInfo) foreach($finishInfo as $k => $v) { $finishIds[$v["task_id"]] = $v; } if($taskList) { foreach($taskList as $k => $v) { $finishInfo = isset($finishIds[$v["id"]])?$finishIds[$v["id"]]:[]; if($finishInfo) { $taskList[$k]["pace"] = $finishInfo->pace; $taskList[$k]["is_finish"] = $finishInfo->is_finish; $taskList[$k]["finish_number"] = $finishInfo->finish_number; $taskList[$k]["is_reward"] = $finishInfo->is_reward; if($finishInfo->is_finish != 1 && $finishInfo->pace != 0) { $taskList[$k]["pace_txt"] = $finishInfo->finish_number."/".$v["number"]; } } else { $taskList[$k]["pace"] = 0; $taskList[$k]["is_finish"] = 0; $taskList[$k]["finish_number"] = 0; $taskList[$k]["is_reward"] = 0; $taskList[$k]["pace_txt"] = "0/".$v["number"]; } } } } else { // 获取基本信息 $where = []; $where["a.type_id"] = 1; $where["a.is_show"] = 1; $taskList = Db::name('task')->alias("a") ->field("a.id,a.type_id,a.image,a.name,a.exp,a.number,a.".$jump_url." as jump_url,a.url_type,l.pace,l.is_reward,l.is_finish,l.finish_number") ->join("task_log l", "l.task_id = a.id and l.user_id = ".$this->auth->id, "left") ->where($where) ->autopage() ->order("a.id","asc") ->select(); $taskList = list_domain_image($taskList,['image']); $comment_for_gold_switch = config('site.comment_for_gold_switch');//好评有礼开关 if($taskList) { foreach($taskList as $k => $v) { $v["pace"] || $taskList[$k]["pace"] = 0; $v["is_finish"] || $taskList[$k]["is_finish"] = 0; $v["finish_number"] || $taskList[$k]["finish_number"] = 0; $v["is_reward"] || $taskList[$k]["is_reward"] = 0; if($v["is_finish"] != 1 && $v["pace"] != 0) { $taskList[$k]["pace_txt"] = $v["finish_number"]."/".$v["number"]; } //好评有礼开关 if($v['id'] == 17 && $comment_for_gold_switch == 0){ unset($taskList[$k]); } } } } $this->success("获取成功!",$taskList); } /** * 领取奖励 */ public function getReward() { $task_id = $this->request->request("task_id"); // 任务ID if (!$task_id) { $this->error(__('Invalid parameters')); } // 查询任务信息 $taskInfo = $this->taskModel->where(["id"=>$task_id])->find(); if(!$taskInfo) { $this->error("任务信息未找到!"); } // 查询用户完成情况 $where = []; $where["user_id"] = $this->auth->id; $where["task_id"] = $task_id; $where["is_finish"] = 1; if($taskInfo["type_id"] == 2){ $where["finish_date"] = date("Ymd"); } $tasklogInfo = $this->tasklogModel->where($where)->find(); if(!$tasklogInfo) { $this->error("任务还未完成哦!"); } if($tasklogInfo["is_reward"] == 1) { $this->error("任务奖励已领取,请勿重复领取!"); } Db::startTrans(); try{ // 增加用户金币 $res1 = model('wallet')->lockChangeAccountRemain($this->auth->id,'gold',$taskInfo["exp"],61,$taskInfo['name'],'task_log',$tasklogInfo['id']); if($res1['status'] === false){ Db::rollback(); $this->error($res1['msg']); } // 更新奖励领取状态 $res2 = $this->tasklogModel->update(["is_reward"=>1],["task_id"=>$task_id,"user_id"=>$this->auth->id]); if($res1['status'] === true && $res2) { Db::commit(); $this->success("领取成功!"); } else { Db::rollback(); $this->error("领取失败!"); } }catch (ValidateException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (PDOException $e) { Db::rollback(); $this->error($e->getMessage()); } catch (Exception $e) { Db::rollback(); $this->error($e->getMessage()); } } /** * 完成任务 */ public function finishTask() { $task_id = $this->request->request("task_id"); // 任务编码 $number = $this->request->request("number",1); // 完成次数 if (!$task_id) { $this->error(__('Invalid parameters')); } \app\common\model\TaskLog::tofinish($this->auth->id,$task_id,$number); $this->success("成功!"); } }