diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 1948f19d..2eb21b36 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -316,11 +316,12 @@ class UsersController extends AbstractController * @apiName searchinfo * * @apiParam {Object} keys 搜索条件 - * - keys.key 昵称、邮箱 + * - keys.key 昵称、邮箱关键字 + * - keys.disable 0-排除禁止(默认),1-含禁止,2-仅禁止 * - keys.project_id 在指定项目ID * - keys.no_project_id 不在指定项目ID * @apiParam {Object} sorts 排序方式 - * - sorts.az 字母 + * - sorts.az 按字母:asc|desc * * @apiParam {Number} [take] 获取数量,10-100 * @apiParam {Number} [page] 当前页,默认:1(赋值分页模式,take参数无效) @@ -336,28 +337,32 @@ class UsersController extends AbstractController // $keys = Request::input('keys'); $sorts = Request::input('sorts'); - if (is_array($keys)) { - if ($keys['key']) { - $builder->where(function($query) use ($keys) { - $query->where("email", "like", "%{$keys['key']}%") - ->orWhere("nickname", "like", "%{$keys['key']}%"); - }); - } - if (intval($keys['project_id']) > 0) { - $builder->whereIn('userid', function ($query) use ($keys) { - $query->select('userid')->from('project_users')->where('project_id', $keys['project_id']); - }); - } - if (intval($keys['no_project_id']) > 0) { - $builder->whereNotIn('userid', function ($query) use ($keys) { - $query->select('userid')->from('project_users')->where('project_id', $keys['no_project_id']); - }); - } + $keys = is_array($keys) ? $keys : []; + $sorts = is_array($sorts) ? $sorts : []; + // + if ($keys['key']) { + $builder->where(function($query) use ($keys) { + $query->where("email", "like", "%{$keys['key']}%") + ->orWhere("nickname", "like", "%{$keys['key']}%"); + }); } - if (is_array($sorts)) { - if (in_array($sorts['az'], ['asc', 'desc'])) { - $builder->orderBy('az', $sorts['az']); - } + if (intval($keys['disable']) == 0) { + $builder->whereNull("disable_at"); + } elseif (intval($keys['disable']) == 2) { + $builder->whereNotNull("disable_at"); + } + if (intval($keys['project_id']) > 0) { + $builder->whereIn('userid', function ($query) use ($keys) { + $query->select('userid')->from('project_users')->where('project_id', $keys['project_id']); + }); + } + if (intval($keys['no_project_id']) > 0) { + $builder->whereNotIn('userid', function ($query) use ($keys) { + $query->select('userid')->from('project_users')->where('project_id', $keys['no_project_id']); + }); + } + if (in_array($sorts['az'], ['asc', 'desc'])) { + $builder->orderBy('az', $sorts['az']); } // if (Request::exists('page')) { @@ -484,10 +489,12 @@ class UsersController extends AbstractController case 'setdisable': $upArray['identity'] = array_diff($userInfo->identity, ['disable']); $upArray['identity'][] = 'disable'; + $upArray['disable_at'] = Carbon::now(); break; case 'cleardisable': $upArray['identity'] = array_diff($userInfo->identity, ['disable']); + $upArray['disable_at'] = null; break; case 'delete': diff --git a/app/Models/User.php b/app/Models/User.php index 29cab32c..707fffb2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -59,6 +59,7 @@ class User extends AbstractModel protected $primaryKey = 'userid'; protected $hidden = [ + 'disable_at', 'updated_at', ]; diff --git a/database/migrations/2021_12_29_170409_file_users_add_permission.php b/database/migrations/2021_12_29_170409_file_users_add_permission.php index 2fd07f70..921ef4b7 100644 --- a/database/migrations/2021_12_29_170409_file_users_add_permission.php +++ b/database/migrations/2021_12_29_170409_file_users_add_permission.php @@ -49,7 +49,7 @@ class FileUsersAddPermission extends Migration public function down() { Schema::table('file_users', function (Blueprint $table) { - // + $table->dropColumn("permission"); }); } } diff --git a/database/migrations/2022_01_06_131020_users_add_disable_at.php b/database/migrations/2022_01_06_131020_users_add_disable_at.php new file mode 100644 index 00000000..1c3d5987 --- /dev/null +++ b/database/migrations/2022_01_06_131020_users_add_disable_at.php @@ -0,0 +1,43 @@ +timestamp('disable_at')->nullable()->after('created_ip')->comment('禁用时间'); + } + }); + if ($isAdd) { + User::where("identity", "like", "%,disable,%")->update([ + 'disable_at' => Carbon::now(), + ]); + } + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn("disable_at"); + }); + } +} diff --git a/database/seeders/UsersTableSeeder.php b/database/seeders/UsersTableSeeder.php index 92ebc56f..8c2ab5d6 100644 --- a/database/seeders/UsersTableSeeder.php +++ b/database/seeders/UsersTableSeeder.php @@ -40,6 +40,7 @@ class UsersTableSeeder extends Seeder 'line_at' => seeders_at('2021-07-01 17:43:48'), 'task_dialog_id' => 18, 'created_ip' => '', + 'disable_at' => null, 'created_at' => seeders_at('2021-07-01 11:01:14'), 'updated_at' => seeders_at('2021-07-01 17:43:48'), ), @@ -62,6 +63,7 @@ class UsersTableSeeder extends Seeder 'line_at' => seeders_at('2021-07-01 16:57:40'), 'task_dialog_id' => 16, 'created_ip' => '', + 'disable_at' => null, 'created_at' => seeders_at('2021-07-01 11:01:14'), 'updated_at' => seeders_at('2021-07-01 16:58:00'), ),