xiaogang 4 年 前
コミット
2ad158d34f

+ 4 - 1
app/Http/Controllers/Api/UserController.php

xqd
@@ -425,10 +425,13 @@ class UserController extends Controller
      * @param Request $request
      * @return \Illuminate\Http\JsonResponse|void
      */
-    public function receive_day(Request $request){
+    public function receive_day(){
+        DB::beginTransaction();
         try {
             $res=$this->userService->receive_day();
+            DB::commit();
         }catch (\Exception $exception){
+            DB::rollBack();
             return $this->response->errorForbidden($exception->getMessage());
         }
         return response()->json(['message'=>'操作成功','data'=>$res]);

+ 36 - 0
app/Services/UserService.php

xqd xqd
@@ -11,6 +11,7 @@ use App\Models\UserBlacklistModel;
 use App\Models\UserInviteLog;
 use App\Models\UserLookModel;
 use App\Models\UserProblemModel;
+use App\Models\UserVipLogModel;
 use App\Models\VipModel;
 use Illuminate\Support\Facades\DB;
 use PHPUnit\Util\Exception;
@@ -159,5 +160,40 @@ class UserService
         }
         return $list;
     }
+
+    /**
+     * 领取会员天数
+     */
+    public function receive_day(){
+        $user = auth('api')->user();
+        $day = UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>0])->sum('day');
+        if($day>0){
+            UserInviteLog::query()->where(['user_id'=>$user->id,'status'=>0])->update(['status'=>1]);
+            if($user->is_vip==0){
+                $user->is_vip = 1;
+                $user->save();
+            }
+            //变更vip记录
+            $user_vip_log = UserVipLogModel::query()->where(['user_id'=>$user->id])->first();
+            if(!$user_vip_log){
+                UserVipLogModel::query()->create([
+                    'user_id'=>$user->id,
+                    'status'=>1,
+                    'day'=>$day,
+                    'end_day'=> date("Y-m-d H:i:s",strtotime("+".$day." day")),
+                ]);
+            }elseif($user_vip_log->status==1){
+                $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime($user_vip_log->end_day."+".$day." day"));
+                $user_vip_log->save();
+            }elseif ($user_vip_log->status==0){
+                $user_vip_log->end_day = date("Y-m-d H:i:s",strtotime("+".$day." day"));
+                $user_vip_log->status = 1;
+                $user_vip_log->save();
+            }
+        }else{
+            throw new Exception("暂无可领取天数");
+        }
+        return true;
+    }
 }
 

+ 1 - 0
routes/api.php

xqd
@@ -113,6 +113,7 @@ $api->version('v1', [
             $api->get('/get_vip_info', 'UserController@get_vip_info')->name('user.get_vip_info');
             $api->get('/invite_info', 'UserController@invite_info')->name('user.invite_info');
             $api->post('/get_invite_list', 'UserController@get_invite_list')->name('user.get_invite_list');
+            $api->post('/receive_day', 'UserController@receive_day')->name('user.receive_day');
         });
 
         /*