no message

This commit is contained in:
kuaifan 2024-11-12 19:52:19 +08:00
parent 1227a05e2d
commit 93387c289e
11 changed files with 51 additions and 342 deletions

View File

@ -2,7 +2,6 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Module\Doo;
use Request; use Request;
use Session; use Session;
use Response; use Response;
@ -10,6 +9,8 @@ use Madzipper;
use Carbon\Carbon; use Carbon\Carbon;
use App\Models\User; use App\Models\User;
use App\Module\Base; use App\Module\Base;
use App\Module\Doo;
use App\Module\Timer;
use App\Module\Ihttp; use App\Module\Ihttp;
use App\Tasks\PushTask; use App\Tasks\PushTask;
use App\Module\BillExport; use App\Module\BillExport;
@ -758,7 +759,7 @@ class ApproveController extends AbstractController
if (empty($name) || empty($date)) { if (empty($name) || empty($date)) {
return Base::retError('参数错误'); return Base::retError('参数错误');
} }
if (!(is_array($date) && Base::isDate($date[0]) && Base::isDate($date[1]))) { if (!(is_array($date) && Timer::isDate($date[0]) && Timer::isDate($date[1]))) {
return Base::retError('日期选择错误'); return Base::retError('日期选择错误');
} }
if (Carbon::parse($date[1])->timestamp - Carbon::parse($date[0])->timestamp > 35 * 86400) { if (Carbon::parse($date[1])->timestamp - Carbon::parse($date[0])->timestamp > 35 * 86400) {
@ -817,7 +818,7 @@ class ApproveController extends AbstractController
// 计算审批耗时 // 计算审批耗时
$startTime = Carbon::parse($val['start_time'])->timestamp; $startTime = Carbon::parse($val['start_time'])->timestamp;
$endTime = $val['end_time'] ? Carbon::parse($val['end_time'])->timestamp : time(); $endTime = $val['end_time'] ? Carbon::parse($val['end_time'])->timestamp : time();
$approval_time = Doo::translate(Base::timeDiff($startTime, $endTime)); // 审批耗时 $approval_time = Doo::translate(Timer::timeDiff($startTime, $endTime)); // 审批耗时
// 计算时长 // 计算时长
$varStartTime = Carbon::parse($val['var']['start_time']); $varStartTime = Carbon::parse($val['var']['start_time']);
$varEndTime = Carbon::parse($val['var']['end_time']); $varEndTime = Carbon::parse($val['var']['end_time']);
@ -859,8 +860,8 @@ class ApproveController extends AbstractController
BillExport::create()->setTitle($title)->setHeadings($headings)->setData($datas)->setStyles(["A1:Y1" => ["font" => ["bold" => true]]]) BillExport::create()->setTitle($title)->setHeadings($headings)->setData($datas)->setStyles(["A1:Y1" => ["font" => ["bold" => true]]])
]; ];
// //
$fileName = $title . '_' . Base::time() . '.xlsx'; $fileName = $title . '_' . Timer::time() . '.xlsx';
$filePath = "temp/approve/export/" . date("Ym", Base::time()); $filePath = "temp/approve/export/" . date("Ym", Timer::time());
$export = new BillMultipleExport($sheets); $export = new BillMultipleExport($sheets);
$res = $export->store($filePath . "/" . $fileName); $res = $export->store($filePath . "/" . $fileName);
if ($res != 1) { if ($res != 1) {
@ -978,9 +979,9 @@ class ApproveController extends AbstractController
'department' => $process['department'], 'department' => $process['department'],
'type' => $process['var']['type'], 'type' => $process['var']['type'],
'start_time' => $process['var']['start_time'], 'start_time' => $process['var']['start_time'],
'start_day_of_week' => '周' . Base::getTimeWeek(Carbon::parse($process['var']['start_time'])->timestamp), 'start_day_of_week' => '周' . Timer::getWeek(Carbon::parse($process['var']['start_time'])->timestamp),
'end_time' => $process['var']['end_time'], 'end_time' => $process['var']['end_time'],
'end_day_of_week' => '周' . Base::getTimeWeek(Carbon::parse($process['var']['end_time'])->timestamp), 'end_day_of_week' => '周' . Timer::getWeek(Carbon::parse($process['var']['end_time'])->timestamp),
'description' => $process['var']['description'], 'description' => $process['var']['description'],
'comment_nickname' => $process['comment_user_id'] ? User::userid2nickname($process['comment_user_id']) : '', 'comment_nickname' => $process['comment_user_id'] ? User::userid2nickname($process['comment_user_id']) : '',
'comment_content' => $process['comment_contents']['content'] ?? '', 'comment_content' => $process['comment_contents']['content'] ?? '',

View File

@ -11,6 +11,7 @@ use App\Module\Doo;
use App\Models\File; use App\Models\File;
use App\Models\User; use App\Models\User;
use App\Module\Base; use App\Module\Base;
use App\Module\Timer;
use App\Module\Extranet; use App\Module\Extranet;
use App\Module\TimeRange; use App\Module\TimeRange;
use App\Models\FileContent; use App\Models\FileContent;
@ -591,7 +592,7 @@ class DialogController extends AbstractController
->value('id')); ->value('id'));
} }
$data['list'] = $list; $data['list'] = $list;
$data['time'] = Base::time(); $data['time'] = Timer::time();
// 记录当前打开的任务对话 // 记录当前打开的任务对话
if ($dialog->type == 'group' && $dialog->group_type == 'task') { if ($dialog->type == 'group' && $dialog->group_type == 'task') {
$user->task_dialog_id = $dialog->id; $user->task_dialog_id = $dialog->id;

View File

@ -12,7 +12,7 @@ use App\Models\FileLink;
use App\Models\FileUser; use App\Models\FileUser;
use App\Models\User; use App\Models\User;
use App\Module\Base; use App\Module\Base;
use App\Module\Doo; use App\Module\Timer;
use App\Module\Ihttp; use App\Module\Ihttp;
use Response; use Response;
use Session; use Session;
@ -1020,9 +1020,9 @@ class FileController extends AbstractController
if (empty($fileName)) { if (empty($fileName)) {
$fileName = 'Package_' . $user->userid; $fileName = 'Package_' . $user->userid;
} }
$fileName .= '_' . Base::time() . '.zip'; $fileName .= '_' . Timer::time() . '.zip';
$filePath = "temp/file/pack/" . date("Ym", Base::time()); $filePath = "temp/file/pack/" . date("Ym", Timer::time());
$zipFile = "app/" . $filePath . "/" . $fileName; $zipFile = "app/" . $filePath . "/" . $fileName;
$zipPath = storage_path($zipFile); $zipPath = storage_path($zipFile);

View File

@ -12,6 +12,7 @@ use App\Module\Doo;
use App\Models\File; use App\Models\File;
use App\Models\User; use App\Models\User;
use App\Module\Base; use App\Module\Base;
use App\Module\Timer;
use Swoole\Coroutine; use Swoole\Coroutine;
use App\Models\Deleted; use App\Models\Deleted;
use App\Models\Project; use App\Models\Project;
@ -1003,7 +1004,7 @@ class ProjectController extends AbstractController
} }
// //
if (is_array($time)) { if (is_array($time)) {
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) { if (Timer::isDateOrTime($time[0]) && Timer::isDateOrTime($time[1])) {
$builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay()); $builder->betweenTime(Carbon::parse($time[0])->startOfDay(), Carbon::parse($time[1])->endOfDay());
} }
} }
@ -1196,7 +1197,7 @@ class ProjectController extends AbstractController
if (count($userid) > 100) { if (count($userid) > 100) {
return Base::retError('导出成员限制最多100个'); return Base::retError('导出成员限制最多100个');
} }
if (!(is_array($time) && Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1]))) { if (!(is_array($time) && Timer::isDateOrTime($time[0]) && Timer::isDateOrTime($time[1]))) {
return Base::retError('时间选择错误'); return Base::retError('时间选择错误');
} }
if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) { if (Carbon::parse($time[1])->timestamp - Carbon::parse($time[0])->timestamp > 90 * 86400) {
@ -1279,9 +1280,9 @@ class ProjectController extends AbstractController
$planTotalTime = $endTime - $startTime; $planTotalTime = $endTime - $startTime;
$residueTime = $planTotalTime - $totalTime; $residueTime = $planTotalTime - $totalTime;
if ($residueTime < 0) { if ($residueTime < 0) {
$overTime = Doo::translate(Base::timeFormat(abs($residueTime))); $overTime = Doo::translate(Timer::timeFormat(abs($residueTime)));
} }
$planTime = Doo::translate(Base::timeDiff($startTime, $endTime)); $planTime = Doo::translate(Timer::timeDiff($startTime, $endTime));
} }
$actualTime = $task->complete_at ? $totalTime : 0; // 实际完成用时 $actualTime = $task->complete_at ? $totalTime : 0; // 实际完成用时
$statusText = '未完成'; $statusText = '未完成';
@ -1322,10 +1323,10 @@ class ProjectController extends AbstractController
$task->complete_at ?: '-', $task->complete_at ?: '-',
$task->archived_at ?: '-', $task->archived_at ?: '-',
$planTime, $planTime,
$actualTime ? Doo::translate(Base::timeFormat($actualTime)) : '-', $actualTime ? Doo::translate(Timer::timeFormat($actualTime)) : '-',
$overTime, $overTime,
$developTime > 0 ? Doo::translate(Base::timeFormat($developTime)) : '-', $developTime > 0 ? Doo::translate(Timer::timeFormat($developTime)) : '-',
$testTime > 0 ? Doo::translate(Base::timeFormat($testTime)) : '-', $testTime > 0 ? Doo::translate(Timer::timeFormat($testTime)) : '-',
Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})", Base::filterEmoji(User::userid2nickname($task->ownerid)) . " (ID: {$task->ownerid})",
Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})", Base::filterEmoji(User::userid2nickname($task->userid)) . " (ID: {$task->userid})",
Doo::translate($statusText), Doo::translate($statusText),
@ -1362,8 +1363,8 @@ class ProjectController extends AbstractController
} else { } else {
$fileName .= '的任务统计'; $fileName .= '的任务统计';
} }
$fileName = Doo::translate($fileName) . '_' . Base::time() . '.xls'; $fileName = Doo::translate($fileName) . '_' . Timer::time() . '.xls';
$filePath = "temp/task/export/" . date("Ym", Base::time()); $filePath = "temp/task/export/" . date("Ym", Timer::time());
$export = new BillMultipleExport($sheets); $export = new BillMultipleExport($sheets);
$res = $export->store($filePath . "/" . $fileName); $res = $export->store($filePath . "/" . $fileName);
if ($res != 1) { if ($res != 1) {
@ -1464,9 +1465,9 @@ class ProjectController extends AbstractController
$planTotalTime = $endTime - $startTime; $planTotalTime = $endTime - $startTime;
$residueTime = $planTotalTime - $totalTime; $residueTime = $planTotalTime - $totalTime;
if ($residueTime < 0) { if ($residueTime < 0) {
$overTime = Doo::translate(Base::timeFormat(abs($residueTime))); $overTime = Doo::translate(Timer::timeFormat(abs($residueTime)));
} }
$planTime = Doo::translate(Base::timeDiff($startTime, $endTime)); $planTime = Doo::translate(Timer::timeDiff($startTime, $endTime));
} }
$ownerIds = $task->taskUser->where('owner', 1)->pluck('userid')->toArray(); $ownerIds = $task->taskUser->where('owner', 1)->pluck('userid')->toArray();
$ownerNames = []; $ownerNames = [];
@ -1496,8 +1497,8 @@ class ProjectController extends AbstractController
BillExport::create()->setTitle($title)->setHeadings($headings)->setData($data)->setStyles(["A1:J1" => ["font" => ["bold" => true]]]) BillExport::create()->setTitle($title)->setHeadings($headings)->setData($data)->setStyles(["A1:J1" => ["font" => ["bold" => true]]])
]; ];
// //
$fileName = $title . '_' . Base::time() . '.xls'; $fileName = $title . '_' . Timer::time() . '.xls';
$filePath = "temp/task/export/" . date("Ym", Base::time()); $filePath = "temp/task/export/" . date("Ym", Timer::time());
$export = new BillMultipleExport($sheets); $export = new BillMultipleExport($sheets);
$res = $export->store($filePath . "/" . $fileName); $res = $export->store($filePath . "/" . $fileName);
if ($res != 1) { if ($res != 1) {
@ -2541,10 +2542,10 @@ class ProjectController extends AbstractController
} }
$log->detail = Doo::translate($log->detail); $log->detail = Doo::translate($log->detail);
$log->time = [ $log->time = [
'ymd' => date(date("Y", $timestamp) == date("Y", Base::time()) ? "m-d" : "Y-m-d", $timestamp), 'ymd' => date(date("Y", $timestamp) == date("Y", Timer::time()) ? "m-d" : "Y-m-d", $timestamp),
'hi' => date("h:i", $timestamp) , 'hi' => date("h:i", $timestamp) ,
'week' => Doo::translate("" . Base::getTimeWeek($timestamp)), 'week' => Doo::translate("" . Timer::getWeek($timestamp)),
'segment' => Doo::translate(Base::getTimeDayeSegment($timestamp)), 'segment' => Doo::translate(Timer::getDayeSegment($timestamp)),
]; ];
$record = Base::json2array($log->record); $record = Base::json2array($log->record);
if (is_array($record['change'])) { if (is_array($record['change'])) {

View File

@ -11,6 +11,7 @@ use App\Module\Doo;
use App\Models\File; use App\Models\File;
use App\Models\User; use App\Models\User;
use App\Module\Base; use App\Module\Base;
use App\Module\Timer;
use App\Ldap\LdapUser; use App\Ldap\LdapUser;
use App\Models\Meeting; use App\Models\Meeting;
use App\Models\Project; use App\Models\Project;
@ -1091,7 +1092,7 @@ class UsersController extends AbstractController
return Base::retError('链接已经使用过', ['code' => 2]); return Base::retError('链接已经使用过', ['code' => 2]);
$oldTime = Carbon::parse($res->created_at)->timestamp; $oldTime = Carbon::parse($res->created_at)->timestamp;
$time = Base::Time(); $time = Timer::Time();
// 30分钟失效 // 30分钟失效
if (abs($time - $oldTime) > 1800) { if (abs($time - $oldTime) > 1800) {

View File

@ -4,6 +4,7 @@ namespace App\Models;
use App\Module\Base; use App\Module\Base;
use App\Module\Timer;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
@ -76,7 +77,7 @@ class FileContent extends AbstractModel
'name' => $name, 'name' => $name,
'ext' => $fileExt 'ext' => $fileExt
])); ]));
return Base::fillUrl("online/preview/{$name}?key={$key}&version=" . Base::getVersion() . "&__=" . Base::msecTime()); return Base::fillUrl("online/preview/{$name}?key={$key}&version=" . Base::getVersion() . "&__=" . Timer::msecTime());
} }
/** /**

View File

@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use App\Module\Timer;
use DB; use DB;
use Arr; use Arr;
use Request; use Request;
@ -438,7 +439,7 @@ class ProjectTask extends AbstractModel
// 时间 // 时间
if ($times) { if ($times) {
list($start, $end) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []); list($start, $end) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []);
if (Base::isDate($start) && Base::isDate($end) && $start != $end) { if (Timer::isDate($start) && Timer::isDate($end) && $start != $end) {
$task->start_at = Carbon::parse($start); $task->start_at = Carbon::parse($start);
$task->end_at = Carbon::parse($end); $task->end_at = Carbon::parse($end);
} }
@ -537,7 +538,7 @@ class ProjectTask extends AbstractModel
if ($task->parent_id == 0 && $subtasks && is_array($subtasks)) { if ($task->parent_id == 0 && $subtasks && is_array($subtasks)) {
foreach ($subtasks as $subtask) { foreach ($subtasks as $subtask) {
list($start, $end) = is_string($subtask['times']) ? explode(",", $subtask['times']) : (is_array($subtask['times']) ? $subtask['times'] : []); list($start, $end) = is_string($subtask['times']) ? explode(",", $subtask['times']) : (is_array($subtask['times']) ? $subtask['times'] : []);
if (Base::isDate($start) && Base::isDate($end) && $start != $end) { if (Timer::isDate($start) && Timer::isDate($end) && $start != $end) {
if (Carbon::parse($start)->lt($task->start_at)) { if (Carbon::parse($start)->lt($task->start_at)) {
throw new ApiException('子任务开始时间不能小于主任务开始时间'); throw new ApiException('子任务开始时间不能小于主任务开始时间');
} }
@ -663,7 +664,7 @@ class ProjectTask extends AbstractModel
if ($mainTask?->complete_at) { if ($mainTask?->complete_at) {
throw new ApiException('主任务已完成,无法修改子任务状态'); throw new ApiException('主任务已完成,无法修改子任务状态');
} }
if (Base::isDate($data['complete_at'])) { if (Timer::isDate($data['complete_at'])) {
// 标记已完成 // 标记已完成
if ($this->complete_at) { if ($this->complete_at) {
throw new ApiException('任务已完成'); throw new ApiException('任务已完成');
@ -774,7 +775,7 @@ class ProjectTask extends AbstractModel
$this->end_at = null; $this->end_at = null;
$times = $data['times']; $times = $data['times'];
list($start, $end, $desc) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []); list($start, $end, $desc) = is_string($times) ? explode(",", $times) : (is_array($times) ? $times : []);
if (Base::isDate($start) && Base::isDate($end) && $start != $end) { if (Timer::isDate($start) && Timer::isDate($end) && $start != $end) {
$start_at = Carbon::parse($start); $start_at = Carbon::parse($start);
$end_at = Carbon::parse($end); $end_at = Carbon::parse($end);
if ($this->parent_id > 0) { if ($this->parent_id > 0) {

View File

@ -5,6 +5,7 @@ namespace App\Models;
use App\Module\Base; use App\Module\Base;
use App\Module\Doo; use App\Module\Doo;
use App\Module\Extranet; use App\Module\Extranet;
use App\Module\Timer;
use App\Tasks\JokeSoupTask; use App\Tasks\JokeSoupTask;
use Cache; use Cache;
use Carbon\Carbon; use Carbon\Carbon;
@ -210,7 +211,7 @@ class UserBot extends AbstractModel
if (!in_array('manual', $setting['modes'])) { if (!in_array('manual', $setting['modes'])) {
return '暂未开放手动签到。'; return '暂未开放手动签到。';
} }
if ($error = UserBot::checkinBotCheckin('manual-' . $userid, Base::time(), true)) { if ($error = UserBot::checkinBotCheckin('manual-' . $userid, Timer::time(), true)) {
return $error; return $error;
} }
return null; return null;
@ -230,7 +231,7 @@ class UserBot extends AbstractModel
} else { } else {
return '错误的定位签到。'; return '错误的定位签到。';
} }
if ($error = UserBot::checkinBotCheckin('locat-' . $userid, Base::time(), true)) { if ($error = UserBot::checkinBotCheckin('locat-' . $userid, Timer::time(), true)) {
return $error; return $error;
} }
return null; return null;
@ -262,7 +263,7 @@ class UserBot extends AbstractModel
$timeEnd = strtotime("{$nowDate} {$times[1]}"); $timeEnd = strtotime("{$nowDate} {$times[1]}");
$timeAdvance = max($timeStart - $advance, strtotime($nowDate)); $timeAdvance = max($timeStart - $advance, strtotime($nowDate));
$timeDelay = min($timeEnd + $delay, strtotime("{$nowDate} 23:59:59")); $timeDelay = min($timeEnd + $delay, strtotime("{$nowDate} 23:59:59"));
if (Base::time() < $timeAdvance || $timeDelay < Base::time()) { if (Timer::time() < $timeAdvance || $timeDelay < Timer::time()) {
return "不在有效时间内,有效时间为:" . date("H:i", $timeAdvance) . "-" . date("H:i", $timeDelay); return "不在有效时间内,有效时间为:" . date("H:i", $timeAdvance) . "-" . date("H:i", $timeDelay);
} }
// //
@ -367,13 +368,13 @@ class UserBot extends AbstractModel
], $botUser->userid, false, false, $type != "up"); ], $botUser->userid, false, false, $type != "up");
} }
}; };
if ($timeAdvance <= Base::time() && Base::time() < $timeEnd) { if ($timeAdvance <= Timer::time() && Timer::time() < $timeEnd) {
// 上班打卡通知(从最早打卡时间 到 下班打卡时间) // 上班打卡通知(从最早打卡时间 到 下班打卡时间)
foreach ($checkins as $checkin) { foreach ($checkins as $checkin) {
$sendMsg('up', $checkin); $sendMsg('up', $checkin);
} }
} }
if ($timeEnd <= Base::time() && Base::time() <= $timeDelay) { if ($timeEnd <= Timer::time() && Timer::time() <= $timeDelay) {
// 下班打卡通知(下班打卡时间 到 最晚打卡时间) // 下班打卡通知(下班打卡时间 到 最晚打卡时间)
foreach ($checkins as $checkin) { foreach ($checkins as $checkin) {
$sendMsg('down', $checkin); $sendMsg('down', $checkin);

View File

@ -4,6 +4,7 @@ namespace App\Models;
use App\Exceptions\ApiException; use App\Exceptions\ApiException;
use App\Module\Base; use App\Module\Base;
use App\Module\Timer;
use Carbon\Carbon; use Carbon\Carbon;
use Guanguans\Notify\Factory; use Guanguans\Notify\Factory;
use Guanguans\Notify\Messages\EmailMessage; use Guanguans\Notify\Messages\EmailMessage;
@ -122,7 +123,7 @@ class UserEmailVerification extends AbstractModel
} }
$oldTime = Carbon::parse($emailVerify->created_at)->timestamp; $oldTime = Carbon::parse($emailVerify->created_at)->timestamp;
$time = Base::Time(); $time = Timer::Time();
// 30分钟失效 // 30分钟失效
if (abs($time - $oldTime) > 1800) { if (abs($time - $oldTime) > 1800) {

View File

@ -937,70 +937,7 @@ class Base
*/ */
public static function isTwoArray($array) public static function isTwoArray($array)
{ {
if (!is_array($array)) { return is_array($array) && count(array_filter($array, 'is_array')) > 0;
return false;
}
$json = self::array2json($array);
return (bool)self::leftExists($json, '[');
}
/**
* 检测日期格式
* @param string $str 需要检测的字符串
* @return bool
*/
public static function isDate($str)
{
$strArr = explode('-', $str);
if (empty($strArr) || count($strArr) != 3) {
return false;
} else {
list($year, $month, $day) = $strArr;
if (checkdate(intval($month), intval($day), intval($year))) {
return true;
} else {
return false;
}
}
}
/**
* 检测时间格式
* @param string $str 需要检测的字符串
* @return bool
*/
public static function isTime($str)
{
$strArr = explode(':', $str);
$count = count($strArr);
if ($count < 2 || $count > 3) {
return false;
}
$hour = $strArr[0];
if ($hour < 0 || $hour > 23) {
return false;
}
$minute = $strArr[1];
if ($minute < 0 || $minute > 59) {
return false;
}
if ($count == 3) {
$second = $strArr[2];
if ($second < 0 || $second > 59) {
return false;
}
}
return true;
}
/**
* 检测 日期格式 时间格式
* @param string $str 需要检测的字符串
* @return bool
*/
public static function isDateOrTime($str)
{
return self::isDate($str) || self::isTime($str);
} }
/** /**
@ -1323,27 +1260,6 @@ class Base
return RequestContext::save('setting_' . $setname, $setting); return RequestContext::save('setting_' . $setname, $setting);
} }
/**
* 时间转毫秒时间戳
* @param $time
* @return float|int
*/
public static function strtotimeM($time)
{
if (str_contains($time, '.')) {
list($t, $m) = explode(".", $time);
if (is_string($t)) {
$t = strtotime($t);
}
$time = $t . str_pad($m, 3, "0", STR_PAD_LEFT);
}
if (is_numeric($time)) {
return (int) str_pad($time, 13, "0");
} else {
return strtotime($time) * 1000;
}
}
/** /**
* 获取设置值 * 获取设置值
* @param $setname * @param $setname
@ -1357,120 +1273,6 @@ class Base
return $array[$keyname] ?? $defaultVal; return $array[$keyname] ?? $defaultVal;
} }
/**
* (转) 年、天、时、分、秒
* @param $time
* @return array|bool
*/
public static function sec2time($time)
{
if (is_numeric($time)) {
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if ($time >= 86400) {
$value["days"] = floor($time / 86400);
$time = ($time % 86400);
}
if ($time >= 3600) {
$value["hours"] = floor($time / 3600);
$time = ($time % 3600);
}
if ($time >= 60) {
$value["minutes"] = floor($time / 60);
$time = ($time % 60);
}
$value["seconds"] = floor($time);
return (array)$value;
} else {
return (bool)FALSE;
}
}
/**
* 年、天、时、分、秒 (转)
* @param $value
* @return int
*/
public static function time2sec($value)
{
$time = intval($value["seconds"]);
$time += intval($value["minutes"] * 60);
$time += intval($value["hours"] * 3600);
$time += intval($value["days"] * 86400);
$time += intval($value["years"] * 31536000);
return $time;
}
/**
* 阿拉伯数字转化为中文
* @param $num
* @return string
*/
public static function chinaNum($num)
{
$china = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
$arr = str_split($num);
$txt = '';
for ($i = 0; $i < count($arr); $i++) {
$txt .= $china[$arr[$i]];
}
return $txt;
}
/**
* 阿拉伯数字转化为中文(用于星期,七改成日)
* @param $num
* @return string
*/
public static function chinaNumZ($num)
{
return str_replace("", "", Base::chinaNum($num));
}
/**
* 获取(时间戳转)今天是星期几,只返回(几)
* @param string|number $unixTime
* @return string
*/
public static function getTimeWeek($unixTime = '')
{
$unixTime = is_numeric($unixTime) ? $unixTime : time();
$weekarray = ['日', '一', '二', '三', '四', '五', '六'];
return $weekarray[date('w', $unixTime)];
}
/**
* 获取(时间戳转)现在时间段:深夜、凌晨、早晨、上午.....
* @param string|number $unixTime
* @return string
*/
public static function getTimeDayeSegment($unixTime = '')
{
$unixTime = is_numeric($unixTime) ? $unixTime : time();
$H = date('H', $unixTime);
if ($H >= 19) {
return '晚上';
} elseif ($H >= 18) {
return '傍晚';
} elseif ($H >= 13) {
return '下午';
} elseif ($H >= 12) {
return '中午';
} elseif ($H >= 8) {
return '上午';
} elseif ($H >= 5) {
return '早晨';
} elseif ($H >= 1) {
return '凌晨';
} elseif ($H >= 0) {
return '深夜';
} else {
return '';
}
}
/** /**
* JSON返回 * JSON返回
* @param $param * @param $param
@ -1616,38 +1418,6 @@ class Base
return $hour . '小时'; return $hour . '小时';
} }
/**
* 时间格式化
* @param $date
* @return false|string
*/
public static function forumDate($date)
{
$dur = time() - $date;
if ($date > Carbon::now()->startOf('day')->timestamp) {
//今天
if ($dur < 60) {
return max($dur, 1) . '秒前';
} elseif ($dur < 3600) {
return floor($dur / 60) . '分钟前';
} elseif ($dur < 86400) {
return floor($dur / 3600) . '小时前';
} else {
return date("H:i", $date);
}
} elseif ($date > Carbon::now()->subDays()->startOf('day')->timestamp) {
//昨天
return '昨天';
} elseif ($date > Carbon::now()->subDays(2)->startOf('day')->timestamp) {
//前天
return '前天';
} elseif ($dur > 86400) {
//x天前
return floor($dur / 86400) . '天前';
}
return date("Y-m-d", $date);
}
/** /**
* 创建Carbon对象 * 创建Carbon对象
* @param $var * @param $var
@ -1734,76 +1504,6 @@ class Base
return $str; return $str;
} }
/**
* 获取时间戳
* @return int
*/
public static function time()
{
return intval(RequestContext::get("start_time", time()));
}
/**
* 获取毫秒时间戳
* @return float
*/
public static function msecTime()
{
list($msec, $sec) = explode(' ', microtime());
$time = explode(".", $sec . ($msec * 1000));
return $time[0];
}
/**
* 时间差(不够1个小时算一个小时)
* @param int $s 开始时间戳
* @param int $e 结束时间戳
* @return string
*/
public static function timeDiff($s, $e)
{
$time = $e - $s;
$days = 0;
if ($time >= 86400) { // 如果大于1天
$days = (int)($time / 86400);
$time = $time % 86400; // 计算天后剩余的毫秒数
}
$hours = 0;
if ($time >= 3600) { // 如果大于1小时
$hours = (int)($time / 3600);
$time = $time % 3600; // 计算小时后剩余的毫秒数
}
$minutes = ceil($time / 60); // 剩下的毫秒数都算作分
$daysStr = $days > 0 ? $days . '天' : '';
$hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : '';
$minuteStr = ($minutes > 0) ? $minutes . '分' : '';
return $daysStr . $hoursStr . $minuteStr;
}
/**
* 时间秒数格式化
* @param int $time 时间秒数
* @return string
*/
public static function timeFormat($time)
{
$days = 0;
if ($time >= 86400) { // 如果大于1天
$days = (int)($time / 86400);
$time = $time % 86400; // 计算天后剩余的毫秒数
}
$hours = 0;
if ($time >= 3600) { // 如果大于1小时
$hours = (int)($time / 3600);
$time = $time % 3600; // 计算小时后剩余的毫秒数
}
$minutes = ceil($time / 60); // 剩下的毫秒数都算作分
$daysStr = $days > 0 ? $days . '天' : '';
$hoursStr = ($hours > 0 || ($days > 0 && $minutes > 0)) ? $hours . '时' : '';
$minuteStr = ($minutes > 0) ? $minutes . '分' : '';
return $daysStr . $hoursStr . $minuteStr;
}
/** /**
* 取ip前3段 * 取ip前3段
* @param $ip * @param $ip

View File

@ -9,6 +9,7 @@ use App\Models\WebSocketDialogMsg;
use App\Module\Base; use App\Module\Base;
use App\Module\Doo; use App\Module\Doo;
use App\Module\Extranet; use App\Module\Extranet;
use App\Module\Timer;
use Cache; use Cache;
use Carbon\Carbon; use Carbon\Carbon;
@ -41,14 +42,14 @@ class CheckinRemindTask extends AbstractTask
// //
if ($remindin > 0) { if ($remindin > 0) {
$timeRemindin = $timeStart - $remindin; $timeRemindin = $timeStart - $remindin;
if ($timeRemindin <= Base::time() && Base::time() <= $timeStart) { if ($timeRemindin <= Timer::time() && Timer::time() <= $timeStart) {
// 签到打卡提醒 // 签到打卡提醒
$this->remind('in'); $this->remind('in');
} }
} }
if ($remindexceed > 0) { if ($remindexceed > 0) {
$timeRemindexceed = $timeStart + $remindexceed; $timeRemindexceed = $timeStart + $remindexceed;
if ($timeRemindexceed <= Base::time() && Base::time() <= $timeRemindexceed + 300) { if ($timeRemindexceed <= Timer::time() && Timer::time() <= $timeRemindexceed + 300) {
// 签到缺卡提醒 // 签到缺卡提醒
$this->remind('exceed'); $this->remind('exceed');
} }