Skip to content

Commit

Permalink
Merge pull request v2board#255 from v2board/dev
Browse files Browse the repository at this point in the history
1.3
  • Loading branch information
tokumeikoi committed Jun 1, 2020
2 parents b020f2c + c3e9240 commit 95e698d
Show file tree
Hide file tree
Showing 63 changed files with 2,215 additions and 1,396 deletions.
18 changes: 18 additions & 0 deletions app/Console/Commands/CheckCommission.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,24 @@ public function __construct()
* @return mixed
*/
public function handle()
{
$this->autoCheck();
$this->autoPayCommission();
}

public function autoCheck()
{
if ((int)config('v2board.commission_auto_check_enable', 1)) {
Order::where('commission_status', 0)
->where('status', 3)
->where('updated_at', '<=', strtotime('-3 day', time()))
->update([
'commission_status' => 1
]);
}
}

public function autoPayCommission()
{
$order = Order::where('commission_status', 1)
->where('status', 3)
Expand Down
59 changes: 42 additions & 17 deletions app/Console/Commands/CheckOrder.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use App\Models\Plan;
use App\Utils\Helper;
use App\Models\Coupon;
use Illuminate\Support\Facades\DB;

class CheckOrder extends Command
{
Expand Down Expand Up @@ -65,10 +66,48 @@ private function orderHandle(Order $order)
{
$user = User::find($order->user_id);
$plan = Plan::find($order->plan_id);
if ((string)$order->cycle === 'onetime_price') {
return $this->buyByOneTime($order, $user, $plan);

if ($order->refund_amount) {
$user->balance = $user->balance + $order->refund_amount;
}
DB::beginTransaction();
if ($order->surplus_order_ids) {
try {
Order::whereIn('id', json_decode($order->surplus_order_ids))->update([
'status' => 4
]);
} catch (\Exception $e) {
DB::rollback();
abort(500, '开通失败');
}
}
switch ((string)$order->cycle) {
case 'onetime_price':
$this->buyByOneTime($order, $user, $plan);
break;
case 'reset_price':
$this->buyReset($user);
break;
default:
$this->buyByCycle($order, $user, $plan);
}
return $this->buyByCycle($order, $user, $plan);
if (!$user->save()) {
DB::rollBack();
abort(500, '开通失败');
}
$order->status = 3;
if (!$order->save()) {
DB::rollBack();
abort(500, '开通失败');
}

DB::commit();
}

private function buyReset(User $user)
{
$user->u = 0;
$user->d = 0;
}

private function buyByCycle(Order $order, User $user, Plan $plan)
Expand All @@ -77,9 +116,6 @@ private function buyByCycle(Order $order, User $user, Plan $plan)
if ((int)$order->type === 3) {
$user->expired_at = time();
}
if ($order->refund_amount) {
$user->balance = $user->balance + $order->refund_amount;
}
$user->transfer_enable = $plan->transfer_enable * 1073741824;
if ((int)config('v2board.renew_reset_traffic_enable', 1)) {
$user->u = 0;
Expand All @@ -88,27 +124,16 @@ private function buyByCycle(Order $order, User $user, Plan $plan)
$user->plan_id = $plan->id;
$user->group_id = $plan->group_id;
$user->expired_at = $this->getTime($order->cycle, $user->expired_at);
if ($user->save()) {
$order->status = 3;
$order->save();
}
}

private function buyByOneTime(Order $order, User $user, Plan $plan)
{
if ($order->refund_amount) {
$user->balance = $user->balance + $order->refund_amount;
}
$user->transfer_enable = $plan->transfer_enable * 1073741824;
$user->u = 0;
$user->d = 0;
$user->plan_id = $plan->id;
$user->group_id = $plan->group_id;
$user->expired_at = NULL;
if ($user->save()) {
$order->status = 3;
$order->save();
}
}

private function getTime($str, $timestamp)
Expand Down
41 changes: 41 additions & 0 deletions app/Console/Commands/Test.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Test extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'test';

/**
* The console command description.
*
* @var string
*/
protected $description = '';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
}
}
30 changes: 27 additions & 3 deletions app/Http/Controllers/Admin/ConfigController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers\Admin;

use App\Http\Requests\Admin\ConfigSave;
use App\Services\TelegramService;
use Illuminate\Http\Request;
use App\Utils\Dict;
use App\Http\Controllers\Controller;
Expand All @@ -20,6 +21,20 @@ public function getEmailTemplate()
]);
}

public function setTelegramWebhook(Request $request)
{
$telegramService = new TelegramService($request->input('telegram_bot_token'));
$telegramService->getMe();
$telegramService->setWebhook(
url(
'/api/v1/guest/telegram/webhook?access_token=' . md5(config('v2board.telegram_bot_token', $request->input('telegram_bot_token')))
)
);
return response([
'data' => true
]);
}

public function fetch()
{
// TODO: default should be in Dict
Expand All @@ -30,7 +45,8 @@ public function fetch()
'invite_commission' => config('v2board.invite_commission', 10),
'invite_gen_limit' => config('v2board.invite_gen_limit', 5),
'invite_never_expire' => config('v2board.invite_never_expire', 0),
'commission_first_time_enable' => config('v2board.commission_first_time_enable', 1)
'commission_first_time_enable' => config('v2board.commission_first_time_enable', 1),
'commission_auto_check_enable' => config('v2board.commission_auto_check_enable', 1)
],
'site' => [
'safe_mode_enable' => (int)config('v2board.safe_mode_enable', 0),
Expand All @@ -43,7 +59,8 @@ public function fetch()
'try_out_plan_id' => (int)config('v2board.try_out_plan_id', 0),
'try_out_hour' => (int)config('v2board.try_out_hour', 1),
'email_whitelist_enable' => (int)config('v2board.email_whitelist_enable', 0),
'email_whitelist_suffix' => config('v2board.email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT)
'email_whitelist_suffix' => config('v2board.email_whitelist_suffix', Dict::EMAIL_WHITELIST_SUFFIX_DEFAULT),
'email_gmail_limit_enable' => config('v2board.email_gmail_limit_enable', 0)
],
'subscribe' => [
'plan_change_enable' => (int)config('v2board.plan_change_enable', 1),
Expand All @@ -64,9 +81,11 @@ public function fetch()
'stripe_webhook_key' => config('v2board.stripe_webhook_key'),
'stripe_currency' => config('v2board.stripe_currency', 'hkd'),
// bitpayx
'bitpayx_name' => config('v2board.bitpayx_name', '聚合支付'),
'bitpayx_enable' => (int)config('v2board.bitpayx_enable', 0),
'bitpayx_appsecret' => config('v2board.bitpayx_appsecret'),
// paytaro
'paytaro_name' => config('v2board.paytaro_name', '聚合支付'),
'paytaro_enable' => (int)config('v2board.paytaro_enable', 0),
'paytaro_app_id' => config('v2board.paytaro_app_id'),
'paytaro_app_secret' => config('v2board.paytaro_app_secret')
Expand All @@ -79,13 +98,18 @@ public function fetch()
],
'server' => [
'server_token' => config('v2board.server_token'),
'server_license' => config('v2board.server_license')
'server_license' => config('v2board.server_license'),
'server_log_level' => config('v2board.server_log_level', 'none')
],
'tutorial' => [
'apple_id' => config('v2board.apple_id')
],
'email' => [
'email_template' => config('v2board.email_template', 'default')
],
'telegram' => [
'telegram_bot_enable' => config('v2board.telegram_bot_enable', 0),
'telegram_bot_token' => config('v2board.telegram_bot_token')
]
]
]);
Expand Down
50 changes: 50 additions & 0 deletions app/Http/Controllers/Admin/OrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@

namespace App\Http\Controllers\Admin;

use App\Http\Requests\Admin\OrderAssign;
use App\Http\Requests\Admin\OrderUpdate;
use App\Services\OrderService;
use App\Utils\Helper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Order;
use App\Models\User;
use App\Models\Plan;
use Illuminate\Support\Facades\DB;

class OrderController extends Controller
{
Expand All @@ -23,6 +26,7 @@ public function fetch(Request $request)
if ($request->input('is_commission')) {
$orderModel->where('invite_user_id', '!=', NULL);
$orderModel->where('status', 3);
$orderModel->where('commission_balance', '>', 0);
}
if ($request->input('id')) {
$orderModel->where('id', $request->input('id'));
Expand Down Expand Up @@ -100,4 +104,50 @@ public function repair(Request $request)
'data' => true
]);
}

public function assign(OrderAssign $request)
{
$plan = Plan::find($request->input('plan_id'));
$user = User::where('email', $request->input('email'))->first();

if (!$user) {
abort(500, '该用户不存在');
}

if (!$plan) {
abort(500, '该订阅不存在');
}

DB::beginTransaction();
$order = new Order();
$orderService = new OrderService($order);
$order->user_id = $user->id;
$order->plan_id = $plan->id;
$order->cycle = $request->input('cycle');
$order->trade_no = Helper::guid();
$order->total_amount = $request->input('total_amount');

if ($order->cycle === 'reset_price') {
$order->type = 4;
} else if ($user->plan_id !== NULL && $order->plan_id !== $user->plan_id) {
$order->type = 3;
} else if ($user->expired_at > time() && $order->plan_id == $user->plan_id) {
$order->type = 2;
} else {
$order->type = 1;
}

$orderService->setInvite($user);

if (!$order->save()) {
DB::rollback();
abort(500, '订单创建失败');
}

DB::commit();

return response([
'data' => $order->trade_no
]);
}
}
25 changes: 22 additions & 3 deletions app/Http/Controllers/Admin/PlanController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers\Admin;

use App\Http\Requests\Admin\PlanSave;
use App\Http\Requests\Admin\PlanSort;
use App\Http\Requests\Admin\PlanUpdate;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
Expand All @@ -16,7 +17,7 @@ class PlanController extends Controller
public function fetch(Request $request)
{
return response([
'data' => Plan::get()
'data' => Plan::orderBy('sort', 'ASC')->get()
]);
}

Expand All @@ -29,9 +30,12 @@ public function save(PlanSave $request)
abort(500, '该订阅不存在');
}
DB::beginTransaction();
// update user group id
// update user group id and transfer
try {
User::where('plan_id', $plan->id)->update(['group_id' => $plan->group_id]);
User::where('plan_id', $plan->id)->update([
'group_id' => $plan->group_id,
'transfer_enable' => $plan->transfer_enable * 1073741824
]);
$plan->update($params);
} catch (\Exception $e) {
DB::rollBack();
Expand Down Expand Up @@ -91,4 +95,19 @@ public function update(PlanUpdate $request)
'data' => true
]);
}

public function sort(PlanSort $request)
{
DB::beginTransaction();
foreach ($request->input('plan_ids') as $k => $v) {
if (!Plan::find($v)->update(['sort' => $k + 1])) {
DB::rollBack();
abort(500, '保存失败');
}
}
DB::commit();
return response([
'data' => true
]);
}
}
Loading

0 comments on commit 95e698d

Please sign in to comment.