修复:求婚按钮异性判断 - 统一 sex 字段格式
根因:sex 字段数据库存整数(0/1/2),但前后端判断混用了
字符串('男'/'女')导致比较永远错误。
修复三处:
1. UserController::show() - sex 返回统一转字符串(1→'男' 2→'女' 其他→'')
2. frame.blade.php - chatContext.userSex 注入时同样转字符串
3. MarriageService::propose() - 后端性别校验改用整数(1/2)比较
逻辑链路:
- 未设置性别(sex=0) → '' → x-show && userInfo.sex 为'' falsy → 按钮隐藏 ✓
- 同性(如两个男) → '男'==='男' → !== 为false → 按钮隐藏 ✓
- 异性(男+女) → '男'!=='女' → 按钮显示 ✓
This commit is contained in:
@@ -47,12 +47,12 @@ class MarriageService
|
||||
return ['ok' => false, 'message' => '不能向自己求婚!', 'marriage_id' => null];
|
||||
}
|
||||
|
||||
// 只允许异性之间求婚
|
||||
$validSexes = ['男', '女'];
|
||||
// 只允许异性之间求婚(sex 字段:1=男 2=女 0=未设置)
|
||||
$validSexes = [1, 2];
|
||||
if (
|
||||
! in_array($proposer->sex, $validSexes, true) ||
|
||||
! in_array($target->sex, $validSexes, true) ||
|
||||
$proposer->sex === $target->sex
|
||||
! in_array((int) $proposer->sex, $validSexes, true) ||
|
||||
! in_array((int) $target->sex, $validSexes, true) ||
|
||||
(int) $proposer->sex === (int) $target->sex
|
||||
) {
|
||||
return ['ok' => false, 'message' => '只有男女双方才能互相求婚,请确认双方性别设置。', 'marriage_id' => null];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user