123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514 |
- <?php
- namespace App\Http\Controllers;
- use App\Events\SignMessageEvent;
- use App\Jobs\SignTestJob;
- use App\Models\Activity;
- use App\Models\Express;
- use App\Models\Goodattr;
- use App\Models\Goodtest;
- use App\Models\Orderdetail;
- use App\Models\Ordertest;
- use App\Models\UserZ;
- use App\Models\Warea;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use App\Models\User;
- use App\Models\Order;
- use App\Models\Goods;
- use App\Models\OrderGoods;
- use App\Models\Article;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Log;
- class IndexController extends Controller
- {
- public function TestCache(){
- $data=[];
- SignTestJob::dispatch(new SignTestJob($data));
- }
- //代理总数
- public function getDataTotal(){
- $data['userCount']=User::where('cert_status','6')->count();
- $data['account']= DB::table('order')
- ->leftJoin('users', 'order.user_id', '=', 'users.id')
- ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
- ->whereIn('order.status', [2,3])
- ->sum('totalprice');
- $data['orderCount']=Order::whereIn('status',[2,3])->count();
- $data['goodsCount']=Goods::where('status','1')->count();
- $data['articleCount']=Article::where('status','1')->count();
- return $this->success($data);
- }
- //代理组成
- public function getEveryAgentTotal(){
- $data['superCount']=User::where('cert_status','6')->where('level','1')->count();
- $data['topCount']=User::where('cert_status','6')->where('level','2')->count();
- $data['crownCount']=User::where('cert_status','6')->where('level','3')->count();
- return $this->success($data);
- }
- //代理业绩组成
- public function getEveryAgentResult(){
- $data['superAccount']=DB::table('order')
- ->leftJoin('users', 'order.user_id', '=', 'users.id')
- ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
- ->whereIn('order.status', [2,3])
- ->where('users.level','1')
- ->sum('totalprice');
- $data['topAccount']=DB::table('order')
- ->leftJoin('users', 'order.user_id', '=', 'users.id')
- ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
- ->whereIn('order.status', [2,3])
- ->where('users.level','2')
- ->sum('totalprice');
- $data['crownAccount']=DB::table('order')
- ->leftJoin('users', 'order.user_id', '=', 'users.id')
- ->leftJoin('order_goods', 'order.id', '=', 'order_goods.order_id')
- ->whereIn('order.status', [2,3])
- ->where('users.level','3')
- ->sum('totalprice');
- return $this->success($data);
- }
- //代理订单
- public function getEveryAgentOrder(){
- $data['superCount']=Order::whereIn('status',[2,3])
- ->whereHas('user', function (Builder $query) {
- $query->where('level', '=', '1');
- })->count();
- $data['topCount']=Order::whereIn('status',[2,3])
- ->whereHas('user', function (Builder $query) {
- $query->where('level', '=', '2');
- })->count();
- $data['crownCount']=Order::whereIn('status',[2,3])
- ->whereHas('user', function (Builder $query) {
- $query->where('level', '=', '3');
- })->count();
- return $this->success($data);
- }
- //商品销量前十
- public function getGoodsSalesNum(){
- $list=DB::table('goods')
- ->select('goods.name',DB::raw('SUM(order_goods.num) as total'))
- ->leftJoin('order_goods','goods.id','=','order_goods.goods_id')
- ->leftJoin('order','order.id','=','order_goods.order_id')
- ->where('order.agent_id',1)
- ->whereIn('order.status',[2,3])
- ->groupBy('goods.id')
- ->orderBy('total','desc')
- ->take('10')->get();
- return $this->success($list);
- }
- public function demo(){
- $data=User::where('level',3)->with(['get_order_de'=>function($q){
- $q->whereBetween('order_detail.created_at',['2020-07-06 00:00:00','2020-07-10 00:00:00']);
- }])->get()->toArray();
- dd($data);
- }
- public function sign_message(Request $request){
- Log::error(json_encode($request->all()));
- if ($request->appids=='daweiboshi_szy' && $request->secret=='daweiboshi_szy_secret'){
- $s_user=$request->data;
- if ($request->type==0){
- $mean='实战营';
- }else{
- $mean='密训营';
- }
- $season=$request->season;
- $d_user=User::where('mobile',$request->mobile)->first();
- foreach ($s_user as $k=>$v){
- $user=User::where('mobile',$v)->first();
- if ($user->openid){
- $data['data']=[
- 'first'=>'有代理报名成功了',
- 'keyword1'=>'第'.$season.'届大卫博士创业'.$mean,
- 'keyword2'=>$d_user->nickname,
- 'keyword3'=>$d_user->mobile,
- // 'keyword4'=>date('Y年m月d日',time()),
- 'remark'=>'点击进入小程序',
- ];
- $data['openid']=$user->openid;
- event(new SignMessageEvent($data));
- Log::error($k);
- }
- }
- }else{
- return false;
- }
- }
- public function getGoodsStyleNum1(Request $request){
- $activity=Activity::where('disabled',0)->get();
- //$input=$request->all();
- //$cycle=$input['cycle'];
- $cycle=2;//间隔周期
- foreach($activity as $keys=>$value){
- $start_time=$value->start_time;
- $end_time=$value->end_time;
- $n=1;
- for($i=strtotime($start_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- $start=date("Y-m-d H:i:s",strtotime("+". 3*($n-1). "hours", strtotime($start_time)));
- if(date("Y-m-d H:i:s",strtotime("+3 hours",strtotime($start)))>$end_time){
- $end=$end_time;
- }else{
- $end=date("Y-m-d H:i:s",strtotime("+3 hours",strtotime($start)));
- }
- // $list[$value->title][$n*$cycle]=Orderdetail::whereBetween('created_at',[$start,$end])
- // ->with(['get_goods:id,name,size'])
- // ->GroupBy('goods_id','Goods_size')
- // ->select('goods_id','goods_size',DB::raw('sum(num) as total'))->get();
- $list[$value->title][$n*$cycle]=Orderdetail::whereBetween('order_detail.created_at',[$start,$end])
- ->leftjoin('goods_test as gt','gt.id','=','order_detail.goods_id')
- ->whereHas('order',function($query){
- $query->where('is_deleted',0);
- })
- ->GroupBy('gt.main_attr')
- ->select('gt.id','gt.main_attr',DB::raw('sum(order_detail.num) as total'))->get();
- $n++;
- }
- // $goods=Goodtest::where('is_deleted',0)->GroupBy('main_attr')->pluck('main_attr');
- // return $goods;
- // for($i=strtotime($start_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- // $start=$start_time;
- // if(date("Y-m-d H:i:s",strtotime("+". 3*$n. "hours",strtotime($start)))>$end_time){
- // $end=$end_time;
- // }else{
- // $end=date("Y-m-d H:i:s",strtotime("+". 3*$n. "hours",strtotime($start)));
- // }
- // $list[$value->title][$n*$cycle]=Orderdetail::whereBetween('created_at',[$start,$end])
- // ->with(['get_goods:id,name,size'])
- // ->whereHas('order',function($query){
- // $query->where('is_deleted',0);
- // })
- // ->GroupBy('goods_id','goods_size')
- // ->select('goods_id','goods_size',DB::raw('sum(num) as total'))
- // ->get();
- // $n++;
- // }
- }
- return $this->success($list);
- }
- public function getGoodsMainAttr(){
- $data=Goodtest::where('is_deleted',0)->groupBy('main_attr')->pluck('main_attr');
- return $this->success($data);
- }
- public function getGoodsStyleNum(Request $request){
- $activity=Activity::where('disabled',0)->get();
- $input=$request->all();
- $cycle=$input['cycle'];
- $type=$input['type'];
- // $cycle=2;//间隔周期
- // $type='大卫博士精装版';
- foreach($activity as $keys=>$value){
- $start_time=$value->start_time;
- $end_time=$value->end_time;
- $n=1;
- for($i=strtotime($start_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- $start=date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours", strtotime($start_time)));
- if(date("Y-m-d H:i:s",strtotime("+$cycle hours",strtotime($start)))>$end_time){
- $end=$end_time;
- }else{
- $end=date("Y-m-d H:i:s",strtotime("+$cycle hours",strtotime($start)));
- }
- $list[$value->title][$n*$cycle]=Orderdetail::
- whereHas('get_goods',function($query)use($type){
- $query->where('main_attr',$type);
- })
- ->whereHas('order',function($query)use($start,$end){
- $query->where('is_deleted',0)->whereBetween('created_at',[$start,$end]);
- })
- ->sum('num');
- $n++;
- }
- }
- return $this->success($list);
- }
- public function getOrderAccount(Request $request){
- $input=$request->all();
- $activity=Activity::where('disabled',0)->get();
- $cycle=$input['cycle'];
- // $cycle=3;//间隔周期
- foreach($activity as $keys=>$value){
- $start_time=$value->start_time;
- $end_time=$value->end_time;
- $n=1;
- for($i=strtotime($start_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- // $start=$start_time;
- // if(date("Y-m-d H:i:s",strtotime("+". 3*$n. "hours",strtotime($start)))>$end_time){
- // $end=$end_time;
- // }else{
- // $end=date("Y-m-d H:i:s",strtotime("+". 3*$n. "hours",strtotime($start)));
- // }
- $start=date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours", strtotime($start_time)));
- if(date("Y-m-d H:i:s",strtotime("+$cycle hours",strtotime($start)))>$end_time){
- $end=$end_time;
- }else{
- $end=date("Y-m-d H:i:s",strtotime("+$cycle hours",strtotime($start)));
- }
- $list[$value->title][$n*$cycle]=Ordertest::whereBetween('created_at',[$start,$end])
- ->where('is_deleted',0)
- ->select(DB::raw('sum(money) as total'))
- ->get();
- $n++;
- }
- }
- return $this->success($list);
- }
- public function getOrderEveryAccount(Request $request){
- $input=$request->all();
- $activity=Activity::where('disabled',0)->get();
- $cycle=1;
- foreach($activity as $keys=>$value){
- $start=$value->start_time;
- if($start>date("Y-m-d 09:00:00",strtotime($start))){
- $e_time=date("Y-m-d 09:00:00",strtotime($start.'+ 1 day'));
- }else{
- $e_time=date("Y-m-d 09:00:00",strtotime($start));
- }
- $end_time=date("Y-m-d 00:00:00",strtotime($value->end_time.'+ 1 day'));
- $n=1;$r=9;$d=1;
- for($i=strtotime($e_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- if(date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours",strtotime($e_time)))>$end_time){
- $end=$end_time;
- }else{
- $end=date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours",strtotime($e_time)));
- }
- // $end=date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours", strtotime($e_time)));
- $list[$value->title]['第'.$d.'天'.$r.'点']=Ordertest::whereBetween('created_at',[$start,$end])
- ->where('is_deleted',0)
- ->sum('money');
- if($r>=24){
- $d++;$r=1;
- }else{
- $r++;
- }
- $n++;
- }
- }
- return $this->success($list);
- }
- //获取销量每小时
- public function getGoodsEveryStyleNum(Request $request){
- ini_set('memory_limit', '1280M');
- $activity=Activity::where('disabled',0)->get();
- $input=$request->all();
- $cycle=$input['cycle'];
- $type=$input['type'];
- $cycle=1;//间隔周期
- // $type='大卫博士精装版';
- foreach($activity as $keys=>$value){
- $start=$value->start_time;
- if($start>date("Y-m-d 09:00:00",strtotime($start))){
- $e_time=date("Y-m-d 09:00:00",strtotime($start.'+ 1 day'));
- }else{
- $e_time=date("Y-m-d 09:00:00",strtotime($start));
- }
- $end_time=date("Y-m-d 00:00:00",strtotime($value->end_time.'+ 1 day'));
- $n=1;$r=9;$d=1;
- for($i=strtotime($e_time);$i<=strtotime($end_time);$i+=$cycle*3600){
- if(date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours",strtotime($e_time)))>$end_time){
- $end=$end_time;
- }else{
- $end=date("Y-m-d H:i:s",strtotime("+". $cycle*($n-1). "hours",strtotime($e_time)));
- }
- // $list[$value->title][$d.'-'.$r]=Orderdetail::whereHas('get_goods',function($query)use($type){
- // $query->where('main_attr',$type);
- // })
- // ->whereHas('order',function($query)use($start,$end){
- // $query->where('is_deleted',0)->whereBetween('created_at',[$start,$end]);
- // })
- // ->sum('num');
- $goods_ids=Goodtest::where('main_attr',$type)->pluck('id');
- $order_ids=Ordertest::where('is_deleted',0)->whereBetween('created_at',[$start,$end])->pluck('id');
- $list[$value->title]['第'.$d.'天'.$r.'点']=Orderdetail::whereIn('goods_id',$goods_ids)->whereIn('order_id',$order_ids)->sum('num');
- // $list[$value->title][$d.'-'.$r]=Ordertest::whereBetween('created_at',[$start,$end])
- // ->where('is_deleted',0)
- // ->select(DB::raw('sum(total) as total'))
- // ->get();
- if($r>=24){
- $d++;$r=1;
- }else{
- $r++;
- }
- $n++;
- }
- }
- return $this->success($list);
- }
- public function getGoodsStyleDetailNum(Request $request){
- $input=$request->all();
- $activity=Activity::where('is_ing',1)->first();
- $start=$activity->start_time;
- $end=$activity->end_time;
- $type=$input['type'];
- if($type=='精装版'){
- $name='大卫博士精装版';
- $id=Goodattr::where('name','like','%'.$type.'%')->value('id');
- $ids=Goodattr::where('pid',$id)->pluck('id');
- }elseif($type=='简约版') {
- $name='大卫博士简约版';
- $id=Goodattr::where('name','like','%'.$type.'%')->value('id');
- $ids=Goodattr::where('pid',$id)->pluck('id');
- }elseif($type=='老人版'){
- $name='大卫博士老人版';
- $id=Goodattr::where('name','=',$name)->value('id');
- $ids=Goodattr::where('pid',$id)->pluck('id');
- }elseif($type=='纯棉老人版'){
- $name='大卫博士纯棉老人版';
- $id=Goodattr::where('name','like','%'.$type.'%')->value('id');
- $ids=Goodattr::where('pid',$id)->pluck('id');
- }else{
- $ids=[];
- }
- $list=Orderdetail::whereHas('order',function($query)use($start,$end){
- $query->where('is_deleted',0)->whereBetween('created_at',[$start,$end]);
- })
- ->whereHas('get_goods',function($query)use($ids){
- $query->whereIn('attr_id',$ids);
- })
- ->groupBy('goods_size')
- ->select('goods_size',DB::raw('sum(num) as total'))
- ->get();
- return $this->success($list);
- }
- public function getProvinceUserInfo(Request $request){
- $input=$request->all();
- $province=$input['province'];
- $activity=Activity::where('is_ing',1)->first();
- $start=$activity->start_time;
- $end=$activity->end_time;
- $phones=UserZ::where('province','like','%'.$province.'%')->where('level_name','代理公司')->pluck('phone');
- $users=User::whereIn('mobile',$phones)->select('id','nickname','mobile')->get();
- foreach($users as $key=>$val){
- $info=Ordertest::leftjoin('order_detail as od','od.order_id','=','order_test.id')
- ->leftjoin('goods_test as gt','gt.id','=','od.goods_id')
- ->where('order_test.is_deleted',0)
- ->whereBetween('order_test.created_at',[$start,$end])
- ->where('order_test.user_id',$val->id)
- ->groupBy('gt.main_attr')
- ->select('gt.main_attr',DB::raw('sum(od.num) as total'))
- ->get();
- $users[$key]->hard=0;
- $users[$key]->simple=0;
- $users[$key]->old=0;
- $users[$key]->cold=0;
- foreach($info as $k=>$v){
- switch($v->main_attr){
- case '大卫博士精装版':
- $users[$key]->hard=$v->total;
- break;
- case '大卫博士简约版':
- $users[$key]->simple=$v->total;
- break;
- case '大卫博士老人版':
- $users[$key]->old=$v->total;
- break;
- case '大卫博士纯棉老人版':
- $users[$key]->cold=$v->total;
- break;
- }
- }
- $users[$key]->acc=Ordertest::where('user_id',$val->id)->whereBetween('created_at',[$start,$end])->where('is_deleted',0)->sum('money');
- }
- return $this->success($users);
- }
- public function getOtherUserInfo(){
- $user_z=UserZ::select('nickname','phone','level_name','created_at','updated_at')->where('level_name','!=','政委')->orderBy('id','desc')->get();
- $data=[];
- $duu=[];
- foreach($user_z as $key=>$val){
- $user=User::where('mobile',$val->phone)->first();
- if(empty($user)){
- continue;
- $duu[]=$val;
- }
- if($user->level=='1'){
- // $user_z[$key]->level='销售主管';
- if($val->level_name!='销售主管'){
- $val->user_level='销售主管';
- $val->user_recom=$user->recom_id;
- $val->user_agent=$user->agent_id;
- $val->user_warea_id=$user->warea_id;
- $val->user_id=$user->id;
- $val->user_created=$user->created_at;
- $val->user_updated=$user->updated_at;
- $val->user_nickname=$user->nickname;
- $data[]=$val;
- }
- }elseif($user->level=='2'){
- // $user_z[$key]->level='销售经理';
- if($val->level_name!='销售经理'){
- $val->user_level='销售经理';
- $val->user_recom=$user->recom_id;
- $val->user_agent=$user->agent_id;
- $val->user_warea_id=$user->warea_id;
- $val->user_id=$user->id;
- $val->user_created=$user->created_at;
- $val->user_updated=$user->updated_at;
- $val->user_nickname=$user->nickname;
- $data[]=$val;
- }
- }elseif($user->level=='3'){
- // $user_z[$key]->level='代理公司';
- if($val->level_name!='代理公司'){
- $val->user_level='代理公司';
- $val->user_recom=$user->recom_id;
- $val->user_agent=$user->agent_id;
- $val->user_warea_id=$user->warea_id;
- $val->user_id=$user->id;
- $val->user_created=$user->created_at;
- $val->user_updated=$user->updated_at;
- $val->user_nickname=$user->nickname;
- $data[]=$val;
- }
- }
- }
- $count=count($data);
- return $this->success_list($data,'',$count);
- }
- public function index(){
- $arr=Express::where('id','>',37)->get();
- $arrs=[];
- foreach ($arr as $k=>$v){
- $arrs[$k]=json_decode($v->notes);
- }
- dd($arrs);
- }
- }
|