4
0
Fork 0
master
panliang 2022-09-13 15:18:02 +08:00
parent 7e0922a567
commit 77a0d0f501
7 changed files with 124 additions and 29 deletions

View File

@ -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

View File

@ -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"

View File

@ -0,0 +1,54 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use Peidikeji\User\Models\User;
class UserFactory extends Factory
{
protected $model = User::class;
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
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,
];
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Database\Seeders;
use Database\Factories\UserFactory;
use Illuminate\Database\Seeder;
use Laravel\Sanctum\PersonalAccessToken;
use Peidikeji\User\Models\User;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::truncate();
PersonalAccessToken::where('tokenable_type', User::class)->delete();
for ($i = 0; $i < 10; $i++) {
(new UserFactory())->count(10)->create();
}
}
}

View File

@ -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 ? '<img src="'.$this->avatar.'" width="60" class="img-thumbnail" />' : '') . $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) {

View File

@ -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'],
]);
});
}
}