123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\DB;
- class RankController extends Controller
- {
- public function user_rank(Request $request){
- $season=DB::table('basic')->where('keys','=','season')->value('value');
- if ($request->type==1){
- if ($request->season==$season){
- $data=DB::table('user')
- ->join('enroll','enroll.uid','=','user.id')
- ->join('service','service.phone','=','user.up_phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->where('enroll.status',0)
- ->where('enroll.season',$request->season)
- ->orderByDesc('user.integral')
- ->select('user.nickname','user.id','user.phone','user.integral as score','user.up_name','user.avatar','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
- ->paginate(15);
- if($data->items()){
- return $this->success_list($data->items(),'ok',$data->total());
- }
- }else{
- $data=DB::table('user')
- ->join('glory','glory.uid','=','user.id')
- ->join('service','service.phone','=','user.up_phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->where('glory.season',$request->season)
- ->orderByDesc('glory.integral')
- ->select('user.nickname','user.id','user.phone','glory.integral as score','user.avatar','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.up_phone')
- ->paginate(15);
- if($data->items()){
- return $this->success_list($data->items(),'ok',$data->total());
- }
- }
- return $this->success_list([]);
- }
- if ($request->type==2){
- if ($request->season==$season){
- $data=DB::table('user')
- ->join('service','service.phone','=','user.phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->where('user.level_name','=','代理公司')
- ->orderByDesc('user.integral')
- ->select('user.id','user.nickname','user.phone','user.integral as score','user.avatar','user.up_name','user.up_phone','service.uid as sid','war_zone.war_name')->paginate(15);
- if($data->items()){
- return $this->success_list($data->items(),'ok',$data->total());
- }
- }else{
- $data=DB::table('user')
- ->join('service','service.phone','=','user.phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->join('glory','glory.uid','=','user.id')
- ->where('glory.season','=',$request->season)
- ->where('user.level_name','=','代理公司')
- ->orderByDesc('glory.integral')
- ->select('user.id','user.nickname','user.phone','glory.integral as score','user.up_name','user.avatar','user.up_phone','service.uid as sid','war_zone.war_name')->paginate(15);
- if($data->items()){
- return $this->success_list($data->items(),'ok',$data->total());
- }
- }
- return $this->success_list([]);
- }
- else{
- $phone=DB::table('user')->where('level_name','政委')->select('phone','id')->get();
- foreach ($phone as $k=>$v){
- $inte=DB::table('user')->where('up_phone',$v->phone)->sum('integral');
- DB::table('user')->where('id',$v->id)->update(['integral'=>$inte]);
- }
- $datas=DB::select("SELECT FLOOR(f.total) as total,f.war_names FROM (SELECT SUM(s.integral/10) as total,s.war_names FROM (SELECT t.* ,w.war_names FROM service w JOIN (SELECT a.phone,a.up_phone,p.integral FROM `user` a JOIN (SELECT SUM(integral) as integral,uid FROM inte_log WHERE type=1 AND season=? GROUP BY uid) as p ON a.id=p.uid) as t ON w.phone =t.up_phone) as s GROUP BY s.war_names) as f ",[$request->season]);
- foreach ($datas as $k=>$v){
- $s[$v->war_names]=$v->total;
- }
- if ($request->season==$season){
- $data = DB::table('user')->join('war_zone', 'war_zone.uid', '=', 'user.id')
- ->select('user.*', 'war_zone.war_name','war_zone.war_avatar','user.nickname','user.phone','user.total')->orderByDesc('user.integral')->get();
- foreach ($data as $k => $v) {
- $float = $v->rank_end - $v->rank;
- $da[$k]['id'] = $v->id;
- $da[$k]['total'] = $v->total;
- $da[$k]['war_name'] = $v->war_name;
- $da[$k]['score'] = $v->integral;
- $da[$k]['avatar'] = $v->war_avatar;
- $da[$k]['nickname'] = $v->nickname;
- $da[$k]['phone'] = $v->phone;
- $da[$k]['level_name'] = "政委";
- $da[$k]['up_name']=$s[$v->war_name];
- $da[$k]['float'] = $float > 0 ? $float : 0;
- }
- return $this->response()->array([
- 'code' => 200,
- 'data' => [
- 'list' => $da
- ]
- ]);
- }else{
- $data = DB::table('user')->join('war_zone', 'war_zone.uid', '=', 'user.id')
- ->join('glory','glory.uid','=','user.id')
- ->where('glory.season','=',$request->season)
- ->select('user.id','user.total','glory.integral as integral','user.nickname','user.phone', 'war_zone.war_name','war_zone.war_avatar','user.nickname','user.phone','user.total')->orderByDesc('glory.integral')->get();
- foreach ($data as $k => $v) {
- // $float = $v->rank_end - $v->rank;
- $da[$k]['id'] = $v->id;
- $da[$k]['total'] = $v->total;
- $da[$k]['war_name'] = $v->war_name;
- $da[$k]['score'] = $v->integral;
- $da[$k]['avatar'] = $v->war_avatar;
- $da[$k]['nickname'] = $v->nickname;
- $da[$k]['phone'] = $v->phone;
- $da[$k]['level_name'] = "政委";
- $da[$k]['up_name']=$s[$v->war_name];
- // $da[$k]['float'] = $float > 0 ? $float : 0;
- }
- return $this->response()->array([
- 'code' => 200,
- 'data' => [
- 'list' => $da
- ]
- ]);
- }
- }
- }
- public function rank_search(Request $request){
- $string=$request->phone;
- if (is_numeric($string)){
- $s='user.phone';
- }else{
- $s='user.nickname';
- }
- if ($request->type==1){
- $data=DB::table('user')
- ->join('service','service.phone','=','user.up_phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->where($s,'like','%'.$string.'%')
- ->select('user.nickname','user.id','user.phone','user.integral as score','user.up_name','user.level_name','user.avatar','service.uid as sid','war_zone.war_name','user.rank','user.up_phone')
- ->paginate(15);
- }if ($request->type==2){
- $data=DB::table('user')
- ->join('service','service.phone','=','user.phone')
- ->join('war_zone','war_zone.uid','=','service.uid')
- ->where($s,'like','%'.$string.'%')
- ->select('user.nickname','user.id','user.phone','user.integral as score','user.avatar','user.up_name','user.level_name','service.uid as sid','war_zone.war_name','user.rank','user.up_phone')
- ->paginate(15);
- }
- if ($data->items()){
- return $this->success_list($data->items(),'ok',$data->total());
- }
- return $this->success([]);
- }
- }
|