123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace app\client\controller;
- use think\facade\Request;
- use app\model\Spellgroup as ModelSpellgroup;
- use app\model\SpellgroupJoin;
- use app\model\SpellgroupTeam;
- class Spellgroup extends Base
- {
-
- /*
- * 拼团详情
- */
- public function details()
- {
- $param = Request::only(['spellgroup_id','team_id','employee_id']);
- if(empty($param['employee_id'])) return json(['code'=>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;
- }
- }
- }
|