You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
344 lines
14 KiB
344 lines
14 KiB
<?php
|
|
namespace app\api\controller\library;
|
|
|
|
use app\api\controller\Controller;
|
|
use app\common\dm\Dm;
|
|
use app\common\logic\PassFlow;
|
|
|
|
class Pass extends Controller
|
|
{
|
|
|
|
protected $url = 'http://balib.cn:8999';
|
|
|
|
/**
|
|
* 图书管数据接口
|
|
* @return array
|
|
* 返回数据:today.incount=今天进 month.incount=本月进 year.incount=今年进 day30.incount=近30天近 outcount=出
|
|
* 不传参数就是所有摄像头,传cameraid就是按传的摄像头ID
|
|
* cameraid = 宝安图书馆9,7,6,4,2,1,67,3 1990分馆134、 135
|
|
*/
|
|
public function allFlowTrends()
|
|
{
|
|
$data = PassFlow::allFlowTrends();
|
|
return $this->renderSuccess(compact('data'));
|
|
}
|
|
|
|
/**
|
|
* 借阅,办证
|
|
* 分馆年借还,今日借、还,今日办证
|
|
* @return array
|
|
*/
|
|
public function getLibraryService()
|
|
{
|
|
|
|
$library = $this->request->param('library') ?: '044007';
|
|
$url = $this->url . "/SSBusiness/monitor/getLibraryService?library={$library}";
|
|
|
|
$result = curlPost($url);
|
|
$data = json_decode($result,true);
|
|
|
|
return $this->renderSuccess(compact('data'));
|
|
}
|
|
|
|
/**
|
|
* 创建数据接口
|
|
* @return array
|
|
*/
|
|
public function create()
|
|
{
|
|
$this->validateToken();
|
|
|
|
$data_json = $this->request->param('data');
|
|
$data = json_decode(html_entity_decode($data_json),true);
|
|
|
|
$dm = new Dm();
|
|
foreach ($data as $val) {
|
|
|
|
$val['day30_incount'] = $val['day30_incount'] ?: 0;
|
|
$val['day30_outcount'] = $val['day30_outcount'] ?: 0;
|
|
$val['today_incount'] = $val['today_incount'] ?: 0;
|
|
$val['today_outcount'] = $val['today_outcount'] ?: 0;
|
|
$val['month_incount'] = $val['month_incount'] ?: 0;
|
|
$val['month_outcount'] = $val['month_outcount'] ?: 0;
|
|
$val['year_incount'] = $val['year_incount'] ?: 0;
|
|
$val['year_outcount'] = $val['year_outcount'] ?: 0;
|
|
if (date("Y") == '2024') $val['year_incount'] += 400000;// 虚拟数据+40W 的 6分之一 66667
|
|
|
|
// --------------------- 当天实时数据 --------------------- //
|
|
$query = $dm->find('bt_library',['group_id' => $val['group_id']]);
|
|
|
|
$opData = [
|
|
'day30_incount' => $val['day30_incount'],
|
|
'day30_outcount' => $val['day30_outcount'],
|
|
'today_incount' => $val['today_incount'],
|
|
'today_outcount' => $val['today_outcount'],
|
|
'month_incount' => $val['month_incount'],
|
|
'month_outcount' => $val['month_outcount'],
|
|
'year_incount' => $val['year_incount'],
|
|
'year_outcount' => $val['year_outcount'],
|
|
];
|
|
if ($query) {
|
|
$opData['update_time'] = date("Y-m-d H:i:s",time());
|
|
$dm->update('bt_library',$opData,['id' => $query['id']]);
|
|
} else {
|
|
$opData['group_id'] = $val['group_id'];
|
|
$opData['group_name'] = base64_decode($val['group_name']);
|
|
$opData['create_time'] = date("Y-m-d H:i:s",time());
|
|
$dm->insert('bt_library',$opData);
|
|
}
|
|
// --------------------- END --------------------- //
|
|
// --------------------- 小时数据 --------------------- //
|
|
if (isset($val['hour']) && is_array($val['hour'])) {
|
|
|
|
foreach ($val['hour'] as $hour => $hourVal) {
|
|
|
|
$hour = strlen($hour) > 1 ? $hour : '0' . $hour;
|
|
$hour .= ':00';
|
|
# 查看数据是否已经生成
|
|
$hoursQueryWhere = ['hour_time' => $hour, 'group_id' => $val['group_id'], 'create_time' => ['>=', date('Y-m-d 00:00:00')]];
|
|
$hoursQuery = $dm->find("bt_library_hours", $hoursQueryWhere);
|
|
|
|
if ($hoursQuery) {
|
|
# 数据发生变化再修改
|
|
if ($hourVal['incount'] == $hoursQuery['incount'] && $hourVal['outcount'] == $hoursQuery['outcount']) {
|
|
continue;
|
|
}
|
|
$update = [
|
|
'incount' => $hourVal['incount'],
|
|
'outcount' => $hourVal['outcount'],
|
|
'update_time' => date("Y-m-d H:i:s", time())
|
|
];
|
|
$dm->update('bt_library_hours', $update, ['id' => $hoursQuery['id']]);
|
|
} else {
|
|
# 创建数据
|
|
$insert = [
|
|
'group_id' => $val['group_id'],
|
|
'group_name' => base64_decode($val['group_name']),
|
|
'incount' => $hourVal['incount'],
|
|
'outcount' => $hourVal['outcount'],
|
|
'hour_time' => $hour,
|
|
'target_today_incount' => 0,
|
|
'target_today_outcount' => 0,
|
|
'create_time' => date("Y-m-d H:i:s", time())
|
|
];
|
|
$dm->insert("bt_library_hours", $insert);
|
|
}
|
|
}
|
|
}
|
|
// --------------------- end --------------------- //
|
|
$this->saveLibraryData($dm,$val);
|
|
}
|
|
return $this->renderSuccess();
|
|
}
|
|
|
|
/**
|
|
* 日 月 年数据 收集
|
|
* @param $dm
|
|
* @param $data
|
|
* @return void
|
|
*/
|
|
protected function saveLibraryData($dm,$data)
|
|
{
|
|
$arr = [
|
|
'day' => [
|
|
'create_time' => date('Y-m-d 00:00:00'),
|
|
'incount' => $data['today_incount'],
|
|
'outcount' => $data['today_outcount']
|
|
],
|
|
'month' => [
|
|
'create_time' => date('Y-m-01 00:00:00'),
|
|
'incount' => $data['month_incount'],
|
|
'outcount' => $data['month_outcount']
|
|
],
|
|
'year' => [
|
|
'create_time' => date('Y-01-01 00:00:00'),
|
|
'incount' => $data['year_incount'],
|
|
'outcount' => $data['year_outcount']
|
|
],
|
|
];
|
|
$group_id = $data['group_id'];
|
|
$group_name = base64_decode($data['group_name']);
|
|
foreach ($arr as $date => $value) {
|
|
|
|
$incount = $value['incount'];
|
|
$outcount = $value['outcount'];
|
|
$create_time = $value['create_time'];
|
|
|
|
$queryWhere = ['date' => $date, 'group_id' => $group_id, 'create_time' => ['>=',$create_time]];
|
|
$query = $dm->find("bt_library_data",$queryWhere);
|
|
|
|
if ($query) {
|
|
|
|
# 存在的数量 + (这次天数数量 - 上次天数数量) = 当前小时数量
|
|
$incount = $query['incount'] + ($incount - $query['last_incount']);
|
|
$outcount = $query['outcount'] + ($outcount - $query['last_outcount']);
|
|
|
|
$update = [
|
|
'incount' => $incount,
|
|
'outcount' => $outcount,
|
|
'last_incount' => $value['incount'],
|
|
'last_outcount' => $value['outcount'],
|
|
'update_time' => date("Y-m-d H:i:s",time())
|
|
];
|
|
$dm->update('bt_library_data',$update,['id' => $query['id']]);
|
|
} else {
|
|
|
|
# 创建数据
|
|
$insert = [
|
|
'group_id' => $group_id,
|
|
'group_name' => $group_name,
|
|
'incount' => $incount,
|
|
'outcount' => $outcount,
|
|
'last_incount' => $incount,
|
|
'last_outcount' => $outcount,
|
|
'date' => $date,
|
|
'create_time' => date("Y-m-d H:i:s",time())
|
|
];
|
|
$dm->insert("bt_library_data",$insert);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 文化 - 24小时 柱状图 数据
|
|
* @return array
|
|
*/
|
|
public function getLibraryHours24List()
|
|
{
|
|
$data = PassFlow::getLibraryHours24List();
|
|
return $this->renderSuccess(compact('data'));
|
|
}
|
|
|
|
/**
|
|
* 今日个场馆数据
|
|
* @return array
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function getLibraryGroupHoursList()
|
|
{
|
|
$data = PassFlow::getLibraryGroupHoursList();
|
|
return $this->renderSuccess(compact('data'));
|
|
}
|
|
|
|
/**
|
|
* 创建图书馆 借阅 办证数据
|
|
* @return array
|
|
*/
|
|
public function createLibraryLease()
|
|
{
|
|
$this->validateToken();
|
|
|
|
$data_json = $this->request->param('data');
|
|
$data = json_decode(html_entity_decode($data_json),true);
|
|
|
|
$dm = new Dm();
|
|
$today_start_time = date("Y-m-d 00:00:00",time());
|
|
foreach ($data as $val) {
|
|
|
|
$library = $val['library'];
|
|
$query = $dm->find("bt_library_lease",['library' => $library,'create_time' => ['>=',$today_start_time]]);
|
|
$arr = [
|
|
'newreader' => $val['newreader'],
|
|
'servcount' => $val['servcount'],
|
|
'returncount' => $val['returncount']
|
|
];
|
|
if ($query) {
|
|
|
|
$arr['update_time'] = date("Y-m-d H:i:s",time());
|
|
$dm->update('bt_library_lease',$arr,['id' => $query['id']]);
|
|
} else {
|
|
|
|
$arr['library'] = $library;
|
|
$arr['create_time'] = date("Y-m-d H:i:s",time());
|
|
$dm->insert('bt_library_lease',$arr);
|
|
}
|
|
}
|
|
|
|
return $this->renderSuccess();
|
|
}
|
|
|
|
/**
|
|
* 获取今日借阅办证数据
|
|
* @return array
|
|
*/
|
|
public function getLibraryLeaseData()
|
|
{
|
|
$data = PassFlow::getLibraryLeaseData();
|
|
return $this->renderSuccess(compact('data'));
|
|
}
|
|
|
|
public function createData()
|
|
{
|
|
$params = $this->request->get();
|
|
$type = $params['type'] ?? 1;
|
|
$dm = new Dm();
|
|
if ($type == 1) {
|
|
$query = $dm->select('bt_passenger_monitor_group');
|
|
$data = $dm->select('bt_passenger_flow_all','"granularity" =' . " 'yearly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'", 'id,groupId,groupName,flowInNum,granularity,statTime');
|
|
$count = $dm->count('bt_passenger_flow_all','"granularity" =' . " 'yearly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'");
|
|
echo "<pre>";
|
|
var_dump($query);
|
|
var_dump($data);
|
|
var_dump($count);
|
|
|
|
$data = $dm->select('bt_passenger_flow_all','"granularity" =' . " 'monthly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'", 'id,groupId,groupName,flowInNum,granularity,statTime');
|
|
$count = $dm->count('bt_passenger_flow_all','"granularity" =' . " 'monthly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'");
|
|
var_dump($data);
|
|
var_dump($count);
|
|
|
|
$data = $dm->select('bt_library_data','"date" =' . " 'year'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
$count = $dm->count('bt_library_data','"date" =' . " 'year'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
var_dump($data);
|
|
var_dump($count);
|
|
|
|
$data = $dm->select('bt_library_data','"date" =' . " 'month'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
$count = $dm->count('bt_library_data','"date" =' . " 'month'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
var_dump($data);
|
|
var_dump($count);
|
|
exit;
|
|
} else if ($type == 2) {
|
|
if (!isset($params['token'])) {
|
|
return $this->renderError('请求失败!');
|
|
}
|
|
if ($params['token'] != '3cdf2dfc441bc35b757988b2c716fbf6') {
|
|
return $this->renderError('请求验证失败');
|
|
}
|
|
|
|
$TyYearData = $dm->select('bt_passenger_flow_all','"granularity" =' . " 'yearly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'");
|
|
foreach ($TyYearData as $TyYearValue) {
|
|
$update = [
|
|
'flowInNum' => $TyYearValue['flowInNum'] + 66666
|
|
];
|
|
$dm->update('bt_passenger_flow_all',$update,['id' => $TyYearValue['id']]);
|
|
}
|
|
$TyMonthData = $dm->select('bt_passenger_flow_all','"granularity" =' . " 'monthly'" . ' AND "statTime"' . " >= '2024-01-01T00:00:00.000+08:00'" . ' AND "statTime"' . " <= '2024-08-31T23:59:59.000+08:00'");
|
|
foreach ($TyMonthData as $TyMonthValue) {
|
|
$update = [
|
|
'flowInNum' => $TyMonthValue['flowInNum'] + 8333
|
|
];
|
|
$dm->update('bt_passenger_flow_all',$update,['id' => $TyMonthValue['id']]);
|
|
}
|
|
|
|
$BaYearData = $dm->select('bt_passenger_flow_all','"date" =' . " 'year'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
foreach ($BaYearData as $BaYearValue) {
|
|
$update = [
|
|
'incount' => $BaYearValue['incount'] + 66666
|
|
];
|
|
$dm->update('bt_passenger_flow_all',$update,['id' => $BaYearValue['id']]);
|
|
}
|
|
$BaMonthData = $dm->select('bt_passenger_flow_all','"date" =' . " 'month'" . ' AND "create_time"' . " >= '2024-01-01 00:00:00'" . ' AND "create_time"' . " <= '2024-08-31 23:59:59'");
|
|
foreach ($BaMonthData as $BaMonthValue) {
|
|
$update = [
|
|
'incount' => $BaMonthValue['incount'] + 8333
|
|
];
|
|
$dm->update('bt_passenger_flow_all',$update,['id' => $BaMonthValue['id']]);
|
|
}
|
|
|
|
return $this->renderSuccess();
|
|
}
|
|
|
|
return $this->renderError('请求失败');
|
|
}
|
|
}
|
|
|