增加定时任务日志

This commit is contained in:
吴昊天 2023-02-18 18:15:38 +08:00
parent b1c869cf4b
commit eafae4e3c6
3 changed files with 49 additions and 21 deletions

View File

@ -19,8 +19,12 @@ class SystemTimer implements ListenerInterface
{
public function handle($event): void
{
new Crontab('*/6 * * * * *', function () {
file_put_contents(root_path() . 'runtime/.timer', time());
$time = time();
$date = date('Y-m-d H:i:s', time());
$timer_log_open = config("log.timer_log", false);
new Crontab('*/6 * * * * *', function () use ($time) {
file_put_contents(root_path() . 'runtime/.timer', $time);
});
/** @var SystemTimerServices $systemTimerServices */
@ -31,11 +35,12 @@ class SystemTimer implements ListenerInterface
$timeStr = $this->getTimerStr($item);
//未支付自动取消订单
if ($item['mark'] == 'order_cancel') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var StoreOrderServices $orderServices */
$orderServices = app()->make(StoreOrderServices::class);
$orderServices->orderUnpaidCancel();
if ($timer_log_open) Log::notice($date . ' 执行未支付自动取消订单');
} catch (\Throwable $e) {
Log::error('自动取消订单失败,失败原因:' . $e->getMessage());
}
@ -43,11 +48,12 @@ class SystemTimer implements ListenerInterface
}
//拼团到期订单处理
if ($item['mark'] == 'pink_expiration') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var StorePinkServices $storePinkServices */
$storePinkServices = app()->make(StorePinkServices::class);
$storePinkServices->statusPink();
if ($timer_log_open) Log::notice($date . ' 执行拼团到期订单处理');
} catch (\Throwable $e) {
Log::error('拼团到期订单处理失败,失败原因:' . $e->getMessage());
}
@ -55,11 +61,12 @@ class SystemTimer implements ListenerInterface
}
//自动解绑上级绑定
if ($item['mark'] == 'agent_unbind') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var AgentManageServices $agentManage */
$agentManage = app()->make(AgentManageServices::class);
$agentManage->removeSpread();
if ($timer_log_open) Log::notice($date . ' 执行自动解绑上级绑定');
} catch (\Throwable $e) {
Log::error('自动解除上级绑定失败,失败原因:' . $e->getMessage());
}
@ -67,11 +74,12 @@ class SystemTimer implements ListenerInterface
}
//更新直播商品状态
if ($item['mark'] == 'live_product_status') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var LiveGoodsServices $liveGoods */
$liveGoods = app()->make(LiveGoodsServices::class);
$liveGoods->syncGoodStatus();
if ($timer_log_open) Log::notice($date . ' 执行更新直播商品状态');
} catch (\Throwable $e) {
Log::error('更新直播商品状态失败,失败原因:' . $e->getMessage());
}
@ -79,11 +87,12 @@ class SystemTimer implements ListenerInterface
}
//更新直播间状态
if ($item['mark'] == 'live_room_status') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var LiveRoomServices $liveRoom */
$liveRoom = app()->make(LiveRoomServices::class);
$liveRoom->syncRoomStatus();
if ($timer_log_open) Log::notice($date . ' 执行更新直播间状态');
} catch (\Throwable $e) {
Log::error('更新直播间状态失败,失败原因:' . $e->getMessage());
}
@ -91,11 +100,12 @@ class SystemTimer implements ListenerInterface
}
//自动收货
if ($item['mark'] == 'take_delivery') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var StoreOrderTakeServices $services */
$services = app()->make(StoreOrderTakeServices::class);
$services->autoTakeOrder();
if ($timer_log_open) Log::notice($date . ' 执行自动收货');
} catch (\Throwable $e) {
Log::error('自动收货失败,失败原因:' . $e->getMessage());
}
@ -103,11 +113,12 @@ class SystemTimer implements ListenerInterface
}
//查询预售到期商品自动下架
if ($item['mark'] == 'advance_off') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var StoreProductServices $product */
$product = app()->make(StoreProductServices::class);
$product->downAdvance();
if ($timer_log_open) Log::notice($date . ' 执行预售到期商品自动下架');
} catch (\Throwable $e) {
Log::error('预售到期商品自动下架失败,失败原因:' . $e->getMessage());
}
@ -115,11 +126,12 @@ class SystemTimer implements ListenerInterface
}
//自动好评
if ($item['mark'] == 'product_replay') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var StoreOrderServices $orderServices */
$orderServices = app()->make(StoreOrderServices::class);
$orderServices->autoComment();
if ($timer_log_open) Log::notice($date . ' 执行自动好评');
} catch (\Throwable $e) {
Log::error('自动好评失败,失败原因:' . $e->getMessage());
}
@ -127,11 +139,12 @@ class SystemTimer implements ListenerInterface
}
//清除昨日海报
if ($item['mark'] == 'clear_poster') {
new Crontab($timeStr, function () {
new Crontab($timeStr, function () use ($date, $timer_log_open) {
try {
/** @var SystemAttachmentServices $attach */
$attach = app()->make(SystemAttachmentServices::class);
$attach->emptyYesterdayAttachment();
if ($timer_log_open) Log::notice($date . ' 执行清除昨日海报');
} catch (\Throwable $e) {
Log::error('清除昨日海报失败,失败原因:' . $e->getMessage());
}
@ -141,13 +154,13 @@ class SystemTimer implements ListenerInterface
}
/**
* 0 1 2 3 4 5
| | | | | |
| | | | | +------ day of week (0 - 6) (Sunday=0)
| | | | +------ month (1 - 12)
| | | +-------- day of month (1 - 31)
| | +---------- hour (0 - 23)
| +------------ min (0 - 59)
+-------------- sec (0-59)[可省略,如果没有0位,则最小时间粒度是分钟]
* | | | | | |
* | | | | | +------ day of week (0 - 6) (Sunday=0)
* | | | | +------ month (1 - 12)
* | | | +-------- day of month (1 - 31)
* | | +---------- hour (0 - 23)
* | +------------ min (0 - 59)
* +-------------- sec (0-59)[可省略,如果没有0位,则最小时间粒度是分钟]
*/
/**
* 获取定时任务时间表达式

View File

@ -13,6 +13,7 @@ use app\services\order\StoreOrderTakeServices;
use app\services\product\product\StoreProductServices;
use app\services\system\attachment\SystemAttachmentServices;
use crmeb\exceptions\AdminException;
use think\facade\Log;
class SystemTimerServices extends BaseServices
{
@ -204,40 +205,52 @@ class SystemTimerServices extends BaseServices
*/
public function timerRun()
{
file_put_contents(root_path() . 'runtime/.timer', time()); //检测定时任务是否正常
$time = time();
$date = date('Y-m-d H:i:s', time());
$timer_log_open = config("log.timer_log", false);
file_put_contents(root_path() . 'runtime/.timer', $time); //检测定时任务是否正常
$list = $this->dao->selectList(['is_open' => 1, 'is_del' => 0])->toArray();
foreach ($list as $item) {
if ($item['next_execution_time'] < time()) {
if ($item['next_execution_time'] < $time) {
if ($item['mark'] == 'order_cancel') {
//未支付自动取消订单
app()->make(StoreOrderServices::class)->orderUnpaidCancel();
if($timer_log_open) Log::notice($date . ' 执行未支付自动取消订单');
} elseif ($item['mark'] == 'pink_expiration') {
//拼团到期订单处理
app()->make(StorePinkServices::class)->statusPink();
if($timer_log_open) Log::notice($date . ' 执行拼团到期订单处理');
} elseif ($item['mark'] == 'agent_unbind') {
//自动解绑上级绑定
app()->make(AgentManageServices::class)->removeSpread();
if($timer_log_open) Log::notice($date . ' 执行自动解绑上级绑定');
} elseif ($item['mark'] == 'live_product_status') {
//更新直播商品状态
app()->make(LiveGoodsServices::class)->syncGoodStatus();
if($timer_log_open) Log::notice($date . ' 执行更新直播商品状态');
} elseif ($item['mark'] == 'live_room_status') {
//更新直播间状态
app()->make(LiveRoomServices::class)->syncRoomStatus();
if($timer_log_open) Log::notice($date . ' 执行更新直播间状态');
} elseif ($item['mark'] == 'take_delivery') {
//自动收货
app()->make(StoreOrderTakeServices::class)->autoTakeOrder();
if($timer_log_open) Log::notice($date . ' 执行自动收货');
} elseif ($item['mark'] == 'advance_off') {
//查询预售到期商品自动下架
app()->make(StoreProductServices::class)->downAdvance();
if($timer_log_open) Log::notice($date . ' 执行预售到期商品自动下架');
} elseif ($item['mark'] == 'product_replay') {
//自动好评
app()->make(StoreOrderServices::class)->autoComment();
if($timer_log_open) Log::notice($date . ' 执行自动好评');
} elseif ($item['mark'] == 'clear_poster') {
//清除昨日海报
app()->make(SystemAttachmentServices::class)->emptyYesterdayAttachment();
if($timer_log_open) Log::notice($date . ' 执行清除昨日海报');
}
//写入本次执行时间和下次执行时间
$this->dao->update(['mark' => $item['mark']], ['last_execution_time' => time(), 'next_execution_time' => $this->getTimerCycleTime($item)]);
$this->dao->update(['mark' => $item['mark']], ['last_execution_time' => $time, 'next_execution_time' => $this->getTimerCycleTime($item)]);
}
}
}

View File

@ -24,6 +24,8 @@ return [
'success_log' => false,
//是否开启业务失败日志
'fail_log' => false,
//是否开启定时任务日志
'timer_log' => false,
// 日志通道列表
'channels' => [
'file' => [