| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | 
							- <?php
 
- 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;
 
- use App\Models\Plan;
 
- use App\Models\Order;
 
- use App\Models\User;
 
- use Illuminate\Support\Facades\DB;
 
- class PlanController extends Controller
 
- {
 
-     public function fetch(Request $request)
 
-     {
 
-         $counts = User::select(
 
-             DB::raw("plan_id"),
 
-             DB::raw("count(*) as count")
 
-         )
 
-             ->where('plan_id', '!=', NULL)
 
-             ->where(function ($query) {
 
-                 $query->where('expired_at', '>=', time())
 
-                     ->orWhere('expired_at', NULL);
 
-             })
 
-             ->groupBy("plan_id")
 
-             ->get();
 
-         $plans = Plan::orderBy('sort', 'ASC')->get();
 
-         foreach ($plans as $k => $v) {
 
-             $plans[$k]->count = 0;
 
-             foreach ($counts as $kk => $vv) {
 
-                 if ($plans[$k]->id === $counts[$kk]->plan_id) $plans[$k]->count = $counts[$kk]->count;
 
-             }
 
-         }
 
-         return response([
 
-             'data' => $plans
 
-         ]);
 
-     }
 
-     public function save(PlanSave $request)
 
-     {
 
-         $params = $request->validated();
 
-         if ($request->input('id')) {
 
-             $plan = Plan::find($request->input('id'));
 
-             if (!$plan) {
 
-                 abort(500, '该订阅不存在');
 
-             }
 
-             DB::beginTransaction();
 
-             // update user group id and transfer
 
-             try {
 
-                 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();
 
-                 abort(500, '保存失败');
 
-             }
 
-             DB::commit();
 
-             return response([
 
-                 'data' => true
 
-             ]);
 
-         }
 
-         if (!Plan::create($params)) {
 
-             abort(500, '创建失败');
 
-         }
 
-         return response([
 
-             'data' => true
 
-         ]);
 
-     }
 
-     public function drop(Request $request)
 
-     {
 
-         if (Order::where('plan_id', $request->input('id'))->first()) {
 
-             abort(500, '该订阅下存在订单无法删除');
 
-         }
 
-         if (User::where('plan_id', $request->input('id'))->first()) {
 
-             abort(500, '该订阅下存在用户无法删除');
 
-         }
 
-         if ($request->input('id')) {
 
-             $plan = Plan::find($request->input('id'));
 
-             if (!$plan) {
 
-                 abort(500, '该订阅ID不存在');
 
-             }
 
-         }
 
-         return response([
 
-             'data' => $plan->delete()
 
-         ]);
 
-     }
 
-     public function update(PlanUpdate $request)
 
-     {
 
-         $updateData = $request->only([
 
-             'show',
 
-             'renew'
 
-         ]);
 
-         $plan = Plan::find($request->input('id'));
 
-         if (!$plan) {
 
-             abort(500, '该订阅不存在');
 
-         }
 
-         try {
 
-             $plan->update($updateData);
 
-         } catch (\Exception $e) {
 
-             abort(500, '保存失败');
 
-         }
 
-         return response([
 
-             '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
 
-         ]);
 
-     }
 
- }
 
 
  |