Explorar o código

Merge branch 'v4.7.0dev' of https://gitee.com/ZhongBangKeJi/CRMEB into v4.7.0dev

liaofei %!s(int64=2) %!d(string=hai) anos
pai
achega
be70f13f1e

+ 23 - 21
crmeb/app/listener/crontab/SystemCrontab.php

@@ -22,10 +22,8 @@ class SystemCrontab implements ListenerInterface
 {
     public function handle($event): void
     {
+        //自动写入文件方便检测是否启动定时任务命令
         $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);
         });
@@ -38,7 +36,7 @@ class SystemCrontab implements ListenerInterface
             $timeStr = $this->getTimerStr($item);
             //未支付自动取消订单
             if ($item['mark'] == 'order_cancel') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var StoreOrderServices $orderServices */
                         $orderServices = app()->make(StoreOrderServices::class);
@@ -50,8 +48,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //拼团到期订单处理
-            if ($item['mark'] == 'pink_expiration') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'pink_expiration') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var StorePinkServices $storePinkServices */
                         $storePinkServices = app()->make(StorePinkServices::class);
@@ -63,8 +61,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //自动解绑上级绑定
-            if ($item['mark'] == 'agent_unbind') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'agent_unbind') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var AgentManageServices $agentManage */
                         $agentManage = app()->make(AgentManageServices::class);
@@ -76,8 +74,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //更新直播商品状态
-            if ($item['mark'] == 'live_product_status') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'live_product_status') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var LiveGoodsServices $liveGoods */
                         $liveGoods = app()->make(LiveGoodsServices::class);
@@ -89,8 +87,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //更新直播间状态
-            if ($item['mark'] == 'live_room_status') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'live_room_status') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var LiveRoomServices $liveRoom */
                         $liveRoom = app()->make(LiveRoomServices::class);
@@ -103,8 +101,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //自动收货
-            if ($item['mark'] == 'take_delivery') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'take_delivery') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var StoreOrderTakeServices $services */
                         $services = app()->make(StoreOrderTakeServices::class);
@@ -116,8 +114,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //查询预售到期商品自动下架
-            if ($item['mark'] == 'advance_off') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'advance_off') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var StoreProductServices $product */
                         $product = app()->make(StoreProductServices::class);
@@ -129,8 +127,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //自动好评
-            if ($item['mark'] == 'product_replay') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'product_replay') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var StoreOrderServices $orderServices */
                         $orderServices = app()->make(StoreOrderServices::class);
@@ -142,8 +140,8 @@ class SystemCrontab implements ListenerInterface
                 });
             }
             //清除昨日海报
-            if ($item['mark'] == 'clear_poster') {
-                new Crontab($timeStr, function () use ($date, $timer_log_open) {
+            elseif ($item['mark'] == 'clear_poster') {
+                new Crontab($timeStr, function () {
                     try {
                         /** @var SystemAttachmentServices $attach */
                         $attach = app()->make(SystemAttachmentServices::class);
@@ -154,6 +152,10 @@ class SystemCrontab implements ListenerInterface
                     }
                 });
             }
+            //
+            else {
+
+            }
         }
     }
 
@@ -165,7 +167,7 @@ class SystemCrontab implements ListenerInterface
         $timer_log_open = config("log.timer_log", false);
         if ($timer_log_open){
             $date = date('Y-m-d H:i:s', time());
-            Log::notice($date . ' 执行清除昨日海报');
+            Log::notice($date . $msg);
         }
     }
     /**

+ 0 - 198
crmeb/app/listener/timer/SystemTimer.php

@@ -1,198 +0,0 @@
-<?php
-
-namespace app\listener\timer;
-
-use app\services\activity\combination\StorePinkServices;
-use app\services\activity\live\LiveGoodsServices;
-use app\services\activity\live\LiveRoomServices;
-use app\services\agent\AgentManageServices;
-use app\services\order\StoreOrderServices;
-use app\services\order\StoreOrderTakeServices;
-use app\services\product\product\StoreProductServices;
-use app\services\system\attachment\SystemAttachmentServices;
-use app\services\system\timer\SystemTimerServices;
-use crmeb\interfaces\ListenerInterface;
-use think\facade\Log;
-use Workerman\Crontab\Crontab;
-
-class SystemTimer implements ListenerInterface
-{
-    public function handle($event): void
-    {
-        $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 */
-        $systemTimerServices = app()->make(SystemTimerServices::class);
-        $list = $systemTimerServices->selectList(['is_del' => 0, 'is_open' => 1])->toArray();
-        foreach ($list as &$item) {
-            //获取定时任务时间字符串
-            $timeStr = $this->getTimerStr($item);
-            //未支付自动取消订单
-            if ($item['mark'] == 'order_cancel') {
-                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());
-                    }
-                });
-            }
-            //拼团到期订单处理
-            if ($item['mark'] == 'pink_expiration') {
-                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());
-                    }
-                });
-            }
-            //自动解绑上级绑定
-            if ($item['mark'] == 'agent_unbind') {
-                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());
-                    }
-                });
-            }
-            //更新直播商品状态
-            if ($item['mark'] == 'live_product_status') {
-                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());
-                    }
-                });
-            }
-            //更新直播间状态
-            if ($item['mark'] == 'live_room_status') {
-                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());
-                    }
-                });
-            }
-            //自动收货
-            if ($item['mark'] == 'take_delivery') {
-                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());
-                    }
-                });
-            }
-            //查询预售到期商品自动下架
-            if ($item['mark'] == 'advance_off') {
-                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());
-                    }
-                });
-            }
-            //自动好评
-            if ($item['mark'] == 'product_replay') {
-                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());
-                    }
-                });
-            }
-            //清除昨日海报
-            if ($item['mark'] == 'clear_poster') {
-                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());
-                    }
-                });
-            }
-        }
-    }
-    /**
-     *  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位,则最小时间粒度是分钟]
-     */
-    /**
-     * 获取定时任务时间表达式
-     * @param $data
-     * @return string
-     */
-    public function getTimerStr($data): string
-    {
-        $timeStr = '';
-        switch ($data['type']) {
-            case 1:// 每隔几秒
-                $timeStr = '*/' . $data['second'] . ' * * * * *';
-                break;
-            case 2:// 每隔几分
-                $timeStr = '0 */' . $data['minute'] . ' * * * *';
-                break;
-            case 3:// 每隔几时第几分钟执行
-                $timeStr = '0 ' . $data['minute'] . ' */' . $data['hour'] . ' * * *';
-                break;
-            case 4:// 每隔几日第几小时第几分钟执行
-                $timeStr = '0 ' . $data['minute'] . ' ' . $data['hour'] . ' */' . $data['day'] . ' * *';
-                break;
-            case 5:// 每日几时几分几秒
-                $timeStr = $data['second'] . ' ' . $data['minute'] . ' ' . $data['hour'] . ' * * *';
-                break;
-            case 6:// 每周周几几时几分几秒
-                $timeStr = $data['second'] . ' ' . $data['minute'] . ' ' . $data['hour'] . ' * * ' . ($data['week'] == 7 ? 0 : $data['week']);
-                break;
-            case 7:// 每月几日几时几分几秒
-                $timeStr = $data['second'] . ' ' . $data['minute'] . ' ' . $data['hour'] . ' ' . $data['day'] . ' * *';
-                break;
-        }
-        return $timeStr;
-    }
-}