HEX
Server: nginx/1.28.1
System: Linux 10-41-63-61 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User: www (1001)
PHP: 7.4.33
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/douyin.dsfnj.com/application/bi/controller/Receivables.php
<?php
// +----------------------------------------------------------------------
// | Description: 商业智能-回款分析
// +----------------------------------------------------------------------
// | Author: ming | 1006941410@qq.com 
// +----------------------------------------------------------------------

namespace app\bi\controller;

use app\admin\controller\ApiCommon;
use think\Hook;
use think\Request;

class Receivables extends ApiCommon
{
    /**
     * 用于判断权限
     * @permission 无限制
     * @allow 登录用户可访问
     * @other 其他根据系统设置
    **/    
    public function _initialize()
    {
        $action = [
            'permission'=>[''],
            'allow'=>['statistics','statisticlist']            
        ];
        Hook::listen('check_auth',$action);
        $request = Request::instance();
        $a = strtolower($request->action());        
        if (!in_array($a, $action['permission'])) {
            parent::_initialize();
        }
        if (!checkPerByAction('bi', 'receivables' , 'read')) {
            header('Content-Type:application/json; charset=utf-8');
            exit(json_encode(['code'=>102,'error'=>'无权操作']));
        }         
    } 
  
    //回款统计列表
    public function statisticList()
    {
        $receivablesModel = new \app\crm\model\Receivables();
        $param = $this->param;
        $ret = $receivablesModel->getstatisticsData($param);
        return resultArray(['data'=>$ret]);
    }

    /**
     * 回款统计 柱状图
     * @author ming
     * @param year 年份 , month 月份
     * @return
     */
    public function statistics()
    {        
        $receivablesModel = new \app\crm\model\Receivables();
        $userModel = new \app\admin\model\User();
        $param = $this->param;
        $adminModel = new \app\admin\model\Admin(); 
        $perUserIds = $userModel->getUserByPer('bi', 'receivables', 'read'); //权限范围内userIds
        $whereData = $adminModel->getWhere($param, '', $perUserIds); //统计条件
        $userIds = $whereData['userIds'];       

        $year = $param['year'];
        //时间段
        if ($param['month']) {
            //根据月份计算天数
            $days = getmonthdays(strtotime($param['month']));
            //获取时间范围内的每日时间戳数组(当月)
            $start = strtotime($param['month'].'-'.'01');
            $end = (strtotime($param['month'].'-'.$days) > time()) ? time() : strtotime($date.'-'.$days);
            $create_time = array($start,$end);
        } elseif ($param['year']) {
            $next_year = $param['year']+1;
            $create_time = array(strtotime($param['year'].'-01-01'),strtotime($next_year.'-01-01'));
        } else {
            $create_time = getTimeByType('year');
        }
        unset($param['month']);
        unset($param['year']); 
        $param['create_time']['start'] = $create_time[0];
        $param['create_time']['end'] = $create_time[1];     
        $chartParam = $param;
        $chartParam['year'] = $year;
        $chartParam['userIds'] = $userIds ? : [];
        $chartList = $receivablesModel->getStatistics($chartParam); //柱状图
        return resultArray(['data' => $chartList]);
    }
}