moshaorui 4 months ago
parent
commit
807d2dc1d0

+ 2 - 2
app/Admin/Actions/Grid/AppearanceImport.php

@@ -46,7 +46,7 @@ class AppearanceImport extends RowAction
         $this->sourcePath = $path;
         $this->appearanceId = $appearanceId;
         // 清空旧的
-        DistAppearanceTemplate::deleteTemplates($appearanceId, 0);
+        DistAppearanceTemplate::deleteTemplates($appearanceId, config('dictionary.base_dist_id'));
         // 导入模板
         $this->readDirectory($path);
         // 更新状态
@@ -95,7 +95,7 @@ class AppearanceImport extends RowAction
                 $filePath = str_replace($this->sourcePath, '', $dirPath);
                 $fileName = basename($fullPath);
                 // 插入数据库
-                DistAppearanceTemplate::insertTemplateContent(0, $this->appearanceId, $filePath,$fileName, $content);
+                DistAppearanceTemplate::insertTemplateContent(config('dictionary.base_dist_id'), $this->appearanceId, $filePath,$fileName, $content);
             }
         }
 

+ 1 - 1
app/Admin/Controllers/DistAdminDistributorController.php

@@ -50,8 +50,8 @@ class DistAdminDistributorController extends AdminController
 
             $grid->column('country',);
             $grid->column('appearance.title' ,admin_trans_field('appearance'));
+            $grid->column('remark');
             $grid->column('enabled')->switch();
-            $grid->column('created_at');
             $grid->column('updated_at')->sortable();
             // 过滤
             $grid->filter(function (Grid\Filter $filter) {

+ 4 - 4
app/Admin/Controllers/DistAdminUserController.php

@@ -115,17 +115,17 @@ class DistAdminUserController extends AdminController
     protected function form()
     {
         return Form::make(DistAdminUser::with(['distributor']), function (Form $form) {
-            $form->display('id');
-            $form->text('username')->required();
+            //$form->display('id');
+            $form->text('username')->help('Login name')->required();
             $form->password('password')->customFormat(function ($v) {
                 return "";
             });
-            $form->text('name',)->required();
+            $form->text('name',)->help('Nickname')->required();
             $form->select('language')->options(config('dictionary.languages'))->required();
             $form->selectTable('dist_id', admin_trans_label('distributor'))
                 ->title('distId')
                 ->from(DistDistributorTable::make())
-                ->model(DistAdminDistributor::class, 'id', 'company_name');;
+                ->model(DistAdminDistributor::class, 'id', 'company_name');
             $form->switch('enabled')->default(1);
             //保存前回调
             $form->saving(function (Form $form) {

+ 7 - 8
app/Admin/Controllers/DistAppearanceVariableController.php

@@ -139,7 +139,6 @@ JS
         $appearanceId = isset($_GET['appearanceId']) ? intval($_GET['appearanceId']) : 0;
         $distId = isset($_GET['distId']) ? intval($_GET['distId']) : 0;
         return Form::make(new DistAppearanceVariable(), function (Form $form) use ($templateCode, $appearanceId, $distId) {
-            $form->display('id');
             $form->hidden('appearance_id')->value($appearanceId);
             $form->hidden('dist_id')->value($distId);
             $form->hidden('template_code')->value($templateCode);
@@ -151,26 +150,26 @@ JS
                     $variableDefaul = 1;
                 }
             }
-            $form->switch('site_variable')->value($variableDefaul);
+            $form->switch('site_variable')->value($variableDefaul)->width(9,3);
             $form->radio('variable_type')->options([
                 '1'=>'text',
                 '2'=>'textarea',
                 '3'=>'json'
-            ])->default(1);
-            $form->text('variable_name');
-            $form->textarea('variable_value')->rows(12);
+            ])->width(9,3)->default(1);
+            $form->text('variable_name')->width(9,3);
+            $form->textarea('variable_value')->rows(12)->width(9,3);
             $form->ignore(['site_variable']);
 
             $form->submitted(function (Form $form) {
-                if ($form->site_variable == 1) {
+                if ($form->input('site_variable') == 1) {
                     $form->template_code = 0;
                 }
                 if ($form->isCreating()) {
                     $form->variable_code = uniqueCode();
                 }
                 //检查json格式是否正确
-                if ($form->variable_type == 3) {
-                    if (!isValidJson($form->variable_value)) {
+                if ($form->input('variable_type') == 3) {
+                    if (!isValidJson($form->input('variable_value'))) {
                         return $form->response()->error('The JSON format is incorrect');
                     }
                 }

+ 4 - 1
app/Admin/Forms/AceLeft.php

@@ -3,6 +3,7 @@
 namespace App\Admin\Forms;
 
 use App\Admin\Renderable\DistDistributorTable;
+use App\Models\DistAdminDistributor;
 use Symfony\Component\HttpFoundation\Response;
 use Dcat\Admin\Widgets\Form;
 use App\Admin\Repositories\DistAppearance;
@@ -17,13 +18,15 @@ class AceLeft extends Form
             ->width(12,12)
             ->setLabelClass('d-flex');
         //供应商选择
+        $baseDistId = config('dictionary.base_dist_id');
         $this->selectTable('dist_id', 'Select Distributor')
             ->width(12,12)
             ->setLabelClass('d-flex')
             ->title('Select Distributor')
             ->placeholder('Select Distributor')
             ->from(DistDistributorTable::make())
-            ->help('If empty, use the original template.');
+            ->model(DistAdminDistributor::class, 'id', 'company_name')
+            ->default($baseDistId);
         $this->disableSubmitButton();
         $this->disableResetButton();
     }

+ 11 - 3
app/Admin/Renderable/DistDistributorTable.php

@@ -15,9 +15,17 @@ class DistDistributorTable extends LazyRenderable
             $grid->column('company_name', 'Company Name');
             $grid->column('country', 'Country');
             $grid->column('site_name', 'Site Name');
-            $grid->column('level_domain', 'Level Domain');
-            $grid->column('created_at');
-            $grid->column('updated_at');
+            $grid->column('domain_type',admin_trans_label('domain'))->display(function ($domainType) {
+                $title = "";
+                if ($domainType == 0) {
+                    $title = $this->secondary_domain;
+                } else {
+                    $title = $this->custom_domain;
+                }
+                return "<span style='color:#586cb1'>$title</span>";
+            });
+            //$grid->column('created_at');
+            //$grid->column('updated_at');
 
             // 指定行选择器选中时显示的值的字段名称
             // 指定行选择器选中时显示的值的字段名称

+ 14 - 3
app/Distributor/Controllers/DistProductCategoryController.php

@@ -2,6 +2,7 @@
 
 namespace App\Distributor\Controllers;
 
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\DistProductCategory;
 
 use App\Libraries\CommonHelper;
@@ -80,7 +81,7 @@ class DistProductCategoryController extends AdminDistController
     protected function form()
     {
         return Form::make(new DistProductCategory(), function (Form $form) {
-            $form->display('id', 'ID');
+            //$form->display('id', 'ID');
             $form->select('parent_id', admin_trans_field('parent'))
                 ->options(DistProductCategory::selectMainOptions(function ($query) {
                     // 在这里定义查询条件
@@ -101,7 +102,8 @@ class DistProductCategoryController extends AdminDistController
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(9, 2)->prepend(getSiteDomain().config('dictionary.site_url.product_category').'/');
-            })->options(admin_trans_array(config('dictionary.visibility')))->default(1)->value(1);
+            })->options(admin_trans_array(config('dictionary.visibility')))
+                ->value(DistAdminUsersSetting::getValue('visibility'));
             //隐藏字段
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             $form->ignore(['visibility']);
@@ -109,6 +111,11 @@ class DistProductCategoryController extends AdminDistController
             $form->creating(function (Form $form) {
                 CommonHelper::seoReplace('name','productCategory');
             });
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             // 在保存时写死dist_id
             $form->saving(function (Form $form) {
                 $form->dist_id =getDistributorId();
@@ -122,7 +129,11 @@ class DistProductCategoryController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = DistProductCategory::generateSlug($form->title);
+                    $form->slug = DistProductCategory::generateSlug($form->name, $id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->name;
                 }
             });
         });

+ 15 - 4
app/Distributor/Controllers/DistProductController.php

@@ -4,6 +4,7 @@ namespace App\Distributor\Controllers;
 
 use App\Admin\Repositories\BaseProductImage;
 use App\Distributor\Actions\Extensions\DistProductImport;
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\DistProduct;
 use App\Distributor\Repositories\DistProductCategory;
 use App\Distributor\Repositories\DistProductImage;
@@ -59,7 +60,7 @@ class DistProductController extends AdminDistController
                 $dataImages = array_slice($dataImages, 0, 2);
                 return CommonHelper::displayImage($dataImages,60);
             });
-            //$grid->column('order')->orderable();
+            $grid->column('order')->orderable();
             $grid->column('is_pinned')->switch();
             $grid->column('enabled')->switch();
             $grid->column('created_at');
@@ -150,7 +151,7 @@ class DistProductController extends AdminDistController
     protected function form()
     {
         return Form::make(DistProduct::with('images'), function (Form $form) {
-            $form->display('id');
+            //$form->display('id');
             $form->select('category_id', admin_trans_label('category_name'))
                 ->options(DistProductCategory::selectOptions())
                 ->required();
@@ -188,12 +189,18 @@ class DistProductController extends AdminDistController
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(4, 2)->prepend(getSiteDomain().config('dictionary.site_url.products').'/');
-            })->options(admin_trans_array(config('dictionary.visibility')))->default(1)->value(1);
+            })->options(admin_trans_array(config('dictionary.visibility')))
+                ->value(DistAdminUsersSetting::getValue('visibility'));
             //隐藏字段
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             $form->ignore(['visibility']);
             //插入JS
             $this->addParametersJs();
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             // 在保存时进行验证
             $form->saving(function (Form $form) {
                 $form->dist_id =getDistributorId();//保存时直接写死dist_id
@@ -208,7 +215,11 @@ class DistProductController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = DistProduct::generateSlug($form->title);
+                    $form->slug = DistProduct::generateSlug($form->title, $id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->title;
                 }
             });
         });

+ 14 - 3
app/Distributor/Controllers/DistVideoCategoryController.php

@@ -2,6 +2,7 @@
 
 namespace App\Distributor\Controllers;
 
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\DistVideo;
 use App\Distributor\Repositories\DistVideoCategory;
 use App\Libraries\CommonHelper;
@@ -61,7 +62,7 @@ class DistVideoCategoryController extends AdminDistController
     protected function form()
     {
         return Form::make(new DistVideoCategory(), function (Form $form) {
-            $form->display('id');
+            //$form->display('id');
             $form->text('name')->required();
             $form->switch('enabled')->default(1);
             //SEO
@@ -70,7 +71,8 @@ class DistVideoCategoryController extends AdminDistController
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(9, 2)->prepend(getSiteDomain().config('dictionary.site_url.video_category').'/');
-            })->options(admin_trans_array(config('dictionary.visibility')))->default(1)->value(1);
+            })->options(admin_trans_array(config('dictionary.visibility')))
+                ->value(DistAdminUsersSetting::getValue('visibility'));
             //隐藏
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             $form->ignore(['visibility']);
@@ -78,6 +80,11 @@ class DistVideoCategoryController extends AdminDistController
             $form->creating(function (Form $form) {
                 CommonHelper::seoReplace('name','videoCategory');
             });
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             //保存前
             $form->saving(function (Form $form) {
                 $form->dist_id =getDistributorId();//保存时直接写死dist_id
@@ -91,7 +98,11 @@ class DistVideoCategoryController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = DistVideoCategory::generateSlug($form->title);
+                    $form->slug = DistVideoCategory::generateSlug($form->name, $id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->name;
                 }
             });
 

+ 19 - 4
app/Distributor/Controllers/DistVideoController.php

@@ -3,6 +3,7 @@
 namespace App\Distributor\Controllers;
 
 
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\DistVideo;
 use App\Distributor\Repositories\DistVideoCategory;
 use App\Libraries\CommonHelper;
@@ -131,7 +132,7 @@ class DistVideoController extends AdminDistController
     protected function form()
     {
         return Form::make(new DistVideo(), function (Form $form) {
-            $form->display('id');
+            //$form->display('id');
             $form->text('title')->required();
             $form->select('category_id', admin_trans_label('category_name'))
                 ->options(DistVideoCategory::selectOptions())
@@ -152,10 +153,20 @@ class DistVideoController extends AdminDistController
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(4, 2)->prepend(getSiteDomain().config('dictionary.site_url.video').'/');
-            })->options(admin_trans_array(config('dictionary.visibility')))->default(1)->value(1);
-            //
+            })->options(admin_trans_array(config('dictionary.visibility')))
+                ->value(DistAdminUsersSetting::getValue('visibility'));
+            //隐藏
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             $form->ignore(['visibility']);
+            //新建时插入JS
+            $form->creating(function (Form $form) {
+                CommonHelper::seoReplace();
+            });
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             $form->saving(function (Form $form) {
                 $form->dist_id =getDistributorId();//保存时直接写死dist_id
 
@@ -169,7 +180,11 @@ class DistVideoController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = DistVideo::generateSlug($form->title);
+                    $form->slug = DistVideo::generateSlug($form->title, $id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->title;
                 }
             });
         });

+ 8 - 8
app/Distributor/Controllers/SiteMenuController.php

@@ -106,7 +106,7 @@ class SiteMenuController extends AdminDistController
                         ->when(0, function (Form $form) use ($menuConfig,$thisObject) {
                             $form->select('product_category')->options(DistProductCategory::selectOptions())->value($thisObject->getArrayValue('product_category',$menuConfig));
                         })->when(1, function (Form $form) use ($menuConfig,$thisObject) {
-                            $form->select('pages_tag')->options('api/tag')->value($thisObject->getArrayValue('posts_tag',$menuConfig));
+                            $form->select('pages_tag')->options('api/tag')->value($thisObject->getArrayValue('pages_tag',$menuConfig));
                         });
                 })
                 ->when(2, function (Form $form) use ($menuConfig,$thisObject) {
@@ -117,8 +117,8 @@ class SiteMenuController extends AdminDistController
                 })
                 ->when(3, function (Form $form) use ($menuConfig,$thisObject) {
                     //选择页面
-                    $form->select('posts',admin_trans_label('select_pages'))->options('api/pages')
-                        ->value($thisObject->getArrayValue('posts',$menuConfig))
+                    $form->select('pages',admin_trans_label('select_pages'))->options('api/pages')
+                        ->value($thisObject->getArrayValue('pages',$menuConfig))
                         ->help('The latest 30 published posts are displayed by default, and you can also use the search function to find all posts.');
                 })
                 ->when(4, function (Form $form) use ($menuConfig,$thisObject) {
@@ -133,7 +133,7 @@ class SiteMenuController extends AdminDistController
             $form->hidden('uri');
             $form->hidden('dist_id'); // 隐藏dist_id字段,用于保存
             //以下字段不保存
-            $form->ignore(['collections_type','product_category','pages_tag','product','posts','url']);
+            $form->ignore(['collections_type','product_category','pages_tag','product','pages','url']);
             //保存事件
             $form->submitted(function (Form $form) use ($thisObject) {
                 $result = $thisObject->convertMenuConfig($form);
@@ -152,9 +152,9 @@ class SiteMenuController extends AdminDistController
         $menuConfig = [
             'collections_type' => $form->input('collections_type'),
             'product_category' => $form->input('product_category'),
-            'posts_tag' => $form->input('posts_tag'),
+            'pages_tag' => $form->input('pages_tag'),
             'product' => $form->input('product'),
-            'posts' => $form->input('posts'),
+            'pages' => $form->input('pages'),
             'url' => $form->input('url'),
         ];
         $menuType = $form->input('menu_type');
@@ -169,7 +169,7 @@ class SiteMenuController extends AdminDistController
                     $uri = $row ? "/product-category/".$row->slug : "/";
                 } else {
                     //文章标签
-                    $row = SitePagesTag::getOneById($form->input('posts_tag'));
+                    $row = SitePagesTag::getOneById($form->input('pages_tag'));
                     $uri = $row ? "/collections/".$row->slug : "/";
                 }
                 break;
@@ -178,7 +178,7 @@ class SiteMenuController extends AdminDistController
                 $uri = $row ? "/products/".$row->slug : "/";
                 break;
             case 3: //选择页面
-                $row = SitePages::getOneById($form->input('posts'));
+                $row = SitePages::getOneById($form->input('pages'));
                 $uri = $row ? "/pages/".$row->slug : "/";
                 break;
             case 4: //url

+ 13 - 2
app/Distributor/Controllers/SitePagesController.php

@@ -2,6 +2,7 @@
 
 namespace App\Distributor\Controllers;
 
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\SitePages;
 use App\Models\SitePages as Model;
 use App\Distributor\Repositories\SitePagesTag;
@@ -144,7 +145,8 @@ class SitePagesController extends AdminDistController
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(4, 2)->prepend(getSiteDomain().config('dictionary.site_url.pages').'/');
-            })->options(admin_trans_array(config('dictionary.visibility')))->default(1)->value(1);
+            })->options(admin_trans_array(config('dictionary.visibility')))
+              ->value(DistAdminUsersSetting::getValue('visibility'));
             //隐藏字段
             $form->hidden('dist_id',);
             $form->ignore(['visibility']);
@@ -152,6 +154,11 @@ class SitePagesController extends AdminDistController
             $form->creating(function (Form $form) {
                 CommonHelper::seoReplace();
             });
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             //保存前
             $form->saving(function (Form $form) {
                 //强制写死dist_id
@@ -166,7 +173,11 @@ class SitePagesController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = SitePages::generateSlug($form->title);
+                    $form->slug = SitePages::generateSlug($form->title,$id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->title;
                 }
             });
         });

+ 14 - 4
app/Distributor/Controllers/SitePagesTagController.php

@@ -2,6 +2,7 @@
 
 namespace App\Distributor\Controllers;
 
+use App\Distributor\Repositories\DistAdminUsersSetting;
 use App\Distributor\Repositories\SitePagesTag;
 use App\Distributor\Repositories\SitePagesTagRelationship;
 use App\Libraries\CommonHelper;
@@ -61,15 +62,15 @@ class SitePagesTagController extends AdminDistController
     protected function form()
     {
         return Form::make(new SitePagesTag(), function (Form $form) {
-            $form->display('id');
-            $form->text('name');
+            $form->text('name')->required();
             //SEO
             $form->radio('visibility')->when(1,function (Form $form) {
                 $form->text('seo_title');
                 $form->text('seo_keywords');
                 $form->textarea('seo_description');
                 $form->text('slug',admin_trans_label('url_and_handle'))->width(9, 2)->prepend(getSiteDomain().config('dictionary.site_url.tags').'/');
-            })->options(config('dictionary.visibility'))->default(1)->value(1);
+            })->options(config('dictionary.visibility'))
+              ->value(DistAdminUsersSetting::getValue('visibility'));
 
             //$form->text('slug');
             $form->hidden('dist_id',);
@@ -78,6 +79,11 @@ class SitePagesTagController extends AdminDistController
             $form->creating(function (Form $form) {
                 CommonHelper::seoReplace('name','pagesTag');
             });
+            //提交前
+            $form->submitted(function (Form $form) {
+                //保存可见性配置
+                DistAdminUsersSetting::setValue('visibility', $form->input('visibility'));
+            });
             //保存前
             $form->saving(function (Form $form) {
                 //强制写死dist_id
@@ -92,7 +98,11 @@ class SitePagesTagController extends AdminDistController
                 }
                 //当slug为空时生成slug
                 if ($form->slug == '') {
-                    $form->slug = SitePagesTag::generateSlug($form->title);
+                    $form->slug = SitePagesTag::generateSlug($form->name, $id);
+                }
+                //seo_title不能为空
+                if ($form->seo_title == '') {
+                    $form->seo_title = $form->name;
                 }
             });
             //删除后

+ 1 - 1
app/Distributor/Forms/ImportProduct.php

@@ -68,7 +68,7 @@ class ImportProduct extends Form
                     'created_at' => now(), // 自动填充创建时间
                     'updated_at' => now(), // 自动填充更新时间
                 ]);
-                DistProduct::where('id', $distProduct->id)->update(['slug' => $distProduct->id]);
+                DistProduct::where('id', $distProduct->id)->update(['order' => $distProduct->id,'slug' => $distProduct->id]);
                 // 遍历 base_product_image 表中的记录,并插入到 dist_product_image 表中
                 foreach ($baseProductImages as $baseImage) {
                     DistProductImage::create([

+ 59 - 0
app/Distributor/Repositories/DistAdminUsersSetting.php

@@ -0,0 +1,59 @@
+<?php
+
+namespace App\Distributor\Repositories;
+
+use App\Models\DistAdminUsersSetting as Model;
+use Dcat\Admin\Admin;
+use Dcat\Admin\Repositories\EloquentRepository;
+
+class DistAdminUsersSetting extends EloquentRepository
+{
+    /**
+     * Model.
+     *
+     * @var string
+     */
+    protected $eloquentClass = Model::class;
+
+    //得到用户配置
+    public static function getValue($key)
+    {
+        $userId = Admin::user()->id;
+        $model = new Model();
+        $setting = $model->where('user_id',$userId)->where('key',$key)->first();
+        if($setting){
+            return $setting->value;
+        }else{
+            $congif = config('dictionary.users_settings');
+            return $congif[$key];
+        }
+    }
+
+    /*
+     * 设置用户配置
+     */
+    public static function setValue($key,$value)
+    {
+        if ($value == null || $value == ''){
+            return false;
+        }
+        $congif = config('dictionary.users_settings');
+        if (!isset($congif[$key])){
+            return false;
+        }
+        $userId = Admin::user()->id;
+        $model = new Model();
+        $setting = $model->where('user_id',$userId)->where('key',$key)->first();
+        if($setting){
+            $setting->value = $value;
+            $setting->save();
+        }else{
+            $model->user_id = $userId;
+            $model->key = $key;
+            $model->value = $value;
+            $model->save();
+        }
+        return true;
+    }
+
+}

+ 14 - 0
app/Models/DistAdminUsersSetting.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace App\Models;
+
+use Dcat\Admin\Traits\HasDateTimeFormatter;
+
+use Illuminate\Database\Eloquent\Model;
+
+class DistAdminUsersSetting extends Model
+{
+	use HasDateTimeFormatter;
+    protected $table = 'dist_admin_users_settings';
+
+}

+ 2 - 1
app/Models/DistAppearanceTemplate.php

@@ -22,12 +22,13 @@ class DistAppearanceTemplate extends Model
         if ($count > 0) {
             return;
         }
+        $baseDistId = config('dictionary.base_dist_id');
         //复制
         DB::statement("
 INSERT INTO `dist_appearance_template` (`dist_id`, `appearance_id`, `file_name`, `file_path`, `content`, `created_at`, `updated_at`,  `template_code`)
 SELECT {$distId}, `appearance_id`, `file_name`, `file_path`, `content`, NOW(), NOW(), `template_code`
 FROM `dist_appearance_template`
-WHERE `dist_id` = 0 AND `appearance_id` = {$appearanceId};
+WHERE `dist_id` = {$baseDistId} AND `appearance_id` = {$appearanceId};
         ");
     }
 

+ 2 - 1
app/Models/DistAppearanceVariable.php

@@ -42,12 +42,13 @@ class DistAppearanceVariable extends Model
         if ($count > 0) {
             return;
         }
+        $baseDistId = config('dictionary.base_dist_id');
         //复制
         DB::statement("
 INSERT INTO `dist_appearance_variable` (`dist_id`, `appearance_id`, `variable_name`, `variable_value`, `variable_type`, `created_at`, `updated_at`, `template_code`,`variable_code`)
 SELECT {$distId}, `appearance_id`, `variable_name`, `variable_value`, `variable_type`, NOW(), NOW(), `template_code`,`variable_code`
 FROM `dist_appearance_variable`
-WHERE `dist_id` = 0 AND `appearance_id` = {$appearanceId};
+WHERE `dist_id` = {$baseDistId} AND `appearance_id` = {$appearanceId};
         ");
     }
 

+ 2 - 1
app/Models/DistProduct.php

@@ -5,8 +5,9 @@ namespace App\Models;
 use Dcat\Admin\Traits\HasDateTimeFormatter;
 use App\Traits\SortableTraitPinned;
 use Illuminate\Database\Eloquent\Model;
+use Spatie\EloquentSortable\Sortable;
 
-class DistProduct extends Model
+class DistProduct extends Model implements Sortable
 {
 	use HasDateTimeFormatter;
     use SortableTraitPinned;

+ 1 - 1
app/Models/DistVideo.php

@@ -9,7 +9,7 @@ use Spatie\EloquentSortable\Sortable;
 use Spatie\EloquentSortable\SortableTrait;
 use App\Traits\SortableTraitPinned;
 
-class DistVideo extends Model
+class DistVideo extends Model implements Sortable
 {
     use HasDateTimeFormatter;
     use SortableTraitPinned;

+ 6 - 2
app/Traits/DistSlugTrait.php

@@ -18,12 +18,16 @@ trait DistSlugTrait
     /*
      * 生成slug
      */
-    public static function generateSlug($slug) {
+    public static function generateSlug($slug,$id=0) {
         $self = new self();
         $model = $self->model();
         $slug = generateSlug($slug);
         for ($i=0;$i<5;$i++) {
-            $count = $model->where('slug', $slug)->where('dist_id', getDistributorId())->count();
+            if ($id > 0) {
+                $count = $model->where('id','!=',$id)->where('slug', $slug)->where('dist_id', getDistributorId())->count();
+            } else {
+                $count = $model->where('slug', $slug)->where('dist_id', getDistributorId())->count();
+            }
             if ($count == 0) {
                 return $slug;
             } else {

+ 11 - 3
config/dictionary.php

@@ -19,6 +19,14 @@ return [
     //分销商角色ID
     'dist_role_id' => '2',
 
+    //基础分销商ID,默认为1,此分销商为测试用,模版与变量为基础版本,用于复制给其他分销商用
+    'base_dist_id' => '1',
+
+    //用户配置
+    'users_settings' => [
+        'visibility' => '1',//可见性,默认值0不可见,1可见
+    ],
+
     //是否启用
     'enabled' => [
         '1' => 'Yes',
@@ -62,9 +70,9 @@ return [
         'pages' => '/pages',
         'tags' => '/collections',
         'products' => '/products',
-        'product_category' => '/product-category',
-        'video' => '/video',
-        'video_category' => '/video-category',
+        'product_category' => '/products/categories',
+        'video' => '/videos',
+        'video_category' => '/videos/categories',
     ],
 
 ];

+ 19 - 0
resources/views/admin/pages-custom/ace.blade.php

@@ -44,6 +44,25 @@
     .modal-xxl {
         max-width: 75%; /* 或其他所需的宽度 */
     }
+
+    field_dist_id. .form-control {
+        height: 17px; /* 设置高度为 17px */
+        overflow: hidden; /* 隐藏超出部分 */
+        display: flex; /* 使用 flexbox 布局 */
+        align-items: center; /* 垂直居中对齐 */
+    }
+
+    .field_dist_id .option {
+        white-space: nowrap; /* 防止文字换行 */
+        overflow: hidden; /* 隐藏超出部分 */
+        text-overflow: ellipsis; /* 显示省略号 */
+        display: flex; /* 使用 flexbox 布局 */
+        align-items: center; /* 垂直居中对齐 */
+    }
+
+    .field_dist_id .pull-right {
+        margin-left: auto; /* 将删除按钮推到右侧 */
+    }
 </style>
 
 <div class="container-fluid">