|
|
<?php
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Description: 商机
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: Michael_xu | gengxiaoxu@5kcrm.com
|
|
|
// +----------------------------------------------------------------------
|
|
|
namespace app\bi\model;
|
|
|
|
|
|
use think\Db;
|
|
|
use app\admin\model\Common;
|
|
|
use think\Request;
|
|
|
|
|
|
class Business extends Common
|
|
|
{
|
|
|
/**
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
*/
|
|
|
protected $name = 'crm_business';
|
|
|
|
|
|
/**
|
|
|
* [getDataCount 商机count]
|
|
|
* @author Michael_xu
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getDataCount($whereArr)
|
|
|
{
|
|
|
$where = [];
|
|
|
$dataCount = $this->where($whereArr)->where($where)->count('business_id');
|
|
|
$count = $dataCount ? : 0;
|
|
|
return $count;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* [getDataMoney 商机金额]
|
|
|
* @author Michael_xu
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
function getDataMoney($whereArr)
|
|
|
{
|
|
|
$where = [];
|
|
|
$money = $this->where($whereArr)->where($where)->sum('money');
|
|
|
return $money;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取商机list
|
|
|
*
|
|
|
* @param $param
|
|
|
* @return mixed
|
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
|
* @throws \think\exception\DbException
|
|
|
*/
|
|
|
function getDataList($param)
|
|
|
{
|
|
|
$page = !empty($param['page']) ? $param['page'] : 1;
|
|
|
$limit = !empty($param['limit']) ? $param['limit'] : 15;
|
|
|
unset($param['page']);
|
|
|
unset($param['limit']);
|
|
|
|
|
|
$userModel = new \app\admin\model\User();
|
|
|
$adminModel = new \app\admin\model\Admin();
|
|
|
|
|
|
$perUserIds = $userModel->getUserByPer('bi', 'business', 'read'); //权限范围内userIds
|
|
|
$whereData = $adminModel->getWhere($param, '', $perUserIds); //统计条件
|
|
|
$userIds = $whereData['userIds'];
|
|
|
|
|
|
if (!empty($whereData['between_time']['last_time'])) unset($whereData['between_time']['last_time']);
|
|
|
$between_time = $whereData['between_time'];
|
|
|
$where['business.owner_user_id'] = array('in',$userIds);
|
|
|
$where['business.create_time'] = ['between', $between_time];
|
|
|
$where['check_status'] = 2;
|
|
|
if (!empty($param['is_end']) && $param['is_end'] == 1) $where['is_end'] = 1;
|
|
|
|
|
|
$count = db('crm_business')->alias('business')
|
|
|
->join('__CRM_CONTRACT__ contract', 'contract.business_id = business.business_id', 'left')
|
|
|
->where($where)->group('business.business_id')->count();
|
|
|
$sql = db('crm_business')->alias('business')
|
|
|
->field('business.business_id,business.customer_id,business.money,business.type_id,business.status_id,business.deal_date,business.create_user_id,business.owner_user_id')
|
|
|
->join('__CRM_CONTRACT__ contract', 'contract.business_id = business.business_id', 'left')
|
|
|
->where($where)
|
|
|
->fetchSql()
|
|
|
->limit(($page - 1) * $limit, $limit)
|
|
|
->order(['money' => 'DESC'])
|
|
|
->group('business.business_id')
|
|
|
->select();
|
|
|
|
|
|
return ['dataCount' => $count, 'list' => queryCache($sql)];
|
|
|
}
|
|
|
} |