123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php namespace App\Http\Controllers\Api\Riddle;
- use App\Http\Controllers\Api\Api;
- use App\Models\Riddle\Active as Model;
- use App\Models\Riddle\ActiveShare;
- use App\Models\Riddle\ActiveRecord;
- use App\Models\Custom;
- use App\Models\WeiBan\Tags as WeiBanTags;
- /**
- * 灯谜活动
- *
- * @author 刘相欣
- *
- * */
- class Active extends Api{
- /**
- * 获取抽奖配置 /api/riddle_active/get_detail
- *
- * */
- public function get_detail(Model $Model,Custom $Custom,WeiBanTags $WeiBanTags,ActiveShare $ActiveShare,ActiveRecord $ActiveRecord){
- // 接口验签
- // $this->verify_sign();
- // 检查登录
- $uid = $this->checkLogin();
- // 获取客户信息
- $custom = $Custom->getOne($uid);
- // 如果存在的话
- if( !$custom ) return json_send(['code'=>'no_login','msg'=>'请登录','data'=>['error'=>'无对应客户']]);
- // 接收参数
- $id = request('id',0);
- // 获取客户城市的数据
- $data = $Model->getOne($id);
- // 如果存在的话
- if( !$data ) return json_send(['code'=>'error','msg'=>'暂无活动','data'=>$data]);
- // 默认可以参加活动
- $data['allow_join'] = 1;
- // 判断是不是可以参与
- if( $data['tag_scope'] ) {
- // 解析数组
- $data['tag_scope'] = explode(',',$data['tag_scope']);
- // 查询用户标签
- $tags = $WeiBanTags->getListByWeibanExtid($custom['weiban_extid']);
- // 标签范围限定时,默认不能参与
- $data['allow_join'] = 0;
- // 判断标签是不是存在
- foreach ($tags as $value) {
- // 标签范围内,允许参加
- if( in_array($value['name'],$data['tag_scope']) ) $data['allow_join'] = 1;
- }
- // 如果不能参与
- if( !$data['allow_join'] ) return json_send(['code'=>'error','msg'=>'账号不在标签范围','data'=>['error'=>'不在标签范围内']]);
- }
- // 判断是不是可以参与
- if( $data['city_ids'] ) {
- // 解析数组
- $data['city_ids'] = explode(',',$data['city_ids']);
- // 如果不在城市范围
- if( !in_array($custom['city_id'],$data['city_ids']) ) $data['allow_join'] = 0;
- // 如果不能参与
- if( !$data['allow_join'] ) return json_send(['code'=>'error','msg'=>'账号不在活动城市','data'=>['error'=>'账号不在活动城市']]);
- }
- // 获取参与次数
- $joinTotal = $ActiveRecord->query()->where([['active_id','=',$id],['custom_uid','=',$uid]])->count();
- // 获取答题次数
- $shareTotal = $ActiveShare->query()->where([['active_id','=',$id],['custom_uid','=',$uid]])->count();
- // 计算答题次数
- $data['join_total'] = $data['join_total'] + ( $shareTotal >= $data['join_share'] ? $data['join_share'] : $shareTotal);
- // 计算剩余参与次数
- $data['join_last'] = $data['join_total'] - $joinTotal;
- // 计算剩余分享次数
- $data['share_last'] = ($data['join_share'] - $shareTotal <= 0 ? 0 : $data['join_share'] - $shareTotal);
- // 删除不必要的数据
- unset($data['allow_join'],$data['tag_scope'],$data['city_ids']);
- // 返回结果
- return json_send(['code'=>'success','msg'=>'获取成功','data'=>$data]);
- }
-
- }
|