91 lines
3.2 KiB
PHP
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');
|
|
}
|
|
}
|