orderBy('id', 'desc') ->paginate($request->input('limit', 20)); return $this->layuiData($data); } public function save(Request $request) { $id = $request->input('id'); $fields = $request->only([ 'name','logo','available_qty','min_amount','max_amount','unit_price', 'crypto_currency','fiat_currency','payment_methods','rating', 'contact_type','contact_link','status','sort' ]); foreach (['unit_price','available_qty','min_amount','max_amount','rating','sort'] as $k) { if (!isset($fields[$k]) || $fields[$k] === '') $fields[$k] = 0; } if (empty($fields['name'])) return $this->error('Name is required'); if ($id) { C2cMerchant::where('id', $id)->update($fields); } else { C2cMerchant::create($fields); } return $this->success('OK'); } public function delete(Request $request) { C2cMerchant::destroy($request->input('id')); return $this->success('Deleted'); } public function orderList(Request $request) { $query = C2cMerchantOrder::query() ->leftJoin('users', 'c2c_merchant_order.user_id', '=', 'users.id') ->leftJoin('c2c_merchant', 'c2c_merchant_order.merchant_id', '=', 'c2c_merchant.id') ->select( 'c2c_merchant_order.*', 'users.phone as user_phone', 'users.email as user_email', 'c2c_merchant.name as merchant_name' ); $merchant_id = $request->input('merchant_id'); if ($merchant_id) $query->where('c2c_merchant_order.merchant_id', $merchant_id); $status = $request->input('status'); if ($status !== null && $status !== '' && $status !== 'all') { $query->where('c2c_merchant_order.status', intval($status)); } $data = $query->orderBy('c2c_merchant_order.id', 'desc') ->paginate($request->input('limit', 20)); $statusMap = [0 => 'Pending', 1 => 'Completed', 2 => 'Cancelled', 3 => 'Expired']; $dirMap = ['buy' => 'Buy', 'sell' => 'Sell']; foreach ($data as $item) { $item->status_text = $statusMap[$item->status] ?? ''; $item->direction_text = $dirMap[$item->direction] ?? $item->direction; } return $this->layuiData($data); } public function completeOrder(Request $request) { $id = intval($request->input('id')); $order = C2cMerchantOrder::find($id); if (!$order) return $this->error('Order not found'); if ($order->status != 0) return $this->error('Order already processed'); $order->update(['status' => 1]); return $this->success('Completed'); } }