| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 | <?phpnamespace app\api\controller;use app\common\controller\Api;use think\Db;/** * 任务接口 */class Task extends Api{    protected $noNeedLogin = [''];    protected $noNeedRight = '*';    public function _initialize()    {        parent::_initialize();        $this->taskModel = new \app\common\model\Task();        $this->tasklogModel = new \app\common\model\TaskLog();    }    /**     * 获取任务列表     */    public function getTaskList() {        $type_id = input("type_id",1); // 任务类型:1=实时任务,2=每日任务        $plat = input("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,exp_woman,number,".$jump_url." as jump_url,url_type")                ->where($where)                ->autopage()                ->select();            foreach($taskList as $key => &$val){                if($this->auth->gender == 0){                    $val['exp'] = $val['exp_woman'];                }                unset($val['exp_woman']);            }            $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.exp_woman,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();            foreach($taskList as $key => &$val){                if($this->auth->gender == 0){                    $val['exp'] = $val['exp_woman'];                }                unset($val['exp_woman']);            }            $taskList = list_domain_image($taskList,['image']);            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"];                    }                }            }        }        $this->success("获取成功!",$taskList);    }    /**     * 领取奖励     */    public function getReward() {        $task_id = input("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{            // 增加用户金币            $exp = $this->auth->gender == 0 ? $taskInfo['exp_woman'] : $taskInfo['exp'];            $res1 = model('wallet')->lockChangeAccountRemain($this->auth->id,'jewel',$exp,32,$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 = input("task_id"); // 任务编码        $number = input("number",1); // 完成次数        if (!$task_id) {            $this->error(__('Invalid parameters'));        }        \app\common\model\TaskLog::tofinish($this->auth->id,$task_id,$number);        $this->success("成功!");    }}
 |