wesmiler 18 godzin temu
rodzic
commit
cb86ae3b8a

+ 8 - 0
app/Http/Controllers/Admin/MeetingRecordController.php

@@ -52,6 +52,14 @@ class MeetingRecordController extends Backend
     }
 
     /**
+     * 修改领取状态
+     */
+    public function claim()
+    {
+        return $this->service->claim();
+    }
+
+    /**
      * 获取详情
      */
     public function info()

+ 19 - 1
app/Http/Controllers/Api/v1/MeetingController.php

@@ -105,6 +105,24 @@ class MeetingController extends webApp
     }
 
     /**
+     * 领取物料
+     */
+    public function claim()
+    {
+        $params = request()->post();
+        try {
+            if ($result = MeetingService::make()->claim($this->userId, $params)) {
+                return showJson(MeetingService::make()->getError(), true, $result);
+            } else {
+                return showJson(MeetingService::make()->getError(), false);
+            }
+        }  catch (\Exception $exception) {
+            $error = ['data' => $exception->getTrace(), 'err' => $exception->getMessage()];
+            return showJson(1046, false, $error);
+        }
+    }
+
+    /**
      * 签到记录
      */
     public function records()
@@ -112,7 +130,7 @@ class MeetingController extends webApp
         $params = request()->post();
         $pageSize = request()->post('pageSize',20);
         try {
-            if ($datas = MeetingService::make()->records($params,$pageSize)) {
+            if ($datas = MeetingService::make()->records($params,$pageSize, $this->userId)) {
                 return showJson(1010, true, $datas);
             } else {
                 return showJson(1009, false);

+ 10 - 2
app/Models/MeetingModel.php

@@ -22,7 +22,7 @@ class MeetingModel extends BaseModel
     // 设置数据表
     protected $table = 'meetings';
 
-    protected $appends = ['areas','start_time','meeting_time','time_text','time_text1'];
+    protected $appends = ['areas','address_text','start_time','meeting_time','time_text','time_text1'];
 
     public function getThumbAttribute($value)
     {
@@ -52,6 +52,14 @@ class MeetingModel extends BaseModel
         return $time>$dateTime?intval($time-$dateTime) : 0;
     }
 
+    public function getAddressTextAttribute()
+    {
+        $province = isset($this->province['name'])?$this->province['name']:'';
+        $city = isset($this->city['name'])?$this->city['name']:'';
+        $district = isset($this->district['name'])?$this->district['name']:'';
+        return $province.($city!=$province?$city:'').$district.$this->address;
+    }
+
     // 会议时长
     public function getMeetingTimeAttribute()
     {
@@ -161,6 +169,6 @@ class MeetingModel extends BaseModel
     public function records()
     {
         return $this->hasMany(MeetingRecordsModel::class, 'meeting_id','id')
-            ->where(['mark'=>1]);
+            ->where(['is_sign'=>1,'status'=>1,'mark'=>1]);
     }
 }

+ 226 - 111
app/Services/Api/MeetingService.php

@@ -58,45 +58,48 @@ class MeetingService extends BaseService
      * @param int $userId
      * @return array|mixed
      */
-    public function getInfo($id,$userId=0,$type=1)
+    public function getInfo($id, $userId = 0, $type = 1)
     {
         $cacheKey = "caches:meeting:info_{$id}_{$userId}_{$type}";
         $info = RedisService::get($cacheKey);
-        if($info){
+        if ($info) {
             return $info;
         }
 
-        $info =  $this->model->with(['member','company'])
-            ->where(['id'=>$id,'status'=>1,'mark'=>1])
-            ->withCount(['records'])
+        $info = $this->model->with(['member', 'company'])
+            ->where(['id' => $id, 'status' => 1, 'mark' => 1])
             ->first();
-        $info = $info? $info->toArray() : [];
-        if($info){
+        $info = $info ? $info->toArray() : [];
+        if ($info) {
             $info['fee'] = floatval($info['fee']);
-            if($type == 2){
-                $info['qrcode'] = MpService::make()->getMiniQrcode('pagesSub/pages/meeting/books',$id);
-                $info['qrcode'] = $info['qrcode']? get_image_url($info['qrcode']):'';
-            }else if($type == 3){
-                $bookInfo = MeetingRecordsModel::where(['user_id'=>$userId,'meeting_id'=>$id,'mark'=>1])
-                    ->select(['id','is_sign','status'])
+            if ($type == 2) {
+                $info['qrcode'] = MpService::make()->getMiniQrcode('pagesSub/pages/meeting/books', $id);
+                $info['qrcode'] = $info['qrcode'] ? get_image_url($info['qrcode']) : '';
+            } else if ($type == 3) {
+                $bookInfo = MeetingRecordsModel::where(['user_id' => $userId, 'meeting_id' => $id, 'mark' => 1])
+                    ->select(['id', 'is_sign', 'money', 'is_claim', 'status'])
                     ->first();
-                $bookInfo = $bookInfo?$bookInfo->toArray() : [];
-                $info['is_book'] = $bookInfo?1: 0;
-                $info['is_sign'] = isset($bookInfo['is_sign'])?$bookInfo['is_sign']: 0;
-                $info['is_fee'] = isset($bookInfo['status'])?$bookInfo['status']: 0;
-            }else{
+                $bookInfo = $bookInfo ? $bookInfo->toArray() : [];
+                $info['is_book'] = $bookInfo ? 1 : 0;
+                $info['is_sign'] = isset($bookInfo['is_sign']) ? $bookInfo['is_sign'] : 0;
+                $info['is_claim'] = isset($bookInfo['is_claim']) ? $bookInfo['is_claim'] : 0;
+                $info['is_fee'] = isset($bookInfo['status']) ? $bookInfo['status'] : 0;
+                $info['pay_fee'] = isset($bookInfo['money']) ? floatval($bookInfo['money']) : 0;
+            } else {
                 $areaIds = [];
-                if($info['city_id']){
+                if ($info['city_id']) {
                     $areaIds[] = $info['city_id'];
                 }
 
-                if($info['district_id']){
+                if ($info['district_id']) {
                     $areaIds[] = $info['district_id'];
                 }
 
                 $areas = CityModel::whereIn('citycode', $areaIds)->pluck('name');
-                $areas = $areas?$areas->toArray() :[];
-                $info['area'] = $areas? implode('/',$areas) : '';
+                $areas = $areas ? $areas->toArray() : [];
+                $info['area'] = $areas ? implode('/', $areas) : '';
+
+                // 企业
                 $stores = '';
                 if($info['store_ids']){
                     $stores = UserModel::whereIn('id', $info['store_ids'])
@@ -106,6 +109,16 @@ class MeetingService extends BaseService
                 }
 
                 $info['stores'] = $stores?$stores->toArray() : [];
+                $info['store_count'] = count($info['stores']);
+
+
+                // 邀请报名人数
+                $info['records_count']= (int)MeetingRecordsModel::from('meetings_records as a')
+                    ->leftJoin('member as b','b.id','=','a.user_id')
+                    ->where(['a.meeting_id'=>$id,'b.parent_id'=>$userId,'a.status'=>1])
+                    ->count('a.id');
+
+                /*
                 $supervisors = '';
                 if($info['supervisor_ids']){
                     $supervisors = SupervisorsModel::whereIn('id', $info['supervisor_ids'])
@@ -114,19 +127,23 @@ class MeetingService extends BaseService
                         ->get();
                 }
                 $info['supervisors'] = $supervisors?$supervisors->toArray() :[];
-                $info['store_count'] = count($info['stores']);
                 $info['supervisor_count'] =count($info['supervisors']);
+                */
 
-                $bookInfo = MeetingRecordsModel::where(['user_id'=>$userId,'meeting_id'=>$id,'mark'=>1])
-                    ->select(['id','is_sign','status'])
-                        ->first();
-                $bookInfo = $bookInfo?$bookInfo->toArray() : [];
-                $info['is_book'] = $bookInfo?1: 0;
-                $info['is_sign'] = isset($bookInfo['is_sign'])?$bookInfo['is_sign']: 0;
-                $info['is_fee'] = isset($bookInfo['status'])?$bookInfo['status']: 0;
+                $bookInfo = MeetingRecordsModel::where(['user_id' => $userId, 'meeting_id' => $id, 'mark' => 1])
+                    ->select(['id', 'is_sign', 'money', 'realname', 'mobile', 'is_claim', 'status'])
+                    ->first();
+                $bookInfo = $bookInfo ? $bookInfo->toArray() : [];
+                $info['is_book'] = $bookInfo ? 1 : 0;
+                $info['is_sign'] = isset($bookInfo['is_sign']) ? $bookInfo['is_sign'] : 0;
+                $info['is_claim'] = isset($bookInfo['is_claim']) ? $bookInfo['is_claim'] : 0;
+                $info['is_fee'] = isset($bookInfo['status']) ? $bookInfo['status'] : 0;
+                $info['pay_fee'] = isset($bookInfo['money']) ? floatval($bookInfo['money']) : 0;
+                $info['book_realname'] = isset($bookInfo['realname']) ? trim($bookInfo['realname']) : '';
+                $info['book_mobile'] = isset($bookInfo['mobile']) ? trim($bookInfo['mobile']) : '';
             }
 
-            RedisService::set($cacheKey, $info,   rand(5,10));
+            RedisService::set($cacheKey, $info, rand(5, 10));
         }
 
         return $info;
@@ -143,14 +160,14 @@ class MeetingService extends BaseService
         $list = $query->select(['meetings.*'])
             ->withCount(['records'])
             ->groupBy('meetings.id')
-            ->orderBy('meetings.sort','desc')
-            ->orderBy('meetings.id','desc')
+            ->orderBy('meetings.sort', 'desc')
+            ->orderBy('meetings.id', 'desc')
             ->paginate($pageSize > 0 ? $pageSize : 9999999);
-        $list = $list? $list->toArray() :[];
+        $list = $list ? $list->toArray() : [];
         return [
-            'pageSize'=> $pageSize,
-            'total'=>isset($list['total'])? $list['total'] : 0,
-            'list'=> isset($list['data'])? $list['data'] : []
+            'pageSize' => $pageSize,
+            'total' => isset($list['total']) ? $list['total'] : 0,
+            'list' => isset($list['data']) ? $list['data'] : []
         ];
     }
 
@@ -161,31 +178,31 @@ class MeetingService extends BaseService
      */
     public function getQuery($params)
     {
-        $where = ['meetings.status'=>0,'meetings.mark' => 1];
-        $status = isset($params['status']) && $params['status']? intval($params['status']) : 1;
-        if($status>0){
+        $where = ['meetings.status' => 0, 'meetings.mark' => 1];
+        $status = isset($params['status']) && $params['status'] ? intval($params['status']) : 1;
+        if ($status > 0) {
             $where['meetings.status'] = $status;
-        }else{
+        } else {
             unset($where['meetings.status']);
         }
 
-        return $this->model->with(['member','company'])
+        return $this->model->with(['member', 'company','province','city','district'])
             ->from('meetings')
-            ->leftJoin('meetings_records','meetings_records.meeting_id','meetings.id')
+            ->leftJoin('meetings_records', 'meetings_records.meeting_id', 'meetings.id')
             ->where($where)
-            ->where(function ($query) use($params){
-                $keyword = isset($params['keyword'])? $params['keyword'] : '';
-                if($keyword){
-                    $query->where('meetings.title','like',"%{$keyword}%");
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? $params['keyword'] : '';
+                if ($keyword) {
+                    $query->where('meetings.title', 'like', "%{$keyword}%");
                 }
 
-                $type = isset($params['type'])? $params['type'] : 0;
-                $userId = isset($params['user_id'])?$params['user_id'] : 0;
+                $type = isset($params['type']) ? $params['type'] : 0;
+                $userId = isset($params['user_id']) ? $params['user_id'] : 0;
                 // 我组织的
-                if($type==1){
+                if ($type == 1) {
                     $query->where('meetings.user_id', $userId);
-                }else if($type == 2){
-                    $query->where('meetings_records.user_id', $userId)->where('meetings_records.mark',1);
+                } else if ($type == 2) {
+                    $query->where('meetings_records.user_id', $userId)->where('meetings_records.mark', 1);
                 }
 
             });
@@ -200,7 +217,9 @@ class MeetingService extends BaseService
     public function books($userId, $params)
     {
         $meetingId = isset($params['id']) ? intval($params['id']) : 0;
-        if ($meetingId<=0) {
+        $realname = isset($params['realname']) ? trim($params['realname']) : '';
+        $mobile = isset($params['mobile']) ? trim($params['mobile']) : '';
+        if ($meetingId <= 0) {
             $this->error = '会议参数错误,请返回重试~';
             return false;
         }
@@ -212,36 +231,36 @@ class MeetingService extends BaseService
         }
 
         $nowDate = date('Y-m-d H:i:s');
-        $info = $this->model->where(['id'=>$meetingId])->first();
-        $startAt = isset($info['start_at'])?$info['start_at'] : '';
-        $endAt = isset($info['end_at'])?$info['end_at'] : '';
-        $fee = isset($info['fee'])?$info['fee'] : 0;
-        $orderDay = isset($info['order_day']) && $info['order_day']>1?intval($info['order_day']) : 1; // 订单关联天数
-        if($startAt && $nowDate < $startAt){
+        $info = $this->model->where(['id' => $meetingId])->first();
+        $startAt = isset($info['start_at']) ? $info['start_at'] : '';
+        $endAt = isset($info['end_at']) ? $info['end_at'] : '';
+        $fee = isset($info['fee']) ? $info['fee'] : 0;
+        $orderDay = isset($info['order_day']) && $info['order_day'] > 1 ? intval($info['order_day']) : 1; // 订单关联天数
+        if ($startAt && $nowDate < $startAt) {
             RedisService::clear($cacheKey);
             $this->error = '会议尚未开始,无法报名';
             return false;
         }
 
-        if($endAt && $nowDate > $endAt){
+        if ($endAt && $nowDate > $endAt) {
             RedisService::clear($cacheKey);
             $this->error = '会议已结束,无法报名';
             return false;
         }
 
-        $record = MeetingRecordsModel::where(['meeting_id'=> $meetingId,'user_id'=>$userId,'mark'=>1])->first();
-        $status = isset($record['status'])?$record['status']:0;
-        if($record){
+        $record = MeetingRecordsModel::where(['meeting_id' => $meetingId, 'user_id' => $userId, 'mark' => 1])->first();
+        $status = isset($record['status']) ? $record['status'] : 0;
+        if ($record) {
             RedisService::clear($cacheKey);
-            $this->error = $status==1? '您已经完成报名': '您已经完成报名,请等候付费确认';
+            $this->error = $status == 1 ? '您已经完成报名' : '您已经完成报名,请等候付费确认';
             return false;
         }
 
-        $otherRecord = MeetingRecordsModel::with(['meeting'])->where(['user_id'=>$userId,'mark'=>1])->first();
-        $meeting = isset($otherRecord['meeting'])?$otherRecord['meeting']:[];
-        $meetingStartAt = isset($meeting['start_at'])?$meeting['start_at'] : '';
-        $meetingEndAt = isset($meeting['end_at'])?$meeting['end_at'] : '';
-        if($otherRecord && $meetingStartAt <= $nowDate && $nowDate <= $meetingEndAt){
+        $otherRecord = MeetingRecordsModel::with(['meeting'])->where(['user_id' => $userId, 'mark' => 1])->first();
+        $meeting = isset($otherRecord['meeting']) ? $otherRecord['meeting'] : [];
+        $meetingStartAt = isset($meeting['start_at']) ? $meeting['start_at'] : '';
+        $meetingEndAt = isset($meeting['end_at']) ? $meeting['end_at'] : '';
+        if ($otherRecord && $meetingStartAt <= $nowDate && $nowDate <= $meetingEndAt) {
             RedisService::clear($cacheKey);
             $this->error = '您有未完成的会议,请完成后再报名';
             return false;
@@ -250,22 +269,25 @@ class MeetingService extends BaseService
         $data = [
             'user_id' => $userId,
             'meeting_id' => $meetingId,
+            'realname' => $realname,
+            'mobile' => $mobile,
             'order_count' => 0,
             'order_total' => 0,
             'is_sign' => 2,
-            'status' => $fee<=0?1:2,
+            'is_claim' => 2,
+            'status' => $fee <= 0 ? 1 : 2,
             'create_time' => time(),
             'update_time' => time(),
             'mark' => 1,
         ];
 
-        if(!$id = MeetingRecordsModel::insertGetId($data)){
+        if (!$id = MeetingRecordsModel::insertGetId($data)) {
             RedisService::clear($cacheKey);
             $this->error = '报名失败';
             return false;
         }
 
-        $this->error = $fee>0?'报名成功,请等候付费确认':'报名成功';
+        $this->error = $fee > 0 ? '报名成功,请等候付费确认' : '报名成功';
         RedisService::set($cacheKey, $data, 30);
         RedisService::keyDel("caches:meeting:info_{$meetingId}_{$userId}*");
         return ['id' => $id];
@@ -280,7 +302,7 @@ class MeetingService extends BaseService
     public function sign($userId, $params)
     {
         $meetingId = isset($params['id']) ? intval($params['id']) : 0;
-        if ($meetingId<=0) {
+        if ($meetingId <= 0) {
             $this->error = '会议参数错误,请返回重试~';
             return false;
         }
@@ -292,51 +314,50 @@ class MeetingService extends BaseService
         }
 
 
-
         $nowDate = date('Y-m-d H:i:s');
-        $info = $this->model->where(['id'=>$meetingId])->first();
-        $startAt = isset($info['start_at'])?$info['start_at'] : '';
-        $endAt = isset($info['end_at'])?$info['end_at'] : '';
-        $orderDay = isset($info['order_day']) && $info['order_day']>1?intval($info['order_day']) : 1; // 订单关联天数
-        if($startAt && $nowDate < $startAt){
+        $info = $this->model->where(['id' => $meetingId])->first();
+        $startAt = isset($info['start_at']) ? $info['start_at'] : '';
+        $endAt = isset($info['end_at']) ? $info['end_at'] : '';
+        $orderDay = isset($info['order_day']) && $info['order_day'] > 1 ? intval($info['order_day']) : 1; // 订单关联天数
+        if ($startAt && $nowDate < $startAt) {
             RedisService::clear($cacheKey);
             $this->error = '会议尚未开始,无法签到';
             return false;
         }
 
-        if($endAt && $nowDate > $endAt){
+        if ($endAt && $nowDate > $endAt) {
             RedisService::clear($cacheKey);
             $this->error = '会议已结束,无法签到';
             return false;
         }
 
-        $record = MeetingRecordsModel::where(['meeting_id'=> $meetingId,'user_id'=>$userId,'mark'=>1])->first();
-        $recordId = isset($record['id'])?$record['id'] : 0;
-        $isSign = isset($record['is_sign'])?$record['is_sign'] : 0;
-        $bookStatus = isset($record['status'])?$record['status'] : 0;
-        if(empty($record) || $recordId<=0){
+        $record = MeetingRecordsModel::where(['meeting_id' => $meetingId, 'user_id' => $userId, 'mark' => 1])->first();
+        $recordId = isset($record['id']) ? $record['id'] : 0;
+        $isSign = isset($record['is_sign']) ? $record['is_sign'] : 0;
+        $bookStatus = isset($record['status']) ? $record['status'] : 0;
+        if (empty($record) || $recordId <= 0) {
             RedisService::clear($cacheKey);
             $this->error = '抱歉,请先完成报名';
             return false;
         }
 
-        if($bookStatus!=1){
+        if ($bookStatus != 1) {
             RedisService::clear($cacheKey);
             $this->error = '抱歉,请先完成报名付费确认';
             return false;
         }
 
-        if($isSign==1){
+        if ($isSign == 1) {
             RedisService::clear($cacheKey);
             $this->error = '您已经完成签到';
             return false;
         }
 
-        $otherRecord = MeetingRecordsModel::with(['meeting'])->where(['user_id'=>$userId,'mark'=>1])->first();
-        $meeting = isset($otherRecord['meeting'])?$otherRecord['meeting']:[];
-        $meetingStartAt = isset($meeting['start_at'])?$meeting['start_at'] : '';
-        $meetingEndAt = isset($meeting['end_at'])?$meeting['end_at'] : '';
-        if($otherRecord && $meetingStartAt <= $nowDate && $nowDate <= $meetingEndAt){
+        $otherRecord = MeetingRecordsModel::with(['meeting'])->where(['user_id' => $userId, 'mark' => 1])->first();
+        $meeting = isset($otherRecord['meeting']) ? $otherRecord['meeting'] : [];
+        $meetingStartAt = isset($meeting['start_at']) ? $meeting['start_at'] : '';
+        $meetingEndAt = isset($meeting['end_at']) ? $meeting['end_at'] : '';
+        if ($otherRecord && $meetingStartAt <= $nowDate && $nowDate <= $meetingEndAt) {
             RedisService::clear($cacheKey);
             $this->error = '您有未完成的会议,请完成后再签到';
             return false;
@@ -352,7 +373,7 @@ class MeetingService extends BaseService
         ];
 
 
-        MeetingRecordsModel::where(['id'=>$recordId])->update($data);
+        MeetingRecordsModel::where(['id' => $recordId])->update($data);
 
         $this->error = '签到成功';
         RedisService::set($cacheKey, $data, 30);
@@ -360,6 +381,91 @@ class MeetingService extends BaseService
         return ['id' => $recordId];
     }
 
+    /**
+     * 领取物料
+     * @param $userId
+     * @param $params
+     * @return array|false
+     */
+    public function claim($userId, $params)
+    {
+        $meetingId = isset($params['id']) ? intval($params['id']) : 0;
+        if ($meetingId <= 0) {
+            $this->error = '会议参数错误,请返回重试~';
+            return false;
+        }
+
+        $cacheKey = "caches:meetingClaim:{$userId}_{$meetingId}";
+        if (RedisService::get($cacheKey)) {
+            $this->error = '请不要重复领取';
+            return false;
+        }
+
+
+        $nowDate = date('Y-m-d H:i:s');
+        $info = $this->model->where(['id' => $meetingId])->first();
+        $startAt = isset($info['start_at']) ? $info['start_at'] : '';
+        $endAt = isset($info['end_at']) ? $info['end_at'] : '';
+        $orderDay = isset($info['order_day']) && $info['order_day'] > 1 ? intval($info['order_day']) : 1; // 订单关联天数
+        if ($startAt && $nowDate < $startAt) {
+            RedisService::clear($cacheKey);
+            $this->error = '会议尚未开始,无法签到';
+            return false;
+        }
+
+        if ($endAt && $nowDate > $endAt) {
+            RedisService::clear($cacheKey);
+            $this->error = '会议已结束,无法签到';
+            return false;
+        }
+
+        $record = MeetingRecordsModel::where(['meeting_id' => $meetingId, 'user_id' => $userId, 'mark' => 1])->first();
+        $recordId = isset($record['id']) ? $record['id'] : 0;
+        $isSign = isset($record['is_sign']) ? $record['is_sign'] : 0;
+        $isClaim = isset($record['is_claim']) ? $record['is_claim'] : 0;
+        $bookStatus = isset($record['status']) ? $record['status'] : 0;
+        if (empty($record) || $recordId <= 0) {
+            RedisService::clear($cacheKey);
+            $this->error = '抱歉,请先完成报名';
+            return false;
+        }
+
+        if ($bookStatus != 1) {
+            RedisService::clear($cacheKey);
+            $this->error = '抱歉,请先完成报名付费确认';
+            return false;
+        }
+
+        if ($isSign != 1) {
+            RedisService::clear($cacheKey);
+            $this->error = '请先完成签到';
+            return false;
+        }
+
+
+        if ($isClaim == 1) {
+            RedisService::clear($cacheKey);
+            $this->error = '您已经领取过物料';
+            return false;
+        }
+
+        $data = [
+            'is_claim' => 1,
+            'claim_at' => date('Y-m-d H:i:s'),
+            'create_time' => time(),
+            'update_time' => time(),
+            'mark' => 1,
+        ];
+
+
+        MeetingRecordsModel::where(['id' => $recordId])->update($data);
+
+        $this->error = '领取成功';
+        RedisService::set($cacheKey, $data, 30);
+        RedisService::keyDel("caches:meeting:info_{$meetingId}_{$userId}*");
+        return ['id' => $recordId];
+    }
+
 
     /**
      * 会议报名签到记录
@@ -367,31 +473,40 @@ class MeetingService extends BaseService
      * @param int $pageSize
      * @return array
      */
-    public function records($params,$pageSize=20)
+    public function records($params, $pageSize = 20, $userId = 0)
     {
-        $meetingId = isset($params['meeting_id'])?$params['meeting_id']: 0;
-        $list = MeetingRecordsModel::with(['member'])
+        $meetingId = isset($params['meeting_id']) ? $params['meeting_id'] : 0;
+        $where = ['b.parent_id' => $userId, 'a.meeting_id' => $meetingId, 'a.mark' => 1];
+        $query = MeetingRecordsModel::with(['member'])
             ->from('meetings_records as a')
-            ->leftJoin('member as b','b.id','=','a.user_id')
-            ->where(function($query) use($params){
-                $keyword = isset($params['keyword'])? trim($params['keyword']) : '';
-                if($keyword){
-                    $query->where('b.mobile','like',"%{$keyword}%")
-                        ->orWhere('b.nickname','like',"%{$keyword}%")
-                        ->orWhere('b.realname','like',"%{$keyword}%");
+            ->leftJoin('member as b', 'b.id', '=', 'a.user_id')
+            ->where(function ($query) use ($params) {
+                $keyword = isset($params['keyword']) ? trim($params['keyword']) : '';
+                if ($keyword) {
+                    $query->where('b.mobile', 'like', "%{$keyword}%")
+                        ->orWhere('b.nickname', 'like', "%{$keyword}%")
+                        ->orWhere('b.realname', 'like', "%{$keyword}%");
                 }
             })
-            ->where('b.id','>',0)
-            ->where(['a.meeting_id'=>$meetingId,'a.is_sign'=>1,'a.mark'=>1])
-            ->select(['a.*'])
-            ->orderBy('a.id','desc')
+            ->where('b.id', '>', 0);
+
+        $query1 = clone $query;
+        $list = $query1->where($where)->select(['a.*'])
+            ->orderBy('a.id', 'desc')
             ->paginate($pageSize > 0 ? $pageSize : 9999999);
-        $list = $list? $list->toArray() :[];
+        $list = $list ? $list->toArray() : [];
+
+        $query2 = clone $query;
+        unset($where['b.parent_id']);
+//        var_dump($where);
+        $total = $query2->where($where)->count('a.id');
+
 
         return [
-            'pageSize'=> $pageSize,
-            'total'=>isset($list['total'])? $list['total'] : 0,
-            'list'=> isset($list['data'])? $list['data'] : []
+            'pageSize' => $pageSize,
+            'count' => isset($list['total']) ? $list['total'] : 0,
+            'total' => $total,
+            'list' => isset($list['data']) ? $list['data'] : []
         ];
     }
 }

+ 2 - 2
app/Services/Api/MemberService.php

@@ -182,7 +182,7 @@ class MemberService extends BaseService
         // 结果返回
         $result = [
             'access_token' => $token,
-            'info' => ['uid' => $userId, 'openid' => $openid, 'has_info' => $avatar && $nickName ? 1 : 0, 'mobile' => $mobile],
+            'info' => ['id' => $userId, 'openid' => $openid, 'has_info' => $avatar && $nickName ? 1 : 0, 'mobile' => $mobile],
         ];
 
         // 用户缓存信息
@@ -216,7 +216,7 @@ class MemberService extends BaseService
         }
 
         $userInfo = $this->model->where(['id'=>$id,'mark'=>1])
-            ->select(['id as uid', 'nickname','mobile', 'openid','avatar'])
+            ->select(['id', 'nickname','mobile', 'openid','avatar'])
             ->first();
         $phone = isset($userInfo['mobile'])? $userInfo['mobile'] : '';
         if(empty($userInfo)){

+ 44 - 11
app/Services/Common/MeetingRecordService.php

@@ -11,6 +11,7 @@
 
 namespace App\Services\Common;
 
+use App\Models\MeetingModel;
 use App\Models\MeetingRecordsModel;
 use App\Services\BaseService;
 use App\Services\RedisService;
@@ -103,20 +104,52 @@ class MeetingRecordService extends BaseService
     public function status()
     {
         $id = request()->post('id',0);
-        $ids = request()->post('ids');
-        if($ids){
-            $this->model->whereIn('id', $ids)->update(['status'=>1,'update_time'=>time()]);
-            foreach ($ids as $id){
-                RedisService::keyDel("caches:meeting:info_{$id}*");
-            }
+        $status = request()->post('status',1);
+        $mid = request()->post('mid',0);
+        $money = request()->post('money',0);
+
+        $this->model->where('id', $id)->update(['status'=> $status,'money'=>$money,'update_time'=>time()]);
+        RedisService::keyDel("caches:meeting:info_{$mid}*");
+        return message();
+//        $ids = request()->post('ids');
+//        $fee = $status==1 && $mid?MeetingModel::where(['id'=>$mid])->value('fee'):0;
+//        if($ids){
+//            $this->model->whereIn('id', $ids)->update(['status'=> $status,'money'=>$fee,'update_time'=>time()]);
+//            foreach ($ids as $id){
+//                RedisService::keyDel("caches:meeting:info_{$mid}*");
+//            }
+//
+//            return message();
+//        }else{
+//            $this->model->where('id', $id)->update(['status'=> $status,'money'=>$fee,'update_time'=>time()]);
+//            RedisService::keyDel("caches:meeting:info_{$mid}*");
+//            return message();
+//        }
+    }
 
-            return message();
-        }else{
-            $result = parent::status(); // TODO: Change the autogenerated stub
-            RedisService::keyDel("caches:meeting:info_{$id}*");
-            return $result;
+    /**
+     * 领取
+     * @return array
+     */
+    public function claim()
+    {
+        $id = request()->post('id',0);
+        $isClaim = request()->post('is_claim',1);
+        $mid = request()->post('mid',0);
+
+        $info= $this->model->where('id', $id)->first();
+        if(empty($info)){
+            return message('报名记录不存在',false);
         }
 
+        if($info['is_sign']!=1 && $isClaim == 1){
+            return message('该用户未签到,请先签到',false);
+        }
+
+        $this->model->where('id', $id)->update(['is_claim'=> $isClaim,'update_time'=>time()]);
+        RedisService::keyDel("caches:meeting:info_{$mid}*");
+        return message();
+
     }
 
 

+ 0 - 2
app/Services/Common/MeetingService.php

@@ -50,7 +50,6 @@ class MeetingService extends BaseService
         return self::$instance;
     }
 
-
     /**
      * 获取数据列表
      * @param array $params 请求参数
@@ -163,7 +162,6 @@ class MeetingService extends BaseService
         return parent::edit($data);
     }
 
-
     /**
      * 获取详情
      */

+ 2 - 1
routes/api.php

@@ -39,6 +39,7 @@ Route::prefix('v1')->group(function() {
     // 主页商品
     Route::post('/goods/index', [\App\Http\Controllers\Api\v1\GoodsController::class, 'index']);
     Route::post('/goods/category/list', [\App\Http\Controllers\Api\v1\GoodsController::class, 'categorys']);
+    Route::post('/goods/info', [\App\Http\Controllers\Api\v1\GoodsController::class, 'info']);
 
     Route::get('/order/info', [\App\Http\Controllers\Api\v1\OrderController::class, 'info']);
     Route::post('/supervisor/index', [\App\Http\Controllers\Api\v1\SupervisorsController::class, 'index']);
@@ -104,7 +105,6 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
 
     // 商品
     Route::post('/goods/buyGoods', [\App\Http\Controllers\Api\v1\GoodsController::class, 'buyGoods']);
-    Route::post('/goods/info', [\App\Http\Controllers\Api\v1\GoodsController::class, 'info']);
     Route::post('/goods/collect', [\App\Http\Controllers\Api\v1\GoodsController::class, 'collect']);
 
     // 收货地址
@@ -124,6 +124,7 @@ Route::prefix('v1')->middleware('web.login')->group(function() {
     Route::post('/meeting/getLink', [\App\Http\Controllers\Api\v1\MeetingController::class, 'getLink']);
     Route::post('/meeting/books', [\App\Http\Controllers\Api\v1\MeetingController::class, 'books']);
     Route::post('/meeting/sign', [\App\Http\Controllers\Api\v1\MeetingController::class, 'sign']);
+    Route::post('/meeting/claim', [\App\Http\Controllers\Api\v1\MeetingController::class, 'claim']);
     Route::post('/meeting/record/list', [\App\Http\Controllers\Api\v1\MeetingController::class, 'records']);
 
 

+ 1 - 0
routes/web.php

@@ -278,6 +278,7 @@ Route::get('/meetingRecord/index', [\App\Http\Controllers\Admin\MeetingRecordCon
 Route::get('/meetingRecord/info', [\App\Http\Controllers\Admin\MeetingRecordController::class, 'info']);
 Route::post('/meetingRecord/edit', [\App\Http\Controllers\Admin\MeetingRecordController::class, 'edit']);
 Route::post('/meetingRecord/delete', [\App\Http\Controllers\Admin\MeetingRecordController::class, 'delete']);
+Route::post('/meetingRecord/claim', [\App\Http\Controllers\Admin\MeetingRecordController::class, 'claim']);
 Route::post('/meetingRecord/status', [\App\Http\Controllers\Admin\MeetingRecordController::class, 'status']);