Forráskód Böngészése

wesmiler 报恩寺项目提交

wesmiler 4 éve
szülő
commit
ac88419c4b

+ 8 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -60,6 +60,14 @@ class MemberController extends BaseController
     }
 
     /**
+     * 签到
+     * @return mixed
+     */
+    public function sign(){
+        return $this->service->sign($this->userId);
+    }
+
+    /**
      * 注销账号
      */
     public function logout(){

+ 53 - 0
app/Services/MemberService.php

@@ -501,4 +501,57 @@ class MemberService extends BaseService
         \DB::commit();
         return message(($isVip? '续费':'加入').'会员成功',true);
     }
+
+    public function sign($userId){
+        $memberInfo = $this->model::where(['id'=> $userId, 'mark'=>1 ,'status'=> 1])
+            ->select(['id','openid','nickname','score','sign_time'])
+            ->first();
+
+        if(!$memberInfo){
+            return message('账户不可操作,请联系客服',false);
+        }
+
+        if($memberInfo->sign_time > strtotime(date('Y-m-d'))){
+            return message('您今天已签到过,请明天再来',false);
+        }
+
+        // 参数
+        $score = ConfigService::make()->getConfigByCode('sign_give_score');
+        $score = $score? $score : 0;
+
+        // 处理
+        \DB::beginTransaction();
+        if($score>0){
+            if(!$this->model::where(['id'=> $userId,'mark'=> 1])->increment('score', $score)){
+                \DB::rollBack();
+                return message('更新账户积分失败,请刷新后重试',false);
+            }
+
+            $data = [
+                'user_id'=> $userId,
+                'type'=> 3,
+                'coin_type'=> 3,
+                'pay_type'=> 4,
+                'money'=> $score,
+                'change_type'=> 1,
+                'balance'=> $memberInfo->score,
+                'create_time'=> time(),
+                'remark'=> "每日签到赠送{$score}积分",
+                'status'=> 1,
+            ];
+            if(!TradeModel::insertGetId($data)){
+                \DB::rollBack();
+                return message('积分奖励处理失败,请刷新后重试',false);
+            }
+        }
+
+        if(!$this->model::where(['id'=> $userId,'mark'=> 1])->update(['sign_time'=> time()])){
+            \DB::rollBack();
+            return message('签到处理失败,请刷新后重试',false);
+        }
+
+        \DB::commit();
+
+        return message('签到成功',true);
+    }
 }

+ 1 - 0
routes/api.php

@@ -48,6 +48,7 @@ Route::any('/notify/refund/{scene}', [\App\Http\Controllers\Api\v1\NotifyControl
 Route::post('/member/info', [\App\Http\Controllers\Api\v1\MemberController::class, 'info']);
 Route::post('/member/save', [\App\Http\Controllers\Api\v1\MemberController::class, 'saveInfo']);
 Route::post('/member/vip', [\App\Http\Controllers\Api\v1\MemberController::class, 'vip']);
+Route::post('/member/sign', [\App\Http\Controllers\Api\v1\MemberController::class, 'sign']);
 Route::post('/member/logout', [\App\Http\Controllers\Api\v1\MemberController::class, 'logout']);