413 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			413 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						||
 | 
						||
namespace app\api\controller\school;
 | 
						||
 | 
						||
use addons\epay\library\Service;
 | 
						||
use app\admin\model\school\help\Cate;
 | 
						||
use app\common\controller\Api;
 | 
						||
use app\common\library\NightSchoolBigData;
 | 
						||
use bw\UrlLock;
 | 
						||
use think\Cache;
 | 
						||
 | 
						||
/**
 | 
						||
 * 数据驾驶舱接口
 | 
						||
 */
 | 
						||
class BigData extends Api
 | 
						||
{
 | 
						||
 | 
						||
 | 
						||
    // 无需登录的接口,*表示全部
 | 
						||
    protected $noNeedLogin = '*';
 | 
						||
    // 无需鉴权的接口,*表示全部
 | 
						||
    protected $noNeedRight = ['test2'];
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(按区域统计接口)
 | 
						||
     * @ApiSummary(按区域统计接口)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiParams(name = "province", type = "string",required=false,description = "省编号(非必填)")
 | 
						||
     * @ApiParams(name = "city", type = "string",required=false,description = "市编号(非必填)")
 | 
						||
     * @ApiParams(name = "district", type = "string",required=false,description = "区域编号(非必填)")
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getAreaBaseData()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"area-base-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $province = $this->request->request("province/s","");
 | 
						||
            $city = $this->request->request("city/s","");
 | 
						||
            $district = $this->request->request("district/s","");
 | 
						||
           $res = NightSchoolBigData::getAreaBaseData($province,$city,$district);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(按课程类型统计累计报名人数)
 | 
						||
     * @ApiSummary(按课程类型统计累计报名人数)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function accumulatedNumberOfApplicants()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"accumulatedNumberOfApplicants-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
 | 
						||
            $res = NightSchoolBigData::accumulatedNumberOfApplicants();
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(各区域上课数量和上课人数)
 | 
						||
     * @ApiSummary(各区域上课数量和上课人数)
 | 
						||
     * @ApiParams(name = "province", type = "string",required=false,description = "省编号(非必填)")
 | 
						||
     * @ApiParams(name = "city", type = "string",required=false,description = "市编号(非必填)")
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "复合时间查询:today今天,week本周,month本月,year本年,yesterday昨天,last year上一年,last week上周,last month上個月,lately7最近7天 , lately30最近30天,按开始时间区间查传值格式:Y/m/d H:M:S-Y/m/d H:M:S")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function numberOfClassesInEachRegion()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"numberOfClassesInEachRegion-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $province = $this->request->request("province/s","");
 | 
						||
            $city = $this->request->request("city/s","");
 | 
						||
            $time = $this->request->request("time/s","");
 | 
						||
            $res = NightSchoolBigData::numberOfClassesInEachRegion($province,$city,$time);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(按课程类型统计七天内报名人数)
 | 
						||
     * @ApiSummary(按课程类型统七天内报名人数)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function accumulatedSevenNumberOfApplicants()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"accumulatedSevenNumberOfApplicants-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
 | 
						||
            $res = NightSchoolBigData::accumulatedSevenNumberOfApplicants();
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(前N名累计活跃课程)
 | 
						||
     * @ApiSummary(前N名累计活跃课程)
 | 
						||
     * @ApiParams(name = "number", type = "string",required=false,description = "前N名累计活跃课程")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function topNCumulativeActiveCourses()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"topNCumulativeActiveCourses-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("number/d",20);
 | 
						||
            $res = NightSchoolBigData::topNCumulativeActiveCourses($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(七天内活动报名人数和活跃热度)
 | 
						||
     * @ApiSummary(七天内活动报名人数和活跃热度)
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function accumulatedSevenNumberOfActivity()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"accumulatedSevenNumberOfActivity-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
 | 
						||
            $res = NightSchoolBigData::accumulatedSevenNumberOfActivity();
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(得到七天内日期)
 | 
						||
     * @ApiSummary(得到七天内日期)
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "计算的当前时间戳")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getLastSevenDaysDate()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"getLastSevenDaysDate-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("time/s",0);
 | 
						||
            $res = NightSchoolBigData::getLastSevenDaysDate($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(得到上个月日期)
 | 
						||
     * @ApiSummary(得到上个月日期)
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "计算的当前时间戳")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getLastMonthDate()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"getLastMonthDate-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("time/s",0);
 | 
						||
            $res = NightSchoolBigData::getLastMonthDate($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(得到上个天日期)
 | 
						||
     * @ApiSummary(得到上个天日期)
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "计算的当前时间戳")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getLastDaysDate()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"getLastDaysDate-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("time/s",0);
 | 
						||
            $res = NightSchoolBigData::getLastDaysDate($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(得到上周日期)
 | 
						||
     * @ApiSummary(得到上周日期)
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "计算的当前时间戳")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getLastWeekDate()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"getLastWeekDate-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("time/s",0);
 | 
						||
            $res = NightSchoolBigData::getLastWeekDate($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(得到前30天日期)
 | 
						||
     * @ApiSummary(得到前30天日期)
 | 
						||
     * @ApiParams(name = "time", type = "string",required=false,description = "计算的当前时间戳")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function getLastThirtyDaysDate()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"getLastThirtyDaysDate-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $N = $this->request->request("time/s",0);
 | 
						||
            $res = NightSchoolBigData::getLastThirtyDaysDate($N);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
 | 
						||
    /**
 | 
						||
     * @ApiTitle(访问来源统计)
 | 
						||
     * @ApiSummary(访问来源统计)
 | 
						||
     * @ApiParams(name = "start_time", type = "string",required=false,description = "开始时间")
 | 
						||
     * @ApiParams(name = "end_time", type = "string",required=false,description = "结束时间")
 | 
						||
     * @ApiMethod(GET)
 | 
						||
     * @ApiReturn({
 | 
						||
    "code" => 1,
 | 
						||
    "msg" => "获取成功",
 | 
						||
    "data" => {}
 | 
						||
     *})
 | 
						||
     */
 | 
						||
    public function visitDistribution()
 | 
						||
    {
 | 
						||
 | 
						||
        try{
 | 
						||
            $lock = new UrlLock(1,"visitDistribution-data-lock-suffix",120,"您的请求过于频繁,请您稍后再试!请求最大锁定间隔5秒/一次!");
 | 
						||
            $lock->lock();
 | 
						||
            $start_time = $this->request->request("start_time/s",0);
 | 
						||
            $end_time = $this->request->request("end_time/s",0);
 | 
						||
            $res = NightSchoolBigData::visitDistribution($start_time,$end_time);
 | 
						||
 | 
						||
        }catch (\Throwable $e){
 | 
						||
            $lock->free();
 | 
						||
//            file_put_contents("test.txt",$e->getMessage().$e->getFile().$e->getLine());//写入文件,一般做正式环境测试
 | 
						||
            $this->error($e->getMessage());
 | 
						||
        }
 | 
						||
        $lock->free();
 | 
						||
 | 
						||
        $this->success('返回成功', $res);
 | 
						||
    }
 | 
						||
 | 
						||
}
 |