|
|
<?php
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Description: 日志统计
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: zhi | zhijunfu@5kcrm.com
|
|
|
// +----------------------------------------------------------------------
|
|
|
namespace app\bi\model;
|
|
|
|
|
|
use think\Db;
|
|
|
use app\admin\model\Common;
|
|
|
use think\Request;
|
|
|
use app\admin\model\User as UserModel;
|
|
|
|
|
|
|
|
|
class Log extends Common
|
|
|
{
|
|
|
/**
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
*/
|
|
|
protected $name = 'oa_log';
|
|
|
|
|
|
/**
|
|
|
* [getDataList 日志统计]
|
|
|
* @author Michael_xu
|
|
|
* @param
|
|
|
* @return
|
|
|
*/
|
|
|
public function getStatistics($param)
|
|
|
{
|
|
|
//时间
|
|
|
$start_time = $param['start_time'] ? : strtotime(date('Y-m-d',time()));
|
|
|
$end_time = $param['end_time'] ? : strtotime(date('Y-m-d',time()))+86399;
|
|
|
$create_time = array('between',array($start_time,$end_time));
|
|
|
|
|
|
$where = ['type' => 1];
|
|
|
getWhereUserByParam($where, 'id');
|
|
|
|
|
|
$userList = UserModel::where($where)
|
|
|
->field(['id','username','realname'])
|
|
|
->select();
|
|
|
foreach ($userList as $k=>$v) {
|
|
|
$log_list = [];
|
|
|
$count = 0; //填写数
|
|
|
$unReadCont = 0; //接收人未读数
|
|
|
$unCommentCount = 0; //未评论数
|
|
|
$commentCount = 0; //已评论数
|
|
|
$log_list = $this->where(['create_time' => $create_time,'create_user_id' => $v['id']])->field('send_user_ids,read_user_ids,log_id')->select();
|
|
|
$count = count($log_list);
|
|
|
if ($log_list) {
|
|
|
//获取评论过的日志id集合
|
|
|
$w_c['ac.type'] = 'oa_log';
|
|
|
$log_ids = $this->alias('l')
|
|
|
->join('AdminComment ac', 'ac.type_id = l.log_id', 'LEFT')
|
|
|
->where($w_c)
|
|
|
->group('l.log_id')
|
|
|
->column('log_id');
|
|
|
foreach ($log_list as $key=>$val) {
|
|
|
if (stringToArray($val['send_user_ids']) && !array_intersect(stringToArray($val['send_user_ids']),stringToArray($val['read_user_ids']))) {
|
|
|
$unReadCont += 1;
|
|
|
}
|
|
|
//判断日志id是否在评论过的id集合内
|
|
|
if (in_array($val['log_id'], $log_ids) ) {
|
|
|
$commentCount += 1;
|
|
|
} else {
|
|
|
$unCommentCount += 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$userList[$k]['count'] = $count;
|
|
|
$userList[$k]['unReadCont'] = $unReadCont;
|
|
|
$userList[$k]['unCommentCount'] = $unCommentCount;
|
|
|
$userList[$k]['commentCount'] = $commentCount;
|
|
|
}
|
|
|
return $userList ? : [];
|
|
|
}
|
|
|
} |