Ver Fonte

修改签到功能bug

jun há 6 meses atrás
pai
commit
c38993597c

+ 2 - 3
app/Http/Controllers/Admin/ScoreClockinActive.php

@@ -3,7 +3,6 @@
 use App\Facades\Servers\WechatMini\Mini;
 use App\Http\Requests\Admin\ScoreClockinActive as Request;
 use App\Models\City;
-use App\Models\Coupon\ActiveCoupon as ActiveCoupon;
 use App\Models\Score\ClockinActive as Model;
 use App\Models\WeiBan\Tags as WeiBanTags;
 
@@ -85,7 +84,7 @@ class ScoreClockinActive extends Auth{
      * 添加
      *
      * */
-    public function add(\App\Http\Requests\Admin\Coupon\Active $request, Model $Model, City $City, WeiBanTags $WeiBanTags){
+    public function add(Request $request, Model $Model, City $City, WeiBanTags $WeiBanTags){
         if( request()->isMethod('post') ){
             // 验证参数
             $request->scene('add')->validate();
@@ -191,7 +190,7 @@ class ScoreClockinActive extends Auth{
      * 修改状态
      *
      * */
-    public function set_status(Request $request,Model $Model,ActiveCoupon $ActiveCoupon){
+    public function set_status(Request $request,Model $Model){
         // 验证参数
         $request->scene('set_status')->validate();
         // 设置状态

+ 11 - 33
app/Http/Controllers/Api/Score/Clockin.php

@@ -6,6 +6,7 @@ use App\Models\Score\Clockin as Model;
 use App\Models\Score\ClockinActive as ClockinActive;
 use App\Models\WeiBan\Tags as WeiBanTags;
 use App\Models\CustomClockinRecord;
+use http\Env\Request;
 use Illuminate\Support\Carbon;
 
 /**
@@ -47,7 +48,7 @@ class Clockin extends Api
         // 接口验签
         // $this->verify_sign();
         // 验证登录
-        $uid						= $this->getUid();
+        $uid						= $this->checkLogin();
         // 获取客户信息
         $custom						= $uid ? $Custom->getOne($uid) : [];
         //客户的城市ID 如果不存在的话
@@ -81,7 +82,7 @@ class Clockin extends Api
         if (!$activeInfo) return json_send(['code'=>'error','msg'=>'暂无签到活动','data'=>['error'=>'暂无签到活动']]);
         // 获取列表
         $list               = $Model->getActiveList($activeInfo['id']);
-        $isMark             = $CustomClockinRecord->isMarkClock($uid);
+        $isMark             = $CustomClockinRecord->isMarkClock($uid,$activeInfo['id']);
         $isMark['finish_day']       = empty($isMark['finish_day'])?0:$isMark['finish_day'];
         // 循环处理
         foreach ( $list as $key => $value ) {
@@ -94,51 +95,28 @@ class Clockin extends Api
         $list                       = array_values($list);
         $list                       = array_chunk($list,28);
         // 返回结果
-        return                      json_send(['code'=>'success','msg'=>'获取成功','data'=>['list'=>$list,'is_mark'=>$isMark]]);
+        return                      json_send(['code'=>'success','msg'=>'获取成功','data'=>['list'=>$list,'is_mark'=>$isMark,'active_id'=>$activeInfo['id']]]);
     }
     /**
      * 打卡                         /api/score_clockin/finish
      * 
      */
-    public function finish(Model $Model,Custom $Custom,WeiBanTags $WeiBanTags,ClockinActive $ClockinActive,CustomClockinRecord $CustomClockinRecord)
+    public function finish(Model $Model,Custom $Custom,ClockinActive $ClockinActive,CustomClockinRecord $CustomClockinRecord)
     {
         // 接口验签
 		// $this->verify_sign();
         // 验证登录
-        $uid						= $this->getUid();
+        $uid						= $this->checkLogin();
+        $activeId                   = request('active_id',0);
         // 获取客户信息
         $custom						= $uid ? $Custom->getOne($uid) : [];
         //客户的城市ID 如果不存在的话
         if( !$custom['city_id'] )	return json_send(['code'=>'error','msg'=>'请选择所在城市','data'=>['error'=>'请选择所在城市']]);
-        $cityId						= $custom['city_id'];
-        // 查询用户标签
-        $tags							= $WeiBanTags->getListByWeibanExtid($custom['weiban_extid']);
-        //获取打卡活动列表
-        $activeList					= $ClockinActive->getList();
-        if (!$activeList)           return json_send(['code'=>'error','msg'=>'暂无签到活动','data'=>['error'=>'暂无签到活动']]);
-        $activeInfo = [];
-        foreach ($activeList as $value){
-            $city_ids			= $value['city_ids'] ? explode(',',$value['city_ids']) : [];
-            $tag_scope			= $value['tag_scope'] ? explode(',',$value['tag_scope']) : [];
-            if( !$city_ids || in_array($cityId,$city_ids) ) {
-                if ($tag_scope){
-                    foreach ($tags as $tag) 	{
-                        // 标签范围内
-                        if( in_array($tag['name'],$tag_scope) ) {
-                            $activeInfo = $value;
-                            break;
-                        }
-                    }
-                }else{
-                    $activeInfo = $value;
-                    break;
-                }
-            }
-
-        }
-        if (!$activeInfo) return json_send(['code'=>'error','msg'=>'暂无签到活动','data'=>['error'=>'暂无签到活动']]);
+        if( !$activeId )	        return json_send(['code'=>'error','msg'=>'缺少活动id','data'=>['error'=>'缺少活动id']]);
+        $activeInfo                 = $ClockinActive::query()->where(['id'=>$activeId])->first();
+        if (!$activeInfo)           return json_send(['code'=>'error','msg'=>'暂无签到活动','data'=>['error'=>'暂无签到活动']]);
         // 获取打卡次数
-        $result                         = $CustomClockinRecord->finish($uid,$activeInfo['id']);
+        $result                     = $CustomClockinRecord->finish($uid,$activeInfo['id']);
         // 失败结束
         if( isset($result['error']) )   return json_send(['code'=>'error','msg'=>$result['error'],'data'=>'']);
         // 返回结果

+ 3 - 8
app/Models/CustomClockinRecord.php

@@ -94,7 +94,7 @@ class CustomClockinRecord extends Model
      * @param   int    $uid         用户ID
      *
      */
-    public function isMarkClock($uid){
+    public function isMarkClock($uid,$activeId){
         // 如果没有id
         if( !$uid )         return ['is_clockin'=>0,'finish_day'=>0];
         // 获取缓存
@@ -102,14 +102,9 @@ class CustomClockinRecord extends Model
         // 返回结果
         // if( $record )       return $record;
         // 通过查询今日打卡积分记录
-        $record             = $this->query()->where([['custom_uid','=',$uid],['clockin_time','>=',Carbon::now()->startOfDay()->getTimestamp()]])->first(['id','custom_uid','clockin_day','clockin_time']);
+        $record             = $this->query()->where([['active_id','=',$activeId],['custom_uid','=',$uid],['clockin_time','>=',Carbon::now()->startOfDay()->getTimestamp()]])->first(['id','custom_uid','clockin_day','clockin_time']);
         // 如果没有记录
         $record             = $record ? ['is_clockin'=>1,'finish_day'=>$record['clockin_day']] : ['is_clockin'=>0,'finish_day'=>0];
-        // 如果没有打卡天数
-        if( !$record['finish_day'] ) {
-            // 获取昨天的打卡记录。以获取已打卡天数
-            $record['finish_day']   = (int) $this->query()->where([['custom_uid','=',$uid],['clockin_time','>=',Carbon::now()->addDays(-1)->startOfDay()->getTimestamp()],['clockin_time','<=',Carbon::now()->addDays(-1)->endOfDay()->getTimestamp()]])->value('clockin_day');
-        }
         // 标记
         //$this->setMarkClock($uid,$record);
         // 返回结果
@@ -128,7 +123,7 @@ class CustomClockinRecord extends Model
         // 如果是0,没有需要签到的任务
         if( !$maxDay )                  return ['error'=>'无签到任务'];
         // 是否已签到
-        $isMark                         = $this->isMarkClock($uid);
+        $isMark                         = $this->isMarkClock($uid,$activeId);
         // 如果已经签到,不进行后续操作,返回已打卡
         if( $isMark['is_clockin'] )     return ['error'=>'今日已打卡'];
         // 如果当前已签到天数大于最大天数,从1开始计算签到天数