diff --git a/README.md b/README.md index a3ee2cf..fbd473c 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,39 @@ ## 安装 -- `composer config repositories.peidikeji/dcat-admin-user git git@gitee.com:paddy_technology/dcat-admin-user.git` -- `composer require peidikeji/dcat-admin-user:dev-develop` -- `php artisan vendor:publish --tag=dcat-admin-user-migrations` +- 进入项目目录 +- `mkdir packages && cd packages` +- `git clone https://gitea.peidikeji.cn/pdkj/dcat-admin-user.git` +- `composer config repositories.peidikeji/dcat-admin-user path ./packages/dcat-admin-user` +- `composer require peidikeji/dcat-admin-user` +- `php artisan migrate` ## 事件 - 用户注册成功: `Peidikeji\User\Events\UserRegister` +## 测试数据 + +- 复制文件: `database/factories/UserFactory`, `database/seeders/UserSeeder` + +## 后台权限 + +```php +$permissions = [ + 'users' => ['name' => '用户管理', 'curd' => true], +]; +``` + +## 后台菜单 + +```php +$menus = [ + ['title' => '用户模块', 'icon' => 'feather icon-user', 'uri' => '/users', 'permission' => 'users', 'children' => [ + ['title' => '用户管理', 'icon' => '', 'uri' => '/users', 'permission' => 'users'] + ]], +]; +``` + ## 数据表 ### 用户表: users diff --git a/composer.json b/composer.json index 7da9291..7c3ddfa 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "description": "用户管理", "type": "library", "keywords": ["dcat-admin", "extension", "user"], - "homepage": "https://gitee.com/paddy_technology/dcat-admin-user", + "homepage": "https://gitea.peidikeji.cn/pdkj/dcat-admin-user", "license": "MIT", "authors": [ { @@ -13,7 +13,7 @@ } ], "require": { - "php": ">=7.1.0", + "php": ">=8.1.0", "peidikeji/dcat-admin": "*", "overtrue/laravel-wechat": "^7.0", "laravel/framework": "^9.0" diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..8080578 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,54 @@ + + */ + public function definition() + { + $faker = $this->faker; + + do { + $phone = $faker->phoneNumber(); + } while (User::where('phone', $phone)->exists()); + + do { + $username = $faker->userName(); + } while (User::where('username', $username)->exists()); + + $inviter_id = null; + $inviter_path = '-'; + $inviter = User::inRandomOrder()->first(); + if ($inviter) { + $inviter_id = $inviter->id; + $inviter_path = $inviter->inviter_path.$inviter_id.'-'; + } + + do { + $invite_code = strtoupper(Str::random(6)); + } while (User::where('invite_code', $invite_code)->exists()); + + return [ + 'username' => $username, + // 123456 + 'password' => '$2y$10$QAGGjfTDjmgDFrX8LkFZ4e0A4MG.doRc8xoq1Cixf6IbHq7RPRqtq', + 'name' => $faker->name(), + 'avatar' => 'https://via.placeholder.com/64x64.png', + 'invite_code' => $invite_code, + 'inviter_id' => $inviter_id, + 'inviter_path' => $inviter_path, + 'phone' => $phone, + ]; + } +} diff --git a/database/2022_08_11_110611_create_users_table.php b/database/migrations/2022_08_11_110611_create_users_table.php similarity index 100% rename from database/2022_08_11_110611_create_users_table.php rename to database/migrations/2022_08_11_110611_create_users_table.php diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..07b0dda --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,25 @@ +delete(); + for ($i = 0; $i < 10; $i++) { + (new UserFactory())->count(10)->create(); + } + } +} diff --git a/src/Http/Admin/UserController.php b/src/Http/Admin/UserController.php index 3c5e10e..60db622 100644 --- a/src/Http/Admin/UserController.php +++ b/src/Http/Admin/UserController.php @@ -2,8 +2,6 @@ namespace Peidikeji\User\Http\Admin; -use App\Admin\Renderable\BalanceLogTable; -use App\Models\BalanceLog; use Dcat\Admin\Admin; use Dcat\Admin\Form; use Dcat\Admin\Grid; @@ -16,14 +14,10 @@ use Dcat\Admin\Widgets\Card; use Dcat\Admin\Widgets\Tab; use Dcat\Admin\Widgets\Table; use Illuminate\Http\Request; -use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; -use Peidikeji\Merchant\Models\Merchant; -use Peidikeji\Order\Models\Order; use Peidikeji\User\Models\User; use Peidikeji\User\Models\UserSocialite; use Illuminate\Support\Str; -use App\Admin\Actions\Grid\UserBalanceChange; class UserController extends AdminController { @@ -64,8 +58,7 @@ class UserController extends AdminController return ($this->avatar ? '' : '') . $this->name; }); $grid->column('phone'); - $grid->column('balance')->modal(__('dcat-admin-user::user.fields.balance') . '变更记录', fn() => BalanceLogTable::make(['type' => BalanceLog::TYPE_BALANCE, 'subject_id' => $this->id, 'subject_type' => 'user'])); - $grid->column('profit')->modal(__('dcat-admin-user::user.fields.profit') . '变更记录', fn() => BalanceLogTable::make(['type' => BalanceLog::TYPE_PROFIT, 'subject_id' => $this->id, 'subject_type' => 'user'])); + $grid->column('balance'); $grid->column('inviter.phone'); $grid->column('created_at'); @@ -74,12 +67,6 @@ class UserController extends AdminController $grid->showViewButton($user->can('dcat.admin.users.show')); $grid->showEditButton($user->can('dcat.admin.users.edit')); $grid->showDeleteButton($user->can('dcat.admin.users.destroy')); - $grid->actions(function (Grid\Displayers\Actions $actions) use ($user) { - //余额变动 - if($user->can('dcat.admin.users.change_balance')){ - $actions->append(new UserBalanceChange()); - } - }); $grid->filter(function (Filter $filter) { $filter->panel(); @@ -118,12 +105,6 @@ class UserController extends AdminController $form->deleting(function (Form $form) { $data = $form->model()->toArray(); $ids = array_column($data, 'id'); - if (Merchant::whereIn('user_id', $ids)->exists()) { - return $form->response()->error('已经关联店铺, 无法删除'); - } - if (Order::whereIn('user_id', $ids)->exists()) { - return $form->response()->error('已经关联订单, 请先删除订单'); - } // 删除用户的登录信息 UserSocialite::whereIn('user_id', $ids)->delete(); foreach($ids as $id) { diff --git a/src/UserServiceProvider.php b/src/UserServiceProvider.php index b520209..69c6f30 100644 --- a/src/UserServiceProvider.php +++ b/src/UserServiceProvider.php @@ -2,6 +2,8 @@ namespace Peidikeji\User; +use Dcat\Admin\Admin; +use Dcat\Admin\Layout\Menu; use Illuminate\Support\ServiceProvider; class UserServiceProvider extends ServiceProvider @@ -16,12 +18,20 @@ class UserServiceProvider extends ServiceProvider $this->loadRoutesFrom(__DIR__.'/../routes/admin.php'); $this->loadRoutesFrom(__DIR__.'/../routes/api.php'); - // $this->loadMigrationsFrom(__DIR__.'/../database/'); + $this->loadMigrationsFrom(__DIR__.'/../database/migrations'); - $this->publishes([ - __DIR__.'/../database/' => database_path('migrations') - ], 'dcat-admin-user-migrations'); + // $this->publishes([ + // __DIR__.'/../database/migrations' => database_path('migrations') + // ], 'dcat-admin-user-migrations'); $this->loadTranslationsFrom(__DIR__.'/../lang', 'dcat-admin-user'); + + // 添加默认菜单 + Admin::menu(function (Menu $menu) { + $menu->add([ + ['id' => 1, 'parent_id' => 0, 'title' => '用户模块', 'icon' => 'feather icon-user', 'uri' => ''], + ['id' => 2, 'parent_id' => 1, 'title' => '用户管理', 'icon' => '', 'uri' => '/users'], + ]); + }); } }