修复:sex 字段类型统一为整数(0=保密 1=男 2=女)

- 生产库 sex 列为 int,之前错误传入中文字符串
- AuthController 注册时直接保存整数
- UpdateProfileRequest 验证改为 in:0,1,2
- 设置弹窗 select value 改为整数
This commit is contained in:
2026-02-26 22:57:30 +08:00
parent 6a596a13aa
commit bc80c42fa3
4 changed files with 13 additions and 9 deletions

View File

@@ -63,9 +63,11 @@ class AuthController extends Controller
// --- 核心:第一次登录即为注册 ---
// 映射性别1=男 2=女,默认保密
$sexMap = ['1' => '男', '2' => '女'];
$sex = $sexMap[$request->input('bSex', '')] ?? '保密';
// 映射性别1=男 2=女 0=保密(数据库 sex 列为 int
$sex = (int) $request->input('bSex', 0);
if (! in_array($sex, [1, 2])) {
$sex = 0;
}
$newUser = User::create([
'username' => $username,

View File

@@ -60,7 +60,9 @@ class UserController extends Controller
public function updateProfile(UpdateProfileRequest $request): JsonResponse
{
$user = Auth::user();
$user->update($request->validated());
$data = $request->validated();
$user->update($data);
return response()->json(['status' => 'success', 'message' => '资料更新成功。']);
}

View File

@@ -30,7 +30,7 @@ class UpdateProfileRequest extends FormRequest
public function rules(): array
{
return [
'sex' => ['required', 'string', 'in:男,女,保密'],
'sex' => ['required', 'in:0,1,2'],
'headface' => ['required', 'string', 'max:50'], // 比如存放 01.gif - 50.gif
'sign' => ['nullable', 'string', 'max:255'],
'email' => ['nullable', 'email', 'max:255'],
@@ -42,7 +42,7 @@ class UpdateProfileRequest extends FormRequest
public function messages(): array
{
return [
'sex.in' => '性别选项无效。',
'sex.in' => '性别选项无效0=保密 1=男 2=女)。',
'headface.required' => '必须选择一个头像。',
];
}

View File

@@ -445,9 +445,9 @@
<label style="font-size:12px; width:50px; text-align:right;">性别:</label>
<select id="set-sex"
style="flex:1; padding:5px; border:1px solid #ccc; border-radius:4px; font-size:12px;">
<option value="" {{ Auth::user()->sex === '男' ? 'selected' : '' }}></option>
<option value="" {{ Auth::user()->sex === '女' ? 'selected' : '' }}></option>
<option value="保密" {{ Auth::user()->sex === '保密' ? 'selected' : '' }}>保密</option>
<option value="1" {{ Auth::user()->sex == 1 ? 'selected' : '' }}></option>
<option value="2" {{ Auth::user()->sex == 2 ? 'selected' : '' }}></option>
<option value="0" {{ Auth::user()->sex == 0 ? 'selected' : '' }}>保密</option>
</select>
</div>
<div style="display:flex; align-items:center; gap:8px;">