admin 7 лет назад
Родитель
Сommit
b4a9b122c0

+ 1 - 1
app/Console/Commands/AutoDecGoodsTraffic.php

@@ -79,7 +79,7 @@ class AutoDecGoodsTraffic extends Command
                         User::query()->where('id', $order->user_id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => 0]);
                     } else {
                         // 写入用户流量变动记录
-                        Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $order->user->transfer_enable, ($order->goods->traffic * 1048576), '[定时任务]用户所购商品到期,扣减商品对应的流量(没扣完)');
+                        Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $order->user->transfer_enable, ($order->user->transfer_enable - $order->goods->traffic * 1048576), '[定时任务]用户所购商品到期,扣减商品对应的流量(没扣完)');
 
                         User::query()->where('id', $order->user_id)->decrement('transfer_enable', $order->goods->traffic * 1048576);
 

+ 17 - 0
app/Console/Commands/AutoJob.php

@@ -3,12 +3,14 @@
 namespace App\Console\Commands;
 
 use App\Components\Helpers;
+use App\Components\ServerChan;
 use App\Components\Yzy;
 use App\Http\Models\Goods;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\ReferralLog;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNodeLabel;
+use App\Http\Models\Ticket;
 use App\Http\Models\UserBalanceLog;
 use App\Http\Models\VerifyCode;
 use App\Mail\sendUserInfo;
@@ -73,6 +75,9 @@ class AutoJob extends Command
         // 关闭超时未支付订单
         $this->closeOrders();
 
+        // 关闭超过72小时未处理的工单
+        $this->closeTickets();
+
         $jobEndTime = microtime(true);
         $jobUsedTime = round(($jobEndTime - $jobStartTime), 4);
 
@@ -513,6 +518,18 @@ class AutoJob extends Command
         }
     }
 
+    // 关闭超过72小时未处理的工单
+    private function closeTickets()
+    {
+        $ticketList = Ticket::query()->where('updated_at', '<=', date('Y-m-d H:i:s', strtotime("-72 hours")))->where('status', 1)->get();
+        foreach ($ticketList as $ticket) {
+            $ret = Ticket::query()->where('id', $ticket->id)->update(['status' => 2]);
+            if ($ret) {
+                ServerChan::send('工单关闭提醒', '工单:ID' . $ticket->id . '超过72小时未处理,系统已自动关闭');
+            }
+        }
+    }
+
     /**
      * 添加用户封禁日志
      *

+ 0 - 1
app/Http/Controllers/TicketController.php

@@ -51,7 +51,6 @@ class TicketController extends Controller
             $obj->ticket_id = $id;
             $obj->user_id = Auth::user()->id;
             $obj->content = $content;
-            $obj->created_at = date('Y-m-d H:i:s');
             $obj->save();
 
             if ($obj->id) {

+ 10 - 8
app/Http/Controllers/UserController.php

@@ -381,7 +381,6 @@ class UserController extends Controller
         $obj->title = $title;
         $obj->content = $content;
         $obj->status = 0;
-        $obj->created_at = date('Y-m-d H:i:s');
         $obj->save();
 
         if ($obj->id) {
@@ -411,6 +410,11 @@ class UserController extends Controller
     {
         $id = intval($request->get('id'));
 
+        $ticket = Ticket::query()->with('user')->where('id', $id)->first();
+        if (empty($ticket) || $ticket->user_id != Auth::user()->id) {
+            return Redirect::to('tickets');
+        }
+
         if ($request->method() == 'POST') {
             $content = clean($request->get('content'));
             $content = str_replace("eval", "", str_replace("atob", "", $content));
@@ -424,11 +428,12 @@ class UserController extends Controller
             $obj->ticket_id = $id;
             $obj->user_id = Auth::user()->id;
             $obj->content = $content;
-            $obj->created_at = date('Y-m-d H:i:s');
             $obj->save();
 
             if ($obj->id) {
-                $ticket = Ticket::query()->where('id', $id)->first();
+                // 重新打开工单
+                $ticket->status = 0;
+                $ticket->save();
 
                 $title = "工单回复提醒";
                 $content = "标题:【" . $ticket->title . "】<br>用户回复:" . $content;
@@ -450,11 +455,6 @@ class UserController extends Controller
                 return Response::json(['status' => 'fail', 'data' => '', 'message' => '回复失败']);
             }
         } else {
-            $ticket = Ticket::query()->where('id', $id)->with('user')->first();
-            if (empty($ticket) || $ticket->user_id != Auth::user()->id) {
-                return Redirect::to('tickets');
-            }
-
             $view['ticket'] = $ticket;
             $view['replyList'] = TicketReply::query()->where('ticket_id', $id)->with('user')->orderBy('id', 'asc')->get();
 
@@ -469,6 +469,8 @@ class UserController extends Controller
 
         $ret = Ticket::query()->where('id', $id)->where('user_id', Auth::user()->id)->update(['status' => 2]);
         if ($ret) {
+            ServerChan::send('工单关闭提醒', '工单:ID' . $id . '客户已手动关闭');
+
             return Response::json(['status' => 'success', 'data' => '', 'message' => '关闭成功']);
         } else {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '关闭失败']);

+ 0 - 1
app/Http/Models/Ticket.php

@@ -16,7 +16,6 @@ class Ticket extends Model
 {
     protected $table = 'ticket';
     protected $primaryKey = 'id';
-    public $timestamps = false;
 
     public function User()
     {

+ 0 - 1
app/Http/Models/TicketReply.php

@@ -16,7 +16,6 @@ class TicketReply extends Model
 {
     protected $table = 'ticket_reply';
     protected $primaryKey = 'id';
-    public $timestamps = false;
 
     public function User()
     {

+ 2 - 0
sql/db.sql

@@ -593,6 +593,7 @@ CREATE TABLE `ticket` (
   `content` text NOT NULL COMMENT '内容',
   `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态:0-待处理、1-已处理未关闭、2-已关闭',
   `created_at` datetime DEFAULT NULL COMMENT '创建时间',
+  `updated_at` datetime DEFAULT NULL COMMENT '最后更新时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工单';
 
@@ -606,6 +607,7 @@ CREATE TABLE `ticket_reply` (
   `user_id` int(11) NOT NULL COMMENT '回复人ID',
   `content` text NOT NULL COMMENT '回复内容',
   `created_at` datetime DEFAULT NULL COMMENT '创建时间',
+  `updated_at` datetime DEFAULT NULL COMMENT '最后更新时间',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='工单回复';
 

+ 8 - 0
sql/update/20190130.sql

@@ -0,0 +1,8 @@
+-- 工单加入最后更新时间
+ALTER TABLE `ticket`
+	ADD COLUMN `updated_at` DATETIME NULL DEFAULT NULL COMMENT '最后更新时间' AFTER `created_at`;
+
+
+-- 工单回复加入最后更新时间
+ALTER TABLE `ticket_reply`
+	ADD COLUMN `updated_at` DATETIME NULL COMMENT '最后更新时间' AFTER `created_at`;