Ver Fonte

feat: only show docs to paid user

M1Screw há 2 anos atrás
pai
commit
ae1988e9a2

+ 10 - 0
config/settings.json

@@ -1389,6 +1389,16 @@
         "default": "1",
         "mark": "显示文档"
     },
+    {
+        "id": null,
+        "item": "display_docs_only_for_paid_user",
+        "value": "0",
+        "class": "feature",
+        "is_public": 1,
+        "type": "bool",
+        "default": "0",
+        "mark": "文档仅付费用户可见"
+    },
     {
         "id": null,
         "item": "enable_forced_replacement",

+ 9 - 0
resources/views/tabler/admin/setting/feature.tpl

@@ -75,6 +75,15 @@
                                         </select>
                                     </div>
                                 </div>
+                                <div class="form-group mb-3 row">
+                                    <label class="form-label col-3 col-form-label">文档仅付费用户可见</label>
+                                    <div class="col">
+                                        <select id="display_docs_only_for_paid_user" class="col form-select" value="{$settings['display_docs_only_for_paid_user']}">
+                                            <option value="0" {if $settings['display_docs_only_for_paid_user'] === false}selected{/if}>关闭</option>
+                                            <option value="1" {if $settings['display_docs_only_for_paid_user']}selected{/if}>开启</option>
+                                        </select>
+                                    </div>
+                                </div>
                             </div>
                         </div>
                     </div>

+ 6 - 5
resources/views/tabler/user/header.tpl

@@ -148,11 +148,12 @@
                                         工单
                                     </a>
                                     {/if}
-                                    {if $public_setting['display_docs']}
-                                    <a class="dropdown-item" href="/user/docs">
-                                        <i class="ti ti-notes"></i>&nbsp;
-                                        文档
-                                    </a>
+                                    {if $public_setting['display_docs'] &&
+                                    (! $public_setting['display_docs_only_for_paid_user'] || $user->class !== 0)}
+                                        <a class="dropdown-item" href="/user/docs">
+                                            <i class="ti ti-notes"></i>&nbsp;
+                                            文档
+                                        </a>
                                     {/if}
                                 </div>
                             </li>

+ 1 - 0
src/Controllers/Admin/Setting/FeatureController.php

@@ -16,6 +16,7 @@ final class FeatureController extends BaseController
         'display_subscribe_log',
         'display_detect_log',
         'display_docs',
+        'display_docs_only_for_paid_user',
     ];
 
     /**

+ 11 - 0
src/Controllers/User/DocsController.php

@@ -6,6 +6,7 @@ namespace App\Controllers\User;
 
 use App\Controllers\BaseController;
 use App\Models\Docs;
+use App\Models\Setting;
 use Exception;
 use Psr\Http\Message\ResponseInterface;
 use Slim\Http\Response;
@@ -18,6 +19,11 @@ final class DocsController extends BaseController
      */
     public function index(ServerRequest $request, Response $response, array $args): Response|ResponseInterface
     {
+        if (! Setting::obtain('display_docs') ||
+            (Setting::obtain('display_docs_only_for_paid_user') && $this->user->class === 0)) {
+            return $response->withRedirect('/user');
+        }
+
         $docs = Docs::orderBy('id', 'desc')->get();
 
         return $response->write(
@@ -32,6 +38,11 @@ final class DocsController extends BaseController
      */
     public function detail(ServerRequest $request, Response $response, array $args): Response|ResponseInterface
     {
+        if (! Setting::obtain('display_docs') ||
+            (Setting::obtain('display_docs_only_for_paid_user') && $this->user->class === 0)) {
+            return $response->withRedirect('/user');
+        }
+
         $id = $args['id'];
         $doc = Docs::find($id);
 

+ 18 - 0
src/Controllers/User/TicketController.php

@@ -51,6 +51,13 @@ final class TicketController extends BaseController
 
     public function ticketAdd(ServerRequest $request, Response $response, array $args): ResponseInterface
     {
+        if (! Setting::obtain('enable_ticket')) {
+            return $response->withJson([
+                'ret' => 0,
+                'msg' => '暂时无法开启工单,请稍后再试',
+            ]);
+        }
+
         $title = $request->getParam('title') ?? '';
         $comment = $request->getParam('comment') ?? '';
         $type = $request->getParam('type') ?? '';
@@ -112,6 +119,13 @@ final class TicketController extends BaseController
 
     public function ticketUpdate(ServerRequest $request, Response $response, array $args): ResponseInterface
     {
+        if (! Setting::obtain('enable_ticket')) {
+            return $response->withJson([
+                'ret' => 0,
+                'msg' => '暂时无法回复工单,请稍后再试',
+            ]);
+        }
+
         $id = $args['id'];
         $comment = $request->getParam('comment') ?? '';
 
@@ -181,6 +195,10 @@ final class TicketController extends BaseController
      */
     public function ticketView(ServerRequest $request, Response $response, array $args): ResponseInterface
     {
+        if (! Setting::obtain('enable_ticket')) {
+            return $response->withRedirect('/user');
+        }
+
         $id = $args['id'];
         $ticket = Ticket::where('id', '=', $id)->where('userid', $this->user->id)->first();