Files
repo-backend/app/Http/Controllers/Admin/C2cMerchantController.php
T

91 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\C2cMerchant;
use App\C2cMerchantOrder;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class C2cMerchantController extends Controller
{
public function index() { return view('manages.c2c_merchant.index'); }
public function orderIndex() { return view('manages.c2c_merchant.orders'); }
public function list(Request $request)
{
$data = C2cMerchant::orderBy('sort', 'desc')->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');
}
}