Przeglądaj źródła

Clean code "添加客户端API接口和商品分类管理"

兔姬桑 4 lat temu
rodzic
commit
d31a9e2a6f

+ 1 - 4
app/Http/Controllers/Admin/Config/CategoryController.php

@@ -4,7 +4,6 @@ namespace App\Http\Controllers\Admin\Config;
 
 use App\Http\Controllers\Controller;
 use App\Models\GoodsCategory;
-use App\Models\Level;
 use Exception;
 use Illuminate\Http\Request;
 use Log;
@@ -16,9 +15,7 @@ class CategoryController extends Controller
     // 添加等级
     public function store(Request $request)
     {
-        $validator = Validator::make($request->all(), [
-            'name' => 'required',
-        ]);
+        $validator = Validator::make($request->all(), ['name' => 'required']);
 
         if ($validator->fails()) {
             return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]);

+ 46 - 48
app/Http/Controllers/Api/Client/V1Controller.php

@@ -9,14 +9,14 @@ use App\Models\Coupon;
 use App\Models\Goods;
 use App\Models\GoodsCategory;
 use App\Models\Order;
-use App\Models\Payback;
-use App\Models\Payment;
 use App\Models\ReferralLog;
 use App\Models\User;
+use Exception;
 use Hashids\Hashids;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Cache;
+use Log;
 use Validator;
 
 class V1Controller extends Controller
@@ -29,6 +29,29 @@ class V1Controller extends Controller
         auth()->shouldUse('api');
     }
 
+    /**
+     * @param  Request  $request
+     * @return JsonResponse
+     */
+    public static function getStatus(Request $request): JsonResponse
+    {
+        $order_id = $request->input('order_id');
+        $payment = Order::query()->find($order_id)->payment;
+        if ($payment) {
+            if ($payment->status === 1) {
+                return response()->json(['ret' => 1, 'msg' => '支付成功']);
+            }
+
+            if ($payment->status === -1) {
+                return response()->json(['ret' => 0, 'msg' => '订单超时未支付,已自动关闭']);
+            }
+
+            return response()->json(['ret' => 0, 'msg' => '等待支付']);
+        }
+
+        return response()->json(['ret' => 0, 'msg' => '未知订单']);
+    }
+
     public function login(Request $request)
     {
         $validator = Validator::make($request->all(), [
@@ -40,7 +63,7 @@ class V1Controller extends Controller
             return response()->json(['ret' => 0, 'msg' => $validator->errors()->all()], 422);
         }
 
-        if ($token = auth('api')->attempt($validator->validated())) {
+        if ($token = auth()->attempt($validator->validated())) {
             return $this->createNewToken($token);
         }
 
@@ -50,12 +73,12 @@ class V1Controller extends Controller
     protected function createNewToken($token)
     {
         return response()->json([
-            'ret' => 1,
+            'ret'  => 1,
             'data' => [
                 'access_token' => $token,
-                'token_type' => 'bearer',
-                'expires_in' => auth('api')->factory()->getTTL() * 60,
-                'user' => auth('api')->user()->profile(),
+                'token_type'   => 'bearer',
+                'expires_in'   => auth()->factory()->getTTL() * 60,
+                'user'         => auth()->user()->profile(),
             ],
         ]);
     }
@@ -63,7 +86,7 @@ class V1Controller extends Controller
     public function register(Request $request)
     {
         $validator = Validator::make($request->all(), [
-            'name' => 'required|string|between:2,100',
+            'name'     => 'required|string|between:2,100',
             'username' => 'required|'.(sysConfig('username_type') ?? 'email').'|max:100|unique:user,username',
             'password' => 'required|string|confirmed|min:6',
         ]);
@@ -82,19 +105,19 @@ class V1Controller extends Controller
 
     public function logout()
     {
-        auth('api')->logout();
+        auth()->logout();
 
         return response()->json(['ret' => 1]);
     }
 
     public function refresh()
     {
-        return $this->createNewToken(auth('api')->refresh());
+        return $this->createNewToken(auth()->refresh());
     }
 
     public function userProfile()
     {
-        $user = auth('api')->user();
+        $user = auth()->user();
         $userInfo = $user->profile();
         $userInfo['subUrl'] = $user->subUrl();
         $totalTransfer = $user->transfer_enable;
@@ -107,7 +130,7 @@ class V1Controller extends Controller
 
     public function nodeList(int $id = null)
     {
-        $user = auth('api')->user();
+        $user = auth()->user();
         $nodes = $user->nodes()->get();
 
         return response()->json(['ret' => 1, 'data' => $nodes]);
@@ -119,9 +142,8 @@ class V1Controller extends Controller
             'keys' => [],
             'data' => [],
         ];
-        $shop_plan = GoodsCategory::query()->where('status', 1)->get();
-        foreach ($shop_plan as $item) {
-            array_push($shops['keys'], $item['name']);
+        foreach (GoodsCategory::query()->whereStatus(1)->get() as $item) {
+            $shops['keys'][] = $item['name'];
             $shops['data'][$item['name']] = $item->goods()->get()->append('traffic_label')->toArray();
         }
 
@@ -141,7 +163,6 @@ class V1Controller extends Controller
         return response()->json(['ret' => 1, 'data' => $config]);
     }
 
-    // 创建支付订单
     public function purchase(Request $request)
     {
         $goods_id = $request->input('goods_id');
@@ -221,14 +242,14 @@ class V1Controller extends Controller
         // 生成订单
         try {
             $newOrder = Order::create([
-                'sn' => date('ymdHis').random_int(100000, 999999),
-                'user_id' => auth()->id(),
-                'goods_id' => $credit ? null : $goods_id,
-                'coupon_id' => $coupon->id ?? null,
-                'origin_amount' => $credit ?: $goods->price ?? 0,
-                'amount' => $amount,
-                'pay_type' => $pay_type,
-                'pay_way' => self::$method,
+                'sn'            => date('ymdHis').random_int(100000, 999999),
+                'user_id'       => auth()->id(),
+                'goods_id'      => $credit ? null : $goods_id,
+                'coupon_id'     => $coupon->id ?? null,
+                'origin_amount' => $credit ?: ($goods->price ?? 0),
+                'amount'        => $amount,
+                'pay_type'      => $pay_type,
+                'pay_way'       => self::$method,
             ]);
 
             // 使用优惠券,减少可使用次数
@@ -255,29 +276,6 @@ class V1Controller extends Controller
         return response()->json(['ret' => 0, 'msg' => '订单创建失败']);
     }
 
-    /**
-     * @param Request $request
-     * @return JsonResponse
-     */
-    public static function getStatus(Request $request): JsonResponse
-    {
-        $order_id = $request->input('order_id');
-        $payment = Order::query()->find($order_id)->payment;
-        if ($payment) {
-            if ($payment->status === 1) {
-                return response()->json(['ret' => 1, 'msg' => '支付成功']);
-            }
-
-            if ($payment->status === -1) {
-                return response()->json(['ret' => 0, 'msg' => '订单超时未支付,已自动关闭']);
-            }
-
-            return response()->json(['ret' => 0, 'msg' => '等待支付']);
-        }
-
-        return response()->json(['ret' => 0, 'msg' => '未知订单']);
-    }
-
     public function gift(Request $request)
     {
         $user = $request->user('api');
@@ -287,7 +285,7 @@ class V1Controller extends Controller
         $code = $user->invites()->whereStatus(1)->value('code');
 
         $data['invite_gift'] = trans('user.invite.promotion', [
-            'traffic' => $referral_traffic,
+            'traffic'          => $referral_traffic,
             'referral_percent' => $referral_percent * 100,
         ]);
         $affSalt = sysConfig('aff_salt');

+ 17 - 17
config/bobclient.php

@@ -8,46 +8,46 @@
 
 return [
     // 登录页面配置
-    'login' => [
-        'telegram_url' => 'https://t.me/Bobs9',  // 留空的话则不展示telegram群
-        'qq_url' => 'https://t.me/Bobs9',  // 留空的话则不展示QQ群
+    'login'        => [
+        'telegram_url'   => 'https://t.me/Bobs9',  // 留空的话则不展示telegram群
+        'qq_url'         => 'https://t.me/Bobs9',  // 留空的话则不展示QQ群
         'background_img' => 'https://shige.group/such/pic.php/forum/pic/item/00e93901213fb80e3d28759b21d12f2eb8389484/mlike.jpg', // 背景图片地址,图片宽高不超过 860px * 544px 就行 (留空为默认的背景图)
-        'text' => '一键开启<br>极速上网体验',
-        'text_color' => 'rgba(255, 255, 255, 0.8);',    // 文字和按钮颜色   默认颜色 rgba(255, 255, 255, 0.8);
-        'button_color' => '#8077f1',    // 文字和按钮颜色 默认颜色:#8077f1(v2版本配置)
+        'text'           => '一键开启<br>极速上网体验',
+        'text_color'     => 'rgba(255, 255, 255, 0.8);',    // 文字和按钮颜色   默认颜色 rgba(255, 255, 255, 0.8);
+        'button_color'   => '#8077f1',    // 文字和按钮颜色 默认颜色:#8077f1(v2版本配置)
     ],
 
     // PC端消息中心图片和跳转链接
-    'message' => [
+    'message'      => [
         'background_img' => 'https://malus.s3cdn.net/uploads/malus_user-guide.jpg', // 背景图片地址
-        'url' => 'https://www.goole.com',    // 跳转链接
+        'url'            => 'https://www.goole.com',    // 跳转链接
     ],
 
     // Crisp在线客服
     'crisp_enable' => false,  // 是否开启
-    'crisp_id' => '2c3c28c2-9265-45ea-8e85-0xxxxx',       // Crisp 的网站ID
+    'crisp_id'     => '2c3c28c2-9265-45ea-8e85-0xxxxx',       // Crisp 的网站ID
 
     // 弹窗公告
-    'notice' => [
+    'notice'       => [
         'is_start' => true, // 是否开启弹窗公告
-        'title' => '最新公告', // 标题
-        'content' => '<strong>这是最新 <i>公告</i> 内容</strong>', // 公告内容,可以为html格式,也可以纯文本
+        'title'    => '最新公告', // 标题
+        'content'  => '<strong>这是最新 <i>公告</i> 内容</strong>', // 公告内容,可以为html格式,也可以纯文本
     ],
 
     // PC端菜单栏显示控制
-    'menu' => [
+    'menu'         => [
         'shop' => true,          // 会员
         'user' => true,          // 我的
         'gift' => true,          // 邀请
     ],
 
     // 检查用户计算机时间
-    'check_time' => [
-        'is_check' => true,  // 是否开启检查
-        'differ_time' => 90,    // 相差多少秒提示
+    'check_time'   => [
+        'is_check'     => true,  // 是否开启检查
+        'differ_time'  => 90,    // 相差多少秒提示
         'warning_text' => '请校准系统时间为北京时间,否则会导致无法上网!', // 提示内容
     ],
 
     // 个人中心头像
-    'user_avatar' => 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=4109802972,297162689&fm=11&gp=0.jpg',
+    'user_avatar'  => 'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=4109802972,297162689&fm=11&gp=0.jpg',
 ];

+ 6 - 8
database/migrations/2021_07_24_214642_create_goods_category_table.php

@@ -1,9 +1,9 @@
 <?php
 
+use App\Models\GoodsCategory;
 use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
-use Spatie\Permission\Models\Permission;
 
 class CreateGoodsCategoryTable extends Migration
 {
@@ -15,18 +15,16 @@ class CreateGoodsCategoryTable extends Migration
     public function up()
     {
         Schema::create('goods_category', function (Blueprint $table) {
-            $table->id();
+            $table->increments('id');
             $table->string('name')->default('')->comment('分类名称');
-            $table->tinyInteger('status')->default('1')->comment('状态 0:隐藏 1:显示');
-            $table->integer('sort')->default('0')->comment('排序');
+            $table->tinyInteger('status')->default(1)->comment('状态 0:隐藏 1:显示');
+            $table->integer('sort')->default(0)->comment('排序');
             $table->timestamps();
         });
         Schema::table('goods', function (Blueprint $table) {
-            $table->integer('category_id')->default(1)->nullable()->comment('分类ID');
+            $table->integer('category_id')->default(1)->nullable()->comment('分类ID')->after('level');
         });
-        \App\Models\GoodsCategory::query()->create(['name' => '黄金套餐']);
-        \App\Models\GoodsCategory::query()->create(['name' => '白金套餐']);
-        \App\Models\GoodsCategory::query()->create(['name' => '钻石套餐']);
+        GoodsCategory::insert([['name' => '黄金套餐'], ['name' => '白金套餐'], ['name' => '钻石套餐']]);
     }
 
     /**

+ 10 - 13
routes/api.php

@@ -64,17 +64,14 @@ Route::group(['namespace' => 'Api\Client', 'prefix' => 'client/v1'], function ()
     Route::get('config', 'V1Controller@getConfig'); // 获取配置
     Route::post('login', 'V1Controller@login'); // 登录
     Route::post('register', 'V1Controller@register'); // 注册
-
-    Route::group(['middleware' => 'auth:api'], function () {
-        Route::get('logout', 'V1Controller@logout'); // 退出
-        Route::get('refresh', 'V1Controller@refresh'); // 刷新令牌
-        Route::get('profile', 'V1Controller@userProfile'); // 获取账户信息
-        Route::get('nodes', 'V1Controller@nodeList'); // 获取账户全部节点
-        Route::get('node/{id}', 'V1Controller@nodeList'); // 获取账户个别节点
-        Route::get('shop', 'V1Controller@shop'); // 获取商品信息
-        Route::get('gift', 'V1Controller@gift'); // 获取邀请信息
-        Route::post('checkIn', 'V1Controller@checkIn'); // 签到
-        Route::post('payment/purchase', 'V1Controller@purchase'); // 获取商品信息
-        Route::get('payment/getStatus', 'V1Controller@getStatus'); // 获取商品信息
-    });
+    Route::get('logout', 'V1Controller@logout'); // 退出
+    Route::get('refresh', 'V1Controller@refresh'); // 刷新令牌
+    Route::get('profile', 'V1Controller@userProfile'); // 获取账户信息
+    Route::get('nodes', 'V1Controller@nodeList'); // 获取账户全部节点
+    Route::get('node/{id}', 'V1Controller@nodeList'); // 获取账户个别节点
+    Route::get('shop', 'V1Controller@shop'); // 获取商品信息
+    Route::get('gift', 'V1Controller@gift'); // 获取邀请信息
+    Route::post('checkIn', 'V1Controller@checkIn'); // 签到
+    Route::post('payment/purchase', 'V1Controller@purchase'); // 获取商品信息
+    Route::get('payment/getStatus', 'V1Controller@getStatus'); // 获取商品信息
 });