mirror of
https://github.com/cedar2025/Xboard.git
synced 2025-01-22 10:38:14 -05:00
refactor: 规范状态码、抛出异常的使用
This commit is contained in:
parent
c25803aa74
commit
189b247ad8
@ -10,7 +10,7 @@ class ApiException extends Exception
|
||||
protected $message; // 错误消息
|
||||
protected $errors; // 全部错误信息
|
||||
|
||||
public function __construct($code = 400, $message = null, $errors = null)
|
||||
public function __construct($message = null, $code = 400, $errors = null)
|
||||
{
|
||||
$this->message = $message;
|
||||
$this->code = $code;
|
||||
|
@ -58,7 +58,7 @@ class Handler extends ExceptionHandler
|
||||
public function render($request, Throwable $exception)
|
||||
{
|
||||
if ($exception instanceof ViewException) {
|
||||
$this->fail([500, '主题渲染失败。如更新主题,参数可能发生变化请重新配置主题后再试。']);
|
||||
return $this->fail([500, '主题渲染失败。如更新主题,参数可能发生变化请重新配置主题后再试。']);
|
||||
}
|
||||
// ApiException主动抛出错误
|
||||
if ($exception instanceof ApiException) {
|
||||
|
@ -47,7 +47,7 @@ trait ApiResponse
|
||||
return response()
|
||||
->json([
|
||||
'status' => $status,
|
||||
'code' => $code,
|
||||
// 'code' => $code,
|
||||
'message' => $message,
|
||||
'data' => $data ?? null,
|
||||
'error' => $error,
|
||||
|
@ -19,9 +19,7 @@ class ConfigController extends Controller
|
||||
$files = array_map(function ($item) use ($path) {
|
||||
return str_replace($path, '', $item);
|
||||
}, glob($path . '*'));
|
||||
return response([
|
||||
'data' => $files
|
||||
]);
|
||||
return $this->success($files);
|
||||
}
|
||||
|
||||
public function getThemeTemplate()
|
||||
@ -30,9 +28,7 @@ class ConfigController extends Controller
|
||||
$files = array_map(function ($item) use ($path) {
|
||||
return str_replace($path, '', $item);
|
||||
}, glob($path . '*'));
|
||||
return response([
|
||||
'data' => $files
|
||||
]);
|
||||
return $this->success($files);
|
||||
}
|
||||
|
||||
public function testSendMail(Request $request)
|
||||
@ -59,9 +55,7 @@ class ConfigController extends Controller
|
||||
$telegramService = new TelegramService($request->input('telegram_bot_token'));
|
||||
$telegramService->getMe();
|
||||
$telegramService->setWebhook($hookUrl);
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function fetch(Request $request)
|
||||
@ -163,16 +157,12 @@ class ConfigController extends Controller
|
||||
]
|
||||
];
|
||||
if ($key && isset($data[$key])) {
|
||||
return response([
|
||||
'data' => [
|
||||
$key => $data[$key]
|
||||
]
|
||||
return $this->success([
|
||||
$key => $data[$key]
|
||||
]);
|
||||
};
|
||||
// TODO: default should be in Dict
|
||||
return response([
|
||||
'data' => $data
|
||||
]);
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function save(ConfigSave $request)
|
||||
@ -196,8 +186,6 @@ class ConfigController extends Controller
|
||||
|
||||
Cache::forget('admin_settings');
|
||||
// \Artisan::call('horizon:terminate'); //重启队列使配置生效
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -31,21 +31,21 @@ class CouponController extends Controller
|
||||
|
||||
public function show(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数有误');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required|numeric'
|
||||
],[
|
||||
'id.required' => '优惠券ID不能为空',
|
||||
'id.numeric' => '优惠券ID必须为数字'
|
||||
]);
|
||||
$coupon = Coupon::find($request->input('id'));
|
||||
if (!$coupon) {
|
||||
throw new ApiException(500, '优惠券不存在');
|
||||
return $this->fail([400202,'优惠券不存在']);
|
||||
}
|
||||
$coupon->show = !$coupon->show;
|
||||
if (!$coupon->save()) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function generate(CouponGenerate $request)
|
||||
@ -61,19 +61,18 @@ class CouponController extends Controller
|
||||
$params['code'] = Helper::randomChar(8);
|
||||
}
|
||||
if (!Coupon::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Coupon::find($request->input('id'))->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
private function multiGenerate(CouponGenerate $request)
|
||||
@ -99,12 +98,12 @@ class CouponController extends Controller
|
||||
}
|
||||
return $item;
|
||||
}, $coupons))) {
|
||||
throw new ApiException(500, '生成失败');
|
||||
throw new \Exception();
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
DB::rollBack();
|
||||
throw $e;
|
||||
return $this->fail([500, '生成失败']);
|
||||
}
|
||||
|
||||
$data = "名称,类型,金额或比例,开始时间,结束时间,可用次数,可用于订阅,券码,生成时间\r\n";
|
||||
@ -123,19 +122,20 @@ class CouponController extends Controller
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数有误');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required|numeric'
|
||||
],[
|
||||
'id.required' => '优惠券ID不能为空',
|
||||
'id.numeric' => '优惠券ID必须为数字'
|
||||
]);
|
||||
$coupon = Coupon::find($request->input('id'));
|
||||
if (!$coupon) {
|
||||
throw new ApiException(500, '优惠券不存在');
|
||||
return $this->fail([400202,'优惠券不存在']);
|
||||
}
|
||||
if (!$coupon->delete()) {
|
||||
throw new ApiException(500, '删除失败');
|
||||
return $this->fail([500,'删除失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -16,23 +16,18 @@ class KnowledgeController extends Controller
|
||||
{
|
||||
if ($request->input('id')) {
|
||||
$knowledge = Knowledge::find($request->input('id'))->toArray();
|
||||
if (!$knowledge) throw new ApiException(500, '知识不存在');
|
||||
return response([
|
||||
'data' => $knowledge
|
||||
]);
|
||||
if (!$knowledge) return $this->fail([400202,'知识不存在']);
|
||||
return $this->success($knowledge);
|
||||
}
|
||||
return response([
|
||||
'data' => Knowledge::select(['title', 'id', 'updated_at', 'category', 'show'])
|
||||
->orderBy('sort', 'ASC')
|
||||
->get()
|
||||
]);
|
||||
$data = Knowledge::select(['title', 'id', 'updated_at', 'category', 'show'])
|
||||
->orderBy('sort', 'ASC')
|
||||
->get();
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function getCategory(Request $request)
|
||||
{
|
||||
return response([
|
||||
'data' => array_keys(Knowledge::get()->groupBy('category')->toArray())
|
||||
]);
|
||||
return $this->success(array_keys(Knowledge::get()->groupBy('category')->toArray()));
|
||||
}
|
||||
|
||||
public function save(KnowledgeSave $request)
|
||||
@ -41,38 +36,37 @@ class KnowledgeController extends Controller
|
||||
|
||||
if (!$request->input('id')) {
|
||||
if (!Knowledge::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Knowledge::find($request->input('id'))->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function show(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数有误');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required|numeric'
|
||||
],[
|
||||
'id.required' => '知识库ID不能为空'
|
||||
]);
|
||||
$knowledge = Knowledge::find($request->input('id'));
|
||||
if (!$knowledge) {
|
||||
throw new ApiException(500, '知识不存在');
|
||||
throw new ApiException('知识不存在');
|
||||
}
|
||||
$knowledge->show = $knowledge->show ? 0 : 1;
|
||||
$knowledge->show = !$knowledge->show;
|
||||
if (!$knowledge->save()) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
throw new ApiException('保存失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function sort(KnowledgeSort $request)
|
||||
@ -87,28 +81,26 @@ class KnowledgeController extends Controller
|
||||
DB::commit();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
throw new ApiException(500, '保存失败');
|
||||
throw new ApiException('保存失败');
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数有误');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required|numeric'
|
||||
],[
|
||||
'id.required' => '知识库ID不能为空'
|
||||
]);
|
||||
$knowledge = Knowledge::find($request->input('id'));
|
||||
if (!$knowledge) {
|
||||
throw new ApiException(500, '知识不存在');
|
||||
return $this->fail([400202,'知识不存在']);
|
||||
}
|
||||
if (!$knowledge->delete()) {
|
||||
throw new ApiException(500, '删除失败');
|
||||
return $this->fail([500,'删除失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -12,9 +12,7 @@ class NoticeController extends Controller
|
||||
{
|
||||
public function fetch(Request $request)
|
||||
{
|
||||
return response([
|
||||
'data' => Notice::orderBy('id', 'DESC')->get()
|
||||
]);
|
||||
return $this->success(Notice::orderBy('id', 'DESC')->get());
|
||||
}
|
||||
|
||||
public function save(NoticeSave $request)
|
||||
@ -27,18 +25,16 @@ class NoticeController extends Controller
|
||||
]);
|
||||
if (!$request->input('id')) {
|
||||
if (!Notice::create($data)) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Notice::find($request->input('id'))->update($data);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
|
||||
@ -46,36 +42,32 @@ class NoticeController extends Controller
|
||||
public function show(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数有误');
|
||||
return $this->fail([500 ,'公告ID不能为空']);
|
||||
}
|
||||
$notice = Notice::find($request->input('id'));
|
||||
if (!$notice) {
|
||||
throw new ApiException(500, '公告不存在');
|
||||
return $this->fail([400202 ,'公告不存在']);
|
||||
}
|
||||
$notice->show = $notice->show ? 0 : 1;
|
||||
if (!$notice->save()) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
return $this->fail([422 ,'公告ID不能为空']);
|
||||
}
|
||||
$notice = Notice::find($request->input('id'));
|
||||
if (!$notice) {
|
||||
throw new ApiException(500, '公告不存在');
|
||||
return $this->fail([400202 ,'公告不存在']);
|
||||
}
|
||||
if (!$notice->delete()) {
|
||||
throw new ApiException(500, '删除失败');
|
||||
return $this->fail([500 ,'删除失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -41,14 +41,12 @@ class OrderController extends Controller
|
||||
public function detail(Request $request)
|
||||
{
|
||||
$order = Order::find($request->input('id'));
|
||||
if (!$order) throw new ApiException(500, '订单不存在');
|
||||
if (!$order) return $this->fail([400202 ,'订单不存在']);
|
||||
$order['commission_log'] = CommissionLog::where('trade_no', $order->trade_no)->get();
|
||||
if ($order->surplus_order_ids) {
|
||||
$order['surplus_orders'] = Order::whereIn('id', $order->surplus_order_ids)->get();
|
||||
}
|
||||
return response([
|
||||
'data' => $order
|
||||
]);
|
||||
return $this->success($order);
|
||||
}
|
||||
|
||||
public function fetch(OrderFetch $request)
|
||||
@ -84,17 +82,15 @@ class OrderController extends Controller
|
||||
$order = Order::where('trade_no', $request->input('trade_no'))
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, '订单不存在');
|
||||
return $this->fail([400202 ,'订单不存在']);
|
||||
}
|
||||
if ($order->status !== 0) throw new ApiException(500, '只能对待支付的订单进行操作');
|
||||
if ($order->status !== 0) return $this->fail([400 ,'只能对待支付的订单进行操作']);
|
||||
|
||||
$orderService = new OrderService($order);
|
||||
if (!$orderService->paid('manual_operation')) {
|
||||
throw new ApiException(500, '更新失败');
|
||||
return $this->fail([500 ,'更新失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function cancel(Request $request)
|
||||
@ -102,17 +98,15 @@ class OrderController extends Controller
|
||||
$order = Order::where('trade_no', $request->input('trade_no'))
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, '订单不存在');
|
||||
return $this->fail([400202 ,'订单不存在']);
|
||||
}
|
||||
if ($order->status !== 0) throw new ApiException(500, '只能对待支付的订单进行操作');
|
||||
if ($order->status !== 0) return $this->fail([400 ,'只能对待支付的订单进行操作']);
|
||||
|
||||
$orderService = new OrderService($order);
|
||||
if (!$orderService->cancel()) {
|
||||
throw new ApiException(500, '更新失败');
|
||||
return $this->fail([400 ,'更新失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function update(OrderUpdate $request)
|
||||
@ -124,18 +118,17 @@ class OrderController extends Controller
|
||||
$order = Order::where('trade_no', $request->input('trade_no'))
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, '订单不存在');
|
||||
return $this->fail([400202 ,'订单不存在']);
|
||||
}
|
||||
|
||||
try {
|
||||
$order->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '更新失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500 ,'更新失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function assign(OrderAssign $request)
|
||||
@ -144,16 +137,16 @@ class OrderController extends Controller
|
||||
$user = User::where('email', $request->input('email'))->first();
|
||||
|
||||
if (!$user) {
|
||||
throw new ApiException(500, '该用户不存在');
|
||||
return $this->fail([400202 ,'该用户不存在']);
|
||||
}
|
||||
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '该订阅不存在');
|
||||
return $this->fail([400202 ,'该订阅不存在']);
|
||||
}
|
||||
|
||||
$userService = new UserService();
|
||||
if ($userService->isNotCompleteOrderByUserId($user->id)) {
|
||||
throw new ApiException(500, '该用户还有待支付的订单,无法分配');
|
||||
return $this->fail([400 ,'该用户还有待支付的订单,无法分配']);
|
||||
}
|
||||
|
||||
try {
|
||||
@ -179,7 +172,7 @@ class OrderController extends Controller
|
||||
$orderService->setInvite($user);
|
||||
|
||||
if (!$order->save()) {
|
||||
throw new ApiException(500, '订单创建失败');
|
||||
return $this->fail([500 ,'订单创建失败']);
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
@ -187,8 +180,6 @@ class OrderController extends Controller
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => $order->trade_no
|
||||
]);
|
||||
return $this->success($order->trade_no);
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,7 @@ class PaymentController extends Controller
|
||||
foreach (glob(base_path('app//Payments') . '/*.php') as $file) {
|
||||
array_push($methods, pathinfo($file)['filename']);
|
||||
}
|
||||
return response([
|
||||
'data' => $methods
|
||||
]);
|
||||
return $this->success($methods);
|
||||
}
|
||||
|
||||
public function fetch()
|
||||
@ -34,34 +32,28 @@ class PaymentController extends Controller
|
||||
}
|
||||
$payments[$k]['notify_url'] = $notifyUrl;
|
||||
}
|
||||
return response([
|
||||
'data' => $payments
|
||||
]);
|
||||
return $this->success($payments);
|
||||
}
|
||||
|
||||
public function getPaymentForm(Request $request)
|
||||
{
|
||||
$paymentService = new PaymentService($request->input('payment'), $request->input('id'));
|
||||
return response([
|
||||
'data' => $paymentService->form()
|
||||
]);
|
||||
return $this->success($paymentService->form());
|
||||
}
|
||||
|
||||
public function show(Request $request)
|
||||
{
|
||||
$payment = Payment::find($request->input('id'));
|
||||
if (!$payment) throw new ApiException(500, '支付方式不存在');
|
||||
if (!$payment) return $this->fail([400202 ,'支付方式不存在']);
|
||||
$payment->enable = !$payment->enable;
|
||||
if (!$payment->save()) throw new ApiException(500, '保存失败');
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
if (!$payment->save()) return $this->fail([500 ,'保存失败']);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function save(Request $request)
|
||||
{
|
||||
if (!admin_setting('app_url')) {
|
||||
throw new ApiException(500, '请在站点配置中配置站点地址');
|
||||
return $this->fail([400 ,'请在站点配置中配置站点地址']);
|
||||
}
|
||||
$params = $request->validate([
|
||||
'name' => 'required',
|
||||
@ -81,32 +73,27 @@ class PaymentController extends Controller
|
||||
]);
|
||||
if ($request->input('id')) {
|
||||
$payment = Payment::find($request->input('id'));
|
||||
if (!$payment) throw new ApiException(500, '支付方式不存在');
|
||||
if (!$payment) return $this->fail([400202 ,'支付方式不存在']);
|
||||
try {
|
||||
$payment->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, $e->getMessage());
|
||||
\Log::error($e);
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
$params['uuid'] = Helper::randomChar(8);
|
||||
if (!Payment::create($params)) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
$payment = Payment::find($request->input('id'));
|
||||
if (!$payment) throw new ApiException(500, '支付方式不存在');
|
||||
return response([
|
||||
'data' => $payment->delete()
|
||||
]);
|
||||
if (!$payment) return $this->fail([400202 ,'支付方式不存在']);
|
||||
return $this->success($payment->delete());
|
||||
}
|
||||
|
||||
|
||||
@ -122,17 +109,15 @@ class PaymentController extends Controller
|
||||
DB::beginTransaction();
|
||||
foreach ($request->input('ids') as $k => $v) {
|
||||
if (!Payment::find($v)->update(['sort' => $k + 1])) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
throw new \Exception();
|
||||
}
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
DB::rollBack();
|
||||
throw $e;
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -26,9 +26,7 @@ class PlanController extends Controller
|
||||
if ($plans[$k]->id === $counts[$kk]->plan_id) $plans[$k]->count = $counts[$kk]->count;
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $plans
|
||||
]);
|
||||
return $this->success($plans);
|
||||
}
|
||||
|
||||
public function save(PlanSave $request)
|
||||
@ -37,7 +35,7 @@ class PlanController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$plan = Plan::find($request->input('id'));
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '该订阅不存在');
|
||||
return $this->fail([400202 ,'该订阅不存在']);
|
||||
}
|
||||
DB::beginTransaction();
|
||||
// update user group id and transfer
|
||||
@ -53,37 +51,32 @@ class PlanController extends Controller
|
||||
DB::commit();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
if (!Plan::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
return $this->fail([500 ,'创建失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
if (Order::where('plan_id', $request->input('id'))->first()) {
|
||||
throw new ApiException(500, '该订阅下存在订单无法删除');
|
||||
return $this->fail([400201 ,'该订阅下存在订单无法删除']);
|
||||
}
|
||||
if (User::where('plan_id', $request->input('id'))->first()) {
|
||||
throw new ApiException(500, '该订阅下存在用户无法删除');
|
||||
return $this->fail([400201 ,'该订阅下存在用户无法删除']);
|
||||
}
|
||||
if ($request->input('id')) {
|
||||
$plan = Plan::find($request->input('id'));
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '该订阅ID不存在');
|
||||
return $this->fail([400202 ,'该订阅不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $plan->delete()
|
||||
]);
|
||||
return $this->success($plan->delete());
|
||||
}
|
||||
|
||||
public function update(PlanUpdate $request)
|
||||
@ -95,13 +88,14 @@ class PlanController extends Controller
|
||||
|
||||
$plan = Plan::find($request->input('id'));
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '该订阅不存在');
|
||||
return $this->fail([400202 ,'该订阅不存在']);
|
||||
}
|
||||
|
||||
try {
|
||||
$plan->update($updateData);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
|
||||
return $this->success();
|
||||
@ -114,13 +108,14 @@ class PlanController extends Controller
|
||||
DB::beginTransaction();
|
||||
foreach ($request->input('plan_ids') as $k => $v) {
|
||||
if (!Plan::find($v)->update(['sort' => $k + 1])) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
throw new \Exception();
|
||||
}
|
||||
}
|
||||
DB::commit();
|
||||
}catch (\Exception $e){
|
||||
DB::rollBack();
|
||||
throw $e;
|
||||
\Log::error($e);
|
||||
return $this->fail([500 ,'保存失败']);
|
||||
}
|
||||
return $this->success(true);
|
||||
}
|
||||
|
@ -16,9 +16,7 @@ class GroupController extends Controller
|
||||
public function fetch(Request $request)
|
||||
{
|
||||
if ($request->input('group_id')) {
|
||||
return response([
|
||||
'data' => [ServerGroup::find($request->input('group_id'))]
|
||||
]);
|
||||
return $this->success([ServerGroup::find($request->input('group_id'))]);
|
||||
}
|
||||
$serverGroups = ServerGroup::get();
|
||||
$serverService = new ServerService();
|
||||
@ -32,15 +30,13 @@ class GroupController extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $serverGroups
|
||||
]);
|
||||
return $this->success($serverGroups);
|
||||
}
|
||||
|
||||
public function save(Request $request)
|
||||
{
|
||||
if (empty($request->input('name'))) {
|
||||
throw new ApiException(500, '组名不能为空');
|
||||
return $this->fail([422,'组名不能为空']);
|
||||
}
|
||||
|
||||
if ($request->input('id')) {
|
||||
@ -50,9 +46,7 @@ class GroupController extends Controller
|
||||
}
|
||||
|
||||
$serverGroup->name = $request->input('name');
|
||||
return response([
|
||||
'data' => $serverGroup->save()
|
||||
]);
|
||||
return $this->success($serverGroup->save());
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -60,25 +54,23 @@ class GroupController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$serverGroup = ServerGroup::find($request->input('id'));
|
||||
if (!$serverGroup) {
|
||||
throw new ApiException(500, '组不存在');
|
||||
return $this->fail([400202,'组不存在']);
|
||||
}
|
||||
}
|
||||
|
||||
$servers = ServerVmess::all();
|
||||
foreach ($servers as $server) {
|
||||
if (in_array($request->input('id'), $server->group_id)) {
|
||||
throw new ApiException(500, '该组已被节点所使用,无法删除');
|
||||
return $this->fail([400,'该组已被节点所使用,无法删除']);
|
||||
}
|
||||
}
|
||||
|
||||
if (Plan::where('group_id', $request->input('id'))->first()) {
|
||||
throw new ApiException(500, '该组已被订阅所使用,无法删除');
|
||||
return $this->fail([400, '该组已被订阅所使用,无法删除']);
|
||||
}
|
||||
if (User::where('group_id', $request->input('id'))->first()) {
|
||||
throw new ApiException(500, '该组已被用户所使用,无法删除');
|
||||
return $this->fail([400, '该组已被用户所使用,无法删除']);
|
||||
}
|
||||
return response([
|
||||
'data' => $serverGroup->delete()
|
||||
]);
|
||||
return $this->success($serverGroup->delete());
|
||||
}
|
||||
}
|
||||
|
@ -45,25 +45,22 @@ class HysteriaController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerHysteria::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
if (!ServerHysteria::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -71,12 +68,10 @@ class HysteriaController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerHysteria::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点ID不存在');
|
||||
return $this->fail([400202,'节点ID不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $server->delete()
|
||||
]);
|
||||
return $this->success($server->delete());
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
@ -93,17 +88,16 @@ class HysteriaController extends Controller
|
||||
$server = ServerHysteria::find($request->input('id'));
|
||||
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '该服务器不存在');
|
||||
return $this->fail([400202,'该服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function copy(Request $request)
|
||||
@ -111,14 +105,9 @@ class HysteriaController extends Controller
|
||||
$server = ServerHysteria::find($request->input('id'));
|
||||
$server->show = 0;
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202,'服务器不存在']);
|
||||
}
|
||||
if (!ServerHysteria::create($server->toArray())) {
|
||||
throw new ApiException(500, '复制失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerHysteria::create($server->toArray());
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -13,9 +13,7 @@ class ManageController extends Controller
|
||||
public function getNodes(Request $request)
|
||||
{
|
||||
$serverService = new ServerService();
|
||||
return response([
|
||||
'data' => $serverService->getAllServers()
|
||||
]);
|
||||
return $this->success($serverService->getAllServers());
|
||||
}
|
||||
|
||||
public function sort(Request $request)
|
||||
@ -33,15 +31,15 @@ class ManageController extends Controller
|
||||
foreach ($params as $k => $v) {
|
||||
$model = 'App\\Models\\Server' . ucfirst($k);
|
||||
foreach($v as $id => $sort) {
|
||||
if (!$model::find($id)->update(['sort' => $sort])) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
}
|
||||
$model::where('id', $id)->update(['sort' => $sort]);
|
||||
}
|
||||
}
|
||||
DB::commit();
|
||||
}catch (\Exception $e){
|
||||
DB::rollBack();
|
||||
throw $e;
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
|
||||
}
|
||||
return $this->success(true);
|
||||
}
|
||||
|
@ -44,24 +44,26 @@ class RouteController extends Controller
|
||||
try {
|
||||
$route = ServerRoute::find($request->input('id'));
|
||||
$route->update($params);
|
||||
return [
|
||||
'data' => true
|
||||
];
|
||||
return $this->success(true);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
}
|
||||
if (!ServerRoute::create($params)) throw new ApiException(500, '创建失败');
|
||||
return [
|
||||
'data' => true
|
||||
];
|
||||
try{
|
||||
ServerRoute::create($params);
|
||||
return $this->success(true);
|
||||
}catch(\Exception $e){
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
$route = ServerRoute::find($request->input('id'));
|
||||
if (!$route) throw new ApiException(500, '路由不存在');
|
||||
if (!$route->delete()) throw new ApiException(500, '删除失败');
|
||||
if (!$route) throw new ApiException('路由不存在');
|
||||
if (!$route->delete()) throw new ApiException('删除失败');
|
||||
return [
|
||||
'data' => true
|
||||
];
|
||||
|
@ -17,25 +17,26 @@ class ShadowsocksController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerShadowsocks::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
return $this->success(true);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
}
|
||||
|
||||
if (!ServerShadowsocks::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
try{
|
||||
ServerShadowsocks::create($params);
|
||||
return $this->success(true);
|
||||
}catch(\Exception $e){
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'创建失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -43,12 +44,10 @@ class ShadowsocksController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerShadowsocks::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点ID不存在');
|
||||
return $this->fail([400202, '节点不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $server->delete()
|
||||
]);
|
||||
return $this->success($server->delete());
|
||||
}
|
||||
|
||||
public function update(ServerShadowsocksUpdate $request)
|
||||
@ -60,17 +59,16 @@ class ShadowsocksController extends Controller
|
||||
$server = ServerShadowsocks::find($request->input('id'));
|
||||
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '该服务器不存在');
|
||||
return $this->fail([400202, '该服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function copy(Request $request)
|
||||
@ -78,14 +76,9 @@ class ShadowsocksController extends Controller
|
||||
$server = ServerShadowsocks::find($request->input('id'));
|
||||
$server->show = 0;
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202,'服务器不存在']);
|
||||
}
|
||||
if (!ServerShadowsocks::create($server->toArray())) {
|
||||
throw new ApiException(500, '复制失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerShadowsocks::create($server->toArray());
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -18,25 +18,19 @@ class TrojanController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerTrojan::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202,'服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
if (!ServerTrojan::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerTrojan::create($params);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -44,12 +38,10 @@ class TrojanController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerTrojan::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点ID不存在');
|
||||
return $this->fail([400202,'节点ID不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $server->delete()
|
||||
]);
|
||||
return $this->success($server->delete());
|
||||
}
|
||||
|
||||
public function update(ServerTrojanUpdate $request)
|
||||
@ -61,17 +53,16 @@ class TrojanController extends Controller
|
||||
$server = ServerTrojan::find($request->input('id'));
|
||||
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '该服务器不存在');
|
||||
return $this->fail([400202,'该服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function copy(Request $request)
|
||||
@ -79,22 +70,15 @@ class TrojanController extends Controller
|
||||
$server = ServerTrojan::find($request->input('id'));
|
||||
$server->show = 0;
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202,'服务器不存在']);
|
||||
}
|
||||
if (!ServerTrojan::create($server->toArray())) {
|
||||
throw new ApiException(500, '复制失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerTrojan::create($server->toArray());
|
||||
return $this->success(true);
|
||||
}
|
||||
public function viewConfig(Request $request)
|
||||
{
|
||||
$serverService = new ServerService();
|
||||
$config = $serverService->getTrojanConfig($request->input('node_id'), 23333);
|
||||
return response([
|
||||
'data' => $config
|
||||
]);
|
||||
return $this->success($config);
|
||||
}
|
||||
}
|
||||
|
@ -62,25 +62,19 @@ class VlessController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerVless::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
ServerVless::create($params);
|
||||
|
||||
if (!ServerVless::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -88,12 +82,10 @@ class VlessController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerVless::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点ID不存在');
|
||||
return $this->fail([400202,'节点不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $server->delete()
|
||||
]);
|
||||
return $this->success($server->delete());
|
||||
}
|
||||
|
||||
public function update(Request $request)
|
||||
@ -105,17 +97,16 @@ class VlessController extends Controller
|
||||
$server = ServerVless::find($request->input('id'));
|
||||
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '该服务器不存在');
|
||||
return $this->fail([400202, '该服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function copy(Request $request)
|
||||
@ -123,14 +114,9 @@ class VlessController extends Controller
|
||||
$server = ServerVless::find($request->input('id'));
|
||||
$server->show = 0;
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '该服务器不存在']);
|
||||
}
|
||||
if (!ServerVless::create($server->toArray())) {
|
||||
throw new ApiException(500, '复制失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerVless::create($server->toArray());
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -18,25 +18,20 @@ class VmessController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerVmess::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
if (!ServerVmess::create($params)) {
|
||||
throw new ApiException(500, '创建失败');
|
||||
}
|
||||
ServerVmess::create($params);
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
@ -44,12 +39,10 @@ class VmessController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$server = ServerVmess::find($request->input('id'));
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点ID不存在');
|
||||
return $this->fail([400202, '节点不存在']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $server->delete()
|
||||
]);
|
||||
return $this->success($server->delete());
|
||||
}
|
||||
|
||||
public function update(ServerVmessUpdate $request)
|
||||
@ -61,17 +54,16 @@ class VmessController extends Controller
|
||||
$server = ServerVmess::find($request->input('id'));
|
||||
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '该服务器不存在');
|
||||
return $this->fail([400202, '该服务器不存在']);
|
||||
}
|
||||
try {
|
||||
$server->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function copy(Request $request)
|
||||
@ -79,14 +71,9 @@ class VmessController extends Controller
|
||||
$server = ServerVmess::find($request->input('id'));
|
||||
$server->show = 0;
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '服务器不存在');
|
||||
return $this->fail([400202, '该服务器不存在']);
|
||||
}
|
||||
if (!ServerVmess::create($server->toArray())) {
|
||||
throw new ApiException(500, '复制失败');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
ServerVmess::create($server->toArray());
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -20,20 +20,17 @@ class SystemController extends Controller
|
||||
{
|
||||
public function getSystemStatus()
|
||||
{
|
||||
return response([
|
||||
'data' => [
|
||||
'schedule' => $this->getScheduleStatus(),
|
||||
'horizon' => $this->getHorizonStatus(),
|
||||
'schedule_last_runtime' => Cache::get(CacheKey::get('SCHEDULE_LAST_CHECK_AT', null))
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'schedule' => $this->getScheduleStatus(),
|
||||
'horizon' => $this->getHorizonStatus(),
|
||||
'schedule_last_runtime' => Cache::get(CacheKey::get('SCHEDULE_LAST_CHECK_AT', null))
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function getQueueWorkload(WorkloadRepository $workload)
|
||||
{
|
||||
return response([
|
||||
'data' => collect($workload->get())->sortBy('name')->values()->toArray()
|
||||
]);
|
||||
return $this->success(collect($workload->get())->sortBy('name')->values()->toArray());
|
||||
}
|
||||
|
||||
protected function getScheduleStatus():bool
|
||||
@ -54,23 +51,22 @@ class SystemController extends Controller
|
||||
|
||||
public function getQueueStats()
|
||||
{
|
||||
return response([
|
||||
'data' => [
|
||||
'failedJobs' => app(JobRepository::class)->countRecentlyFailed(),
|
||||
'jobsPerMinute' => app(MetricsRepository::class)->jobsProcessedPerMinute(),
|
||||
'pausedMasters' => $this->totalPausedMasters(),
|
||||
'periods' => [
|
||||
'failedJobs' => config('horizon.trim.recent_failed', config('horizon.trim.failed')),
|
||||
'recentJobs' => config('horizon.trim.recent'),
|
||||
],
|
||||
'processes' => $this->totalProcessCount(),
|
||||
'queueWithMaxRuntime' => app(MetricsRepository::class)->queueWithMaximumRuntime(),
|
||||
'queueWithMaxThroughput' => app(MetricsRepository::class)->queueWithMaximumThroughput(),
|
||||
'recentJobs' => app(JobRepository::class)->countRecent(),
|
||||
'status' => $this->getHorizonStatus(),
|
||||
'wait' => collect(app(WaitTimeCalculator::class)->calculate())->take(1),
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'failedJobs' => app(JobRepository::class)->countRecentlyFailed(),
|
||||
'jobsPerMinute' => app(MetricsRepository::class)->jobsProcessedPerMinute(),
|
||||
'pausedMasters' => $this->totalPausedMasters(),
|
||||
'periods' => [
|
||||
'failedJobs' => config('horizon.trim.recent_failed', config('horizon.trim.failed')),
|
||||
'recentJobs' => config('horizon.trim.recent'),
|
||||
],
|
||||
'processes' => $this->totalProcessCount(),
|
||||
'queueWithMaxRuntime' => app(MetricsRepository::class)->queueWithMaximumRuntime(),
|
||||
'queueWithMaxThroughput' => app(MetricsRepository::class)->queueWithMaximumThroughput(),
|
||||
'recentJobs' => app(JobRepository::class)->countRecent(),
|
||||
'status' => $this->getHorizonStatus(),
|
||||
'wait' => collect(app(WaitTimeCalculator::class)->calculate())->take(1),
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -34,12 +34,11 @@ class ThemeController extends Controller
|
||||
$themeService = new ThemeService($theme);
|
||||
$themeService->init();
|
||||
}
|
||||
return response([
|
||||
'data' => [
|
||||
'themes' => $themeConfigs,
|
||||
'active' => admin_setting('frontend_theme', 'Xboard')
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'themes' => $themeConfigs,
|
||||
'active' => admin_setting('frontend_theme', 'Xboard')
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function getThemeConfig(Request $request)
|
||||
@ -47,9 +46,7 @@ class ThemeController extends Controller
|
||||
$payload = $request->validate([
|
||||
'name' => 'required|in:' . join(',', $this->themes)
|
||||
]);
|
||||
return response([
|
||||
'data' => admin_setting("theme_{$payload['name']}") ?? config("theme.{$payload['name']}")
|
||||
]);
|
||||
return $this->success(admin_setting("theme_{$payload['name']}") ?? config("theme.{$payload['name']}"));
|
||||
}
|
||||
|
||||
public function saveThemeConfig(Request $request)
|
||||
@ -59,11 +56,11 @@ class ThemeController extends Controller
|
||||
'config' => 'required'
|
||||
]);
|
||||
$payload['config'] = json_decode(base64_decode($payload['config']), true);
|
||||
if (!$payload['config'] || !is_array($payload['config'])) throw new ApiException(422, '参数有误');
|
||||
if (!$payload['config'] || !is_array($payload['config'])) return $this->fail([422,'参数不正确']);
|
||||
$themeConfigFile = public_path("theme/{$payload['name']}/config.json");
|
||||
if (!File::exists($themeConfigFile)) throw new ApiException(500, '主题不存在');
|
||||
if (!File::exists($themeConfigFile)) return $this->fail([400202,'主题不存在']);
|
||||
$themeConfig = json_decode(File::get($themeConfigFile), true);
|
||||
if (!isset($themeConfig['configs']) || !is_array($themeConfig)) throw new ApiException(500, '主题配置文件有误');
|
||||
if (!isset($themeConfig['configs']) || !is_array($themeConfig)) return $this->fail([422,'主题配置文件有误']);
|
||||
$validateFields = array_column($themeConfig['configs'], 'field_name');
|
||||
$config = [];
|
||||
foreach ($validateFields as $validateField) {
|
||||
@ -77,11 +74,8 @@ class ThemeController extends Controller
|
||||
admin_setting(["theme_{$payload['name']}" => $config]);
|
||||
// sleep(2);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([200002, '保存失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => $config
|
||||
]);
|
||||
return $this->success($config);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ use App\Models\Ticket;
|
||||
use App\Models\TicketMessage;
|
||||
use App\Models\User;
|
||||
use App\Services\TicketService;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TicketController extends Controller
|
||||
@ -18,7 +19,7 @@ class TicketController extends Controller
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, '工单不存在');
|
||||
return $this->fail([400202,'工单不存在']);
|
||||
}
|
||||
$ticket['message'] = TicketMessage::where('ticket_id', $ticket->id)->get();
|
||||
for ($i = 0; $i < count($ticket['message']); $i++) {
|
||||
@ -28,9 +29,7 @@ class TicketController extends Controller
|
||||
$ticket['message'][$i]['is_me'] = false;
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $ticket
|
||||
]);
|
||||
return $this->success($ticket);
|
||||
}
|
||||
$current = $request->input('current') ? $request->input('current') : 1;
|
||||
$pageSize = $request->input('pageSize') >= 10 ? $request->input('pageSize') : 10;
|
||||
@ -56,39 +55,38 @@ class TicketController extends Controller
|
||||
|
||||
public function reply(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
if (empty($request->input('message'))) {
|
||||
throw new ApiException(500, '消息不能为空');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required|numeric',
|
||||
'message' => 'required|string'
|
||||
],[
|
||||
'id.required' => '工单ID不能为空',
|
||||
'message.required' => '消息不能为空'
|
||||
]);
|
||||
$ticketService = new TicketService();
|
||||
$ticketService->replyByAdmin(
|
||||
$request->input('id'),
|
||||
$request->input('message'),
|
||||
$request->user['id']
|
||||
);
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function close(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, '工单不存在');
|
||||
}
|
||||
$ticket->status = 1;
|
||||
if (!$ticket->save()) {
|
||||
throw new ApiException(500, '关闭失败');
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
$request->validate([
|
||||
'id' => 'required|numeric'
|
||||
],[
|
||||
'id.required' => '工单ID不能为空'
|
||||
]);
|
||||
try {
|
||||
$ticket = Ticket::findOrFail($request->input('id'));
|
||||
$ticket->status = 1;
|
||||
$ticket->save();
|
||||
return $this->success(true);
|
||||
} catch (ModelNotFoundException $e) {
|
||||
return $this->fail([400202, '工单不存在']);
|
||||
} catch (\Exception $e) {
|
||||
return $this->fail([500101, '关闭失败']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,12 +21,10 @@ class UserController extends Controller
|
||||
public function resetSecret(Request $request)
|
||||
{
|
||||
$user = User::find($request->input('id'));
|
||||
if (!$user) throw new ApiException(500, '用户不存在');
|
||||
if (!$user) return $this->fail([400202,'用户不存在']);
|
||||
$user->token = Helper::guid();
|
||||
$user->uuid = Helper::guid(true);
|
||||
return response([
|
||||
'data' => $user->save()
|
||||
]);
|
||||
return $this->success($user->save());
|
||||
}
|
||||
|
||||
private function filter(Request $request, $builder)
|
||||
@ -85,46 +83,45 @@ class UserController extends Controller
|
||||
|
||||
public function getUserInfoById(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
$user = User::find($request->input('id'));
|
||||
if ($user->invite_user_id) {
|
||||
$user['invite_user'] = User::find($user->invite_user_id);
|
||||
}
|
||||
return response([
|
||||
'data' => $user
|
||||
$request->validate([
|
||||
'id'=> 'required|numeric'
|
||||
],[
|
||||
'id.required' => '用户ID不能为空'
|
||||
]);
|
||||
$user = User::find($request->input('id'))->load('invite_user');
|
||||
return $this->success($user);
|
||||
}
|
||||
|
||||
public function update(UserUpdate $request)
|
||||
{
|
||||
$params = $request->validated();
|
||||
|
||||
$user = User::find($request->input('id'));
|
||||
if (!$user) {
|
||||
throw new ApiException(500, '用户不存在');
|
||||
return $this->fail([400202, '用户不存在']);
|
||||
}
|
||||
// 检查邮箱是否被使用
|
||||
if (User::where('email', $params['email'])->first() && $user->email !== $params['email']) {
|
||||
throw new ApiException(500, '邮箱已被使用');
|
||||
return $this->fail([400201, '邮箱已被使用']);
|
||||
}
|
||||
// 处理密码
|
||||
if (isset($params['password'])) {
|
||||
$params['password'] = password_hash($params['password'], PASSWORD_DEFAULT);
|
||||
$params['password_algo'] = NULL;
|
||||
} else {
|
||||
unset($params['password']);
|
||||
}
|
||||
// 处理订阅计划
|
||||
if (isset($params['plan_id'])) {
|
||||
$plan = Plan::find($params['plan_id']);
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '订阅计划不存在');
|
||||
return $this->fail([400202, '订阅计划不存在']);
|
||||
}
|
||||
$params['group_id'] = $plan->group_id;
|
||||
}
|
||||
if ($request->input('invite_user_email')) {
|
||||
$inviteUser = User::where('email', $request->input('invite_user_email'))->first();
|
||||
if ($inviteUser) {
|
||||
$params['invite_user_id'] = $inviteUser->id;
|
||||
}
|
||||
// 处理邀请用户
|
||||
if ($request->input('invite_user_email') && $inviteUser = User::where('email', $request->input('invite_user_email'))->first()) {
|
||||
$params['invite_user_id'] = $inviteUser->id;
|
||||
} else {
|
||||
$params['invite_user_id'] = null;
|
||||
}
|
||||
@ -137,11 +134,10 @@ class UserController extends Controller
|
||||
try {
|
||||
$user->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'保存失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function dumpCSV(Request $request)
|
||||
@ -178,7 +174,7 @@ class UserController extends Controller
|
||||
if ($request->input('plan_id')) {
|
||||
$plan = Plan::find($request->input('plan_id'));
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '订阅计划不存在');
|
||||
return $this->fail([400202,'订阅计划不存在']);
|
||||
}
|
||||
}
|
||||
$user = [
|
||||
@ -191,15 +187,13 @@ class UserController extends Controller
|
||||
'token' => Helper::guid()
|
||||
];
|
||||
if (User::where('email', $user['email'])->first()) {
|
||||
throw new ApiException(500, '邮箱已存在于系统中');
|
||||
return $this->fail([400201,'邮箱已存在于系统中']);
|
||||
}
|
||||
$user['password'] = password_hash($request->input('password') ?? $user['email'], PASSWORD_DEFAULT);
|
||||
if (!User::create($user)) {
|
||||
throw new ApiException(500, '生成失败');
|
||||
return $this->fail([500,'生成失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
if ($request->input('generate_count')) {
|
||||
$this->multiGenerate($request);
|
||||
@ -211,7 +205,7 @@ class UserController extends Controller
|
||||
if ($request->input('plan_id')) {
|
||||
$plan = Plan::find($request->input('plan_id'));
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '订阅计划不存在');
|
||||
return $this->fail([400202,'订阅计划不存在']);
|
||||
}
|
||||
}
|
||||
$users = [];
|
||||
@ -233,12 +227,13 @@ class UserController extends Controller
|
||||
try{
|
||||
DB::beginTransaction();
|
||||
if (!User::insert($users)) {
|
||||
throw new ApiException(500, '生成失败');
|
||||
throw new \Exception();
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
DB::rollBack();
|
||||
throw $e;
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'生成失败']);
|
||||
}
|
||||
$data = "账号,密码,过期时间,UUID,创建时间,订阅地址\r\n";
|
||||
foreach($users as $user) {
|
||||
@ -272,9 +267,7 @@ class UserController extends Controller
|
||||
'send_email_mass');
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function ban(Request $request)
|
||||
@ -288,11 +281,10 @@ class UserController extends Controller
|
||||
'banned' => 1
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '处理失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'处理失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -65,31 +65,26 @@ class AppController extends Controller
|
||||
|| strpos($request->header('user-agent'), 'tunnelab/4.0.0') !== false
|
||||
) {
|
||||
if (strpos($request->header('user-agent'), 'Win64') !== false) {
|
||||
return response([
|
||||
'data' => [
|
||||
$data = [
|
||||
'version' => admin_setting('windows_version'),
|
||||
'download_url' => admin_setting('windows_download_url')
|
||||
]
|
||||
]);
|
||||
];
|
||||
} else {
|
||||
return response([
|
||||
'data' => [
|
||||
$data = [
|
||||
'version' => admin_setting('macos_version'),
|
||||
'download_url' => admin_setting('macos_download_url')
|
||||
]
|
||||
]);
|
||||
];
|
||||
}
|
||||
return;
|
||||
}
|
||||
return response([
|
||||
'data' => [
|
||||
}else{
|
||||
$data = [
|
||||
'windows_version' => admin_setting('windows_version'),
|
||||
'windows_download_url' => admin_setting('windows_download_url'),
|
||||
'macos_version' => admin_setting('macos_version'),
|
||||
'macos_download_url' => admin_setting('macos_download_url'),
|
||||
'android_version' => admin_setting('android_version'),
|
||||
'android_download_url' => admin_setting('android_download_url')
|
||||
]
|
||||
]);
|
||||
];
|
||||
}
|
||||
return $this->success($data);
|
||||
}
|
||||
}
|
||||
|
@ -10,21 +10,20 @@ class CommController extends Controller
|
||||
{
|
||||
public function config()
|
||||
{
|
||||
return response([
|
||||
'data' => [
|
||||
'tos_url' => admin_setting('tos_url'),
|
||||
'is_email_verify' => (int)admin_setting('email_verify', 0) ? 1 : 0,
|
||||
'is_invite_force' => (int)admin_setting('invite_force', 0) ? 1 : 0,
|
||||
'email_whitelist_suffix' => (int)admin_setting('email_whitelist_enable', 0)
|
||||
? $this->getEmailSuffix()
|
||||
: 0,
|
||||
'is_recaptcha' => (int)admin_setting('recaptcha_enable', 0) ? 1 : 0,
|
||||
'recaptcha_site_key' => admin_setting('recaptcha_site_key'),
|
||||
'app_description' => admin_setting('app_description'),
|
||||
'app_url' => admin_setting('app_url'),
|
||||
'logo' => admin_setting('logo'),
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'tos_url' => admin_setting('tos_url'),
|
||||
'is_email_verify' => (int)admin_setting('email_verify', 0) ? 1 : 0,
|
||||
'is_invite_force' => (int)admin_setting('invite_force', 0) ? 1 : 0,
|
||||
'email_whitelist_suffix' => (int)admin_setting('email_whitelist_enable', 0)
|
||||
? $this->getEmailSuffix()
|
||||
: 0,
|
||||
'is_recaptcha' => (int)admin_setting('recaptcha_enable', 0) ? 1 : 0,
|
||||
'recaptcha_site_key' => admin_setting('recaptcha_site_key'),
|
||||
'app_description' => admin_setting('app_description'),
|
||||
'app_url' => admin_setting('app_url'),
|
||||
'logo' => admin_setting('logo'),
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
private function getEmailSuffix()
|
||||
|
@ -17,13 +17,13 @@ class PaymentController extends Controller
|
||||
try {
|
||||
$paymentService = new PaymentService($method, null, $uuid);
|
||||
$verify = $paymentService->notify($request->input());
|
||||
if (!$verify) throw new ApiException(500, 'verify error');
|
||||
if (!$verify) return $this->fail([422,'verify error']);
|
||||
if (!$this->handle($verify['trade_no'], $verify['callback_no'])) {
|
||||
throw new ApiException(500, 'handle error');
|
||||
return $this->fail([400,'handle error']);
|
||||
}
|
||||
return(isset($verify['custom_result']) ? $verify['custom_result'] : 'success');
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, 'fail');
|
||||
return $this->fail([500,'fail']);
|
||||
}
|
||||
}
|
||||
|
||||
@ -31,7 +31,7 @@ class PaymentController extends Controller
|
||||
{
|
||||
$order = Order::where('trade_no', $tradeNo)->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, 'order is not found');
|
||||
return $this->fail([400202,'order is not found']);
|
||||
}
|
||||
if ($order->status !== 0) return true;
|
||||
$orderService = new OrderService($order);
|
||||
|
@ -11,8 +11,6 @@ class PlanController extends Controller
|
||||
public function fetch(Request $request)
|
||||
{
|
||||
$plan = Plan::where('show', 1)->get();
|
||||
return response([
|
||||
'data' => $plan
|
||||
]);
|
||||
return $this->success($plan);
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ class TelegramController extends Controller
|
||||
public function __construct(Request $request)
|
||||
{
|
||||
if ($request->input('access_token') !== md5(admin_setting('telegram_bot_token'))) {
|
||||
throw new ApiException(401);
|
||||
throw new ApiException('access_token is error', 401);
|
||||
}
|
||||
|
||||
$this->telegramService = new TelegramService();
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\V1\Passport;
|
||||
|
||||
use App\Exceptions\ApiException;
|
||||
use App\Helpers\ResponseEnum;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Passport\AuthForget;
|
||||
use App\Http\Requests\Passport\AuthLogin;
|
||||
@ -24,7 +25,7 @@ class AuthController extends Controller
|
||||
public function loginWithMailLink(Request $request)
|
||||
{
|
||||
if (!(int)admin_setting('login_with_mail_link_enable')) {
|
||||
throw new ApiException(404);
|
||||
return $this->fail([404,null]);
|
||||
}
|
||||
$params = $request->validate([
|
||||
'email' => 'required|email:strict',
|
||||
@ -32,14 +33,12 @@ class AuthController extends Controller
|
||||
]);
|
||||
|
||||
if (Cache::get(CacheKey::get('LAST_SEND_LOGIN_WITH_MAIL_LINK_TIMESTAMP', $params['email']))) {
|
||||
throw new ApiException(500, __('Sending frequently, please try again later'));
|
||||
return $this->fail([429 ,__('Sending frequently, please try again later')]);
|
||||
}
|
||||
|
||||
$user = User::where('email', $params['email'])->first();
|
||||
if (!$user) {
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
$code = Helper::guid();
|
||||
@ -68,9 +67,7 @@ class AuthController extends Controller
|
||||
]
|
||||
]);
|
||||
|
||||
return response([
|
||||
'data' => $link
|
||||
]);
|
||||
return $this->success($link);
|
||||
|
||||
}
|
||||
|
||||
@ -79,16 +76,16 @@ class AuthController extends Controller
|
||||
if ((int)admin_setting('register_limit_by_ip_enable', 0)) {
|
||||
$registerCountByIP = Cache::get(CacheKey::get('REGISTER_IP_RATE_LIMIT', $request->ip())) ?? 0;
|
||||
if ((int)$registerCountByIP >= (int)admin_setting('register_limit_count', 3)) {
|
||||
throw new ApiException(500, __('Register frequently, please try again after :minute minute', [
|
||||
return $this->fail([429,__('Register frequently, please try again after :minute minute', [
|
||||
'minute' => admin_setting('register_limit_expire', 60)
|
||||
]));
|
||||
])]);
|
||||
}
|
||||
}
|
||||
if ((int)admin_setting('recaptcha_enable', 0)) {
|
||||
$recaptcha = new ReCaptcha(admin_setting('recaptcha_key'));
|
||||
$recaptchaResp = $recaptcha->verify($request->input('recaptcha_data'));
|
||||
if (!$recaptchaResp->isSuccess()) {
|
||||
throw new ApiException(500, __('Invalid code is incorrect'));
|
||||
return $this->fail([400,__('Invalid code is incorrect')]);
|
||||
}
|
||||
}
|
||||
if ((int)admin_setting('email_whitelist_enable', 0)) {
|
||||
@ -96,36 +93,36 @@ class AuthController extends Controller
|
||||
$request->input('email'),
|
||||
admin_setting('email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT))
|
||||
) {
|
||||
throw new ApiException(500, __('Email suffix is not in the Whitelist'));
|
||||
return $this->fail([400,__('Email suffix is not in the Whitelist')]);
|
||||
}
|
||||
}
|
||||
if ((int)admin_setting('email_gmail_limit_enable', 0)) {
|
||||
$prefix = explode('@', $request->input('email'))[0];
|
||||
if (strpos($prefix, '.') !== false || strpos($prefix, '+') !== false) {
|
||||
throw new ApiException(500, __('Gmail alias is not supported'));
|
||||
return $this->fail([400,__('Gmail alias is not supported')]);
|
||||
}
|
||||
}
|
||||
if ((int)admin_setting('stop_register', 0)) {
|
||||
throw new ApiException(500, __('Registration has closed'));
|
||||
return $this->fail([400,__('Registration has closed')]);
|
||||
}
|
||||
if ((int)admin_setting('invite_force', 0)) {
|
||||
if (empty($request->input('invite_code'))) {
|
||||
throw new ApiException(500, __('You must use the invitation code to register'));
|
||||
return $this->fail([422,__('You must use the invitation code to register')]);
|
||||
}
|
||||
}
|
||||
if ((int)admin_setting('email_verify', 0)) {
|
||||
if (empty($request->input('email_code'))) {
|
||||
throw new ApiException(500, __('Email verification code cannot be empty'));
|
||||
return $this->fail([422,__('Email verification code cannot be empty')]);
|
||||
}
|
||||
if ((string)Cache::get(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email'))) !== (string)$request->input('email_code')) {
|
||||
throw new ApiException(500, __('Incorrect email verification code'));
|
||||
return $this->fail([400,__('Incorrect email verification code')]);
|
||||
}
|
||||
}
|
||||
$email = $request->input('email');
|
||||
$password = $request->input('password');
|
||||
$exist = User::where('email', $email)->first();
|
||||
if ($exist) {
|
||||
throw new ApiException(500, __('Email already exists'));
|
||||
return $this->fail([400201,__('Email already exists')]);
|
||||
}
|
||||
$user = new User();
|
||||
$user->email = $email;
|
||||
@ -141,7 +138,7 @@ class AuthController extends Controller
|
||||
->first();
|
||||
if (!$inviteCode) {
|
||||
if ((int)admin_setting('invite_force', 0)) {
|
||||
throw new ApiException(500, __('Invalid invitation code'));
|
||||
return $this->fail([400,__('Invalid invitation code')]);
|
||||
}
|
||||
} else {
|
||||
$user->invite_user_id = $inviteCode->user_id ? $inviteCode->user_id : null;
|
||||
@ -165,7 +162,7 @@ class AuthController extends Controller
|
||||
}
|
||||
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, __('Register failed'));
|
||||
return $this->fail([500,__('Register failed')]);
|
||||
}
|
||||
if ((int)admin_setting('email_verify', 0)) {
|
||||
Cache::forget(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email')));
|
||||
@ -184,9 +181,8 @@ class AuthController extends Controller
|
||||
|
||||
$authService = new AuthService($user);
|
||||
|
||||
return response()->json([
|
||||
'data' => $authService->generateAuthData($request)
|
||||
]);
|
||||
$data = $authService->generateAuthData($request);
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function login(AuthLogin $request)
|
||||
@ -197,15 +193,15 @@ class AuthController extends Controller
|
||||
if ((int)admin_setting('password_limit_enable', 1)) {
|
||||
$passwordErrorCount = (int)Cache::get(CacheKey::get('PASSWORD_ERROR_LIMIT', $email), 0);
|
||||
if ($passwordErrorCount >= (int)admin_setting('password_limit_count', 5)) {
|
||||
throw new ApiException(500, __('There are too many password errors, please try again after :minute minutes.', [
|
||||
return $this->fail([429,__('There are too many password errors, please try again after :minute minutes.', [
|
||||
'minute' => admin_setting('password_limit_expire', 60)
|
||||
]));
|
||||
])]);
|
||||
}
|
||||
}
|
||||
|
||||
$user = User::where('email', $email)->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('Incorrect email or password'));
|
||||
return $this->fail([400, __('Incorrect email or password')]);
|
||||
}
|
||||
if (!Helper::multiPasswordVerify(
|
||||
$user->password_algo,
|
||||
@ -220,17 +216,15 @@ class AuthController extends Controller
|
||||
60 * (int)admin_setting('password_limit_expire', 60)
|
||||
);
|
||||
}
|
||||
throw new ApiException(500, __('Incorrect email or password'));
|
||||
return $this->fail([400, __('Incorrect email or password')]);
|
||||
}
|
||||
|
||||
if ($user->banned) {
|
||||
throw new ApiException(500, __('Your account has been suspended'));
|
||||
return $this->fail([400, __('Your account has been suspended')]);
|
||||
}
|
||||
|
||||
$authService = new AuthService($user);
|
||||
return response([
|
||||
'data' => $authService->generateAuthData($request)
|
||||
]);
|
||||
return $this->success($authService->generateAuthData($request));
|
||||
}
|
||||
|
||||
public function token2Login(Request $request)
|
||||
@ -249,30 +243,28 @@ class AuthController extends Controller
|
||||
$key = CacheKey::get('TEMP_TOKEN', $request->input('verify'));
|
||||
$userId = Cache::get($key);
|
||||
if (!$userId) {
|
||||
throw new ApiException(500, __('Token error'));
|
||||
return $this->fail([400,__('Token error')]);
|
||||
}
|
||||
$user = User::find($userId);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not '));
|
||||
return $this->fail([400,__('The user does not ')]);
|
||||
}
|
||||
if ($user->banned) {
|
||||
throw new ApiException(500, __('Your account has been suspended'));
|
||||
return $this->fail([400,__('Your account has been suspended')]);
|
||||
}
|
||||
Cache::forget($key);
|
||||
$authService = new AuthService($user);
|
||||
return response([
|
||||
'data' => $authService->generateAuthData($request)
|
||||
]);
|
||||
return $this->success($authService->generateAuthData($request));
|
||||
}
|
||||
}
|
||||
|
||||
public function getQuickLoginUrl(Request $request)
|
||||
{
|
||||
$authorization = $request->input('auth_data') ?? $request->header('authorization');
|
||||
if (!$authorization) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$authorization) return $this->fail(ResponseEnum::CLIENT_HTTP_UNAUTHORIZED);
|
||||
|
||||
$user = AuthService::decryptAuthData($authorization);
|
||||
if (!$user) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$user) return $this->fail(ResponseEnum::CLIENT_HTTP_UNAUTHORIZED_EXPIRED);
|
||||
|
||||
$code = Helper::guid();
|
||||
$key = CacheKey::get('TEMP_TOKEN', $code);
|
||||
@ -283,33 +275,29 @@ class AuthController extends Controller
|
||||
} else {
|
||||
$url = url($redirect);
|
||||
}
|
||||
return response([
|
||||
'data' => $url
|
||||
]);
|
||||
return $this->success($url);
|
||||
}
|
||||
|
||||
public function forget(AuthForget $request)
|
||||
{
|
||||
$forgetRequestLimitKey = CacheKey::get('FORGET_REQUEST_LIMIT', $request->input('email'));
|
||||
$forgetRequestLimit = (int)Cache::get($forgetRequestLimitKey);
|
||||
if ($forgetRequestLimit >= 3) throw new ApiException(500, __('Reset failed, Please try again later'));
|
||||
if ($forgetRequestLimit >= 3) return $this->fail([429, __('Reset failed, Please try again later')]);
|
||||
if ((string)Cache::get(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email'))) !== (string)$request->input('email_code')) {
|
||||
Cache::put($forgetRequestLimitKey, $forgetRequestLimit ? $forgetRequestLimit + 1 : 1, 300);
|
||||
throw new ApiException(500, __('Incorrect email verification code'));
|
||||
return $this->fail([400,__('Incorrect email verification code')]);
|
||||
}
|
||||
$user = User::where('email', $request->input('email'))->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('This email is not registered in the system'));
|
||||
return $this->fail([400,__('This email is not registered in the system')]);
|
||||
}
|
||||
$user->password = password_hash($request->input('password'), PASSWORD_DEFAULT);
|
||||
$user->password_algo = NULL;
|
||||
$user->password_salt = NULL;
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, __('Reset failed'));
|
||||
return $this->fail([500,__('Reset failed')]);
|
||||
}
|
||||
Cache::forget(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email')));
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -17,9 +17,7 @@ class CommController extends Controller
|
||||
{
|
||||
private function isEmailVerify()
|
||||
{
|
||||
return response([
|
||||
'data' => (int)admin_setting('email_verify', 0) ? 1 : 0
|
||||
]);
|
||||
return $this->success((int)admin_setting('email_verify', 0) ? 1 : 0);
|
||||
}
|
||||
|
||||
public function sendEmailVerify(CommSendEmailVerify $request)
|
||||
@ -28,12 +26,12 @@ class CommController extends Controller
|
||||
$recaptcha = new ReCaptcha(admin_setting('recaptcha_key'));
|
||||
$recaptchaResp = $recaptcha->verify($request->input('recaptcha_data'));
|
||||
if (!$recaptchaResp->isSuccess()) {
|
||||
throw new ApiException(500, __('Invalid code is incorrect'));
|
||||
return $this->fail([400, __('Invalid code is incorrect')]);
|
||||
}
|
||||
}
|
||||
$email = $request->input('email');
|
||||
if (Cache::get(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email))) {
|
||||
throw new ApiException(500, __('Email verification code has been sent, please request again later'));
|
||||
return $this->fail([400, __('Email verification code has been sent, please request again later')]);
|
||||
}
|
||||
$code = rand(100000, 999999);
|
||||
$subject = admin_setting('app_name', 'XBoard') . __('Email verification code');
|
||||
@ -51,9 +49,7 @@ class CommController extends Controller
|
||||
|
||||
Cache::put(CacheKey::get('EMAIL_VERIFY_CODE', $email), $code, 300);
|
||||
Cache::put(CacheKey::get('LAST_SEND_EMAIL_VERIFY_TIMESTAMP', $email), time(), 60);
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function pv(Request $request)
|
||||
@ -64,9 +60,7 @@ class CommController extends Controller
|
||||
$inviteCode->save();
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
private function getEmailSuffix()
|
||||
|
@ -22,10 +22,10 @@ class DeepbworkController extends Controller
|
||||
{
|
||||
$token = $request->input('token');
|
||||
if (empty($token)) {
|
||||
throw new ApiException(500, 'token is null');
|
||||
throw new ApiException('token is null');
|
||||
}
|
||||
if ($token !== admin_setting('server_token')) {
|
||||
throw new ApiException(500, 'token is error');
|
||||
throw new ApiException('token is error');
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ class DeepbworkController extends Controller
|
||||
$nodeId = $request->input('node_id');
|
||||
$server = ServerVmess::find($nodeId);
|
||||
if (!$server) {
|
||||
throw new ApiException(500, 'fail');
|
||||
return $this->fail([400,'节点不存在']);
|
||||
}
|
||||
Cache::put(CacheKey::get('SERVER_VMESS_LAST_CHECK_AT', $server->id), time(), 3600);
|
||||
$serverService = new ServerService();
|
||||
@ -93,15 +93,18 @@ class DeepbworkController extends Controller
|
||||
// 后端获取配置
|
||||
public function config(Request $request)
|
||||
{
|
||||
$nodeId = $request->input('node_id');
|
||||
$localPort = $request->input('local_port');
|
||||
if (empty($nodeId) || empty($localPort)) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
$request->validate([
|
||||
'node_id' => 'required',
|
||||
'local_port' => 'required'
|
||||
],[
|
||||
'node_id.required' => '节点ID不能为空',
|
||||
'local_port.required' => '本地端口不能为空'
|
||||
]);
|
||||
try {
|
||||
$json = $this->getV2RayConfig($nodeId, $localPort);
|
||||
$json = $this->getV2RayConfig($request->input('node_id'), $request->input('local_port'));
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, $e->getMessage());
|
||||
\Log::error($e);
|
||||
throw new ApiException($e->getMessage());
|
||||
}
|
||||
|
||||
return(json_encode($json, JSON_UNESCAPED_UNICODE));
|
||||
@ -111,7 +114,7 @@ class DeepbworkController extends Controller
|
||||
{
|
||||
$server = ServerVmess::find($nodeId);
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点不存在');
|
||||
return $this->fail([400,'节点不存在']);
|
||||
}
|
||||
$json = json_decode(self::V2RAY_CONFIG);
|
||||
$json->log->loglevel = (int)admin_setting('server_log_enable') ? 'debug' : 'none';
|
||||
|
@ -21,10 +21,10 @@ class ShadowsocksTidalabController extends Controller
|
||||
{
|
||||
$token = $request->input('token');
|
||||
if (empty($token)) {
|
||||
throw new ApiException(500, 'token is null');
|
||||
throw new ApiException('token is null');
|
||||
}
|
||||
if ($token !== admin_setting('server_token')) {
|
||||
throw new ApiException(500, 'token is error');
|
||||
throw new ApiException('token is error');
|
||||
}
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ class ShadowsocksTidalabController extends Controller
|
||||
$nodeId = $request->input('node_id');
|
||||
$server = ServerShadowsocks::find($nodeId);
|
||||
if (!$server) {
|
||||
throw new ApiException(500, 'fail');
|
||||
return $this->fail([400,'节点不存在']);
|
||||
}
|
||||
Cache::put(CacheKey::get('SERVER_SHADOWSOCKS_LAST_CHECK_AT', $server->id), time(), 3600);
|
||||
$serverService = new ServerService();
|
||||
|
@ -22,10 +22,10 @@ class TrojanTidalabController extends Controller
|
||||
{
|
||||
$token = $request->input('token');
|
||||
if (empty($token)) {
|
||||
throw new ApiException(500, 'token is null');
|
||||
throw new ApiException('token is null');
|
||||
}
|
||||
if ($token !== admin_setting('server_token')) {
|
||||
throw new ApiException(500, 'token is error');
|
||||
throw new ApiException('token is error');
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,7 +36,7 @@ class TrojanTidalabController extends Controller
|
||||
$nodeId = $request->input('node_id');
|
||||
$server = ServerTrojan::find($nodeId);
|
||||
if (!$server) {
|
||||
throw new ApiException(500, 'fail');
|
||||
return $this->fail([400,'节点不存在']);
|
||||
}
|
||||
Cache::put(CacheKey::get('SERVER_TROJAN_LAST_CHECK_AT', $server->id), time(), 3600);
|
||||
$serverService = new ServerService();
|
||||
@ -89,15 +89,18 @@ class TrojanTidalabController extends Controller
|
||||
// 后端获取配置
|
||||
public function config(Request $request)
|
||||
{
|
||||
$nodeId = $request->input('node_id');
|
||||
$localPort = $request->input('local_port');
|
||||
if (empty($nodeId) || empty($localPort)) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
$request->validate([
|
||||
'node_id' => 'required',
|
||||
'local_port' => 'required'
|
||||
],[
|
||||
'node_id.required' => '节点ID不能为空',
|
||||
'local_port.required' => '本地端口不能为空'
|
||||
]);
|
||||
try {
|
||||
$json = $this->getTrojanConfig($nodeId, $localPort);
|
||||
$json = $this->getTrojanConfig($request->input('node_id'), $request->input('local_port'));
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, $e->getMessage());
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'配置获取失败']);
|
||||
}
|
||||
|
||||
return(json_encode($json, JSON_UNESCAPED_UNICODE));
|
||||
@ -107,7 +110,7 @@ class TrojanTidalabController extends Controller
|
||||
{
|
||||
$server = ServerTrojan::find($nodeId);
|
||||
if (!$server) {
|
||||
throw new ApiException(500, '节点不存在');
|
||||
return $this->fail([400, '节点不存在']);
|
||||
}
|
||||
|
||||
$json = json_decode(self::TROJAN_CONFIG);
|
||||
|
@ -92,9 +92,7 @@ class UniProxyController extends Controller
|
||||
$userService = new UserService();
|
||||
$userService->trafficFetch($this->nodeInfo->toArray(), $this->nodeType, $data , $ip);
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
// 后端获取配置
|
||||
@ -174,8 +172,6 @@ class UniProxyController extends Controller
|
||||
// 后端提交在线数据
|
||||
public function alive(Request $request)
|
||||
{
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -12,9 +12,8 @@ class NoticeController extends Controller
|
||||
{
|
||||
public function fetch(Request $request)
|
||||
{
|
||||
return response([
|
||||
'data' => Notice::orderBy('id', 'DESC')->get()
|
||||
]);
|
||||
$data = Notice::orderBy('id', 'DESC')->get();
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function save(NoticeSave $request)
|
||||
@ -26,34 +25,34 @@ class NoticeController extends Controller
|
||||
]);
|
||||
if (!$request->input('id')) {
|
||||
if (!Notice::create($data)) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
return $this->fail([500, '创建失败']);
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Notice::find($request->input('id'))->update($data);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500, '保存失败']);
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function drop(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required'
|
||||
],[
|
||||
'id.required' => '公告ID不能为空'
|
||||
]);
|
||||
|
||||
$notice = Notice::find($request->input('id'));
|
||||
if (!$notice) {
|
||||
throw new ApiException(500, '公告不存在');
|
||||
return $this->fail([400202,'公告不存在']);
|
||||
}
|
||||
if (!$notice->delete()) {
|
||||
throw new ApiException(500, '删除失败');
|
||||
return $this->fail([500,'公告删除失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,6 @@ class PlanController extends Controller
|
||||
if ($plans[$k]->id === $counts[$kk]->plan_id) $plans[$k]->count = $counts[$kk]->count;
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $plans
|
||||
]);
|
||||
return $this->success($plans);
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ class TicketController extends Controller
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, '工单不存在');
|
||||
return $this->fail([400,'工单不存在']);
|
||||
}
|
||||
$ticket['message'] = TicketMessage::where('ticket_id', $ticket->id)->get();
|
||||
for ($i = 0; $i < count($ticket['message']); $i++) {
|
||||
@ -27,9 +27,7 @@ class TicketController extends Controller
|
||||
$ticket['message'][$i]['is_me'] = false;
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $ticket
|
||||
]);
|
||||
return $this->success($ticket);
|
||||
}
|
||||
$current = $request->input('current') ? $request->input('current') : 1;
|
||||
$pageSize = $request->input('pageSize') >= 10 ? $request->input('pageSize') : 10;
|
||||
@ -48,39 +46,37 @@ class TicketController extends Controller
|
||||
|
||||
public function reply(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
}
|
||||
if (empty($request->input('message'))) {
|
||||
throw new ApiException(500, '消息不能为空');
|
||||
}
|
||||
$request->validate([
|
||||
'id' => 'required',
|
||||
'message' => 'required|string'
|
||||
],[
|
||||
'id.required' => '工单ID不能为空',
|
||||
'message.required' => '消息不能为空'
|
||||
]);
|
||||
$ticketService = new TicketService();
|
||||
$ticketService->replyByAdmin(
|
||||
$request->input('id'),
|
||||
$request->input('message'),
|
||||
$request->user['id']
|
||||
);
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function close(Request $request)
|
||||
{
|
||||
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
return $this->fail([422,'工单ID不能为空']);
|
||||
}
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, '工单不存在');
|
||||
return $this->fail([400202,'工单不存在']);
|
||||
}
|
||||
$ticket->status = 1;
|
||||
if (!$ticket->save()) {
|
||||
throw new ApiException(500, '关闭失败');
|
||||
return $this->fail([500, '工单关闭失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -16,16 +16,14 @@ class UserController extends Controller
|
||||
public function getUserInfoById(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(422, '参数错误');
|
||||
return $this->fail([422,'用户ID不能为空']);
|
||||
}
|
||||
$user = User::where('is_admin', 0)
|
||||
->where('id', $request->input('id'))
|
||||
->where('is_staff', 0)
|
||||
->first();
|
||||
if (!$user) throw new ApiException(500, '用户不存在');
|
||||
return response([
|
||||
'data' => $user
|
||||
]);
|
||||
if (!$user) return $this->fail([400202,'用户不存在']);
|
||||
return $this->success($user);
|
||||
}
|
||||
|
||||
public function update(UserUpdate $request)
|
||||
@ -33,10 +31,10 @@ class UserController extends Controller
|
||||
$params = $request->validated();
|
||||
$user = User::find($request->input('id'));
|
||||
if (!$user) {
|
||||
throw new ApiException(500, '用户不存在');
|
||||
return $this->fail([400202,'用户不存在']);
|
||||
}
|
||||
if (User::where('email', $params['email'])->first() && $user->email !== $params['email']) {
|
||||
throw new ApiException(500, '邮箱已被使用');
|
||||
return $this->fail([400201,'邮箱已被使用']);
|
||||
}
|
||||
if (isset($params['password'])) {
|
||||
$params['password'] = password_hash($params['password'], PASSWORD_DEFAULT);
|
||||
@ -47,7 +45,7 @@ class UserController extends Controller
|
||||
if (isset($params['plan_id'])) {
|
||||
$plan = Plan::find($params['plan_id']);
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, '订阅计划不存在');
|
||||
return $this->fail([400202,'订阅不存在']);
|
||||
}
|
||||
$params['group_id'] = $plan->group_id;
|
||||
}
|
||||
@ -55,11 +53,10 @@ class UserController extends Controller
|
||||
try {
|
||||
$user->update($params);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '保存失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'更新失败']);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function sendMail(UserSendMail $request)
|
||||
@ -82,9 +79,7 @@ class UserController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function ban(Request $request)
|
||||
@ -98,11 +93,10 @@ class UserController extends Controller
|
||||
'banned' => 1
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, '处理失败');
|
||||
\Log::error($e);
|
||||
return $this->fail([500,'处理上失败']);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -12,21 +12,20 @@ class CommController extends Controller
|
||||
{
|
||||
public function config()
|
||||
{
|
||||
return response([
|
||||
'data' => [
|
||||
'is_telegram' => (int)admin_setting('telegram_bot_enable', 0),
|
||||
'telegram_discuss_link' => admin_setting('telegram_discuss_link'),
|
||||
'stripe_pk' => admin_setting('stripe_pk_live'),
|
||||
'withdraw_methods' => admin_setting('commission_withdraw_method', Dict::WITHDRAW_METHOD_WHITELIST_DEFAULT),
|
||||
'withdraw_close' => (int)admin_setting('withdraw_close_enable', 0),
|
||||
'currency' => admin_setting('currency', 'CNY'),
|
||||
'currency_symbol' => admin_setting('currency_symbol', '¥'),
|
||||
'commission_distribution_enable' => (int)admin_setting('commission_distribution_enable', 0),
|
||||
'commission_distribution_l1' => admin_setting('commission_distribution_l1'),
|
||||
'commission_distribution_l2' => admin_setting('commission_distribution_l2'),
|
||||
'commission_distribution_l3' => admin_setting('commission_distribution_l3')
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'is_telegram' => (int)admin_setting('telegram_bot_enable', 0),
|
||||
'telegram_discuss_link' => admin_setting('telegram_discuss_link'),
|
||||
'stripe_pk' => admin_setting('stripe_pk_live'),
|
||||
'withdraw_methods' => admin_setting('commission_withdraw_method', Dict::WITHDRAW_METHOD_WHITELIST_DEFAULT),
|
||||
'withdraw_close' => (int)admin_setting('withdraw_close_enable', 0),
|
||||
'currency' => admin_setting('currency', 'CNY'),
|
||||
'currency_symbol' => admin_setting('currency_symbol', '¥'),
|
||||
'commission_distribution_enable' => (int)admin_setting('commission_distribution_enable', 0),
|
||||
'commission_distribution_l1' => admin_setting('commission_distribution_l1'),
|
||||
'commission_distribution_l2' => admin_setting('commission_distribution_l2'),
|
||||
'commission_distribution_l3' => admin_setting('commission_distribution_l3')
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function getStripePublicKey(Request $request)
|
||||
@ -34,9 +33,7 @@ class CommController extends Controller
|
||||
$payment = Payment::where('id', $request->input('id'))
|
||||
->where('payment', 'StripeCredit')
|
||||
->first();
|
||||
if (!$payment) throw new ApiException(500, 'payment is not found');
|
||||
return response([
|
||||
'data' => $payment->config['stripe_pk_live']
|
||||
]);
|
||||
if (!$payment) throw new ApiException('payment is not found');
|
||||
return $this->success($payment->config['stripe_pk_live']);
|
||||
}
|
||||
}
|
||||
|
@ -12,14 +12,12 @@ class CouponController extends Controller
|
||||
public function check(Request $request)
|
||||
{
|
||||
if (empty($request->input('code'))) {
|
||||
throw new ApiException(500, __('Coupon cannot be empty'));
|
||||
return $this->fail([422,__('Coupon cannot be empty')]);
|
||||
}
|
||||
$couponService = new CouponService($request->input('code'));
|
||||
$couponService->setPlanId($request->input('plan_id'));
|
||||
$couponService->setUserId($request->user['id']);
|
||||
$couponService->check();
|
||||
return response([
|
||||
'data' => $couponService->getCoupon()
|
||||
]);
|
||||
return $this->success($couponService->getCoupon());
|
||||
}
|
||||
}
|
||||
|
@ -16,14 +16,12 @@ class InviteController extends Controller
|
||||
public function save(Request $request)
|
||||
{
|
||||
if (InviteCode::where('user_id', $request->user['id'])->where('status', 0)->count() >= admin_setting('invite_gen_limit', 5)) {
|
||||
throw new ApiException(500, __('The maximum number of creations has been reached'));
|
||||
return $this->fail([400,__('The maximum number of creations has been reached')]);
|
||||
}
|
||||
$inviteCode = new InviteCode();
|
||||
$inviteCode->user_id = $request->user['id'];
|
||||
$inviteCode->code = Helper::randomChar(8);
|
||||
return response([
|
||||
'data' => $inviteCode->save()
|
||||
]);
|
||||
return $this->success($inviteCode->save());
|
||||
}
|
||||
|
||||
public function details(Request $request)
|
||||
@ -79,11 +77,12 @@ class InviteController extends Controller
|
||||
//可用佣金
|
||||
(int)$user->commission_balance
|
||||
];
|
||||
return response([
|
||||
$data = [
|
||||
'data' => [
|
||||
'codes' => $codes,
|
||||
'stat' => $stat
|
||||
]
|
||||
]);
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
}
|
||||
|
@ -19,7 +19,7 @@ class KnowledgeController extends Controller
|
||||
->where('show', 1)
|
||||
->first()
|
||||
->toArray();
|
||||
if (!$knowledge) throw new ApiException(500, __('Article does not exist'));
|
||||
if (!$knowledge) return $this->fail([500, __('Article does not exist')]);
|
||||
$user = User::find($request->user['id']);
|
||||
$userService = new UserService();
|
||||
if (!$userService->isAvailable($user)) {
|
||||
@ -38,9 +38,7 @@ class KnowledgeController extends Controller
|
||||
),
|
||||
$knowledge['body']
|
||||
);
|
||||
return response([
|
||||
'data' => $knowledge
|
||||
]);
|
||||
return $this->success($knowledge);
|
||||
}
|
||||
$builder = Knowledge::select(['id', 'category', 'title', 'updated_at'])
|
||||
->where('language', $request->input('language'))
|
||||
@ -56,9 +54,7 @@ class KnowledgeController extends Controller
|
||||
|
||||
$knowledges = $builder->get()
|
||||
->groupBy('category');
|
||||
return response([
|
||||
'data' => $knowledges
|
||||
]);
|
||||
return $this->success($knowledges);
|
||||
}
|
||||
|
||||
private function formatAccessData(&$body)
|
||||
|
@ -16,14 +16,7 @@ use App\Services\PlanService;
|
||||
use App\Services\UserService;
|
||||
use App\Utils\Helper;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Library\BitpayX;
|
||||
use Library\Epay;
|
||||
use Library\MGate;
|
||||
use Omnipay\Omnipay;
|
||||
use Stripe\Source;
|
||||
use Stripe\Stripe;
|
||||
|
||||
class OrderController extends Controller
|
||||
{
|
||||
@ -43,9 +36,7 @@ class OrderController extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $order->makeHidden(['id', 'user_id'])
|
||||
]);
|
||||
return $this->success($order->makeHidden(['id', 'user_id']));
|
||||
}
|
||||
|
||||
public function detail(Request $request)
|
||||
@ -54,26 +45,24 @@ class OrderController extends Controller
|
||||
->where('trade_no', $request->input('trade_no'))
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, __('Order does not exist or has been paid'));
|
||||
return $this->fail([400, __('Order does not exist or has been paid')]);
|
||||
}
|
||||
$order['plan'] = Plan::find($order->plan_id);
|
||||
$order['try_out_plan_id'] = (int)admin_setting('try_out_plan_id');
|
||||
if (!$order['plan']) {
|
||||
throw new ApiException(500, __('Subscription plan does not exist'));
|
||||
return $this->fail([400, __('Subscription plan does not exist')]);
|
||||
}
|
||||
if ($order->surplus_order_ids) {
|
||||
$order['surplus_orders'] = Order::whereIn('id', $order->surplus_order_ids)->get();
|
||||
}
|
||||
return response([
|
||||
'data' => $order
|
||||
]);
|
||||
return $this->success($order);
|
||||
}
|
||||
|
||||
public function save(OrderSave $request)
|
||||
{
|
||||
$userService = new UserService();
|
||||
if ($userService->isNotCompleteOrderByUserId($request->user['id'])) {
|
||||
throw new ApiException(500, __('You have an unpaid or pending order, please try again later or cancel it'));
|
||||
return $this->fail([400, __('You have an unpaid or pending order, please try again later or cancel it')]);
|
||||
}
|
||||
|
||||
$planService = new PlanService($request->input('plan_id'));
|
||||
@ -82,36 +71,36 @@ class OrderController extends Controller
|
||||
$user = User::find($request->user['id']);
|
||||
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, __('Subscription plan does not exist'));
|
||||
return $this->fail([400, __('Subscription plan does not exist')]);
|
||||
}
|
||||
|
||||
if ($user->plan_id !== $plan->id && !$planService->haveCapacity() && $request->input('period') !== 'reset_price') {
|
||||
throw new ApiException(500, __('Current product is sold out'));
|
||||
throw new ApiException(__('Current product is sold out'));
|
||||
}
|
||||
|
||||
if ($plan[$request->input('period')] === NULL) {
|
||||
throw new ApiException(500, __('This payment period cannot be purchased, please choose another period'));
|
||||
return $this->fail([400, __('This payment period cannot be purchased, please choose another period')]);
|
||||
}
|
||||
|
||||
if ($request->input('period') === 'reset_price') {
|
||||
if (!$userService->isAvailable($user) || $plan->id !== $user->plan_id) {
|
||||
throw new ApiException(500, __('Subscription has expired or no active subscription, unable to purchase Data Reset Package'));
|
||||
return $this->fail([400, __('Subscription has expired or no active subscription, unable to purchase Data Reset Package')]);
|
||||
}
|
||||
}
|
||||
|
||||
if ((!$plan->show && !$plan->renew) || (!$plan->show && $user->plan_id !== $plan->id)) {
|
||||
if ($request->input('period') !== 'reset_price') {
|
||||
throw new ApiException(500, __('This subscription has been sold out, please choose another subscription'));
|
||||
return $this->fail([400, __('This subscription has been sold out, please choose another subscription')]);
|
||||
}
|
||||
}
|
||||
|
||||
if (!$plan->renew && $user->plan_id == $plan->id && $request->input('period') !== 'reset_price') {
|
||||
throw new ApiException(500, __('This subscription cannot be renewed, please change to another subscription'));
|
||||
return $this->fail([400, __('This subscription cannot be renewed, please change to another subscription')]);
|
||||
}
|
||||
|
||||
|
||||
if (!$plan->show && $plan->renew && !$userService->isAvailable($user)) {
|
||||
throw new ApiException(500, __('This subscription has expired, please change to another subscription'));
|
||||
return $this->fail([400, __('This subscription has expired, please change to another subscription')]);
|
||||
}
|
||||
|
||||
try{
|
||||
@ -127,7 +116,7 @@ class OrderController extends Controller
|
||||
if ($request->input('coupon_code')) {
|
||||
$couponService = new CouponService($request->input('coupon_code'));
|
||||
if (!$couponService->use($order)) {
|
||||
throw new ApiException(500, __('Coupon failed'));
|
||||
return $this->fail([400, __('Coupon failed')]);
|
||||
}
|
||||
$order->coupon_id = $couponService->getId();
|
||||
}
|
||||
@ -141,13 +130,13 @@ class OrderController extends Controller
|
||||
$userService = new UserService();
|
||||
if ($remainingBalance > 0) {
|
||||
if (!$userService->addBalance($order->user_id, - $order->total_amount)) {
|
||||
throw new ApiException(500, __('Insufficient balance'));
|
||||
return $this->fail([400, __('Insufficient balance')]);
|
||||
}
|
||||
$order->balance_amount = $order->total_amount;
|
||||
$order->total_amount = 0;
|
||||
} else {
|
||||
if (!$userService->addBalance($order->user_id, - $user->balance)) {
|
||||
throw new ApiException(500, __('Insufficient balance'));
|
||||
return $this->fail([400, __('Insufficient balance')]);
|
||||
}
|
||||
$order->balance_amount = $user->balance;
|
||||
$order->total_amount = $order->total_amount - $user->balance;
|
||||
@ -155,7 +144,7 @@ class OrderController extends Controller
|
||||
}
|
||||
|
||||
if (!$order->save()) {
|
||||
throw new ApiException(500, __('Failed to create order'));
|
||||
return $this->fail([400, __('Failed to create order')]);
|
||||
}
|
||||
DB::commit();
|
||||
}catch (\Exception $e){
|
||||
@ -163,9 +152,7 @@ class OrderController extends Controller
|
||||
throw $e;
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => $order->trade_no
|
||||
]);
|
||||
return $this->success($order->trade_no);
|
||||
}
|
||||
|
||||
public function checkout(Request $request)
|
||||
@ -177,26 +164,26 @@ class OrderController extends Controller
|
||||
->where('status', 0)
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, __('Order does not exist or has been paid'));
|
||||
return $this->fail([400, __('Order does not exist or has been paid')]);
|
||||
}
|
||||
// free process
|
||||
if ($order->total_amount <= 0) {
|
||||
$orderService = new OrderService($order);
|
||||
if (!$orderService->paid($order->trade_no)) throw new ApiException(500, '');
|
||||
if (!$orderService->paid($order->trade_no)) return $this->fail([400, '支付失败']);
|
||||
return response([
|
||||
'type' => -1,
|
||||
'data' => true
|
||||
]);
|
||||
}
|
||||
$payment = Payment::find($method);
|
||||
if (!$payment || $payment->enable !== 1) throw new ApiException(500, __('Payment method is not available'));
|
||||
if (!$payment || $payment->enable !== 1) return $this->fail([400, __('Payment method is not available')]);
|
||||
$paymentService = new PaymentService($payment->payment, $payment->id);
|
||||
$order->handling_amount = NULL;
|
||||
if ($payment->handling_fee_fixed || $payment->handling_fee_percent) {
|
||||
$order->handling_amount = round(($order->total_amount * ($payment->handling_fee_percent / 100)) + $payment->handling_fee_fixed);
|
||||
}
|
||||
$order->payment_id = $method;
|
||||
if (!$order->save()) throw new ApiException(500, __('Request failed, please try again later'));
|
||||
if (!$order->save()) return $this->fail([400, __('Request failed, please try again later')]);
|
||||
$result = $paymentService->pay([
|
||||
'trade_no' => $tradeNo,
|
||||
'total_amount' => isset($order->handling_amount) ? ($order->total_amount + $order->handling_amount) : $order->total_amount,
|
||||
@ -216,11 +203,9 @@ class OrderController extends Controller
|
||||
->where('user_id', $request->user['id'])
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, __('Order does not exist'));
|
||||
return $this->fail([400, __('Order does not exist')]);
|
||||
}
|
||||
return response([
|
||||
'data' => $order->status
|
||||
]);
|
||||
return $this->success($order->status);
|
||||
}
|
||||
|
||||
public function getPaymentMethod()
|
||||
@ -237,31 +222,27 @@ class OrderController extends Controller
|
||||
->orderBy('sort', 'ASC')
|
||||
->get();
|
||||
|
||||
return response([
|
||||
'data' => $methods
|
||||
]);
|
||||
return $this->success($methods);
|
||||
}
|
||||
|
||||
public function cancel(Request $request)
|
||||
{
|
||||
if (empty($request->input('trade_no'))) {
|
||||
throw new ApiException(500, __('Invalid parameter'));
|
||||
return $this->fail([422, __('Invalid parameter')]);
|
||||
}
|
||||
$order = Order::where('trade_no', $request->input('trade_no'))
|
||||
->where('user_id', $request->user['id'])
|
||||
->first();
|
||||
if (!$order) {
|
||||
throw new ApiException(500, __('Order does not exist'));
|
||||
return $this->fail([400, __('Order does not exist')]);
|
||||
}
|
||||
if ($order->status !== 0) {
|
||||
throw new ApiException(500, __('You can only cancel pending orders'));
|
||||
return $this->fail([400, __('You can only cancel pending orders')]);
|
||||
}
|
||||
$orderService = new OrderService($order);
|
||||
if (!$orderService->cancel()) {
|
||||
throw new ApiException(500, __('Cancel failed'));
|
||||
return $this->fail([400, __('Cancel failed')]);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ use App\Models\Plan;
|
||||
use App\Models\User;
|
||||
use App\Services\PlanService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class PlanController extends Controller
|
||||
{
|
||||
@ -18,14 +17,12 @@ class PlanController extends Controller
|
||||
if ($request->input('id')) {
|
||||
$plan = Plan::where('id', $request->input('id'))->first();
|
||||
if (!$plan) {
|
||||
throw new ApiException(500, __('Subscription plan does not exist'));
|
||||
return $this->fail([400, __('Subscription plan does not exist')]);
|
||||
}
|
||||
if ((!$plan->show && !$plan->renew) || (!$plan->show && $user->plan_id !== $plan->id)) {
|
||||
throw new ApiException(500, __('Subscription plan does not exist'));
|
||||
return $this->fail([400, __('Subscription plan does not exist')]);
|
||||
}
|
||||
return response([
|
||||
'data' => $plan
|
||||
]);
|
||||
return $this->success($plan);
|
||||
}
|
||||
|
||||
$counts = PlanService::countActiveUsers();
|
||||
@ -37,8 +34,6 @@ class PlanController extends Controller
|
||||
if (!isset($counts[$plans[$k]->id])) continue;
|
||||
$plans[$k]->capacity_limit = $plans[$k]->capacity_limit - $counts[$plans[$k]->id]->count;
|
||||
}
|
||||
return response([
|
||||
'data' => $plans
|
||||
]);
|
||||
return $this->success($plans);
|
||||
}
|
||||
}
|
||||
|
@ -37,8 +37,6 @@ class StatController extends Controller
|
||||
}
|
||||
};
|
||||
|
||||
return response([
|
||||
'data' => $records
|
||||
]);
|
||||
return $this->success($records);
|
||||
}
|
||||
}
|
||||
|
@ -13,11 +13,10 @@ class TelegramController extends Controller
|
||||
{
|
||||
$telegramService = new TelegramService();
|
||||
$response = $telegramService->getMe();
|
||||
return response([
|
||||
'data' => [
|
||||
'username' => $response->result->username
|
||||
]
|
||||
]);
|
||||
$data = [
|
||||
'username' => $response->result->username
|
||||
];
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function unbind(Request $request)
|
||||
|
@ -24,7 +24,7 @@ class TicketController extends Controller
|
||||
->where('user_id', $request->user['id'])
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, __('Ticket does not exist'));
|
||||
return $this->fail([400, __('Ticket does not exist')]);
|
||||
}
|
||||
$ticket['message'] = TicketMessage::where('ticket_id', $ticket->id)->get();
|
||||
for ($i = 0; $i < count($ticket['message']); $i++) {
|
||||
@ -34,16 +34,12 @@ class TicketController extends Controller
|
||||
$ticket['message'][$i]['is_me'] = false;
|
||||
}
|
||||
}
|
||||
return response([
|
||||
'data' => $ticket
|
||||
]);
|
||||
return $this->success($ticket);
|
||||
}
|
||||
$ticket = Ticket::where('user_id', $request->user['id'])
|
||||
->orderBy('created_at', 'DESC')
|
||||
->get();
|
||||
return response([
|
||||
'data' => $ticket
|
||||
]);
|
||||
return $this->success($ticket);
|
||||
}
|
||||
|
||||
public function save(TicketSave $request)
|
||||
@ -51,7 +47,7 @@ class TicketController extends Controller
|
||||
try{
|
||||
DB::beginTransaction();
|
||||
if ((int)Ticket::where('status', 0)->where('user_id', $request->user['id'])->lockForUpdate()->count()) {
|
||||
throw new ApiException(500, __('There are other unresolved tickets'));
|
||||
return $this->fail([400, __('There are other unresolved tickets')]);
|
||||
}
|
||||
$ticket = Ticket::create(array_merge($request->only([
|
||||
'subject',
|
||||
@ -60,7 +56,7 @@ class TicketController extends Controller
|
||||
'user_id' => $request->user['id']
|
||||
]));
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, __('Failed to open ticket'));
|
||||
return $this->fail([400, __('Failed to open ticket')]);
|
||||
}
|
||||
$ticketMessage = TicketMessage::create([
|
||||
'user_id' => $request->user['id'],
|
||||
@ -68,7 +64,7 @@ class TicketController extends Controller
|
||||
'message' => $request->input('message')
|
||||
]);
|
||||
if (!$ticketMessage) {
|
||||
throw new ApiException(500, __('Failed to open ticket'));
|
||||
return $this->fail([400, __('Failed to open ticket')]);
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
@ -76,30 +72,28 @@ class TicketController extends Controller
|
||||
throw $e;
|
||||
}
|
||||
$this->sendNotify($ticket, $request->input('message'));
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function reply(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(500, __('Invalid parameter'));
|
||||
return $this->fail([400, __('Invalid parameter')]);
|
||||
}
|
||||
if (empty($request->input('message'))) {
|
||||
throw new ApiException(500, __('Message cannot be empty'));
|
||||
return $this->fail([400, __('Message cannot be empty')]);
|
||||
}
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->where('user_id', $request->user['id'])
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, __('Ticket does not exist'));
|
||||
return $this->fail([400, __('Ticket does not exist')]);
|
||||
}
|
||||
if ($ticket->status) {
|
||||
throw new ApiException(500, __('The ticket is closed and cannot be replied'));
|
||||
return $this->fail([400, __('The ticket is closed and cannot be replied')]);
|
||||
}
|
||||
if ($request->user['id'] == $this->getLastMessage($ticket->id)->user_id) {
|
||||
throw new ApiException(500, __('Please wait for the technical enginneer to reply'));
|
||||
return $this->fail([400, __('Please wait for the technical enginneer to reply')]);
|
||||
}
|
||||
$ticketService = new TicketService();
|
||||
if (!$ticketService->reply(
|
||||
@ -107,33 +101,29 @@ class TicketController extends Controller
|
||||
$request->input('message'),
|
||||
$request->user['id']
|
||||
)) {
|
||||
throw new ApiException(500, __('Ticket reply failed'));
|
||||
return $this->fail([400, __('Ticket reply failed')]);
|
||||
}
|
||||
$this->sendNotify($ticket, $request->input('message'));
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
|
||||
public function close(Request $request)
|
||||
{
|
||||
if (empty($request->input('id'))) {
|
||||
throw new ApiException(500, __('Invalid parameter'));
|
||||
return $this->fail([422, __('Invalid parameter')]);
|
||||
}
|
||||
$ticket = Ticket::where('id', $request->input('id'))
|
||||
->where('user_id', $request->user['id'])
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, __('Ticket does not exist'));
|
||||
return $this->fail([400, __('Ticket does not exist')]);
|
||||
}
|
||||
$ticket->status = 1;
|
||||
if (!$ticket->save()) {
|
||||
throw new ApiException(500, __('Close failed'));
|
||||
return $this->fail([500, __('Close failed')]);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
private function getLastMessage($ticketId)
|
||||
@ -146,18 +136,18 @@ class TicketController extends Controller
|
||||
public function withdraw(TicketWithdraw $request)
|
||||
{
|
||||
if ((int)admin_setting('withdraw_close_enable', 0)) {
|
||||
throw new ApiException(500, 'user.ticket.withdraw.not_support_withdraw');
|
||||
return $this->fail([400, 'Unsupported withdraw']);
|
||||
}
|
||||
if (!in_array(
|
||||
$request->input('withdraw_method'),
|
||||
admin_setting('commission_withdraw_method',Dict::WITHDRAW_METHOD_WHITELIST_DEFAULT)
|
||||
)) {
|
||||
throw new ApiException(500, __('Unsupported withdrawal method'));
|
||||
return $this->fail([422, __('Unsupported withdrawal method')]);
|
||||
}
|
||||
$user = User::find($request->user['id']);
|
||||
$limit = admin_setting('commission_withdraw_limit', 100);
|
||||
if ($limit > ($user->commission_balance / 100)) {
|
||||
throw new ApiException(500, __('The current required minimum withdrawal commission is :limit', ['limit' => $limit]));
|
||||
return $this->fail([422, __('The current required minimum withdrawal commission is :limit', ['limit' => $limit])]);
|
||||
}
|
||||
try{
|
||||
DB::beginTransaction();
|
||||
@ -168,7 +158,7 @@ class TicketController extends Controller
|
||||
'user_id' => $request->user['id']
|
||||
]);
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, __('Failed to open ticket'));
|
||||
return $this->fail([400, __('Failed to open ticket')]);
|
||||
}
|
||||
$message = sprintf("%s\r\n%s",
|
||||
__('Withdrawal method') . ":" . $request->input('withdraw_method'),
|
||||
@ -180,7 +170,7 @@ class TicketController extends Controller
|
||||
'message' => $message
|
||||
]);
|
||||
if (!$ticketMessage) {
|
||||
throw new ApiException(500, __('Failed to open ticket'));
|
||||
return $this->fail([400, __('Failed to open ticket')]);
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
@ -188,9 +178,7 @@ class TicketController extends Controller
|
||||
throw $e;
|
||||
}
|
||||
$this->sendNotify($ticket, $message);
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
private function sendNotify(Ticket $ticket, string $message)
|
||||
|
@ -24,24 +24,20 @@ class UserController extends Controller
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
$authService = new AuthService($user);
|
||||
return response([
|
||||
'data' => $authService->getSessions()
|
||||
]);
|
||||
return $this->success($authService->getSessions());
|
||||
}
|
||||
|
||||
public function removeActiveSession(Request $request)
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
$authService = new AuthService($user);
|
||||
return response([
|
||||
'data' => $authService->removeSession($request->input('session_id'))
|
||||
]);
|
||||
return $this->success($authService->removeSession($request->input('session_id')));
|
||||
}
|
||||
|
||||
public function checkLogin(Request $request)
|
||||
@ -52,16 +48,14 @@ class UserController extends Controller
|
||||
if ($request->user['is_admin']) {
|
||||
$data['is_admin'] = true;
|
||||
}
|
||||
return response([
|
||||
'data' => $data
|
||||
]);
|
||||
return $this->success($data);
|
||||
}
|
||||
|
||||
public function changePassword(UserChangePassword $request)
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
if (!Helper::multiPasswordVerify(
|
||||
$user->password_algo,
|
||||
@ -69,17 +63,15 @@ class UserController extends Controller
|
||||
$request->input('old_password'),
|
||||
$user->password)
|
||||
) {
|
||||
throw new ApiException(500, __('The old password is wrong'));
|
||||
return $this->fail([400, __('The old password is wrong')]);
|
||||
}
|
||||
$user->password = password_hash($request->input('new_password'), PASSWORD_DEFAULT);
|
||||
$user->password_algo = NULL;
|
||||
$user->password_salt = NULL;
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, __('Save failed'));
|
||||
return $this->fail([400, __('Save failed')]);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function info(Request $request)
|
||||
@ -104,12 +96,10 @@ class UserController extends Controller
|
||||
])
|
||||
->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
$user['avatar_url'] = 'https://cdn.v2ex.com/gravatar/' . md5($user->email) . '?s=64&d=identicon';
|
||||
return response([
|
||||
'data' => $user
|
||||
]);
|
||||
return $this->success($user);
|
||||
}
|
||||
|
||||
public function getStat(Request $request)
|
||||
@ -124,9 +114,7 @@ class UserController extends Controller
|
||||
User::where('invite_user_id', $request->user['id'])
|
||||
->count()
|
||||
];
|
||||
return response([
|
||||
'data' => $stat
|
||||
]);
|
||||
return $this->success($stat);
|
||||
}
|
||||
|
||||
public function getSubscribe(Request $request)
|
||||
@ -144,36 +132,32 @@ class UserController extends Controller
|
||||
])
|
||||
->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
if ($user->plan_id) {
|
||||
$user['plan'] = Plan::find($user->plan_id);
|
||||
if (!$user['plan']) {
|
||||
throw new ApiException(500, __('Subscription plan does not exist'));
|
||||
return $this->fail([400, __('Subscription plan does not exist')]);
|
||||
}
|
||||
}
|
||||
$user['subscribe_url'] = Helper::getSubscribeUrl("/api/v1/client/subscribe?token={$user['token']}");
|
||||
$userService = new UserService();
|
||||
$user['reset_day'] = $userService->getResetDay($user);
|
||||
return response([
|
||||
'data' => $user
|
||||
]);
|
||||
return $this->success($user);
|
||||
}
|
||||
|
||||
public function resetSecurity(Request $request)
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
$user->uuid = Helper::guid(true);
|
||||
$user->token = Helper::guid();
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, __('Reset failed'));
|
||||
return $this->fail([400, __('Reset failed')]);
|
||||
}
|
||||
return response([
|
||||
'data' => Helper::getSubscribeUrl('/api/v1/client/subscribe?token=' . $user->token)
|
||||
]);
|
||||
return $this->success(Helper::getSubscribeUrl('/api/v1/client/subscribe?token=' . $user->token));
|
||||
}
|
||||
|
||||
public function update(UserUpdate $request)
|
||||
@ -185,43 +169,39 @@ class UserController extends Controller
|
||||
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
try {
|
||||
$user->update($updateData);
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, __('Save failed'));
|
||||
return $this->fail([400, __('Save failed')]);
|
||||
}
|
||||
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function transfer(UserTransfer $request)
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
if ($request->input('transfer_amount') > $user->commission_balance) {
|
||||
throw new ApiException(500, __('Insufficient commission balance'));
|
||||
return $this->fail([400, __('Insufficient commission balance')]);
|
||||
}
|
||||
$user->commission_balance = $user->commission_balance - $request->input('transfer_amount');
|
||||
$user->balance = $user->balance + $request->input('transfer_amount');
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, __('Transfer failed'));
|
||||
return $this->fail([400, __('Transfer failed')]);
|
||||
}
|
||||
return response([
|
||||
'data' => true
|
||||
]);
|
||||
return $this->success(true);
|
||||
}
|
||||
|
||||
public function getQuickLoginUrl(Request $request)
|
||||
{
|
||||
$user = User::find($request->user['id']);
|
||||
if (!$user) {
|
||||
throw new ApiException(500, __('The user does not exist'));
|
||||
return $this->fail([400, __('The user does not exist')]);
|
||||
}
|
||||
|
||||
$code = Helper::guid();
|
||||
@ -233,8 +213,6 @@ class UserController extends Controller
|
||||
} else {
|
||||
$url = url($redirect);
|
||||
}
|
||||
return response([
|
||||
'data' => $url
|
||||
]);
|
||||
return $this->success($url);
|
||||
}
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ class Admin
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$authorization = $request->input('auth_data') ?? $request->header('authorization');
|
||||
if (!$authorization) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$authorization) throw new ApiException('未登录或登陆已过期', 403);
|
||||
|
||||
$user = AuthService::decryptAuthData($authorization);
|
||||
if (!$user || !$user['is_admin']) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$user || !$user['is_admin']) throw new ApiException('未登录或登陆已过期',403);
|
||||
$request->merge([
|
||||
'user' => $user
|
||||
]);
|
||||
|
@ -21,11 +21,11 @@ class Client
|
||||
{
|
||||
$token = $request->input('token');
|
||||
if (empty($token)) {
|
||||
throw new ApiException(403, 'token is null');
|
||||
throw new ApiException('token is null',403);
|
||||
}
|
||||
$user = User::where('token', $token)->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(403, 'token is error');
|
||||
throw new ApiException('token is error',403);
|
||||
}
|
||||
$request->merge([
|
||||
'user' => $user
|
||||
|
@ -18,10 +18,10 @@ class Staff
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$authorization = $request->input('auth_data') ?? $request->header('authorization');
|
||||
if (!$authorization) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$authorization) throw new ApiException( '未登录或登陆已过期', 403);
|
||||
|
||||
$user = AuthService::decryptAuthData($authorization);
|
||||
if (!$user || !$user['is_staff']) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$user || !$user['is_staff']) throw new ApiException('未登录或登陆已过期', 403);
|
||||
$request->merge([
|
||||
'user' => $user
|
||||
]);
|
||||
|
@ -19,10 +19,10 @@ class User
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
$authorization = $request->input('auth_data') ?? $request->header('authorization');
|
||||
if (!$authorization) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$authorization) throw new ApiException( '未登录或登陆已过期', 403);
|
||||
|
||||
$user = AuthService::decryptAuthData($authorization);
|
||||
if (!$user) throw new ApiException(403, '未登录或登陆已过期');
|
||||
if (!$user) throw new ApiException('未登录或登陆已过期', 403);
|
||||
$request->merge([
|
||||
'user' => $user
|
||||
]);
|
||||
|
@ -15,7 +15,7 @@ class ServerRoute
|
||||
$router->any('/{class}/{action}', function($class, $action) {
|
||||
$controllerClass = "\\App\\Http\\Controllers\\V1\\Server\\" . ucfirst($class) . "Controller";
|
||||
if(!(class_exists($controllerClass) && method_exists($controllerClass, $action))){
|
||||
throw new ApiException(404,'Not Found');
|
||||
throw new ApiException('Not Found',404);
|
||||
};
|
||||
$ctrl = \App::make($controllerClass);
|
||||
return \App::call([$ctrl, $action]);
|
||||
|
@ -13,4 +13,11 @@ class User extends Model
|
||||
'created_at' => 'timestamp',
|
||||
'updated_at' => 'timestamp'
|
||||
];
|
||||
|
||||
|
||||
// 获取邀请人信息
|
||||
public function invite_user()
|
||||
{
|
||||
return $this->belongsTo(self::class, 'invite_user_id', 'id');
|
||||
}
|
||||
}
|
||||
|
@ -58,7 +58,8 @@ class AlipayF2F {
|
||||
'data' => $gateway->getQrCodeUrl()
|
||||
];
|
||||
} catch (\Exception $e) {
|
||||
throw new ApiException(500, $e->getMessage());
|
||||
\Log::error($e);
|
||||
throw new ApiException($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ class BTCPay {
|
||||
$ret = @json_decode($ret_raw, true);
|
||||
|
||||
if(empty($ret['checkoutLink'])) {
|
||||
throw new ApiException(500, "error!");
|
||||
throw new ApiException("error!");
|
||||
}
|
||||
return [
|
||||
'type' => 1, // Redirect to url
|
||||
@ -76,7 +76,7 @@ class BTCPay {
|
||||
$computedSignature = "sha256=" . \hash_hmac('sha256', $payload, $this->config['btcpay_webhook_key']);
|
||||
|
||||
if (!self::hashEqual($signraturHeader, $computedSignature)) {
|
||||
throw new ApiException(400, 'HMAC signature does not match');
|
||||
throw new ApiException('HMAC signature does not match',400);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -98,7 +98,6 @@ class BTCPay {
|
||||
'trade_no' => $out_trade_no,
|
||||
'callback_no' => $pay_trade_no
|
||||
];
|
||||
return response('success', 200);
|
||||
|
||||
}
|
||||
|
||||
|
@ -63,7 +63,7 @@ class CoinPayments {
|
||||
{
|
||||
|
||||
if (!isset($params['merchant']) || $params['merchant'] != trim($this->config['coinpayments_merchant_id'])) {
|
||||
throw new ApiException(500, 'No or incorrect Merchant ID passed');
|
||||
throw new ApiException('No or incorrect Merchant ID passed');
|
||||
}
|
||||
|
||||
$headers = getallheaders();
|
||||
@ -82,7 +82,7 @@ class CoinPayments {
|
||||
// }
|
||||
|
||||
if (!hash_equals($hmac, $signHeader)) {
|
||||
throw new ApiException(400, 'HMAC signature does not match');
|
||||
throw new ApiException('HMAC signature does not match', 400);
|
||||
}
|
||||
|
||||
// HMAC Signature verified at this point, load some variables.
|
||||
@ -96,7 +96,7 @@ class CoinPayments {
|
||||
];
|
||||
} else if ($status < 0) {
|
||||
//payment error, this is usually final but payments will sometimes be reopened if there was no exchange rate conversion or with seller consent
|
||||
throw new ApiException(500, 'Payment Timed Out or Error');
|
||||
throw new ApiException('Payment Timed Out or Error');
|
||||
} else {
|
||||
//payment is pending, you can optionally add a note to the order page
|
||||
return('IPN OK: pending');
|
||||
|
@ -51,7 +51,7 @@ class Coinbase {
|
||||
$ret = @json_decode($ret_raw, true);
|
||||
|
||||
if(empty($ret['data']['hosted_url'])) {
|
||||
throw new ApiException(500, "error!");
|
||||
throw new ApiException("error!");
|
||||
}
|
||||
return [
|
||||
'type' => 1,
|
||||
@ -71,7 +71,7 @@ class Coinbase {
|
||||
$computedSignature = \hash_hmac('sha256', $payload, $this->config['coinbase_webhook_key']);
|
||||
|
||||
if (!self::hashEqual($signatureHeader, $computedSignature)) {
|
||||
throw new ApiException(400, 'HMAC signature does not match');
|
||||
throw new ApiException( 'HMAC signature does not match', 400);
|
||||
}
|
||||
|
||||
$out_trade_no = $json_param['event']['data']['metadata']['outTradeNo'];
|
||||
@ -80,7 +80,6 @@ class Coinbase {
|
||||
'trade_no' => $out_trade_no,
|
||||
'callback_no' => $pay_trade_no
|
||||
];
|
||||
return response('success', 200);
|
||||
|
||||
}
|
||||
|
||||
|
@ -63,21 +63,21 @@ class MGate {
|
||||
$curl->post($this->config['mgate_url'] . '/v1/gateway/fetch', http_build_query($params));
|
||||
$result = $curl->response;
|
||||
if (!$result) {
|
||||
throw new ApiException(500, '网络异常');
|
||||
throw new ApiException('网络异常');
|
||||
}
|
||||
if ($curl->error) {
|
||||
if (isset($result->errors)) {
|
||||
$errors = (array)$result->errors;
|
||||
throw new ApiException(500, $errors[array_keys($errors)[0]][0]);
|
||||
throw new ApiException($errors[array_keys($errors)[0]][0]);
|
||||
}
|
||||
if (isset($result->message)) {
|
||||
throw new ApiException(500, $result->message);
|
||||
throw new ApiException($result->message);
|
||||
}
|
||||
throw new ApiException(500, '未知错误');
|
||||
throw new ApiException('未知错误');
|
||||
}
|
||||
$curl->close();
|
||||
if (!isset($result->data->trade_no)) {
|
||||
throw new ApiException(500, '接口请求失败');
|
||||
throw new ApiException('接口请求失败');
|
||||
}
|
||||
return [
|
||||
'type' => 1, // 0:qrcode 1:url
|
||||
|
@ -41,7 +41,7 @@ class StripeAlipay {
|
||||
$currency = $this->config['currency'];
|
||||
$exchange = $this->exchange('CNY', strtoupper($currency));
|
||||
if (!$exchange) {
|
||||
throw new ApiException(500, __('Currency conversion has timed out, please try again later'));
|
||||
throw new ApiException(__('Currency conversion has timed out, please try again later'));
|
||||
}
|
||||
Stripe::setApiKey($this->config['stripe_sk_live']);
|
||||
$source = Source::create([
|
||||
@ -59,7 +59,7 @@ class StripeAlipay {
|
||||
]
|
||||
]);
|
||||
if (!$source['redirect']['url']) {
|
||||
throw new ApiException(500, __('Payment gateway request failed'));
|
||||
throw new ApiException(__('Payment gateway request failed'));
|
||||
}
|
||||
return [
|
||||
'type' => 1,
|
||||
@ -77,7 +77,7 @@ class StripeAlipay {
|
||||
$this->config['stripe_webhook_key']
|
||||
);
|
||||
} catch (\Stripe\Error\SignatureVerification $e) {
|
||||
throw new ApiException(400);
|
||||
abort(400);
|
||||
}
|
||||
switch ($event->type) {
|
||||
case 'source.chargeable':
|
||||
@ -104,7 +104,7 @@ class StripeAlipay {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new ApiException(500, 'event is not support');
|
||||
throw new ApiException('event is not support');
|
||||
}
|
||||
return('success');
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ class StripeCheckout {
|
||||
$currency = $this->config['currency'];
|
||||
$exchange = $this->exchange('CNY', strtoupper($currency));
|
||||
if (!$exchange) {
|
||||
throw new ApiException(500, __('Currency conversion has timed out, please try again later'));
|
||||
throw new ApiException(__('Currency conversion has timed out, please try again later'));
|
||||
}
|
||||
$customFieldName = isset($this->config['stripe_custom_field_name']) ? $this->config['stripe_custom_field_name'] : 'Contact Infomation';
|
||||
|
||||
@ -87,7 +87,7 @@ class StripeCheckout {
|
||||
$session = Session::create($params);
|
||||
} catch (\Exception $e) {
|
||||
info($e);
|
||||
throw new ApiException(500, "Failed to create order. Error: {$e->getMessage}");
|
||||
throw new ApiException("Failed to create order. Error: {$e->getMessage}");
|
||||
}
|
||||
return [
|
||||
'type' => 1, // 0:qrcode 1:url
|
||||
@ -105,7 +105,7 @@ class StripeCheckout {
|
||||
$this->config['stripe_webhook_key']
|
||||
);
|
||||
} catch (\Stripe\Error\SignatureVerification $e) {
|
||||
throw new ApiException(400);
|
||||
abort(400);
|
||||
}
|
||||
|
||||
switch ($event->type) {
|
||||
@ -126,7 +126,7 @@ class StripeCheckout {
|
||||
];
|
||||
break;
|
||||
default:
|
||||
throw new ApiException(500, 'event is not support');
|
||||
throw new ApiException('event is not support');
|
||||
}
|
||||
return('success');
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ class StripeCredit {
|
||||
$currency = $this->config['currency'];
|
||||
$exchange = $this->exchange('CNY', strtoupper($currency));
|
||||
if (!$exchange) {
|
||||
throw new ApiException(500, __('Currency conversion has timed out, please try again later'));
|
||||
throw new ApiException(__('Currency conversion has timed out, please try again later'));
|
||||
}
|
||||
Stripe::setApiKey($this->config['stripe_sk_live']);
|
||||
try {
|
||||
@ -63,10 +63,10 @@ class StripeCredit {
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
info($e);
|
||||
throw new ApiException(500, __('Payment failed. Please check your credit card information'));
|
||||
throw new ApiException(__('Payment failed. Please check your credit card information'));
|
||||
}
|
||||
if (!$charge->paid) {
|
||||
throw new ApiException(500, __('Payment failed. Please check your credit card information'));
|
||||
throw new ApiException(__('Payment failed. Please check your credit card information'));
|
||||
}
|
||||
return [
|
||||
'type' => 2,
|
||||
@ -84,7 +84,8 @@ class StripeCredit {
|
||||
$this->config['stripe_webhook_key']
|
||||
);
|
||||
} catch (\Stripe\Error\SignatureVerification $e) {
|
||||
throw new ApiException(400);
|
||||
\Log::error($e);
|
||||
abort(400);
|
||||
}
|
||||
switch ($event->type) {
|
||||
case 'source.chargeable':
|
||||
@ -111,7 +112,7 @@ class StripeCredit {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new ApiException(500, 'event is not support');
|
||||
throw new ApiException('event is not support');
|
||||
}
|
||||
return('success');
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ class StripeWepay {
|
||||
$currency = $this->config['currency'];
|
||||
$exchange = $this->exchange('CNY', strtoupper($currency));
|
||||
if (!$exchange) {
|
||||
throw new ApiException(500, __('Currency conversion has timed out, please try again later'));
|
||||
throw new ApiException(__('Currency conversion has timed out, please try again later'));
|
||||
}
|
||||
Stripe::setApiKey($this->config['stripe_sk_live']);
|
||||
$source = Source::create([
|
||||
@ -59,7 +59,7 @@ class StripeWepay {
|
||||
]
|
||||
]);
|
||||
if (!$source['wechat']['qr_code_url']) {
|
||||
throw new ApiException(500, __('Payment gateway request failed'));
|
||||
throw new ApiException(__('Payment gateway request failed'));
|
||||
}
|
||||
return [
|
||||
'type' => 0,
|
||||
@ -77,7 +77,7 @@ class StripeWepay {
|
||||
$this->config['stripe_webhook_key']
|
||||
);
|
||||
} catch (\Stripe\Error\SignatureVerification $e) {
|
||||
throw new ApiException(400);
|
||||
abort(400);
|
||||
}
|
||||
switch ($event->type) {
|
||||
case 'source.chargeable':
|
||||
@ -104,7 +104,7 @@ class StripeWepay {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new ApiException(500, 'event is not support');
|
||||
throw new ApiException('event is not support');
|
||||
}
|
||||
return('success');
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ class WechatPayNative {
|
||||
$response = $request->send();
|
||||
$response = $response->getData();
|
||||
if ($response['return_code'] !== 'SUCCESS') {
|
||||
throw new ApiException(500, $response['return_msg']);
|
||||
throw new ApiException($response['return_msg']);
|
||||
}
|
||||
return [
|
||||
'type' => 0,
|
||||
|
@ -13,25 +13,25 @@ class Bind extends Telegram {
|
||||
public function handle($message, $match = []) {
|
||||
if (!$message->is_private) return;
|
||||
if (!isset($message->args[0])) {
|
||||
throw new ApiException(422, '参数有误,请携带订阅地址发送');
|
||||
throw new ApiException('参数有误,请携带订阅地址发送', 422);
|
||||
}
|
||||
$subscribeUrl = $message->args[0];
|
||||
$subscribeUrl = parse_url($subscribeUrl);
|
||||
parse_str($subscribeUrl['query'], $query);
|
||||
$token = $query['token'];
|
||||
if (!$token) {
|
||||
throw new ApiException(500, '订阅地址无效');
|
||||
throw new ApiException('订阅地址无效');
|
||||
}
|
||||
$user = User::where('token', $token)->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, '用户不存在');
|
||||
throw new ApiException('用户不存在');
|
||||
}
|
||||
if ($user->telegram_id) {
|
||||
throw new ApiException(500, '该账号已经绑定了Telegram账号');
|
||||
throw new ApiException('该账号已经绑定了Telegram账号');
|
||||
}
|
||||
$user->telegram_id = $message->chat_id;
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, '设置失败');
|
||||
throw new ApiException('设置失败');
|
||||
}
|
||||
$telegramService = $this->telegramService;
|
||||
$telegramService->sendMessage($message->chat_id, '绑定成功');
|
||||
|
@ -21,7 +21,7 @@ class ReplyTicket extends Telegram {
|
||||
{
|
||||
$user = User::where('telegram_id', $msg->chat_id)->first();
|
||||
if (!$user) {
|
||||
throw new ApiException(500, '用户不存在');
|
||||
throw new ApiException('用户不存在');
|
||||
}
|
||||
if (!$msg->text) return;
|
||||
if (!($user->is_admin || $user->is_staff)) return;
|
||||
|
@ -20,7 +20,7 @@ class UnBind extends Telegram {
|
||||
}
|
||||
$user->telegram_id = NULL;
|
||||
if (!$user->save()) {
|
||||
throw new ApiException(500, '解绑失败');
|
||||
throw new ApiException('解绑失败');
|
||||
}
|
||||
$telegramService->sendMessage($message->chat_id, '解绑成功', 'markdown');
|
||||
}
|
||||
|
@ -86,30 +86,30 @@ class CouponService
|
||||
public function check()
|
||||
{
|
||||
if (!$this->coupon || !$this->coupon->show) {
|
||||
throw new ApiException(500, __('Invalid coupon'));
|
||||
throw new ApiException(__('Invalid coupon'));
|
||||
}
|
||||
if ($this->coupon->limit_use <= 0 && $this->coupon->limit_use !== NULL) {
|
||||
throw new ApiException(500, __('This coupon is no longer available'));
|
||||
throw new ApiException(__('This coupon is no longer available'));
|
||||
}
|
||||
if (time() < $this->coupon->started_at) {
|
||||
throw new ApiException(500, __('This coupon has not yet started'));
|
||||
throw new ApiException(__('This coupon has not yet started'));
|
||||
}
|
||||
if (time() > $this->coupon->ended_at) {
|
||||
throw new ApiException(500, __('This coupon has expired'));
|
||||
throw new ApiException(__('This coupon has expired'));
|
||||
}
|
||||
if ($this->coupon->limit_plan_ids && $this->planId) {
|
||||
if (!in_array($this->planId, $this->coupon->limit_plan_ids)) {
|
||||
throw new ApiException(500, __('The coupon code cannot be used for this subscription'));
|
||||
throw new ApiException(__('The coupon code cannot be used for this subscription'));
|
||||
}
|
||||
}
|
||||
if ($this->coupon->limit_period && $this->period) {
|
||||
if (!in_array($this->period, $this->coupon->limit_period)) {
|
||||
throw new ApiException(500, __('The coupon code cannot be used for this period'));
|
||||
throw new ApiException(__('The coupon code cannot be used for this period'));
|
||||
}
|
||||
}
|
||||
if ($this->coupon->limit_use_with_user !== NULL && $this->userId) {
|
||||
if (!$this->checkLimitUseWithUser()) {
|
||||
throw new ApiException(500, __('The coupon can only be used :limit_use_with_user per person', [
|
||||
throw new ApiException(__('The coupon can only be used :limit_use_with_user per person', [
|
||||
'limit_use_with_user' => $this->coupon->limit_use_with_user
|
||||
]));
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ class OrderService
|
||||
}catch(\Exception $e){
|
||||
DB::rollBack();
|
||||
\Log::error($e);
|
||||
throw new ApiException(500, '开通失败');
|
||||
throw new ApiException('开通失败');
|
||||
}
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ class OrderService
|
||||
if ($order->period === 'reset_price') {
|
||||
$order->type = 4;
|
||||
} else if ($user->plan_id !== NULL && $order->plan_id !== $user->plan_id && ($user->expired_at > time() || $user->expired_at === NULL)) {
|
||||
if (!(int)admin_setting('plan_change_enable', 1)) throw new ApiException(500, '目前不允许更改订阅,请联系客服或提交工单操作');
|
||||
if (!(int)admin_setting('plan_change_enable', 1)) throw new ApiException('目前不允许更改订阅,请联系客服或提交工单操作');
|
||||
$order->type = 3;
|
||||
if ((int)admin_setting('surplus_enable', 1)) $this->getSurplusValue($user, $order);
|
||||
if ($order->surplus_amount >= $order->total_amount) {
|
||||
|
@ -17,7 +17,7 @@ class PaymentService
|
||||
{
|
||||
$this->method = $method;
|
||||
$this->class = '\\App\\Payments\\' . $this->method;
|
||||
if (!class_exists($this->class)) throw new ApiException(500, 'gate is not found');
|
||||
if (!class_exists($this->class)) throw new ApiException('gate is not found');
|
||||
if ($id) $payment = Payment::find($id)->toArray();
|
||||
if ($uuid) $payment = Payment::where('uuid', $uuid)->first()->toArray();
|
||||
$this->config = [];
|
||||
@ -33,7 +33,7 @@ class PaymentService
|
||||
|
||||
public function notify($params)
|
||||
{
|
||||
if (!$this->config['enable']) throw new ApiException(500, 'gate is not enable');
|
||||
if (!$this->config['enable']) throw new ApiException('gate is not enable');
|
||||
return $this->payment->notify($params);
|
||||
}
|
||||
|
||||
|
@ -60,9 +60,9 @@ class TelegramService {
|
||||
$curl->get($this->api . $method . '?' . http_build_query($params));
|
||||
$response = $curl->response;
|
||||
$curl->close();
|
||||
if (!isset($response->ok)) throw new ApiException(500, '请求失败');
|
||||
if (!isset($response->ok)) throw new ApiException('请求失败');
|
||||
if (!$response->ok) {
|
||||
throw new ApiException(500, '来自TG的错误:' . $response->description);
|
||||
throw new ApiException('来自TG的错误:' . $response->description);
|
||||
}
|
||||
return $response;
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ class TicketService {
|
||||
$ticket = Ticket::where('id', $ticketId)
|
||||
->first();
|
||||
if (!$ticket) {
|
||||
throw new ApiException(500, '工单不存在');
|
||||
throw new ApiException('工单不存在');
|
||||
}
|
||||
$ticket->status = 0;
|
||||
try{
|
||||
@ -57,7 +57,7 @@ class TicketService {
|
||||
$ticket->reply_status = 1;
|
||||
}
|
||||
if (!$ticketMessage || !$ticket->save()) {
|
||||
throw new ApiException(500, '工单回复失败');
|
||||
throw new ApiException('工单回复失败');
|
||||
}
|
||||
DB::commit();
|
||||
}catch(\Exception $e){
|
||||
|
Loading…
Reference in New Issue
Block a user