feat: 注册页加部门选择/用户管理修部门下拉/超管可跨店建用户/公开部门接口

This commit is contained in:
li
2026-03-14 18:28:35 +08:00
parent f7adb5f609
commit 94b46611d3
98 changed files with 209 additions and 129 deletions
@@ -86,6 +86,25 @@ class AuthController extends Controller
]);
}
/**
* 获取门店部门列表(公开接口,注册时使用)
*/
public function departments(Request $request): JsonResponse
{
$storeId = $request->input('store_id');
if (!$storeId) {
return $this->error('请选择门店', 42200);
}
$departments = \App\Models\Department::withoutGlobalScope('store')
->where('store_id', $storeId)
->where('status', 1)
->orderBy('sort')
->get(['id', 'name', 'parent_id']);
return $this->success($departments);
}
/**
* 获取可用注册套餐列表(公开接口)
*/
@@ -118,6 +137,7 @@ class AuthController extends Controller
'password' => 'required|string|min:6',
'name' => 'required|string|max:50',
'phone' => 'required|string|max:20',
'department_id' => 'nullable|exists:departments,id',
]);
// 验证套餐属于该门店
@@ -128,12 +148,13 @@ class AuthController extends Controller
->firstOrFail();
$user = \App\Models\User::create([
'store_id' => $data['store_id'],
'username' => $data['username'],
'password' => $data['password'],
'name' => $data['name'],
'phone' => $data['phone'],
'status' => 2, // Pending
'store_id' => $data['store_id'],
'username' => $data['username'],
'password' => $data['password'],
'name' => $data['name'],
'phone' => $data['phone'],
'department_id' => $data['department_id'] ?? null,
'status' => 2, // Pending
]);
// 绑定套餐角色
@@ -47,12 +47,20 @@ class UserController extends Controller
'status' => 'in:0,1,2',
'role_ids' => 'array',
'role_ids.*' => 'exists:roles,id',
'store_id' => 'nullable|exists:stores,id',
]);
$roleIds = $data['role_ids'] ?? [];
unset($data['role_ids']);
$data['store_id'] = auth()->user()->store_id;
$authUser = auth()->user();
// 超级管理员可指定 store_id,普通管理员只能在自己门店下创建
if ($authUser->is_super && !empty($data['store_id'])) {
// use provided store_id
} else {
$data['store_id'] = $authUser->store_id;
}
$user = User::create($data);
if ($roleIds) {
+1
View File
@@ -80,6 +80,7 @@ use App\Http\Controllers\Admin\System\RegistrationPackageController;
Route::post('/auth/login', [AuthController::class, 'login']);
Route::post('/auth/register', [AuthController::class, 'register']);
Route::get('/auth/register/packages', [AuthController::class, 'registrationPackages']);
Route::get('/auth/register/departments', [AuthController::class, 'departments']);
Route::get('/auth/stores', [\App\Http\Controllers\Admin\System\StoreController::class, 'publicList']);
// ===== 需要认证的路由 =====