Browse Source

feat: admin init

xiansin 2 năm trước cách đây
mục cha
commit
abc206ba4d
52 tập tin đã thay đổi với 1590 bổ sung1278 xóa
  1. 74 0
      server/app/Admin/Controllers/BannerController.php
  2. 71 0
      server/app/Admin/Controllers/ContactController.php
  3. 24 0
      server/app/Admin/Controllers/DashBoardController.php
  4. 74 0
      server/app/Admin/Controllers/ProductCategoryController.php
  5. 98 0
      server/app/Admin/Controllers/ProductController.php
  6. 74 0
      server/app/Admin/Controllers/ProductHotController.php
  7. 77 0
      server/app/Admin/Controllers/ProductSkuController.php
  8. 68 0
      server/app/Admin/Controllers/SettingController.php
  9. 80 0
      server/app/Admin/Controllers/ShowroomCaseController.php
  10. 71 0
      server/app/Admin/Controllers/ShowroomController.php
  11. 98 0
      server/app/Admin/Controllers/UserController.php
  12. 16 0
      server/app/Admin/Repositories/ProductHot.php
  13. 40 0
      server/app/Admin/routes.php
  14. 0 190
      server/app/Helper/ByteDance.php
  15. 0 183
      server/app/Helper/Kuaishou.php
  16. 0 9
      server/app/Helper/UniPlatform/BaseAPI.php
  17. 0 151
      server/app/Helper/UniPlatform/BaseUniPlatform.php
  18. 0 29
      server/app/Helper/UniPlatform/Bytedance/ByteDanceAPI.php
  19. 0 81
      server/app/Helper/UniPlatform/Bytedance/Payment.php
  20. 0 30
      server/app/Helper/UniPlatform/Kuaishou/KuaishouAPI.php
  21. 0 85
      server/app/Helper/UniPlatform/Kuaishou/Payment.php
  22. 3 3
      server/app/Models/Banner.php
  23. 38 0
      server/app/Models/Contact.php
  24. 56 0
      server/app/Models/Product.php
  25. 43 0
      server/app/Models/ProductCategory.php
  26. 43 0
      server/app/Models/ProductHot.php
  27. 45 0
      server/app/Models/ProductSku.php
  28. 2 16
      server/app/Models/Setting.php
  29. 38 0
      server/app/Models/Showroom.php
  30. 47 0
      server/app/Models/ShowroomCase.php
  31. 12 38
      server/app/Models/User.php
  32. 84 448
      server/dcat_admin_ide_helper.php
  33. 17 0
      server/resources/lang/zh/banner.php
  34. 16 0
      server/resources/lang/zh/contact.php
  35. 15 0
      server/resources/lang/zh/product-category.php
  36. 18 0
      server/resources/lang/zh/product-hot.php
  37. 16 0
      server/resources/lang/zh/product-sku.php
  38. 23 0
      server/resources/lang/zh/product.php
  39. 14 0
      server/resources/lang/zh/setting.php
  40. 18 0
      server/resources/lang/zh/showroom-case.php
  41. 15 0
      server/resources/lang/zh/showroom.php
  42. 12 9
      server/resources/lang/zh/user.php
  43. 15 0
      server/resources/lang/zh_CN/banner.php
  44. 14 0
      server/resources/lang/zh_CN/contact.php
  45. 15 0
      server/resources/lang/zh_CN/product-category.php
  46. 15 0
      server/resources/lang/zh_CN/product-hot.php
  47. 16 0
      server/resources/lang/zh_CN/product-sku.php
  48. 23 0
      server/resources/lang/zh_CN/product.php
  49. 13 0
      server/resources/lang/zh_CN/setting.php
  50. 17 0
      server/resources/lang/zh_CN/showroom-case.php
  51. 14 0
      server/resources/lang/zh_CN/showroom.php
  52. 8 6
      server/resources/lang/zh_CN/user.php

+ 74 - 0
server/app/Admin/Controllers/BannerController.php

xqd
@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\Banner;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class BannerController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new Banner(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('image');
+            $grid->column('sort');
+            $grid->column('is_opened');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new Banner(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('image');
+            $show->field('sort');
+            $show->field('is_opened');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Banner(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('image');
+            $form->text('sort');
+            $form->text('is_opened');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 71 - 0
server/app/Admin/Controllers/ContactController.php

xqd
@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\Contact;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ContactController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new Contact(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('phone_num');
+            $grid->column('wechat_num');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new Contact(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('phone_num');
+            $show->field('wechat_num');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Contact(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('phone_num');
+            $form->text('wechat_num');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 24 - 0
server/app/Admin/Controllers/DashBoardController.php

xqd
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Admin\Metrics\Examples;
+use App\Http\Controllers\Controller;
+use Dcat\Admin\Http\Controllers\Dashboard;
+use Dcat\Admin\Layout\Column;
+use Dcat\Admin\Layout\Content;
+use Dcat\Admin\Layout\Row;
+use Dcat\Admin\Widgets\Card;
+
+class DashBoardController extends Controller
+{
+    public function view(Content $content)
+    {
+        return $content->body('<div style="text-align: center; font-size: 28px; font-weight: 300">欢迎进入极创社管理后台</div>');
+    }
+
+    public function download(Content $content)
+    {
+        return $content->body('<div style="text-align: center; font-size: 28px; font-weight: 300">欢迎进入极创社管理后台</div>');
+    }
+}

+ 74 - 0
server/app/Admin/Controllers/ProductCategoryController.php

xqd
@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\ProductCategory;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ProductCategoryController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new ProductCategory(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('level');
+            $grid->column('pid');
+            $grid->column('sort');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new ProductCategory(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('level');
+            $show->field('pid');
+            $show->field('sort');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new ProductCategory(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('level');
+            $form->text('pid');
+            $form->text('sort');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 98 - 0
server/app/Admin/Controllers/ProductController.php

xqd
@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\Product;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ProductController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new Product(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('cover_img');
+            $grid->column('cases');
+            $grid->column('origin_price');
+            $grid->column('sale_price');
+            $grid->column('sort');
+            $grid->column('is_opened');
+            $grid->column('tech_param');
+            $grid->column('cad_model');
+            $grid->column('cad_design');
+            $grid->column('su_model');
+            $grid->column('other');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new Product(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('cover_img');
+            $show->field('cases');
+            $show->field('origin_price');
+            $show->field('sale_price');
+            $show->field('sort');
+            $show->field('is_opened');
+            $show->field('tech_param');
+            $show->field('cad_model');
+            $show->field('cad_design');
+            $show->field('su_model');
+            $show->field('other');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Product(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('cover_img');
+            $form->text('cases');
+            $form->text('origin_price');
+            $form->text('sale_price');
+            $form->text('sort');
+            $form->text('is_opened');
+            $form->text('tech_param');
+            $form->text('cad_model');
+            $form->text('cad_design');
+            $form->text('su_model');
+            $form->text('other');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 74 - 0
server/app/Admin/Controllers/ProductHotController.php

xqd
@@ -0,0 +1,74 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Admin\Repositories\ProductHot;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ProductHotController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new ProductHot(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('type');
+            $grid->column('product_id');
+            $grid->column('sort');
+            $grid->column('is_opened');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new ProductHot(), function (Show $show) {
+            $show->field('id');
+            $show->field('type');
+            $show->field('product_id');
+            $show->field('sort');
+            $show->field('is_opened');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new ProductHot(), function (Form $form) {
+            $form->display('id');
+            $form->text('type');
+            $form->text('product_id');
+            $form->text('sort');
+            $form->text('is_opened');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 77 - 0
server/app/Admin/Controllers/ProductSkuController.php

xqd
@@ -0,0 +1,77 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\ProductSku;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ProductSkuController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new ProductSku(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('product_id');
+            $grid->column('name');
+            $grid->column('cover_img');
+            $grid->column('origin_price');
+            $grid->column('sale_price');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new ProductSku(), function (Show $show) {
+            $show->field('id');
+            $show->field('product_id');
+            $show->field('name');
+            $show->field('cover_img');
+            $show->field('origin_price');
+            $show->field('sale_price');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new ProductSku(), function (Form $form) {
+            $form->display('id');
+            $form->text('product_id');
+            $form->text('name');
+            $form->text('cover_img');
+            $form->text('origin_price');
+            $form->text('sale_price');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 68 - 0
server/app/Admin/Controllers/SettingController.php

xqd
@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\Setting;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class SettingController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new Setting(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('logo');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new Setting(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('logo');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Setting(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('logo');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 80 - 0
server/app/Admin/Controllers/ShowroomCaseController.php

xqd
@@ -0,0 +1,80 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\ShowroomCase;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ShowroomCaseController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new ShowroomCase(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('showroom_id');
+            $grid->column('name');
+            $grid->column('videos');
+            $grid->column('images');
+            $grid->column('sort');
+            $grid->column('is_opened');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new ShowroomCase(), function (Show $show) {
+            $show->field('id');
+            $show->field('showroom_id');
+            $show->field('name');
+            $show->field('videos');
+            $show->field('images');
+            $show->field('sort');
+            $show->field('is_opened');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new ShowroomCase(), function (Form $form) {
+            $form->display('id');
+            $form->text('showroom_id');
+            $form->text('name');
+            $form->text('videos');
+            $form->text('images');
+            $form->text('sort');
+            $form->text('is_opened');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 71 - 0
server/app/Admin/Controllers/ShowroomController.php

xqd
@@ -0,0 +1,71 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\Showroom;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class ShowroomController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new Showroom(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('name');
+            $grid->column('sort');
+            $grid->column('is_opened');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+        
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+        
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new Showroom(), function (Show $show) {
+            $show->field('id');
+            $show->field('name');
+            $show->field('sort');
+            $show->field('is_opened');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new Showroom(), function (Form $form) {
+            $form->display('id');
+            $form->text('name');
+            $form->text('sort');
+            $form->text('is_opened');
+        
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 98 - 0
server/app/Admin/Controllers/UserController.php

xqd
@@ -0,0 +1,98 @@
+<?php
+
+namespace App\Admin\Controllers;
+
+use App\Models\User;
+use Dcat\Admin\Form;
+use Dcat\Admin\Grid;
+use Dcat\Admin\Show;
+use Dcat\Admin\Http\Controllers\AdminController;
+
+class UserController extends AdminController
+{
+    /**
+     * Make a grid builder.
+     *
+     * @return Grid
+     */
+    protected function grid()
+    {
+        return Grid::make(new User(), function (Grid $grid) {
+            $grid->column('id')->sortable();
+            $grid->column('nickname');
+            $grid->column('avatar');
+            $grid->column('password');
+            $grid->column('email');
+            $grid->column('mobile');
+            $grid->column('open_id');
+            $grid->column('union_id');
+            $grid->column('status');
+            $grid->column('email_verified_at');
+            $grid->column('remember_token');
+            $grid->column('remark');
+            $grid->column('type');
+            $grid->column('created_at');
+            $grid->column('updated_at')->sortable();
+
+            $grid->filter(function (Grid\Filter $filter) {
+                $filter->equal('id');
+
+            });
+        });
+    }
+
+    /**
+     * Make a show builder.
+     *
+     * @param mixed $id
+     *
+     * @return Show
+     */
+    protected function detail($id)
+    {
+        return Show::make($id, new User(), function (Show $show) {
+            $show->field('id');
+            $show->field('nickname');
+            $show->field('avatar');
+            $show->field('password');
+            $show->field('email');
+            $show->field('mobile');
+            $show->field('open_id');
+            $show->field('union_id');
+            $show->field('status');
+            $show->field('email_verified_at');
+            $show->field('remember_token');
+            $show->field('remark');
+            $show->field('type');
+            $show->field('created_at');
+            $show->field('updated_at');
+        });
+    }
+
+    /**
+     * Make a form builder.
+     *
+     * @return Form
+     */
+    protected function form()
+    {
+        return Form::make(new User(), function (Form $form) {
+            $form->display('id');
+            $form->text('nickname');
+            $form->text('avatar');
+            $form->text('password');
+            $form->text('email');
+            $form->text('mobile');
+            $form->text('open_id');
+            $form->text('union_id');
+            $form->text('status');
+            $form->text('email_verified_at');
+            $form->text('remember_token');
+            $form->text('remark');
+            $form->text('type');
+
+            $form->display('created_at');
+            $form->display('updated_at');
+        });
+    }
+}

+ 16 - 0
server/app/Admin/Repositories/ProductHot.php

xqd
@@ -0,0 +1,16 @@
+<?php
+
+namespace App\Admin\Repositories;
+
+use App\Models\ProductHot as Model;
+use Dcat\Admin\Repositories\EloquentRepository;
+
+class ProductHot extends EloquentRepository
+{
+    /**
+     * Model.
+     *
+     * @var string
+     */
+    protected $eloquentClass = Model::class;
+}

+ 40 - 0
server/app/Admin/routes.php

xqd
@@ -13,5 +13,45 @@ Route::group([
 ], function (Router $router) {
 
     $router->get('/', 'HomeController@index');
+    //
+    $router->get('dashboard/view', 'DashBoardController@view');
+    // 下载数据
+    $router->get('dashboard/download', 'DashBoardController@download');
 
+    // 账号
+    $router->resource('account','UserController');
+
+    // 产品管理
+    $router->group(['prefix' => 'product'], function (Router $router){
+        // 产品
+        $router->resource('list','ProductController');
+        // 产品分类
+        $router->resource('categories','ProductCategoryController');
+    });
+    // 案例管理
+    $router->group(['prefix' => 'cases'], function (Router $router){
+        // 展厅
+        $router->resource('showroom','ShowroomController');
+        // 应用案例
+        $router->resource('list','ShowroomCaseController');
+    });
+
+    // 爆款管理
+    $router->group(['prefix' => 'hot'], function (Router $router){
+        // 普通客服
+        $router->resource('normal','ProductHotController');
+        // VIP/设计师
+        $router->resource('vip','ProductHotController');
+    });
+
+    // 系统设置
+    $router->group(['prefix' => 'system'], function (Router $router){
+        // 普通客服
+        $router->resource('register/banner','BannerController');
+        // VIP/设计师
+        $router->resource('register/contact','ContactController');
+
+        // VIP/设计师
+        $router->resource('setting/logo','SettingController');
+    });
 });

+ 0 - 190
server/app/Helper/ByteDance.php

xqd
@@ -1,190 +0,0 @@
-<?php
-
-namespace App\Helper;
-
-use App\Helper\UniPlatform\BaseAPI;
-use App\Helper\UniPlatform\BaseUniPlatform;
-use GuzzleHttp\Client;
-use GuzzleHttp\Exception\GuzzleException;
-
-/**
- * Class ByteDance
- *
- * @package App\Helper
- * @property-read  string $appId
- * @property-read  string $slat
- * @property-read  string $secret
- * @property-read  string $token
- * @property-read  string $accessTokenFile
- * @property-read  string $accessToken
- * @property-read  string $noticeUrl
- * @property-read  string $validTimestamp
- */
-class ByteDance extends BaseUniPlatform
-{
-
-    public function __construct(BaseAPI $api)
-    {
-        $this->API  = $api;
-    }
-
-    /**
-     * 获取 access token
-     * @throws \Exception
-     */
-    protected function getAccessToken() : string
-    {
-        $res = $this->post($this->API::ACCESS_TOKEN, [
-            'grant_type' => 'client_credential',
-            'appid'      => $this->appId,
-            'secret'     => $this->secret,
-        ]);
-        if (!empty($res['err_no'])) {
-            throw new \Exception('获取access token 错误');
-        }
-
-        file_put_contents($this->accessTokenFile, json_encode([
-            'access_token' => $res['access_token'],
-            'expires_at'   => $res['expiresAt']
-        ]));
-
-        return $res['access_token'];
-    }
-
-    /**
-     * @param $outOrderNo
-     * @param $totalAmount
-     * @param $openId
-     * @return array|mixed
-     * @throws \Exception
-     */
-    public function createOrder($outOrderNo, $totalAmount, $openId): array
-    {
-        $data = [
-            'app_id'       => $this->appId,
-            'out_order_no' => $outOrderNo,
-            'total_amount' => intval($totalAmount * 100),
-            'subject'      => "订单号:".$outOrderNo,
-            'body'         => '抖音担保支付',
-            'valid_time'   => $this->validTimestamp,
-            'sign'         => $this->secret
-            //'notify_url'   => $notifyUrl, // 可以不设置 使用小程序后台设置的回调
-        ];
-        $data = array_filter($data);
-        $data['sign'] = $this->getSign($data);
-
-        return $this->post(
-            $this->API::CREATE_ORDER,
-            $data
-        );
-    }
-
-    /**
-     * @param array  $data
-     * @return string
-     */
-    public function getSign(array $data)
-    {
-        $rList = [];
-        foreach ($data as $k => $v) {
-            if ($k == "other_settle_params" || $k == "app_id" || $k == "sign" || $k == "thirdparty_id")
-                continue;
-            $value = trim(strval($v));
-            $len = strlen($value);
-            if ($len > 1 && substr($value, 0, 1) == "\"" && substr($value, $len, $len - 1) == "\"")
-                $value = substr($value, 1, $len - 1);
-            $value = trim($value);
-            if ($value == "" || $value == "null")
-                continue;
-            array_push($rList, $value);
-        }
-        array_push($rList, $this->slat);
-        sort($rList, SORT_STRING);
-        return md5(implode('&', $rList));
-    }
-
-    /**
-     * @param array  $data
-     * @return string
-     */
-    public function getNotifySign(array $data)
-    {
-        $filtered = [];
-        foreach ($data as $key => $value) {
-            if (in_array($key, ['msg_signature', 'type'])) {
-                continue;
-            }
-            $value = trim(strval($value));
-            $len = strlen($value);
-            if ($len > 1 && substr($value, 0, 1) == "\"" && substr($value, $len, $len - 1) == "\"")
-                $value = substr($value, 1, $len - 1);
-            $filtered[] =
-                is_string($value)
-                    ? trim($value)
-                    : $value;
-        }
-        $filtered[] = trim($this->token);
-        sort($filtered, SORT_STRING);
-        return sha1(trim(implode('', $filtered)));
-    }
-
-
-    /**
-     * @param string $code
-     * @return array|mixed
-     * @throws \Exception
-     */
-    public function login($code = ''): array
-    {
-        return $this->post($this->API::LOGIN, [
-            'appid'      => $this->appId,
-            'secret'     => $this->secret,
-            'code'       => $code,
-        ]);
-    }
-
-    /**
-     * 接口请求
-     *
-     * @param string $uri
-     * @param array  $data
-     * @return array|mixed
-     * @throws \Exception
-     */
-    protected function post($uri = '', $data = []) : array
-    {
-        try {
-            $client = new Client();
-            $res = $client->post($uri, [
-                'verify'  => false,
-                'headers' => ['Content-Type' => 'application/json'],
-                'body'    => json_encode($data)
-            ]);
-            $stringBody = (string)$res->getBody();
-            $res = json_decode($stringBody, true);
-
-            if(!empty($res['err_no'])){
-                throw new \Exception("请求字节跳动API接口错误,错误码:{$res['err_no']},错误信息:{$res['err_tips']}");
-            }
-            return $res['data'];
-        } catch (GuzzleException $e) {
-            \Log::error($e->getMessage());
-            throw new \Exception($e->getMessage());
-        }
-    }
-
-    protected function setAccessFileDir(): void
-    {
-        $this->accessTokenDir = storage_path('app/bytedance');
-    }
-
-    protected function setAccessFilePath(): void
-    {
-        $this->accessTokenFile = storage_path('app/bytedance/bytedance_access_token.json');
-    }
-
-    protected function setNoticeUrl(): void
-    {
-        $this->noticeUrl = env('APP_URL').'/api/pay/bytedance/notify';
-    }
-}

+ 0 - 183
server/app/Helper/Kuaishou.php

xqd
@@ -1,183 +0,0 @@
-<?php
-namespace App\Helper;
-use App\Helper\UniPlatform\BaseAPI;
-use App\Helper\UniPlatform\BaseUniPlatform;
-use Carbon\Carbon;
-use GuzzleHttp\Client;
-use GuzzleHttp\Exception\GuzzleException;
-
-/**
- * Class Kuaishou
- *
- * @package App\Helper
- * @property-read  string $appId
- * @property-read  string $slat
- * @property-read  string $secret
- * @property-read  string $token
- * @property-read  string $accessTokenFile
- * @property-read  string $accessToken
- * @property-read  string $noticeUrl
- * @property-read  string $validTimestamp
- */
-class Kuaishou extends BaseUniPlatform
-{
-    public function __construct(BaseAPI $api)
-    {
-        $this->API  = $api;
-    }
-
-    /**
-     * @param string $code
-     * @return array|mixed
-     * @throws \Exception
-     */
-    public function login($code = ''): array
-    {
-        return $this->post($this->API::LOGIN, [
-            'app_id'       => $this->appId,
-            'app_secret'   => $this->secret,
-            'js_code'      => $code,
-        ]);
-    }
-
-
-    public function createOrder($outOrderNo, $totalAmount, $openId): array
-    {
-        $data = [
-            'app_id'        => $this->appId,
-            'out_order_no'  => $outOrderNo,
-            'open_id'       => $openId,
-            'total_amount'  => intval($totalAmount * 100),
-            'subject'       => "订单号:".$outOrderNo,
-            'detail'        => '快手担保支付',
-            'type'          => 1233, // @url https://mp.kuaishou.com/docs/operate/platformAgreement/epayServiceCharge.html
-            'expire_time'   => $this->validTimestamp,
-            'notify_url'    => $this->noticeUrl
-        ];
-        $data['sign'] = $this->getSign($data);
-        $url = $this->API::CREATE_ORDER.'?'.http_build_query([
-                'app_id' => $this->appId,
-                'access_token' =>  $this->accessToken,
-            ]);
-        $res  = $this->post(
-            $url,
-            $data,
-            'json'
-        );
-
-        return  [
-            'order_id' => $res['order_info']['order_no'],
-            'order_token' => $res['order_info']['order_info_token']
-        ];
-    }
-
-
-    /**
-     * @param array  $data
-     * @return string
-     */
-    public function getSign(array $data)
-    {
-        $filterArray = ['sign','access_token'];
-        $rList = array();
-        foreach ($data as $k => $v) {
-            if (in_array($k, $filterArray))
-                continue;
-            $value = trim(strval($v));
-            $len = strlen($value);
-            if ($len > 1 && substr($value, 0, 1) == "\"" && substr($value, $len, $len - 1) == "\"")
-                $value = substr($value, 1, $len - 1);
-            $value = trim($value);
-            if ($value == "" || $value == "null")
-                continue;
-            array_push($rList, "$k=$value");
-        }
-        sort($rList, SORT_STRING);
-        $str = implode('&', $rList);
-        $str .= $this->secret;
-        return md5($str);
-    }
-
-
-    protected function getAccessToken(): string
-    {
-        $res = $this->post($this->API::ACCESS_TOKEN, [
-            'app_id'      => $this->appId,
-            'app_secret'  => $this->secret,
-            'grant_type'  => 'client_credentials',
-        ]);
-        if (!isset($res['result']) || $res['result'] != 1) {
-            throw new \Exception('获取access token 错误');
-        }
-
-        file_put_contents($this->accessTokenFile, json_encode([
-            'access_token' => $res['access_token'],
-            'expires_at'   => Carbon::now()->timestamp + $res['expires_in']
-        ]));
-
-        return $res['access_token'];
-    }
-
-    protected function setAccessFileDir(): void
-    {
-        $this->accessTokenDir = storage_path('app/kuaishou');
-    }
-
-    protected function setAccessFilePath(): void
-    {
-        $this->accessTokenFile = storage_path('app/kuaishou/kuaishou_access_token.json');
-    }
-
-
-    public function getNotifySign(array $data)
-    {
-        $req = file_get_contents('php://input');
-        $str = $req.$this->secret;
-        return md5($str);
-    }
-
-    /**
-     * @param string $uri
-     * @param array  $data
-     * @param string $type
-     * @return array
-     * @throws \Exception
-     */
-    protected function post($uri = '', $data = [], $type = 'urlencoded'): array
-    {
-        try {
-            $client = new Client();
-            if($type == 'urlencoded'){
-                $url = $uri.'?'.http_build_query($data);
-                $options = [
-                    'verify'  => false,
-                    'headers' => ['Content-Type' => 'x-www-form-urlencoded'],
-                ];
-            }else{
-                $url = $uri;
-                $options = [
-                    'verify'  => false,
-                    'headers' => ['Content-Type' => 'application/json'],
-                    'body' => json_encode($data)
-                ];
-            }
-            $res = $client->post($url, $options);
-            $stringBody = (string)$res->getBody();
-            $res = json_decode($stringBody, true);
-
-            if(!isset($res['result']) || $res['result'] != 1){
-                throw new \Exception("请求快手API接口错误,错误码:{$res['result']},错误信息:{$res['error_msg']}");
-            }
-            return $res;
-        } catch (GuzzleException $e) {
-            \Log::error($e->getMessage());
-            throw new \Exception($e->getMessage());
-        }
-    }
-
-    protected function setNoticeUrl(): void
-    {
-        $this->noticeUrl = env('APP_URL').'/api/pay/kuaishou/notify';
-    }
-
-}

+ 0 - 9
server/app/Helper/UniPlatform/BaseAPI.php

xqd
@@ -1,9 +0,0 @@
-<?php
-namespace App\Helper\UniPlatform;
-
-abstract class BaseAPI
-{
-    const ACCESS_TOKEN = '';
-    const LOGIN = '';
-    const CREATE_ORDER = '';
-}

+ 0 - 151
server/app/Helper/UniPlatform/BaseUniPlatform.php

xqd
@@ -1,151 +0,0 @@
-<?php
-namespace App\Helper\UniPlatform;
-
-/**
- * Class ByteDance
- *
- * @package App\Helper
- * @property-read  string $appId
- * @property-read  string $slat
- * @property-read  string $secret
- * @property-read  string $token
- * @property-read  string $accessTokenDir
- * @property-read  string $accessTokenFile
- * @property-read  string $accessToken
- * @property-read  string $noticeUrl
- * @property-read  string $validTimestamp
- * @property-read  BaseAPI $API
- */
-abstract class BaseUniPlatform
-{
-    protected $appId = null;
-    protected $secret = null;
-    protected $slat = null;
-    protected $token = null;
-
-
-    protected $accessTokenDir = null;
-    protected $accessTokenFile = null;
-    protected $accessToken = null;
-    protected $noticeUrl = null;
-    //订单过期时间(秒);
-    protected $validTimestamp = 24 * 60 * 60;
-
-    protected $API;
-
-    /**
-     * @param array $config
-     * @return $this
-     */
-    public function factory($config = [])
-    {
-        $this->appId = $config['app_id'];
-        $this->secret = $config['app_secret'];
-        $this->slat = isset($config['slat']) ? $config['slat'] : null;
-        $this->token = isset($config['token']) ?  $config['token'] : null;
-
-        $this->setAccessFileDir();
-        $this->setAccessFilePath();
-        $this->setNoticeUrl();
-        $this->accessToken = $this->checkAccessToken();
-
-        return $this;
-    }
-
-
-    /**
-     * @param string $sessionKey
-     * @param string $iv
-     * @param string $encrypted
-     * @return array
-     * @throws \Exception
-     */
-    public function decryptData(string $sessionKey, string $iv, string $encrypted): array
-    {
-        $decrypted =  openssl_decrypt(
-            base64_decode($encrypted,true),
-            'AES-128-CBC',
-            base64_decode($sessionKey),
-            OPENSSL_RAW_DATA,
-            base64_decode($iv)
-        );
-        $decrypted = json_decode($decrypted,true);
-        if(empty($decrypted)){
-            throw new \Exception('解密数据错误');
-        }
-
-        return $decrypted;
-    }
-
-
-
-    /**
-     * 校验access token 是否过期
-     * @return mixed
-     */
-    protected function checkAccessToken()
-    {
-        try {
-            $dir = $this->accessTokenDir;
-            if (!is_dir($dir)) mkdir($dir, 0755);
-            if (!is_file($this->accessTokenFile)) touch($this->accessTokenFile);
-
-            $accessToken = file_get_contents($this->accessTokenFile);
-            $accessToken = $accessToken ? json_decode($accessToken,true) : null;
-            if (empty($accessToken) || $accessToken['expires_at'] < time()) {
-                $accessToken = $this->getAccessToken();
-            }else{
-                $accessToken = $accessToken['access_token'];
-            }
-            return $accessToken;
-        } catch (\Exception $e) {
-
-        }
-    }
-
-
-
-    /**
-     * 登陆
-     * @param $code
-     * @return array
-     */
-    protected abstract function login($code): array ;
-
-    /**
-     * 接口请求
-     * @param string $uri
-     * @param array  $data
-     * @return array
-     */
-    protected abstract function post($uri = '', $data = []): array ;
-
-    /**
-     * 获取Access token
-     * @return string
-     */
-    protected abstract function getAccessToken(): string ;
-
-
-    /**
-     * 创建支付订单
-     *
-     * @param $outOrderNo
-     * @param $totalAmount
-     * @param $openId
-     * @return array
-     */
-    abstract public function createOrder($outOrderNo, $totalAmount, $openId): array ;
-
-    /**
-     * 设置 access token 目录
-     */
-    protected abstract function setAccessFileDir(): void;
-
-    /**
-     * 设置 access token路径
-     */
-    protected abstract function setAccessFilePath(): void;
-
-    protected abstract function setNoticeUrl(): void;
-}

+ 0 - 29
server/app/Helper/UniPlatform/Bytedance/ByteDanceAPI.php

xqd
@@ -1,29 +0,0 @@
-<?php
-namespace App\Helper\UniPlatform\Bytedance;
-
-use App\Helper\UniPlatform\BaseAPI;
-
-define('BASE_URL','https://developer.toutiao.com/api/apps/v2');
-define('PAY_URL','https://developer.toutiao.com/api/apps');
-final class ByteDanceAPI extends BaseAPI
-{
-
-
-    /**
-     * 获取 ACCESS_TOKEN
-     * @url https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/interface-request-credential/get-access-token
-     */
-    const ACCESS_TOKEN = BASE_URL.'/token';
-
-    /**
-     * 登陆
-     * @url https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/log-in/code-2-session
-     */
-    const LOGIN = BASE_URL.'/jscode2session';
-
-    /**
-     * 支付下单
-     * @url https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/server/ecpay/introduction
-     */
-    const CREATE_ORDER = PAY_URL.'/ecpay/v1/create_order';
-}

+ 0 - 81
server/app/Helper/UniPlatform/Bytedance/Payment.php

xqd
@@ -1,81 +0,0 @@
-<?php
-
-namespace App\Helper\UniPlatform\Bytedance;
-
-use App\Helper\ByteDance;
-use App\Models\Pay;
-use Carbon\Carbon;
-
-/**
- * Class Payment
- *
- * @package App\Helper\Bytedance
- * @property-read ByteDance $app
- */
-class Payment
-{
-
-    private $app;
-
-    private $fail = null;
-
-
-    public function __construct(ByteDance $app)
-    {
-        $this->app = $app;
-    }
-
-    /**
-     * 支付通知
-     * @param \Closure $closure
-     * @return \Illuminate\Http\JsonResponse
-     */
-    public function payNotify(\Closure $closure)
-    {
-        try {
-            call_user_func($closure, $this->getNoticeData() ,[$this, 'fail']);
-        }catch (\Exception $e){
-            $this->fail($e->getMessage());
-        }
-
-        return $this->toResponse();
-    }
-
-    public function fail($msg)
-    {
-        $this->fail = $msg;
-    }
-
-    /**
-     * 获取支付通知数据
-     * @return mixed
-     * @throws \Exception
-     */
-    private function getNoticeData()
-    {
-        $notify = \request()->all();
-        //$notify = '{"msg":"{\"appid\":\"tt5b312d8cc40f46b701\",\"cp_orderno\":\"10022082800824490007\",\"cp_extra\":\"\",\"way\":\"2\",\"channel_no\":\"2022082822001477591433078541\",\"channel_gateway_no\":\"\",\"payment_order_no\":\"PCP2022082822540531221069106962\",\"out_channel_order_no\":\"2022082822001477591433078541\",\"total_amount\":1,\"status\":\"SUCCESS\",\"seller_uid\":\"71227862181355706950\",\"extra\":\"\",\"item_id\":\"\",\"paid_at\":1661698458,\"message\":\"\",\"order_id\":\"7136939355201063205\",\"trade_item_list\":null,\"ec_pay_trade_no\":\"NEP2022082822540409483061846962\"}","msg_signature":"804a60e48936b14a739230cef21fe6204427732e","nonce":"78","timestamp":"1661698459","type":"payment"}';
-        //获取订单信息
-        //$notify = json_decode($notify,true);
-        \Log::info('抖音支付回调==>'.json_encode($notify,JSON_UNESCAPED_SLASHES));
-
-        if($notify['msg_signature'] !== $this->app->getNotifySign($notify)){
-            throw new \Exception('签名验证错误');
-        }
-
-        return json_decode($notify['msg'], true);
-    }
-
-    /**
-     * 返回数据
-     * @return \Illuminate\Http\JsonResponse
-     */
-    private function toResponse()
-    {
-        $data = [
-            'err_no'    => is_null($this->fail) ? 0  : 1,
-            'err_tips'  => is_null($this->fail) ? 'success' : $this->fail
-        ];
-        return response()->json($data);
-    }
-}

+ 0 - 30
server/app/Helper/UniPlatform/Kuaishou/KuaishouAPI.php

xqd
@@ -1,30 +0,0 @@
-<?php
-namespace App\Helper\UniPlatform\Kuaishou;
-
-use App\Helper\UniPlatform\BaseAPI;
-define('BASE_URL','https://open.kuaishou.com/oauth2');
-define('PAY_URL','https://open.kuaishou.com/openapi/mp/developer');
-
-
-final class KuaishouAPI extends BaseAPI
-{
-
-
-    /**
-     * 获取 ACCESS_TOKEN
-     * @url https://mp.kuaishou.com/docs/develop/server/getAccessToken.html
-     */
-    const ACCESS_TOKEN = BASE_URL.'/access_token';
-
-    /**
-     * 登陆
-     * @url https://mp.kuaishou.com/docs/develop/server/code2Session.html
-     */
-    const LOGIN = BASE_URL.'/mp/code2session';
-
-    /**
-     * 支付下单
-     * @url https://mp.kuaishou.com/docs/develop/server/epay/interfaceDefinition.html
-     */
-    const CREATE_ORDER = PAY_URL.'/epay/create_order';
-}

+ 0 - 85
server/app/Helper/UniPlatform/Kuaishou/Payment.php

xqd
@@ -1,85 +0,0 @@
-<?php
-
-namespace App\Helper\UniPlatform\Kuaishou;
-
-use App\Helper\Kuaishou;
-use App\Models\Pay;
-use Carbon\Carbon;
-
-/**
- * Class Payment
- *
- * @package App\Helper\Bytedance
- * @property-read Kuaishou $app
- */
-class Payment
-{
-
-    private $app;
-
-    private $messageId = '';
-
-    private $fail = null;
-
-
-    public function __construct(Kuaishou $app)
-    {
-        $this->app = $app;
-    }
-
-    /**
-     * 支付通知
-     * @param \Closure $closure
-     * @return \Illuminate\Http\JsonResponse
-     */
-    public function payNotify(\Closure $closure)
-    {
-        try {
-            call_user_func($closure, $this->getNoticeData() ,[$this, 'fail']);
-        }catch (\Exception $e){
-            $this->fail($e->getMessage());
-        }
-
-        return $this->toResponse();
-    }
-
-    public function fail($msg)
-    {
-        $this->fail = $msg;
-    }
-
-    /**
-     * 获取支付通知数据
-     * @return mixed
-     * @throws \Exception
-     */
-    private function getNoticeData()
-    {
-        $notify = \request()->all();
-        $kwaisign = \request()->header('kwaisign');
-
-        $this->messageId = $notify['message_id'];
-        //获取订单信息
-        $notify = array_merge($notify,['kwaisign' => $kwaisign]);
-        \Log::info('快手支付回调==>'.json_encode($notify,JSON_UNESCAPED_SLASHES));
-        if($kwaisign !== $this->app->getNotifySign($notify)){
-            throw new \Exception('签名验证错误');
-        }
-
-        return $notify['data'];
-    }
-
-    /**
-     * 返回数据
-     * @return \Illuminate\Http\JsonResponse
-     */
-    private function toResponse()
-    {
-        $data = [
-            'result'        => is_null($this->fail) ? 1  : 0,
-            'message_id'    => $this->messageId,
-            'fail'          => $this->fail
-        ];
-        return response()->json($data);
-    }
-}

+ 3 - 3
server/app/Models/Banner.php

xqd xqd
@@ -11,9 +11,9 @@ use Illuminate\Database\Eloquent\Model;
  *
  * @property int $id
  * @property string $name 名称
- * @property string $image 图
+ * @property string $image 图
  * @property int $sort 排序
- * @property int $status 是否启用
+ * @property int $is_opened 是否启用
  * @property \Illuminate\Support\Carbon|null $updated_at
  * @property \Illuminate\Support\Carbon|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $created_at
@@ -25,9 +25,9 @@ use Illuminate\Database\Eloquent\Model;
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereDeletedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereId($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereImage($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Banner whereIsOpened($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereName($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereSort($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Banner whereStatus($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Banner whereUpdatedAt($value)
  * @method static \Illuminate\Database\Query\Builder|Banner withTrashed()
  * @method static \Illuminate\Database\Query\Builder|Banner withoutTrashed()

+ 38 - 0
server/app/Models/Contact.php

xqd
@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\Contact
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property string $phone_num 手机号
+ * @property string $wechat_num 微信号
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Contact onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact wherePhoneNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Contact whereWechatNum($value)
+ * @method static \Illuminate\Database\Query\Builder|Contact withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Contact withoutTrashed()
+ * @mixin \Eloquent
+ */
+class Contact extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+    }

+ 56 - 0
server/app/Models/Product.php

xqd
@@ -0,0 +1,56 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\Product
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property string $cover_img 封面图
+ * @property string $cases 案例
+ * @property string $origin_price 原价
+ * @property string $sale_price 现价
+ * @property int $sort 排序越大越靠前
+ * @property int $is_opened 上架状态 0-下架 1-上架
+ * @property string $tech_param 集数参数文件
+ * @property string $cad_model CAD模型文件
+ * @property string $cad_design CAD设计文件
+ * @property string $su_model SU模型文件
+ * @property string $other 其他文件
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|Product newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Product newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Product onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Product query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereCadDesign($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereCadModel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereCases($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereCoverImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereIsOpened($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereOriginPrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereOther($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereSalePrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereSuModel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereTechParam($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Product whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Product withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Product withoutTrashed()
+ * @mixin \Eloquent
+ */
+class Product extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+    }

+ 43 - 0
server/app/Models/ProductCategory.php

xqd
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\ProductCategory
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property int $level 分类级别
+ * @property int|null $pid 父id
+ * @property int $sort 排序越大越靠前
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory newQuery()
+ * @method static \Illuminate\Database\Query\Builder|ProductCategory onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory wherePid($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductCategory whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|ProductCategory withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|ProductCategory withoutTrashed()
+ * @mixin \Eloquent
+ */
+class ProductCategory extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+
+    protected $table = 'product_categories';
+    
+}

+ 43 - 0
server/app/Models/ProductHot.php

xqd
@@ -0,0 +1,43 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\ProductHot
+ *
+ * @property int $id
+ * @property int $type 1- 普通用户 2-vip客户/设计师
+ * @property string|null $product_id 产品列表
+ * @property int $sort 排序越大越靠前
+ * @property int $is_opened 是否启用 0-否 1-是
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot newQuery()
+ * @method static \Illuminate\Database\Query\Builder|ProductHot onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereIsOpened($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereProductId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductHot whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|ProductHot withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|ProductHot withoutTrashed()
+ * @mixin \Eloquent
+ */
+class ProductHot extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+
+    protected $table = 'product_hots';
+    
+}

+ 45 - 0
server/app/Models/ProductSku.php

xqd
@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\ProductSku
+ *
+ * @property int $id
+ * @property int $product_id 产品ID
+ * @property string $name 名称
+ * @property string $cover_img 封面图
+ * @property string $origin_price 原价
+ * @property string $sale_price 现价
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku newQuery()
+ * @method static \Illuminate\Database\Query\Builder|ProductSku onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereCoverImg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereOriginPrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereProductId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereSalePrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductSku whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|ProductSku withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|ProductSku withoutTrashed()
+ * @mixin \Eloquent
+ */
+class ProductSku extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+
+    protected $table = 'product_skus';
+    
+}

+ 2 - 16
server/app/Models/Setting.php

xqd xqd
@@ -2,6 +2,7 @@
 
 namespace App\Models;
 
+use Dcat\Admin\Traits\HasDateTimeFormatter;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 
@@ -11,36 +12,21 @@ use Illuminate\Database\Eloquent\Model;
  * @property int $id
  * @property string $name 小程序名称
  * @property string $logo 小程序logo
- * @property string $contact 联系电话
- * @property string $tips 小程序提示
- * @property int $vip_role 会员权限
- * @property int $is_watch_auto_pay 观看自动支付
- * @property string $recharge_bg_img 封面图
- * @property string $recharge_button_txt 按钮文案
- * @property string|null $recharge_desc 充值说明
- * @property string|null $nav_seting 导航栏设置 json
  * @property \Illuminate\Support\Carbon|null $updated_at
  * @property string|null $deleted_at
  * @property \Illuminate\Support\Carbon|null $created_at
  * @method static \Illuminate\Database\Eloquent\Builder|Setting newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder|Setting newQuery()
  * @method static \Illuminate\Database\Eloquent\Builder|Setting query()
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereContact($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereCreatedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereDeletedAt($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereId($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereIsWatchAutoPay($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereLogo($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereName($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereNavSeting($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereRechargeBgImg($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereRechargeButtonTxt($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereRechargeDesc($value)
- * @method static \Illuminate\Database\Eloquent\Builder|Setting whereTips($value)
  * @method static \Illuminate\Database\Eloquent\Builder|Setting whereUpdatedAt($value)
  * @mixin \Eloquent
  */
 class Setting extends Model
 {
-    use HasFactory;
+    use HasFactory,HasDateTimeFormatter;
 }

+ 38 - 0
server/app/Models/Showroom.php

xqd
@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\Showroom
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property int $sort 排序越大越靠前
+ * @property int $is_opened 是否启用 0-否 1-是
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Showroom onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereIsOpened($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Showroom whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Showroom withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Showroom withoutTrashed()
+ * @mixin \Eloquent
+ */
+class Showroom extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+    }

+ 47 - 0
server/app/Models/ShowroomCase.php

xqd
@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Database\Eloquent\Model;
+
+/**
+ * App\Models\ShowroomCase
+ *
+ * @property int $id
+ * @property int $showroom_id 展厅ID
+ * @property string $name 名称
+ * @property string|null $videos 案例视频
+ * @property string|null $images 案例图片
+ * @property int $sort 排序越大越靠前
+ * @property int $is_opened 是否启用 0-否 1-是
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property \Illuminate\Support\Carbon|null $deleted_at
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase newQuery()
+ * @method static \Illuminate\Database\Query\Builder|ShowroomCase onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereImages($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereIsOpened($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereShowroomId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ShowroomCase whereVideos($value)
+ * @method static \Illuminate\Database\Query\Builder|ShowroomCase withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|ShowroomCase withoutTrashed()
+ * @mixin \Eloquent
+ */
+class ShowroomCase extends Model
+{
+	use HasDateTimeFormatter;
+    use SoftDeletes;
+
+    protected $table = 'showroom_cases';
+    
+}

+ 12 - 38
server/app/Models/User.php

xqd xqd xqd
@@ -8,27 +8,30 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
 use Illuminate\Notifications\Notifiable;
 use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject;
 
+
 /**
  * App\Models\User
  *
  * @property int $id
- * @property string $nickname
- * @property string $avatar
- * @property string $password
+ * @property string $nickname 昵称
+ * @property string $avatar 头像
+ * @property string $password 密码
  * @property string $email
- * @property string $mobile
- * @property string $open_id
+ * @property string $mobile 手机号
+ * @property string $open_id openid
  * @property string $union_id
- * @property int $status
+ * @property int $status 状态 1-正常 0-禁用
  * @property string|null $email_verified_at
  * @property string|null $remember_token
+ * @property string|null $remark 备注
+ * @property int $type 用户类型 1-普通用户 2-VIP 3-设计师
  * @property \Illuminate\Support\Carbon|null $created_at
  * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property-read \App\Models\UserInfo|null $info
  * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications
  * @property-read int|null $notifications_count
  * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery()
  * @method static \Illuminate\Database\Eloquent\Builder|User newQuery()
- * @method static \Illuminate\Database\Query\Builder|User onlyTrashed()
  * @method static \Illuminate\Database\Eloquent\Builder|User query()
  * @method static \Illuminate\Database\Eloquent\Builder|User whereAvatar($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value)
@@ -39,22 +42,13 @@ use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject;
  * @method static \Illuminate\Database\Eloquent\Builder|User whereNickname($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereOpenId($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereRemark($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereType($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereUnionId($value)
  * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
- * @method static \Illuminate\Database\Query\Builder|User withTrashed()
- * @method static \Illuminate\Database\Query\Builder|User withoutTrashed()
  * @mixin \Eloquent
- * @property \Illuminate\Support\Carbon|null $deleted_at
- * @property-read \App\Models\UserInfo|null $info
- * @method static \Illuminate\Database\Eloquent\Builder|User whereDeletedAt($value)
- * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserConsumeRecord[] $consumeRecords
- * @property-read int|null $consume_records_count
- * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserRechargeRecord[] $rechargeRecords
- * @property-read int|null $recharge_records_count
- * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserVipRecord[] $vipRecords
- * @property-read int|null $vip_records_count
  */
 class User extends Authenticatable implements JWTSubject
 {
@@ -110,24 +104,4 @@ class User extends Authenticatable implements JWTSubject
     {
         $this->attributes['password'] = bcrypt($value);
     }
-
-    public function info()
-    {
-        return $this->belongsTo(UserInfo::class,'id','user_id');
-    }
-
-    public function consumeRecords()
-    {
-        return $this->hasMany(UserConsumeRecord::class,'user_id','id');
-    }
-
-    public function rechargeRecords()
-    {
-        return $this->hasMany(UserRechargeRecord::class,'user_id','id');
-    }
-
-    public function vipRecords()
-    {
-        return $this->hasMany(UserVipRecord::class,'user_id','id');
-    }
 }

+ 84 - 448
server/dcat_admin_ide_helper.php

xqd xqd xqd xqd
@@ -38,128 +38,37 @@ namespace Dcat\Admin {
      * @property Grid\Column|Collection remember_token
      * @property Grid\Column|Collection image
      * @property Grid\Column|Collection sort
-     * @property Grid\Column|Collection status
+     * @property Grid\Column|Collection is_opened
      * @property Grid\Column|Collection deleted_at
-     * @property Grid\Column|Collection md5
-     * @property Grid\Column|Collection path
-     * @property Grid\Column|Collection url
-     * @property Grid\Column|Collection class
-     * @property Grid\Column|Collection size
-     * @property Grid\Column|Collection file_type
-     * @property Grid\Column|Collection download
-     * @property Grid\Column|Collection klass
-     * @property Grid\Column|Collection objid
-     * @property Grid\Column|Collection key
-     * @property Grid\Column|Collection expiration
-     * @property Grid\Column|Collection group
-     * @property Grid\Column|Collection comment
-     * @property Grid\Column|Collection pid
-     * @property Grid\Column|Collection short_name
-     * @property Grid\Column|Collection grade
-     * @property Grid\Column|Collection city_code
-     * @property Grid\Column|Collection zip_code
-     * @property Grid\Column|Collection merger_name
-     * @property Grid\Column|Collection lng
-     * @property Grid\Column|Collection lat
-     * @property Grid\Column|Collection pinyin
-     * @property Grid\Column|Collection uuid
-     * @property Grid\Column|Collection connection
-     * @property Grid\Column|Collection queue
-     * @property Grid\Column|Collection payload
-     * @property Grid\Column|Collection exception
-     * @property Grid\Column|Collection failed_at
      * @property Grid\Column|Collection migration
      * @property Grid\Column|Collection batch
-     * @property Grid\Column|Collection category_id
-     * @property Grid\Column|Collection platform
-     * @property Grid\Column|Collection cover_img
-     * @property Grid\Column|Collection is_opend
-     * @property Grid\Column|Collection is_vip_watch
-     * @property Grid\Column|Collection share_count
-     * @property Grid\Column|Collection free_episodes
-     * @property Grid\Column|Collection paid_episodes
-     * @property Grid\Column|Collection episodes_price
-     * @property Grid\Column|Collection episodes_id
-     * @property Grid\Column|Collection is_free
-     * @property Grid\Column|Collection sale_price
-     * @property Grid\Column|Collection answer
-     * @property Grid\Column|Collection look_num
+     * @property Grid\Column|Collection phone_num
+     * @property Grid\Column|Collection wechat_num
      * @property Grid\Column|Collection email
      * @property Grid\Column|Collection token
-     * @property Grid\Column|Collection pay_id
-     * @property Grid\Column|Collection pay_type
-     * @property Grid\Column|Collection pay_dt
-     * @property Grid\Column|Collection order_fee
-     * @property Grid\Column|Collection discount_fee
-     * @property Grid\Column|Collection handling_fee
-     * @property Grid\Column|Collection prepay_id
-     * @property Grid\Column|Collection serial_number
-     * @property Grid\Column|Collection pay_error
-     * @property Grid\Column|Collection setting_id
-     * @property Grid\Column|Collection mini_app_id
-     * @property Grid\Column|Collection mini_app_key
-     * @property Grid\Column|Collection wechat_app_id
-     * @property Grid\Column|Collection wechat_app_key
-     * @property Grid\Column|Collection wechat_apiclient_key
-     * @property Grid\Column|Collection wechat_apiclient_cert
-     * @property Grid\Column|Collection alipay_app_id
-     * @property Grid\Column|Collection alipay_app_key
-     * @property Grid\Column|Collection alipay_app_secret
-     * @property Grid\Column|Collection douyin_app_id
-     * @property Grid\Column|Collection douyin_app_key
-     * @property Grid\Column|Collection douyin_app_secret
-     * @property Grid\Column|Collection tokenable_type
-     * @property Grid\Column|Collection tokenable_id
-     * @property Grid\Column|Collection abilities
-     * @property Grid\Column|Collection last_used_at
-     * @property Grid\Column|Collection price
-     * @property Grid\Column|Collection gold
-     * @property Grid\Column|Collection gift
-     * @property Grid\Column|Collection code
-     * @property Grid\Column|Collection parent_code
-     * @property Grid\Column|Collection full_name
+     * @property Grid\Column|Collection level
+     * @property Grid\Column|Collection pid
+     * @property Grid\Column|Collection product_id
+     * @property Grid\Column|Collection cover_img
+     * @property Grid\Column|Collection origin_price
+     * @property Grid\Column|Collection sale_price
+     * @property Grid\Column|Collection cases
+     * @property Grid\Column|Collection tech_param
+     * @property Grid\Column|Collection cad_model
+     * @property Grid\Column|Collection cad_design
+     * @property Grid\Column|Collection su_model
+     * @property Grid\Column|Collection other
      * @property Grid\Column|Collection logo
-     * @property Grid\Column|Collection contact
-     * @property Grid\Column|Collection tips
-     * @property Grid\Column|Collection vip_role
-     * @property Grid\Column|Collection is_open_sign
-     * @property Grid\Column|Collection is_watch_auto_pay
-     * @property Grid\Column|Collection recharge_bg_img
-     * @property Grid\Column|Collection recharge_button_txt
-     * @property Grid\Column|Collection recharge_desc
-     * @property Grid\Column|Collection prefix
-     * @property Grid\Column|Collection event
-     * @property Grid\Column|Collection mobile
-     * @property Grid\Column|Collection verify_key
-     * @property Grid\Column|Collection sms_code
-     * @property Grid\Column|Collection sms_result
-     * @property Grid\Column|Collection episode_id
-     * @property Grid\Column|Collection before
-     * @property Grid\Column|Collection change
-     * @property Grid\Column|Collection current
-     * @property Grid\Column|Collection remark
-     * @property Grid\Column|Collection order_id
-     * @property Grid\Column|Collection list_id
-     * @property Grid\Column|Collection discount
-     * @property Grid\Column|Collection statust
-     * @property Grid\Column|Collection content
-     * @property Grid\Column|Collection file
-     * @property Grid\Column|Collection integral
-     * @property Grid\Column|Collection total_integral
-     * @property Grid\Column|Collection is_vip
-     * @property Grid\Column|Collection start_at
-     * @property Grid\Column|Collection end_at
-     * @property Grid\Column|Collection opend_at
-     * @property Grid\Column|Collection recharge_id
-     * @property Grid\Column|Collection combo_id
-     * @property Grid\Column|Collection desc
-     * @property Grid\Column|Collection date
-     * @property Grid\Column|Collection award
-     * @property Grid\Column|Collection valid_day
+     * @property Grid\Column|Collection showroom_id
+     * @property Grid\Column|Collection videos
+     * @property Grid\Column|Collection images
      * @property Grid\Column|Collection nickname
+     * @property Grid\Column|Collection mobile
      * @property Grid\Column|Collection open_id
      * @property Grid\Column|Collection union_id
+     * @property Grid\Column|Collection status
      * @property Grid\Column|Collection email_verified_at
+     * @property Grid\Column|Collection remark
      *
      * @method Grid\Column|Collection id(string $label = null)
      * @method Grid\Column|Collection name(string $label = null)
@@ -188,128 +97,37 @@ namespace Dcat\Admin {
      * @method Grid\Column|Collection remember_token(string $label = null)
      * @method Grid\Column|Collection image(string $label = null)
      * @method Grid\Column|Collection sort(string $label = null)
-     * @method Grid\Column|Collection status(string $label = null)
+     * @method Grid\Column|Collection is_opened(string $label = null)
      * @method Grid\Column|Collection deleted_at(string $label = null)
-     * @method Grid\Column|Collection md5(string $label = null)
-     * @method Grid\Column|Collection path(string $label = null)
-     * @method Grid\Column|Collection url(string $label = null)
-     * @method Grid\Column|Collection class(string $label = null)
-     * @method Grid\Column|Collection size(string $label = null)
-     * @method Grid\Column|Collection file_type(string $label = null)
-     * @method Grid\Column|Collection download(string $label = null)
-     * @method Grid\Column|Collection klass(string $label = null)
-     * @method Grid\Column|Collection objid(string $label = null)
-     * @method Grid\Column|Collection key(string $label = null)
-     * @method Grid\Column|Collection expiration(string $label = null)
-     * @method Grid\Column|Collection group(string $label = null)
-     * @method Grid\Column|Collection comment(string $label = null)
-     * @method Grid\Column|Collection pid(string $label = null)
-     * @method Grid\Column|Collection short_name(string $label = null)
-     * @method Grid\Column|Collection grade(string $label = null)
-     * @method Grid\Column|Collection city_code(string $label = null)
-     * @method Grid\Column|Collection zip_code(string $label = null)
-     * @method Grid\Column|Collection merger_name(string $label = null)
-     * @method Grid\Column|Collection lng(string $label = null)
-     * @method Grid\Column|Collection lat(string $label = null)
-     * @method Grid\Column|Collection pinyin(string $label = null)
-     * @method Grid\Column|Collection uuid(string $label = null)
-     * @method Grid\Column|Collection connection(string $label = null)
-     * @method Grid\Column|Collection queue(string $label = null)
-     * @method Grid\Column|Collection payload(string $label = null)
-     * @method Grid\Column|Collection exception(string $label = null)
-     * @method Grid\Column|Collection failed_at(string $label = null)
      * @method Grid\Column|Collection migration(string $label = null)
      * @method Grid\Column|Collection batch(string $label = null)
-     * @method Grid\Column|Collection category_id(string $label = null)
-     * @method Grid\Column|Collection platform(string $label = null)
-     * @method Grid\Column|Collection cover_img(string $label = null)
-     * @method Grid\Column|Collection is_opend(string $label = null)
-     * @method Grid\Column|Collection is_vip_watch(string $label = null)
-     * @method Grid\Column|Collection share_count(string $label = null)
-     * @method Grid\Column|Collection free_episodes(string $label = null)
-     * @method Grid\Column|Collection paid_episodes(string $label = null)
-     * @method Grid\Column|Collection episodes_price(string $label = null)
-     * @method Grid\Column|Collection episodes_id(string $label = null)
-     * @method Grid\Column|Collection is_free(string $label = null)
-     * @method Grid\Column|Collection sale_price(string $label = null)
-     * @method Grid\Column|Collection answer(string $label = null)
-     * @method Grid\Column|Collection look_num(string $label = null)
+     * @method Grid\Column|Collection phone_num(string $label = null)
+     * @method Grid\Column|Collection wechat_num(string $label = null)
      * @method Grid\Column|Collection email(string $label = null)
      * @method Grid\Column|Collection token(string $label = null)
-     * @method Grid\Column|Collection pay_id(string $label = null)
-     * @method Grid\Column|Collection pay_type(string $label = null)
-     * @method Grid\Column|Collection pay_dt(string $label = null)
-     * @method Grid\Column|Collection order_fee(string $label = null)
-     * @method Grid\Column|Collection discount_fee(string $label = null)
-     * @method Grid\Column|Collection handling_fee(string $label = null)
-     * @method Grid\Column|Collection prepay_id(string $label = null)
-     * @method Grid\Column|Collection serial_number(string $label = null)
-     * @method Grid\Column|Collection pay_error(string $label = null)
-     * @method Grid\Column|Collection setting_id(string $label = null)
-     * @method Grid\Column|Collection mini_app_id(string $label = null)
-     * @method Grid\Column|Collection mini_app_key(string $label = null)
-     * @method Grid\Column|Collection wechat_app_id(string $label = null)
-     * @method Grid\Column|Collection wechat_app_key(string $label = null)
-     * @method Grid\Column|Collection wechat_apiclient_key(string $label = null)
-     * @method Grid\Column|Collection wechat_apiclient_cert(string $label = null)
-     * @method Grid\Column|Collection alipay_app_id(string $label = null)
-     * @method Grid\Column|Collection alipay_app_key(string $label = null)
-     * @method Grid\Column|Collection alipay_app_secret(string $label = null)
-     * @method Grid\Column|Collection douyin_app_id(string $label = null)
-     * @method Grid\Column|Collection douyin_app_key(string $label = null)
-     * @method Grid\Column|Collection douyin_app_secret(string $label = null)
-     * @method Grid\Column|Collection tokenable_type(string $label = null)
-     * @method Grid\Column|Collection tokenable_id(string $label = null)
-     * @method Grid\Column|Collection abilities(string $label = null)
-     * @method Grid\Column|Collection last_used_at(string $label = null)
-     * @method Grid\Column|Collection price(string $label = null)
-     * @method Grid\Column|Collection gold(string $label = null)
-     * @method Grid\Column|Collection gift(string $label = null)
-     * @method Grid\Column|Collection code(string $label = null)
-     * @method Grid\Column|Collection parent_code(string $label = null)
-     * @method Grid\Column|Collection full_name(string $label = null)
+     * @method Grid\Column|Collection level(string $label = null)
+     * @method Grid\Column|Collection pid(string $label = null)
+     * @method Grid\Column|Collection product_id(string $label = null)
+     * @method Grid\Column|Collection cover_img(string $label = null)
+     * @method Grid\Column|Collection origin_price(string $label = null)
+     * @method Grid\Column|Collection sale_price(string $label = null)
+     * @method Grid\Column|Collection cases(string $label = null)
+     * @method Grid\Column|Collection tech_param(string $label = null)
+     * @method Grid\Column|Collection cad_model(string $label = null)
+     * @method Grid\Column|Collection cad_design(string $label = null)
+     * @method Grid\Column|Collection su_model(string $label = null)
+     * @method Grid\Column|Collection other(string $label = null)
      * @method Grid\Column|Collection logo(string $label = null)
-     * @method Grid\Column|Collection contact(string $label = null)
-     * @method Grid\Column|Collection tips(string $label = null)
-     * @method Grid\Column|Collection vip_role(string $label = null)
-     * @method Grid\Column|Collection is_open_sign(string $label = null)
-     * @method Grid\Column|Collection is_watch_auto_pay(string $label = null)
-     * @method Grid\Column|Collection recharge_bg_img(string $label = null)
-     * @method Grid\Column|Collection recharge_button_txt(string $label = null)
-     * @method Grid\Column|Collection recharge_desc(string $label = null)
-     * @method Grid\Column|Collection prefix(string $label = null)
-     * @method Grid\Column|Collection event(string $label = null)
-     * @method Grid\Column|Collection mobile(string $label = null)
-     * @method Grid\Column|Collection verify_key(string $label = null)
-     * @method Grid\Column|Collection sms_code(string $label = null)
-     * @method Grid\Column|Collection sms_result(string $label = null)
-     * @method Grid\Column|Collection episode_id(string $label = null)
-     * @method Grid\Column|Collection before(string $label = null)
-     * @method Grid\Column|Collection change(string $label = null)
-     * @method Grid\Column|Collection current(string $label = null)
-     * @method Grid\Column|Collection remark(string $label = null)
-     * @method Grid\Column|Collection order_id(string $label = null)
-     * @method Grid\Column|Collection list_id(string $label = null)
-     * @method Grid\Column|Collection discount(string $label = null)
-     * @method Grid\Column|Collection statust(string $label = null)
-     * @method Grid\Column|Collection content(string $label = null)
-     * @method Grid\Column|Collection file(string $label = null)
-     * @method Grid\Column|Collection integral(string $label = null)
-     * @method Grid\Column|Collection total_integral(string $label = null)
-     * @method Grid\Column|Collection is_vip(string $label = null)
-     * @method Grid\Column|Collection start_at(string $label = null)
-     * @method Grid\Column|Collection end_at(string $label = null)
-     * @method Grid\Column|Collection opend_at(string $label = null)
-     * @method Grid\Column|Collection recharge_id(string $label = null)
-     * @method Grid\Column|Collection combo_id(string $label = null)
-     * @method Grid\Column|Collection desc(string $label = null)
-     * @method Grid\Column|Collection date(string $label = null)
-     * @method Grid\Column|Collection award(string $label = null)
-     * @method Grid\Column|Collection valid_day(string $label = null)
+     * @method Grid\Column|Collection showroom_id(string $label = null)
+     * @method Grid\Column|Collection videos(string $label = null)
+     * @method Grid\Column|Collection images(string $label = null)
      * @method Grid\Column|Collection nickname(string $label = null)
+     * @method Grid\Column|Collection mobile(string $label = null)
      * @method Grid\Column|Collection open_id(string $label = null)
      * @method Grid\Column|Collection union_id(string $label = null)
+     * @method Grid\Column|Collection status(string $label = null)
      * @method Grid\Column|Collection email_verified_at(string $label = null)
+     * @method Grid\Column|Collection remark(string $label = null)
      */
     class Grid {}
 
@@ -343,128 +161,37 @@ namespace Dcat\Admin {
      * @property Show\Field|Collection remember_token
      * @property Show\Field|Collection image
      * @property Show\Field|Collection sort
-     * @property Show\Field|Collection status
+     * @property Show\Field|Collection is_opened
      * @property Show\Field|Collection deleted_at
-     * @property Show\Field|Collection md5
-     * @property Show\Field|Collection path
-     * @property Show\Field|Collection url
-     * @property Show\Field|Collection class
-     * @property Show\Field|Collection size
-     * @property Show\Field|Collection file_type
-     * @property Show\Field|Collection download
-     * @property Show\Field|Collection klass
-     * @property Show\Field|Collection objid
-     * @property Show\Field|Collection key
-     * @property Show\Field|Collection expiration
-     * @property Show\Field|Collection group
-     * @property Show\Field|Collection comment
-     * @property Show\Field|Collection pid
-     * @property Show\Field|Collection short_name
-     * @property Show\Field|Collection grade
-     * @property Show\Field|Collection city_code
-     * @property Show\Field|Collection zip_code
-     * @property Show\Field|Collection merger_name
-     * @property Show\Field|Collection lng
-     * @property Show\Field|Collection lat
-     * @property Show\Field|Collection pinyin
-     * @property Show\Field|Collection uuid
-     * @property Show\Field|Collection connection
-     * @property Show\Field|Collection queue
-     * @property Show\Field|Collection payload
-     * @property Show\Field|Collection exception
-     * @property Show\Field|Collection failed_at
      * @property Show\Field|Collection migration
      * @property Show\Field|Collection batch
-     * @property Show\Field|Collection category_id
-     * @property Show\Field|Collection platform
-     * @property Show\Field|Collection cover_img
-     * @property Show\Field|Collection is_opend
-     * @property Show\Field|Collection is_vip_watch
-     * @property Show\Field|Collection share_count
-     * @property Show\Field|Collection free_episodes
-     * @property Show\Field|Collection paid_episodes
-     * @property Show\Field|Collection episodes_price
-     * @property Show\Field|Collection episodes_id
-     * @property Show\Field|Collection is_free
-     * @property Show\Field|Collection sale_price
-     * @property Show\Field|Collection answer
-     * @property Show\Field|Collection look_num
+     * @property Show\Field|Collection phone_num
+     * @property Show\Field|Collection wechat_num
      * @property Show\Field|Collection email
      * @property Show\Field|Collection token
-     * @property Show\Field|Collection pay_id
-     * @property Show\Field|Collection pay_type
-     * @property Show\Field|Collection pay_dt
-     * @property Show\Field|Collection order_fee
-     * @property Show\Field|Collection discount_fee
-     * @property Show\Field|Collection handling_fee
-     * @property Show\Field|Collection prepay_id
-     * @property Show\Field|Collection serial_number
-     * @property Show\Field|Collection pay_error
-     * @property Show\Field|Collection setting_id
-     * @property Show\Field|Collection mini_app_id
-     * @property Show\Field|Collection mini_app_key
-     * @property Show\Field|Collection wechat_app_id
-     * @property Show\Field|Collection wechat_app_key
-     * @property Show\Field|Collection wechat_apiclient_key
-     * @property Show\Field|Collection wechat_apiclient_cert
-     * @property Show\Field|Collection alipay_app_id
-     * @property Show\Field|Collection alipay_app_key
-     * @property Show\Field|Collection alipay_app_secret
-     * @property Show\Field|Collection douyin_app_id
-     * @property Show\Field|Collection douyin_app_key
-     * @property Show\Field|Collection douyin_app_secret
-     * @property Show\Field|Collection tokenable_type
-     * @property Show\Field|Collection tokenable_id
-     * @property Show\Field|Collection abilities
-     * @property Show\Field|Collection last_used_at
-     * @property Show\Field|Collection price
-     * @property Show\Field|Collection gold
-     * @property Show\Field|Collection gift
-     * @property Show\Field|Collection code
-     * @property Show\Field|Collection parent_code
-     * @property Show\Field|Collection full_name
+     * @property Show\Field|Collection level
+     * @property Show\Field|Collection pid
+     * @property Show\Field|Collection product_id
+     * @property Show\Field|Collection cover_img
+     * @property Show\Field|Collection origin_price
+     * @property Show\Field|Collection sale_price
+     * @property Show\Field|Collection cases
+     * @property Show\Field|Collection tech_param
+     * @property Show\Field|Collection cad_model
+     * @property Show\Field|Collection cad_design
+     * @property Show\Field|Collection su_model
+     * @property Show\Field|Collection other
      * @property Show\Field|Collection logo
-     * @property Show\Field|Collection contact
-     * @property Show\Field|Collection tips
-     * @property Show\Field|Collection vip_role
-     * @property Show\Field|Collection is_open_sign
-     * @property Show\Field|Collection is_watch_auto_pay
-     * @property Show\Field|Collection recharge_bg_img
-     * @property Show\Field|Collection recharge_button_txt
-     * @property Show\Field|Collection recharge_desc
-     * @property Show\Field|Collection prefix
-     * @property Show\Field|Collection event
-     * @property Show\Field|Collection mobile
-     * @property Show\Field|Collection verify_key
-     * @property Show\Field|Collection sms_code
-     * @property Show\Field|Collection sms_result
-     * @property Show\Field|Collection episode_id
-     * @property Show\Field|Collection before
-     * @property Show\Field|Collection change
-     * @property Show\Field|Collection current
-     * @property Show\Field|Collection remark
-     * @property Show\Field|Collection order_id
-     * @property Show\Field|Collection list_id
-     * @property Show\Field|Collection discount
-     * @property Show\Field|Collection statust
-     * @property Show\Field|Collection content
-     * @property Show\Field|Collection file
-     * @property Show\Field|Collection integral
-     * @property Show\Field|Collection total_integral
-     * @property Show\Field|Collection is_vip
-     * @property Show\Field|Collection start_at
-     * @property Show\Field|Collection end_at
-     * @property Show\Field|Collection opend_at
-     * @property Show\Field|Collection recharge_id
-     * @property Show\Field|Collection combo_id
-     * @property Show\Field|Collection desc
-     * @property Show\Field|Collection date
-     * @property Show\Field|Collection award
-     * @property Show\Field|Collection valid_day
+     * @property Show\Field|Collection showroom_id
+     * @property Show\Field|Collection videos
+     * @property Show\Field|Collection images
      * @property Show\Field|Collection nickname
+     * @property Show\Field|Collection mobile
      * @property Show\Field|Collection open_id
      * @property Show\Field|Collection union_id
+     * @property Show\Field|Collection status
      * @property Show\Field|Collection email_verified_at
+     * @property Show\Field|Collection remark
      *
      * @method Show\Field|Collection id(string $label = null)
      * @method Show\Field|Collection name(string $label = null)
@@ -493,128 +220,37 @@ namespace Dcat\Admin {
      * @method Show\Field|Collection remember_token(string $label = null)
      * @method Show\Field|Collection image(string $label = null)
      * @method Show\Field|Collection sort(string $label = null)
-     * @method Show\Field|Collection status(string $label = null)
+     * @method Show\Field|Collection is_opened(string $label = null)
      * @method Show\Field|Collection deleted_at(string $label = null)
-     * @method Show\Field|Collection md5(string $label = null)
-     * @method Show\Field|Collection path(string $label = null)
-     * @method Show\Field|Collection url(string $label = null)
-     * @method Show\Field|Collection class(string $label = null)
-     * @method Show\Field|Collection size(string $label = null)
-     * @method Show\Field|Collection file_type(string $label = null)
-     * @method Show\Field|Collection download(string $label = null)
-     * @method Show\Field|Collection klass(string $label = null)
-     * @method Show\Field|Collection objid(string $label = null)
-     * @method Show\Field|Collection key(string $label = null)
-     * @method Show\Field|Collection expiration(string $label = null)
-     * @method Show\Field|Collection group(string $label = null)
-     * @method Show\Field|Collection comment(string $label = null)
-     * @method Show\Field|Collection pid(string $label = null)
-     * @method Show\Field|Collection short_name(string $label = null)
-     * @method Show\Field|Collection grade(string $label = null)
-     * @method Show\Field|Collection city_code(string $label = null)
-     * @method Show\Field|Collection zip_code(string $label = null)
-     * @method Show\Field|Collection merger_name(string $label = null)
-     * @method Show\Field|Collection lng(string $label = null)
-     * @method Show\Field|Collection lat(string $label = null)
-     * @method Show\Field|Collection pinyin(string $label = null)
-     * @method Show\Field|Collection uuid(string $label = null)
-     * @method Show\Field|Collection connection(string $label = null)
-     * @method Show\Field|Collection queue(string $label = null)
-     * @method Show\Field|Collection payload(string $label = null)
-     * @method Show\Field|Collection exception(string $label = null)
-     * @method Show\Field|Collection failed_at(string $label = null)
      * @method Show\Field|Collection migration(string $label = null)
      * @method Show\Field|Collection batch(string $label = null)
-     * @method Show\Field|Collection category_id(string $label = null)
-     * @method Show\Field|Collection platform(string $label = null)
-     * @method Show\Field|Collection cover_img(string $label = null)
-     * @method Show\Field|Collection is_opend(string $label = null)
-     * @method Show\Field|Collection is_vip_watch(string $label = null)
-     * @method Show\Field|Collection share_count(string $label = null)
-     * @method Show\Field|Collection free_episodes(string $label = null)
-     * @method Show\Field|Collection paid_episodes(string $label = null)
-     * @method Show\Field|Collection episodes_price(string $label = null)
-     * @method Show\Field|Collection episodes_id(string $label = null)
-     * @method Show\Field|Collection is_free(string $label = null)
-     * @method Show\Field|Collection sale_price(string $label = null)
-     * @method Show\Field|Collection answer(string $label = null)
-     * @method Show\Field|Collection look_num(string $label = null)
+     * @method Show\Field|Collection phone_num(string $label = null)
+     * @method Show\Field|Collection wechat_num(string $label = null)
      * @method Show\Field|Collection email(string $label = null)
      * @method Show\Field|Collection token(string $label = null)
-     * @method Show\Field|Collection pay_id(string $label = null)
-     * @method Show\Field|Collection pay_type(string $label = null)
-     * @method Show\Field|Collection pay_dt(string $label = null)
-     * @method Show\Field|Collection order_fee(string $label = null)
-     * @method Show\Field|Collection discount_fee(string $label = null)
-     * @method Show\Field|Collection handling_fee(string $label = null)
-     * @method Show\Field|Collection prepay_id(string $label = null)
-     * @method Show\Field|Collection serial_number(string $label = null)
-     * @method Show\Field|Collection pay_error(string $label = null)
-     * @method Show\Field|Collection setting_id(string $label = null)
-     * @method Show\Field|Collection mini_app_id(string $label = null)
-     * @method Show\Field|Collection mini_app_key(string $label = null)
-     * @method Show\Field|Collection wechat_app_id(string $label = null)
-     * @method Show\Field|Collection wechat_app_key(string $label = null)
-     * @method Show\Field|Collection wechat_apiclient_key(string $label = null)
-     * @method Show\Field|Collection wechat_apiclient_cert(string $label = null)
-     * @method Show\Field|Collection alipay_app_id(string $label = null)
-     * @method Show\Field|Collection alipay_app_key(string $label = null)
-     * @method Show\Field|Collection alipay_app_secret(string $label = null)
-     * @method Show\Field|Collection douyin_app_id(string $label = null)
-     * @method Show\Field|Collection douyin_app_key(string $label = null)
-     * @method Show\Field|Collection douyin_app_secret(string $label = null)
-     * @method Show\Field|Collection tokenable_type(string $label = null)
-     * @method Show\Field|Collection tokenable_id(string $label = null)
-     * @method Show\Field|Collection abilities(string $label = null)
-     * @method Show\Field|Collection last_used_at(string $label = null)
-     * @method Show\Field|Collection price(string $label = null)
-     * @method Show\Field|Collection gold(string $label = null)
-     * @method Show\Field|Collection gift(string $label = null)
-     * @method Show\Field|Collection code(string $label = null)
-     * @method Show\Field|Collection parent_code(string $label = null)
-     * @method Show\Field|Collection full_name(string $label = null)
+     * @method Show\Field|Collection level(string $label = null)
+     * @method Show\Field|Collection pid(string $label = null)
+     * @method Show\Field|Collection product_id(string $label = null)
+     * @method Show\Field|Collection cover_img(string $label = null)
+     * @method Show\Field|Collection origin_price(string $label = null)
+     * @method Show\Field|Collection sale_price(string $label = null)
+     * @method Show\Field|Collection cases(string $label = null)
+     * @method Show\Field|Collection tech_param(string $label = null)
+     * @method Show\Field|Collection cad_model(string $label = null)
+     * @method Show\Field|Collection cad_design(string $label = null)
+     * @method Show\Field|Collection su_model(string $label = null)
+     * @method Show\Field|Collection other(string $label = null)
      * @method Show\Field|Collection logo(string $label = null)
-     * @method Show\Field|Collection contact(string $label = null)
-     * @method Show\Field|Collection tips(string $label = null)
-     * @method Show\Field|Collection vip_role(string $label = null)
-     * @method Show\Field|Collection is_open_sign(string $label = null)
-     * @method Show\Field|Collection is_watch_auto_pay(string $label = null)
-     * @method Show\Field|Collection recharge_bg_img(string $label = null)
-     * @method Show\Field|Collection recharge_button_txt(string $label = null)
-     * @method Show\Field|Collection recharge_desc(string $label = null)
-     * @method Show\Field|Collection prefix(string $label = null)
-     * @method Show\Field|Collection event(string $label = null)
-     * @method Show\Field|Collection mobile(string $label = null)
-     * @method Show\Field|Collection verify_key(string $label = null)
-     * @method Show\Field|Collection sms_code(string $label = null)
-     * @method Show\Field|Collection sms_result(string $label = null)
-     * @method Show\Field|Collection episode_id(string $label = null)
-     * @method Show\Field|Collection before(string $label = null)
-     * @method Show\Field|Collection change(string $label = null)
-     * @method Show\Field|Collection current(string $label = null)
-     * @method Show\Field|Collection remark(string $label = null)
-     * @method Show\Field|Collection order_id(string $label = null)
-     * @method Show\Field|Collection list_id(string $label = null)
-     * @method Show\Field|Collection discount(string $label = null)
-     * @method Show\Field|Collection statust(string $label = null)
-     * @method Show\Field|Collection content(string $label = null)
-     * @method Show\Field|Collection file(string $label = null)
-     * @method Show\Field|Collection integral(string $label = null)
-     * @method Show\Field|Collection total_integral(string $label = null)
-     * @method Show\Field|Collection is_vip(string $label = null)
-     * @method Show\Field|Collection start_at(string $label = null)
-     * @method Show\Field|Collection end_at(string $label = null)
-     * @method Show\Field|Collection opend_at(string $label = null)
-     * @method Show\Field|Collection recharge_id(string $label = null)
-     * @method Show\Field|Collection combo_id(string $label = null)
-     * @method Show\Field|Collection desc(string $label = null)
-     * @method Show\Field|Collection date(string $label = null)
-     * @method Show\Field|Collection award(string $label = null)
-     * @method Show\Field|Collection valid_day(string $label = null)
+     * @method Show\Field|Collection showroom_id(string $label = null)
+     * @method Show\Field|Collection videos(string $label = null)
+     * @method Show\Field|Collection images(string $label = null)
      * @method Show\Field|Collection nickname(string $label = null)
+     * @method Show\Field|Collection mobile(string $label = null)
      * @method Show\Field|Collection open_id(string $label = null)
      * @method Show\Field|Collection union_id(string $label = null)
+     * @method Show\Field|Collection status(string $label = null)
      * @method Show\Field|Collection email_verified_at(string $label = null)
+     * @method Show\Field|Collection remark(string $label = null)
      */
     class Show {}
 

+ 17 - 0
server/resources/lang/zh/banner.php

xqd
@@ -0,0 +1,17 @@
+<?php
+return [
+    'labels' => [
+        'Banner' => '轮播图',
+        'banner' => '轮播图',
+        'system' => '系统管理',
+        'register' => '注册页设置',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'image' => '图片',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 16 - 0
server/resources/lang/zh/contact.php

xqd
@@ -0,0 +1,16 @@
+<?php
+return [
+    'labels' => [
+        'Contact' => '联系人',
+        'contact' => '联系人',
+        'system' => '系统管理',
+        'register' => '注册页设置',
+    ],
+    'fields' => [
+        'name' => '姓名',
+        'phone_num' => '手机号',
+        'wechat_num' => '微信号',
+    ],
+    'options' => [
+    ],
+];

+ 15 - 0
server/resources/lang/zh/product-category.php

xqd
@@ -0,0 +1,15 @@
+<?php
+return [
+    'labels' => [
+        'product' => '产品',
+        'categories' => '分类',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'level' => '分类级别',
+        'pid' => '父分类',
+        'sort' => '排序(越大越靠前)',
+    ],
+    'options' => [
+    ],
+];

+ 18 - 0
server/resources/lang/zh/product-hot.php

xqd
@@ -0,0 +1,18 @@
+<?php
+return [
+    'labels' => [
+        'ProductHot' => '爆款产品',
+        'product-hot' => '爆款产品',
+        'hot' => '爆款产品',
+        'normal' => '普通用户爆款',
+        'vip' => 'VIP/设计师爆款',
+    ],
+    'fields' => [
+        'type' => '1- 普通用户 2-vip客户/设计师',
+        'product_id' => '产品',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 16 - 0
server/resources/lang/zh/product-sku.php

xqd
@@ -0,0 +1,16 @@
+<?php 
+return [
+    'labels' => [
+        'ProductSku' => 'ProductSku',
+        'product-sku' => 'ProductSku',
+    ],
+    'fields' => [
+        'product_id' => '产品ID',
+        'name' => '名称',
+        'cover_img' => '封面图',
+        'origin_price' => '原价',
+        'sale_price' => '现价',
+    ],
+    'options' => [
+    ],
+];

+ 23 - 0
server/resources/lang/zh/product.php

xqd
@@ -0,0 +1,23 @@
+<?php
+return [
+    'labels' => [
+        'Product' => '产品',
+        'product' => '产品',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'cover_img' => '封面图',
+        'cases' => '案例',
+        'origin_price' => '原价',
+        'sale_price' => '现价',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '上架状态',
+        'tech_param' => '集数参数文件',
+        'cad_model' => 'CAD模型文件',
+        'cad_design' => 'CAD设计文件',
+        'su_model' => 'SU模型文件',
+        'other' => '其他文件',
+    ],
+    'options' => [
+    ],
+];

+ 14 - 0
server/resources/lang/zh/setting.php

xqd
@@ -0,0 +1,14 @@
+<?php
+return [
+    'labels' => [
+        'Setting' => '设置',
+        'setting' => '设置',
+        'system' => '系统管理',
+    ],
+    'fields' => [
+        'name' => '小程序名称',
+        'logo' => '小程序logo',
+    ],
+    'options' => [
+    ],
+];

+ 18 - 0
server/resources/lang/zh/showroom-case.php

xqd
@@ -0,0 +1,18 @@
+<?php
+return [
+    'labels' => [
+        'ShowroomCase' => '应用案例',
+        'showroom-case' => '应用案例',
+        'cases' => '案例'
+    ],
+    'fields' => [
+        'showroom_id' => '展厅ID',
+        'name' => '名称',
+        'videos' => '案例视频',
+        'images' => '案例图片',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 15 - 0
server/resources/lang/zh/showroom.php

xqd
@@ -0,0 +1,15 @@
+<?php
+return [
+    'labels' => [
+        'Showroom' => '展厅',
+        'showroom' => '展厅',
+        'cases' => '案例'
+    ],
+    'fields' => [
+        'name' => '名称',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 12 - 9
server/resources/lang/zh/user.php

xqd
@@ -1,20 +1,23 @@
-<?php 
+<?php
 return [
     'labels' => [
-        'User' => 'User',
-        'user' => 'User',
+        'User' => '账号',
+        'user' => '账号',
+        'account' => '账号',
     ],
     'fields' => [
-        'nickname' => 'nickname',
-        'avatar' => 'avatar',
-        'password' => 'password',
+        'nickname' => '昵称',
+        'avatar' => '头像',
+        'password' => '密码',
         'email' => 'email',
-        'mobile' => 'mobile',
-        'open_id' => 'open_id',
+        'mobile' => '手机号',
+        'open_id' => 'openid',
         'union_id' => 'union_id',
-        'status' => 'status',
+        'status' => '状态 1-正常 0-禁用',
         'email_verified_at' => 'email_verified_at',
         'remember_token' => 'remember_token',
+        'remark' => '备注',
+        'type' => '用户类型 1-普通用户 2-VIP 3-设计师',
     ],
     'options' => [
     ],

+ 15 - 0
server/resources/lang/zh_CN/banner.php

xqd
@@ -0,0 +1,15 @@
+<?php 
+return [
+    'labels' => [
+        'Banner' => 'Banner',
+        'banner' => 'Banner',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'image' => '图片',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 14 - 0
server/resources/lang/zh_CN/contact.php

xqd
@@ -0,0 +1,14 @@
+<?php 
+return [
+    'labels' => [
+        'Contact' => 'Contact',
+        'contact' => 'Contact',
+    ],
+    'fields' => [
+        'name' => '姓名',
+        'phone_num' => '手机号',
+        'wechat_num' => '微信号',
+    ],
+    'options' => [
+    ],
+];

+ 15 - 0
server/resources/lang/zh_CN/product-category.php

xqd
@@ -0,0 +1,15 @@
+<?php 
+return [
+    'labels' => [
+        'ProductCategory' => 'ProductCategory',
+        'product-category' => 'ProductCategory',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'level' => '分类级别',
+        'pid' => '父分类',
+        'sort' => '排序(越大越靠前)',
+    ],
+    'options' => [
+    ],
+];

+ 15 - 0
server/resources/lang/zh_CN/product-hot.php

xqd
@@ -0,0 +1,15 @@
+<?php 
+return [
+    'labels' => [
+        'ProductHot' => 'ProductHot',
+        'product-hot' => 'ProductHot',
+    ],
+    'fields' => [
+        'type' => '1- 普通用户 2-vip客户/设计师',
+        'product_id' => '产品',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 16 - 0
server/resources/lang/zh_CN/product-sku.php

xqd
@@ -0,0 +1,16 @@
+<?php 
+return [
+    'labels' => [
+        'ProductSku' => 'ProductSku',
+        'product-sku' => 'ProductSku',
+    ],
+    'fields' => [
+        'product_id' => '产品ID',
+        'name' => '名称',
+        'cover_img' => '封面图',
+        'origin_price' => '原价',
+        'sale_price' => '现价',
+    ],
+    'options' => [
+    ],
+];

+ 23 - 0
server/resources/lang/zh_CN/product.php

xqd
@@ -0,0 +1,23 @@
+<?php 
+return [
+    'labels' => [
+        'Product' => 'Product',
+        'product' => 'Product',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'cover_img' => '封面图',
+        'cases' => '案例',
+        'origin_price' => '原价',
+        'sale_price' => '现价',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '上架状态',
+        'tech_param' => '集数参数文件',
+        'cad_model' => 'CAD模型文件',
+        'cad_design' => 'CAD设计文件',
+        'su_model' => 'SU模型文件',
+        'other' => '其他文件',
+    ],
+    'options' => [
+    ],
+];

+ 13 - 0
server/resources/lang/zh_CN/setting.php

xqd
@@ -0,0 +1,13 @@
+<?php 
+return [
+    'labels' => [
+        'Setting' => 'Setting',
+        'setting' => 'Setting',
+    ],
+    'fields' => [
+        'name' => '小程序名称',
+        'logo' => '小程序logo',
+    ],
+    'options' => [
+    ],
+];

+ 17 - 0
server/resources/lang/zh_CN/showroom-case.php

xqd
@@ -0,0 +1,17 @@
+<?php 
+return [
+    'labels' => [
+        'ShowroomCase' => 'ShowroomCase',
+        'showroom-case' => 'ShowroomCase',
+    ],
+    'fields' => [
+        'showroom_id' => '展厅ID',
+        'name' => '名称',
+        'videos' => '案例视频',
+        'images' => '案例图片',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 14 - 0
server/resources/lang/zh_CN/showroom.php

xqd
@@ -0,0 +1,14 @@
+<?php 
+return [
+    'labels' => [
+        'Showroom' => 'Showroom',
+        'showroom' => 'Showroom',
+    ],
+    'fields' => [
+        'name' => '名称',
+        'sort' => '排序(越大越靠前)',
+        'is_opened' => '是否启用',
+    ],
+    'options' => [
+    ],
+];

+ 8 - 6
server/resources/lang/zh_CN/user.php

xqd
@@ -5,16 +5,18 @@ return [
         'user' => 'User',
     ],
     'fields' => [
-        'nickname' => 'nickname',
-        'avatar' => 'avatar',
-        'password' => 'password',
+        'nickname' => '昵称',
+        'avatar' => '头像',
+        'password' => '密码',
         'email' => 'email',
-        'mobile' => 'mobile',
-        'open_id' => 'open_id',
+        'mobile' => '手机号',
+        'open_id' => 'openid',
         'union_id' => 'union_id',
-        'status' => 'status',
+        'status' => '状态 1-正常 0-禁用',
         'email_verified_at' => 'email_verified_at',
         'remember_token' => 'remember_token',
+        'remark' => '备注',
+        'type' => '用户类型 1-普通用户 2-VIP 3-设计师',
     ],
     'options' => [
     ],