diff --git a/app/Http/Controllers/MarriageController.php b/app/Http/Controllers/MarriageController.php index bb678a5..83349ed 100644 --- a/app/Http/Controllers/MarriageController.php +++ b/app/Http/Controllers/MarriageController.php @@ -46,6 +46,29 @@ class MarriageController extends Controller ]); } + /** + * 获取全站已婚列表(按亲密度或结婚时间排序)。 + */ + public function list(Request $request): JsonResponse + { + $marriages = Marriage::query() + ->where('status', 'married') + ->with(['user:id,username,usersf,sex', 'partner:id,username,usersf,sex', 'ringItem:id,name,icon']) + ->orderByDesc('intimacy') + ->orderByDesc('married_at') + ->paginate(20); + + return response()->json([ + 'status' => 'success', + 'data' => $marriages->items(), + 'pagination' => [ + 'current_page' => $marriages->currentPage(), + 'last_page' => $marriages->lastPage(), + 'total' => $marriages->total(), + ], + ]); + } + /** * 获取当前用户的婚姻状态(名片/用户列表用)。 */ @@ -58,7 +81,7 @@ class MarriageController extends Controller return response()->json(['married' => false]); } - $marriage->load(['user:id,username,headface', 'partner:id,username,headface', 'ringItem:id,name,slug,icon']); + $marriage->load(['user:id,username,usersf', 'partner:id,username,usersf', 'ringItem:id,name,slug,icon']); return response()->json([ 'married' => $marriage->status === 'married', @@ -95,7 +118,7 @@ class MarriageController extends Controller ->where(function ($q) use ($target) { $q->where('user_id', $target->id)->orWhere('partner_id', $target->id); }) - ->with(['user:id,username,headface', 'partner:id,username,headface', 'ringItem:id,name,icon']) + ->with(['user:id,username,usersf', 'partner:id,username,usersf', 'ringItem:id,name,icon']) ->first(); if (! $marriage) { diff --git a/app/Models/User.php b/app/Models/User.php index c44725c..2165bd2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -24,6 +24,16 @@ class User extends Authenticatable { use HasFactory, Notifiable; + /** + * 追加到 JSON 序列化的属性。 + * + * @var array + */ + protected $appends = [ + 'headface', + 'headface_url', + ]; + /** * The attributes that are mass assignable. * diff --git a/app/Services/MarriageService.php b/app/Services/MarriageService.php index e75ed59..0d8b21c 100644 --- a/app/Services/MarriageService.php +++ b/app/Services/MarriageService.php @@ -103,7 +103,7 @@ class MarriageService $marriage = Marriage::create([ 'user_id' => $proposer->id, 'partner_id' => $target->id, - 'ring_item_id' => $ring->item_id, + 'ring_item_id' => $ring->shop_item_id, 'ring_purchase_id' => $ring->id, 'status' => 'pending', 'proposed_at' => now(), diff --git a/resources/views/chat/partials/layout/toolbar.blade.php b/resources/views/chat/partials/layout/toolbar.blade.php index b85c6d9..cc8949f 100644 --- a/resources/views/chat/partials/layout/toolbar.blade.php +++ b/resources/views/chat/partials/layout/toolbar.blade.php @@ -1829,31 +1829,151 @@ async function generateWechatBindCode() { {{-- ═══════════ 婚姻状态弹窗 ═══════════ --}} + +