1 , 'msg'=>'缺少参数信息']); $data = ModelSpellgroup::where(['id'=>$param['spellgroup_id'] , 'del'=>0])->field('id,title,cover,start_date,end_date,hour,number,content')->find(); if(empty($data)) return json(['code'=>1 , 'msg'=>'拼团活动已下架']); $data['end'] = 0; //已拼单数 $data['success_order'] = SpellgroupTeam::where('spellgroup_id',$param['spellgroup_id'])->whereColumn('join_num','>=','number')->sum('join_num'); //多少人参与拼单 $data['join_order'] = SpellgroupTeam::where('spellgroup_id',$param['spellgroup_id'])->whereColumn('join_num','<','number')->sum('join_num'); //拼团组详情 $data['team'] = [ 'tid' => 0, 'countdown' => '', 'headimgurl' => [], 'number' => $data['number'] ]; //通过业务员端分享过来 if(empty($param['team_id'])) { //是否参与过拼团 $token = request()->token; $isJoin = SpellgroupJoin::where(['join_uid'=>$token['uid'] , 'spellgroup_id'=>$param['spellgroup_id']])->find(); if(!empty($isJoin)){ $team = SpellgroupTeam::where(['id'=>$isJoin['team_id'] , 'spellgroup_id'=>$param['spellgroup_id']])->find(); $headimgurl = SpellgroupJoin::with(['user'])->where(['team_id'=>$isJoin['team_id'] , 'spellgroup_id'=>$param['spellgroup_id']])->field('join_uid')->select(); $data['team'] = [ 'tid' => $isJoin['team_id'], 'countdown' => $this->countdown($team['open_time'] , $data['hour']), 'headimgurl' => $headimgurl, 'number' => $team['join_num'] >= $team['number'] ? 0 : $team['number']-$team['join_num'], ]; $data['team']['countdown'] == 0 ? $data['end'] = 2 : '' ; $data['team']['number'] == 0 ? $data['end'] = 3 : '' ; } }else{ $team = SpellgroupTeam::where(['id'=>$param['team_id'] , 'spellgroup_id'=>$param['spellgroup_id']])->find(); $headimgurl = SpellgroupJoin::with(['user'])->where(['team_id'=>$team['id'] , 'spellgroup_id'=>$param['spellgroup_id']])->field('join_uid')->select(); $data['team'] = [ 'tid' => $team['id'], 'countdown' => $this->countdown($team['open_time'] , $data['hour']), 'headimgurl' => $headimgurl, 'number' => $team['join_num'] >= $team['number'] ? 0 : $team['number']-$team['join_num'], ]; $data['team']['countdown'] == 0 ? $data['end'] = 2 : '' ; $data['team']['number'] == 0 ? $data['end'] = 3 : '' ; } //是否参与该拼团 $token = request()->token; $userIsJoin = SpellgroupJoin::where(['join_uid'=>$token['uid'] , 'spellgroup_id'=>$param['spellgroup_id']])->count(); $userIsJoin > 0 ? $data['end'] = 4 : '' ; //拼团活动是否结束 if($data['end_date'] < date('Y-m-d')) $data['end'] = 1; return json(['code'=>0 , 'data'=>$data , 'msg'=>'获取成功']); } /* * 拼团列表 */ public function team_list() { $param = Request::only(['spellgroup_id','page']); $group = ModelSpellgroup::where('id',$param['spellgroup_id'])->field('hour')->find(); $data = SpellgroupTeam::where([['spellgroup_id','=',$param['spellgroup_id']]])->whereColumn('join_num','<','number') ->field('id,employee_id,spellgroup_id,open_time,number,join_num') ->order(['open_time'=>'desc']) ->page($param['page'] , 15) ->select() ->toArray(); foreach ($data as &$item) { //是否结束 $item['countdown'] = $this->countdown($item['open_time'] , $group['hour']); //相差人数 $item['lack_number'] = $item['number'] - $item['join_num']; //展示头像 $item['userinfo'] = SpellgroupJoin::with(['user'])->where('team_id',$item['id'])->field('join_uid')->order('addtime')->find(); } return json(['code'=>0 , 'data'=>$data , 'msg'=>'获取成功']); } /* * 参与拼团 */ public function join() { $param = Request::only(['spellgroup_id','employee_id','team_id','phone']); //拼团信息 $group = ModelSpellgroup::where(['id'=>$param['spellgroup_id'] , 'del'=>0])->whereTime('end_date','>=',date('Y-m-d'))->find(); if(empty($group)) return json(['code'=>1 , 'msg'=>'拼团活动已下架']); $token = request()->token; $count = SpellgroupJoin::where(['join_uid'=>$token['uid'] , 'spellgroup_id'=>$group['spellgroup_id']])->count(); if($count>0) return json(['code'=>2 , 'msg'=>'您已参加过该拼团']); //拼团 if(!empty($param['team_id'])) { $team = SpellgroupTeam::where(['id'=>$param['team_id'] , 'spellgroup_id'=>$param['spellgroup_id']])->find(); if($team['join_num'] >= $team['number']) return json(['code'=>3 , 'msg'=>'拼团人数已满']); if(strtotime('+'.$group['hour'].'hour',strtotime($team['open_time'])) < time()) return json(['code'=>4 , 'msg'=>'拼团时限已结束']); SpellgroupTeam::where(['id'=>$param['team_id'] , 'spellgroup_id'=>$param['spellgroup_id']])->inc('join_num')->update(); $addJoinUid = [ 'join_uid' => $token['uid'], 'phone' => $param['phone'], 'spellgroup_id' => $group['id'], 'employee_id' => $param['employee_id'], 'team_id' => $param['team_id'] ]; SpellgroupJoin::insert($addJoinUid); }else{ $addTeam = [ 'employee_id' => $param['employee_id'], 'spellgroup_id' => $param['spellgroup_id'], 'open_time' => date('Y-m-d h:i:s'), 'join_num' => 1, 'number' => $group['number'] ]; $param['team_id'] = SpellgroupTeam::insertGetId($addTeam); $addJoinUid = [ 'join_uid' => $token['uid'], 'phone' => $param['phone'], 'spellgroup_id' => $group['id'], 'employee_id' => $param['employee_id'], 'team_id' => $param['team_id'] ]; SpellgroupJoin::insert($addJoinUid); } return json(['code'=>0 , 'msg'=>'拼团成功' , 'team_id'=>$param['team_id']]); } /* * 拼团剩余倒计时 */ private function countdown($open_time , $hour) { $start_time = time(); $end_time = strtotime('+'.$hour.'hour',strtotime($open_time)); $t = $end_time - $start_time; if($end_time <= $start_time){ return 0; } if($t <= 60){ return $t; }else if($t <= 3600){ $i = intval(floor($t/60)); $s = $t%60; return $i.':'.$s; }else if($t > 3600){ $h = floor($t/3600); $i = floor(($t-3600 * $h)/60); $s = floor($t-($h*3600+$i*60)); return $h.':'.$i.':'.$s; } } }