1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\DwbsUser;
- use App\Models\ExpressStorage;
- use App\Models\Goods;
- use App\Models\InventoryW;
- use App\Models\Order;
- use App\Models\OrderDetail;
- use App\Models\OrderDetailW;
- use App\Models\OrderRefund;
- use App\Models\OrderRefundW;
- use App\Models\See;
- use App\Models\SettingW;
- use App\Models\Store;
- use App\Models\VipLogW;
- use App\Models\User;
- use App\Models\UserStorage;
- use App\Models\UserW;
- use App\Models\OrderW;
- use App\Models\AddressW;
- use App\Models\StoreGoods;
- use App\Models\StoreGoodsSku;
- use Illuminate\Http\Request;
- use GuzzleHttp\Client;
- use App\Jobs\PayOrderAddCreditsJob;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\Storage;
- use Intervention\Image\Facades\Image as Image;
- use Validator;
- use Carbon\Carbon;
- class StoreGoodsController extends Controller{
- //获取商品sku
- public function getGoodsTaps(Request $request){
- $type=$request->input('type');
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $goods=StoreGoods::where('is_delete',0)->where('is_shelves',1)->select('id','name','img','price','vip_price','main_attr')->orderBy('id')->get();
- $inventory=InventoryW::where('store_id',$store_id)->pluck('num',DB::raw("CONCAT(store_id,'_',goods_id,'_',sku_id)"))->toArray();
- foreach($goods as $key=>$val){
- $goods[$key]->imgs=str_replace('http://','https://',$val->img);
- $second=mt_rand(3600,7200);
- if(Cache::has('goods_id_'.$val->id.'_sku')){
- $sku= Cache::get('goods_id_'.$val->id.'_sku');
- }else{
- $sku=StoreGoodsSku::where('goods_id',$val->id)->groupBy('type')->pluck('type');
- Cache::add('goods_id_'.$val->id.'_sku',$sku,$second);
- }
- $goods[$key]->sku=$sku;
- $size=[];
- foreach($sku as $k=>$v){
- if(Cache::has('goods_id_'.$val->id.'_'.$v.'_sku')){
- $skuInfo= Cache::get('goods_id_'.$val->id.'_'.$v.'_sku');
- }else{
- $skuInfo=StoreGoodsSku::where('goods_id',$val->id)->where('type',$v)->select('id','size')->orderBy('sort')->get();
- Cache::add('goods_id_'.$val->id.'_'.$v.'_sku',$skuInfo,$second);
- }
- foreach($skuInfo as $ks => $vs){
- $info=$vs;
- $info->type=$v;
- if(empty($inventory[$store_id.'_'.$val->id.'_'.$vs->id])){
- $info->num=0;
- }else{
- $info->num=$inventory[$store_id.'_'.$val->id.'_'.$vs->id];
- }
- $info->isChecked=false;
- if($type==1 && $k==0 && $ks==0){
- $info->isChecked=true;
- }
- $size[$v][$ks]=$info;
- }
- $goods[$key]->size=$size;
- }
- }
- return $this->success($goods);
- }
- //获取店铺用户
- public function getStoreUser(Request $request){
- $input=$request->all();
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $user_ids=OrderW::where('store_id',$store_id)->groupBy('user_id')->pluck('user_id');
- $user=UserW::whereIn('id',$user_ids);
- $search_name=$input['search_name'];
- if(!empty($search_name)){
- $user->where(function($query)use($search_name){
- $query->where('nickname','like','%'.$search_name.'%')
- ->orWhere('phone','like','%'.$search_name.'%');
- });
- }
- $list=$user->get();
- foreach($list as $key=>$val){
- $vip_log=VipLogW::where('user_id',$val->id)->where('store_id',$store_id)->first();
- if($vip_log){
- $list[$key]->is_vip=1;
- }else{
- $list[$key]->is_vip=0;
- }
- }
- return $this->success($list);
- }
- //获取商品信息
- public function getGoods(){
- $data=[];
- $goods=StoreGoods::where('is_delete',0)->where('is_shelves',1)->pluck('name','id');
- $type=['男款','女款'];
- $size=['S','M','L','XL','XXL','XXXL'];
- $data['goods']=$goods;
- $data['type']=$type;
- $data['size']=$size;
- return $this->success($data);
- }
- public function getGoodsDetail(Request $request){
- $goods_id=$request->input('goods_id');
- $goods=StoreGoods::with('goodSku')->where('id',$goods_id)->first();
- $goods->imgs=str_replace('http://','https://',$goods->img);
- return $this->success($goods);
- }
- //获取商品列表
- public function getGoodsList(Request $request){
- $input=$request->all();
- $page_index=$input['page_index'];
- $page_size=$input['page_size'];
- $num=$page_size*($page_index-1);
- $goods_id=$input['goods_id'];
- if(!is_array($input['ids'])){
- $ids=json_decode($input['ids'],true);
- }else{
- $ids=$input['ids'];
- }
- $data=StoreGoodsSku::with(['goods:id,name,price,img'])
- ->whereHas('goods',function($query){
- $query->where('is_delete',0)->where('is_shelves',1);
- });
- if(!empty($goods_id)){
- $data ->where('goods_id',$goods_id);
- }
- if(!empty($ids)){
- $data->whereIn('id',$ids);
- }
- $count=$data->count();
- $list=$data->orderByDesc('goods_id')->orderByDesc('goods_id')
- ->skip($num)->take($page_size)
- ->get();
- return $this->success_list($list,'成功',$count);
- }
- //分享商品
- public function shareGoods(Request $request){
- $input=$request->all();
- $sku_id=$input['sku_id'];
- $info=StoreGoodsSku::with(['goods'])->whereHas('goods',function($query){
- $query->where('is_delete',0)->where('is_shelves',1);
- })->where('id',$sku_id)
- ->orderByDesc('goods_id')->orderByDesc('goods_id')->get();
- return $this->success($info);
- }
- //上传图片
- public function uploadImg(Request $request){
- $path_url = 'public/goods';
- $path = $request->file('img')->store($path_url);
- if($path){
- $url = env('APP_URL'). \Storage::url($path);
- return $this->success($url);
- }
- return $this->error();
- }
- /*--授权书---*/
- public function auth_code(Request $request){
- $user=User::find($request->id);
- if ($user->cert_status==3||$user->cert_status==6){
- if ($user->auth_startime &&$user->auth_code){
- if ($user->auth_img==null){
- $name=$user->realname==null?$user->nickname:$user->realname;
- $url=$this->auth_create($name,$user->mobile,judge_level($user->level),$user->auth_code,$user->auth_startime,$user->auth_endtime,$user->id);
- $user->auth_img=$url;
- $user->save();
- }
- $data['status']=0;
- }else{
- $data['status']=1;
- }
- }else{
- $data['status']=1;
- }
- if ($user->service_status==1){
- return $this->error(50021,'','该代理尚未通过政委审核');
- }
- if ($user->service_status==2){
- return $this->error(50021,'','该代理的申请已被政委驳回');
- }
- $data['auth_startime']=strtotime($user->auth_startime)*1000;
- $data['auth_endtime']=strtotime($user->auth_endtime)*1000;
- $data['code']=$user->auth_code;
- $data['phone']=$user->mobile;
- $data['level_name']=judge_level($user->level);
- $data['realname']=$user->realname==null?$user->nickname:$user->realname;
- $data['url']=$user->auth_img==null?'':$user->auth_img;
- return $data;
- }
- public function auth_create($name,$phone,$level_name,$auth_code,$time_start,$time_end,$num){
- $client=new Client();
- $url='http://api.app.jiuweiyun.cn/138.jpg';
- $avatarResponse = $client->get($url);
- $img = Image::make($avatarResponse->getBody()->getContents());
- $img->text($name, 400, 565,function ($font){
- $font->file(base_path().'/public/fangzheng.ttf');
- $font->size(25);
- $font->angle(0);
- });
- $img->text($phone, 400, 635,function ($font){
- $font->file(base_path().'/public/fangzheng.ttf');
- $font->size(25);
- $font->angle(0);
- });
- $img->text($level_name, 350, 820,function ($font){
- $font->file(base_path().'/public/fangzheng.ttf');
- $font->size(60);
- $font->angle(0);
- });
- $img->text($auth_code, 285, 965,function ($font){
- $font->file(base_path().'/public/fangzheng.ttf');
- $font->size(25);
- $font->angle(0);
- });
- $year=mb_substr($time_start,0,4);
- $month=mb_substr($time_start,5,2);
- $day=mb_substr($time_start,8,2);
- $year_t=mb_substr($time_end,0,4);
- $month_t=mb_substr($time_end,5,2);
- $day_t=mb_substr($time_end,8,2);
- $img->text("{$year}年{$month}月{$day}日 - {$year_t}年{$month_t}月{$day_t}日", 285, 1050,function ($font){
- $font->file(base_path().'/public/fangzheng.ttf');
- $font->size(25);
- $font->angle(0);
- });
- $name=$this->rand_code($num);
- $img->save(base_path().'/public/public/uploads/auth_img/'.$name.'.jpg');
- return env('APP_URL').'/public/uploads/auth_img/'.$name.'.jpg';
- }
- public function rand_code($num){
- $code='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
- $str=$num."_";
- $str_1='';
- for ($i=0;$i<20;$i++){
- $int=rand(0,34);
- $str_1.=mb_substr($code,$int,1);
- }
- $str=$str.mb_substr(time(),2,3).$str_1;
- return $str.mb_substr(time(),7,3);
- }
- //获取所有取消订单信息
- public function getCancelOrderList(Request $request){
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $order_no=$request->input('order_no');
- $num=$page_size*($page_index-1);
- $data= OrderW::with(['user:id,nickname,phone','order_cancel'=>function($query){$query->where('using',1);},'refund','store:id,name,img,phone'])
- ->where('store_id',$store_id)
- ->whereIn('apply_cancel',[1,2,3]);
- if($order_no){
- $data->where('order_no','like','%'.$order_no.'%');
- }
- $count= $data->count();
- $orders= $data->orderByDesc('cancel_at')->skip($num)->take($page_size)->get();
- foreach($orders as $key=>$val){
- $goods_ids=OrderDetailW::where('order_no',$val->order_no)->groupBy('goods_id')->pluck('goods_id');
- $goods=[];
- foreach($goods_ids as $k=>$v){
- $goods[$k]=StoreGoods::select('id','name','img','main_attr')->where('id',$v)->first();
- $goods[$k]->sku=OrderDetailW::where('order_no',$val->order_no)->where('goods_id',$v)->get();
- if(count($goods[$k]->sku)>0){
- $goods[$k]->price=$goods[$k]->sku[0]->price;
- }
- }
- $orders[$key]->goods=$goods;
- }
- return $this->success_list($orders,'成功',$count);
- }
- //获取代理端所有退货订单
- public function getAllRefundOrder(Request $request)
- {
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=$page_size*($page_index-1);
- $refund_no=$request->input('refund_no');
- $data=OrderRefundW::with('store:id,name,phone')->where('store_id',$store_id);
- if($refund_no){
- $data->where('refund_no','like','%'.$refund_no.'%');
- }
- $total= $data->count();
- $refunds = $data->orderBy('id','desc')->skip($num)->take($page_size)->get();
- foreach($refunds as $key=>$val){
- $goods=[];
- $goods_ids=OrderDetailW::where('order_no',$val->refund_no)->groupBy('goods_id')->pluck('goods_id');
- foreach($goods_ids as $k=>$v){
- $goods[$k]=StoreGoods::where('id',$v)->first();
- $goods[$k]->sku=OrderDetailW::where('order_no',$val->refund_no)->where('goods_id',$v)->get();
- }
- $refunds[$key]->goods=$goods;
- }
- return $this->success_list($refunds,'成功',$total);
- }
- //获取代理端退货订单详情
- public function getRefundOrderDetail(Request $request)
- {
- $refund_id = $request->input('refund_id');
- //获取订单信息(id)
- $order = OrderRefundW::with(['store:id,name,img,phone'])->where('id', $refund_id)->first();
- $goods_ids = OrderDetailW::where('order_no', $order->refund_no)->groupBy('goods_id')->pluck('goods_id');
- $goods = [];
- foreach ($goods_ids as $key => $val) {
- $goods[$key] = StoreGoods::where('id', $val)->first();
- $goods[$key]->sku = OrderDetailW::where('order_no', $order->refund_no)->where('goods_id', $val)->get();
- }
- $order->goods = $goods;
- return $this->success($order);
- }
- //删除订单
- public function deleteOriginOrder(Request $request){
- $order_id=$request->input('order_id');
- $res=OrderW::where('id',$order_id)->delete();
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //取消退货审核
- public function cancelRefundOrder(Request $request){
- $refund_id=$request->input('refund_id');
- $refund=OrderRefundW::where('id',$refund_id)->first();
- if(empty($refund)){
- return $this->error('450001','退货单不存在');
- }
- $count=OrderRefundW::where('order_no',$refund->order_no)->count();
- try{
- DB::transaction(function()use($count,$refund){
- if($count==1){
- OrderW::where('order_no',$refund->order_no)->update([
- 'is_refund'=>0
- ]);
- }elseif($count>1){
- OrderW::where('order_no',$refund->order_no)->update([
- 'is_refund'=>2
- ]);
- }
- OrderRefundW::where('id',$refund->id)->delete();
- },5);
- return $this->success([]);
- }catch(\Exception $e){
- return $this->error('450001',$e->getMessage());
- }
- }
- //修改订单物流信息
- public function editExpress(Request $request){
- $input=$request->all();
- $rules=[
- 'express_no' =>'required',
- 'express_company'=>'required',
- 'express_time' =>'required'
- ];
- $message=[
- 'express_no.required' =>'发货单号不能为空.',
- 'express_company.required'=>'物流公司不能为空.',
- 'express_time.required' =>'发货时间不能为空.'
- ];
- $validator = Validator::make($input,$rules,$message);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- $res=OrderW::where('order_no',$input['order_no'])->update([
- 'express_no'=>str_replace(' ','', $input['express_no']),
- 'express_company'=>$input['express_company'],
- 'express_code'=>$input['express_code'],
- 'express_state'=>0,
- 'express_info'=>null,
- 'express_receive_time'=>null,
- 'express_phone'=>$input['express_phone'],
- 'express_time'=>$input['express_time']
- ]);
- if($res){
- return $this->success([]);
- }else{
- return $this->error();
- }
- }
- //添加微信二维码
- public function uploadWxQrCodeImg(Request $request){
- Log::info(Auth::user()->id.'---'.Auth::user()->nickname.'---变更了微信二维码');
- $path_url = 'public/wxQrCode/'.date("Ymd");
- $file=$request->file('img');
- $extension=['jpg','png','jpeg'];//,'xbm','tif','tiff','pjp','svgz','ico','gif','svg','webp','bpm','pjpeg','avif','xbm','tif','tiff','pjp','svgz','ico','gif','svg','webp','bpm','pjpeg','avif'
- $fileextension=$file->getClientOriginalExtension();
- Log::info(Auth::user()->id.'---'.Auth::user()->nickname.'---'.$fileextension);
- $fileextension=strtolower($fileextension);
- if(!in_array($fileextension,$extension)){
- return $this->error('450001','上传图片格式有误,当前文件格式为:'.$fileextension);
- }
- $path = $file->store($path_url);
- if($path){
- $url = env('APP_URL'). \Storage::url($path);
- $user_id=Auth::user()->id;
- $res=Store::where('user_id',$user_id)->update(['qr_code'=>$url]);
- if($res){
- return $this->success($url);
- }else{
- return $this->error('450001','二维码上传失败');
- }
- }else{
- return $this->error('450001','二维码上传失败');
- }
- }
- //销收数据
- public function getSaleInfo(Request $request){
- $cycle=$request->input('cycle');
- $startime=$request->input('startime');
- $endtime=$request->input('endtime');
- $agent_id=Auth::user()->id;
- $store_id=Store::where('status',0)->where('user_id',$agent_id)->value('id');
- $data=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1]);
- if(!empty($startime) && !empty($endtime)){
- $data->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime($startime)),date("Y-m-d 23:59:59",strtotime($endtime))]);
- }else{
- switch($cycle){
- case 'daily':
- $data->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- break;
- case 'today':
- $data->whereDate('created_at',date("Y-m-d"));
- break;
- case 'week':
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $data->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]);
- break;
- case 'month':
- $data->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]);
- break;
- // case 'quarter':
- // $start=(ceil(date("m")/3)-1)*3+1;
- // $data->whereBetween('created_at',[date("Y-".$start."-01 00:00:00"),date("Y-m-d 23:59:59")]);
- // break;
- default:
- $data->where([]);
- }
- }
- $order_nos=$data->pluck('order_no');
- $goods_ids=StoreGoods::where('is_shelves',1)->select('id','name','main_attr')->get()->toArray();
- $sale_info=[];
- // return $order_nos;
- foreach($goods_ids as $key=>$val){
- $order_details=OrderDetailW::with('goods:id,name,main_attr,img')
- ->where('goods_id',$val['id'])->whereIn('order_no',$order_nos)
- ->select('goods_id',DB::raw('sum(num) as num'),DB::raw('sum(ifNUll(account,0)) as account'),DB::raw('sum(ifNUll(cost_account,0)) as cost_account'))
- ->first()->toArray();
- if(empty($order_details['goods'])){
- $order_details['goods_id']=$val['id'];
- $order_details['num']=0;
- $order_details['account']=0;
- $order_details['cost_account']=0;
- $order_details['goods']=$val;
- }
- $sale_info[$key]=$order_details;
- }
- return $this->success($sale_info);
- }
- //销售曲线
- public function getSaleAccount(Request $request){
- $cycle=$request->input('cycle');
- $startime=$request->input('startime');
- $endtime=$request->input('endtime');
- $agent_id=Auth::user()->id;
- $store_id=Store::where('status',0)->where('user_id',$agent_id)->value('id');
- switch($cycle){
- case 'daily':
- case 'today':
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d"));
- break;
- case 'week':
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d"));
- break;
- case 'month':
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d"));
- break;
- default:
- $time=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->pluck('created_at')->toArray();
- if(count($time)>=2) {
- $max_time = date("Y-m-d", strtotime(max($time)));
- $min_time = date("Y-m-d", strtotime(min($time)));
- $datetime1 = date_create($max_time); //格式化日期
- $datetime2 = date_create($min_time); //格式化日期
- $interval = date_diff($datetime1, $datetime2);
- if ($interval->format('%a') > 31) {
- $type = 'month';
- $date = $this->dateMonths($min_time, $max_time);
- } else {
- $type = 'daily';
- $date = $this->getDateFromRange($min_time, $max_time);
- }
- }else{
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d"));
- }
- }
- if(!empty($startime) && !empty($endtime)){
- $max_time=date("Y-m-d",strtotime($endtime));
- $min_time=date("Y-m-d",strtotime($startime));
- $datetime1 = date_create($max_time); //格式化日期
- $datetime2 = date_create($min_time); //格式化日期
- $interval = date_diff($datetime1, $datetime2);
- if($interval->format('%a') > 31){
- $type='month';
- $date=$this->dateMonths($min_time,$max_time);
- }else{
- $type='daily';
- $date=$this->getDateFromRange($min_time,$max_time);
- }
- }
- $stores=[];
- foreach($date as $key=>$val){
- if($type=='daily'){
- $order_nos=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->whereDate('created_at',$val)->pluck('order_no');
- }else{
- $order_nos=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->whereMonth('created_at',$val)->pluck('order_no');
- }
- $stores[$val]=OrderDetailW::with('goods:id,name,main_attr,img')->whereIn('order_no',$order_nos)->groupBy('goods_id')
- ->select('goods_id',DB::raw('sum(num) as num'),DB::raw('sum(ifNUll(account,0)) as account'),DB::raw('sum(ifNUll(cost_account,0)) as cost_account'))
- ->get();
- }
- $goods=StoreGoods::where('is_shelves',1)->select('id','name','main_attr')->get();
- $data['store']=$stores;
- $data['goods']=$goods;
- return $this->success($data);
- }
- function getDateFromRange($startdate, $enddate){
- $stimestamp = strtotime($startdate);
- $etimestamp = strtotime($enddate);
- // 计算日期段内有多少天
- $days = ($etimestamp-$stimestamp)/86400+1;
- // 保存每天日期
- $date = array();
- for($i=0; $i<$days; $i++){
- $date[] = date('Y-m-d', $stimestamp+(86400*$i));
- }
- return $date;
- }
- /**
- * 计算出两个日期之间的月份区间
- * @author Eric
- * @param [type] $start_date [开始日期,如2014-03]
- * @param [type] $end_date [结束日期,如2015-12]
- * @param string $explode [年份和月份之间分隔符,此例为 - ]
- * @param boolean $addOne [算取完之后最后是否加一月,用于算取时间戳用]
- * @return [type] [返回是两个月份之间所有月份字符串]
- */
- function dateMonthsSections($start_date,$end_date,$explode='-',$addOne=false){
- $data = $this->dateMonths($start_date,$end_date,$explode,$addOne);
- $length = sizeof($data);
- $res = array();
- foreach ($data as $key => $value) {
- if($key < ($length-1)){
- $date1 = $value;
- $date2 = $data[$key + 1];
- $res[$key][0] = $date1;
- $res[$key][1] = $date2;
- }
- }
- return $res;
- }
- /**
- * 计算出两个日期之间的月份
- * @author Eric
- * @param [type] $start_date [开始日期,如2014-03]
- * @param [type] $end_date [结束日期,如2015-12]
- * @param string $explode [年份和月份之间分隔符,此例为 - ]
- * @param boolean $addOne [算取完之后最后是否加一月,用于算取时间戳用]
- * @return [type] [返回是两个月份之间所有月份字符串]
- */
- function dateMonths($start_date,$end_date,$explode='-',$addOne=false){
- //判断两个时间是不是需要调换顺序
- $start_date=date("Y-m",strtotime($start_date));
- $end_date=date("Y-m",strtotime($end_date));
- $start_int = strtotime($start_date);
- $end_int = strtotime($end_date);
- if($start_int > $end_int){
- $tmp = $start_date;
- $start_date = $end_date;
- $end_date = $tmp;
- }
- //结束时间月份+1,如果是13则为新年的一月份
- $start_arr = explode($explode,$start_date);
- $start_year = intval($start_arr[0]);
- $start_month = intval($start_arr[1]);
- $end_arr = explode($explode,$end_date);
- $end_year = intval($end_arr[0]);
- $end_month = intval($end_arr[1]);
- $data = array();
- $data[] = $start_date;
- $tmp_month = $start_month;
- $tmp_year = $start_year;
- //如果起止不相等,一直循环
- while (!(($tmp_month == $end_month) && ($tmp_year == $end_year))) {
- $tmp_month ++;
- //超过十二月份,到新年的一月份
- if($tmp_month > 12){
- $tmp_month = 1;
- $tmp_year++;
- }
- $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT);
- }
- if($addOne == true){
- $tmp_month ++;
- //超过十二月份,到新年的一月份
- if($tmp_month > 12){
- $tmp_month = 1;
- $tmp_year++;
- }
- $data[] = $tmp_year.$explode.str_pad($tmp_month,2,'0',STR_PAD_LEFT);
- }
- return $data;
- }
- //获取操作全部视频
- public function getAllVideo(){
- $setting=SettingW::all();
- return $this->success($setting);
- }
- public function aaasss(){
- $address=AddressW::where('type',3)->where('remark','自动定位')->get();
- // return $address;
- foreach($address as $key=>$val){
- $order=OrderW::where('user_id',$val->user_id)->where('address_id',$val->id)->first();
- if(!empty($order)){
- // return $val->id;
- AddressW::where('id',$val->id)->update([
- 'store_id'=>$order->store_id,
- // 'type'=>2,
- ]);
- }
- }
- // AddressW::where('remark','自动定位')->update([
- // 'type'=>3,
- // 'is_default'=>0
- // ]);
- // $address=AddressW::whereNotNull('store_id')->delete();//->select('id','name','store_id','area')
- // return $address;
- // foreach($address as $key=>$val){
- // Store::where('id',$val->id)->update([
- // 'province'=>null,
- // 'city'=>null,
- // 'area'=>null,
- // 'address'=>null,
- // ]);
- // Store::where('id',$val->store_id)->update([
- // 'province'=>$val->province,
- // 'city'=>$val->city,
- // 'area'=>$val->area,
- // 'address'=>$val->address,
- // ]);
- // }
- }
- public function getUserData(Request $request){
- $cycle=$request->input('cycle');
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $data=OrderW::where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->select(DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account'));
- switch($cycle){
- case 'yesterday':
- $type='yesterday';
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d"));
- break;
- case 'today':
- $type='today';
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d"));
- break;
- case 'week':
- $type='week';
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $where=function($query)use($w){
- $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]);
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d"));
- break;
- case 'month':
- $type='month';
- $where=function($query){
- $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]);
- };
- $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d"));
- break;
- default:
- $where=[];
- $time=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->pluck('created_at')->toArray();
- if(count($time)>=2){
- $max_time=date("Y-m-d",strtotime(max($time)));
- $min_time=date("Y-m-d",strtotime(min($time)));
- $datetime1 = date_create($max_time); //格式化日期
- $datetime2 = date_create($min_time); //格式化日期
- $interval = date_diff($datetime1, $datetime2);
- if($interval->format('%a') > 31){
- $type='all';
- $date=$this->dateMonths($min_time,$max_time);
- }else{
- $type='daily';
- $date=$this->getDateFromRange($min_time,$max_time);
- }
- }else{
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d"));
- }
- }
- $data->where($where);
- $data1=clone $data;
- $list=$data->first()->toArray();
- $users=$data1->whereHas('user',function($query)use($where){
- $query->where($where);
- })->groupBy('user_id')->get();
- $list['type']=$type;
- $list['count']=$users->count();
- foreach($date as $key=>$val){
- if($type=='yesterday' || $type=='today' || $type=='week' || $type=='month'){
- $user_ids=OrderW::where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->where('store_id',$store_id)->whereDate('created_at',$val)->groupBy('user_id')->pluck('user_id');
- $line[$val]=UserW::whereDate('created_at',$val)->whereIn('id',$user_ids)->count();
- }else{
- Log::info('two');
- $timestamp=strtotime($val);
- $start=Carbon::parse($timestamp)->tz('PRC')->startOfMonth()->toDateTimeString();
- $end=Carbon::parse($timestamp)->tz('PRC')->endOfMonth()->toDateTimeString();
- $user_ids=OrderW::query()->where('store_id',$store_id)->whereBetween('created_at',[$start,$end])->groupBy('user_id')->pluck('user_id');
- $line[$val]=UserW::whereBetween('created_at',[$start,$end])->whereIn('id',$user_ids)->count();
- }
- }
- Log::info('123122222');
- $list['line']=$line;
- return $this->success($list);
- }
- public function getUserList(Request $request){
- // dispatch(new PayOrderAddCreditsJob('运行队列测试123--00--123'));
- $cycle=$request->input('cycle');
- $search_name=$request->input('search_name');
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=$page_size*($page_index-1);
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- $wheres=[];
- if($search_name){
- $wheres=function($query)use($search_name){
- $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%');
- };
- }
- switch($cycle){
- case 'yesterday':
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- break;
- case 'today':
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- break;
- case 'week':
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $where=function($query)use($w){
- $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]);
- };
- break;
- case 'month':
- $where=function($query){
- $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]);
- };
- break;
- default:
- $where=[];
- }
- $count=OrderW::where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->select(DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account'))
- ->whereHas('user',function($query)use($where,$wheres){
- $query->where($where)->where($wheres);
- })->groupBy('user_id')->get()->count();
- $list=OrderW::with('user:id,nickname,avatar')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->select('user_id',DB::raw('ifnull(sum(total),0) as total'),DB::raw('ifnull(sum(account),0) as account'))
- ->whereHas('user',function($query)use($where,$wheres){
- $query->where($where)->where($wheres);
- })->groupBy('user_id')->OrderByDesc('total')->OrderByDesc('account')->OrderBy('user_id')->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- public function getSeeUserData(Request $request){
- $cycle=$request->input('cycle');
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- switch($cycle){
- case 'yesterday':
- $type='yesterday';
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d"));
- break;
- case 'today':
- $type='today';
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime('-1 day')),date("Y-m-d"));
- break;
- case 'week':
- $type='week';
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $where=function($query)use($w){
- $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]);
- };
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-$w day")),date("Y-m-d"));
- break;
- case 'month':
- $type='month';
- $where=function($query){
- $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]);
- };
- $date=$this->getDateFromRange(date("Y-m-01"),date("Y-m-d"));
- break;
- default:
- $where=[];
- $time=OrderW::with('user')->where('store_id',$store_id)
- ->where('is_pay',1)->whereIn('apply_cancel',[0,1,3])->whereIn('is_refund',[0,1])
- ->pluck('created_at')->toArray();
- if(count($time)>=2){
- $max_time=date("Y-m-d",strtotime(max($time)));
- $min_time=date("Y-m-d",strtotime(min($time)));
- $datetime1 = date_create($max_time); //格式化日期
- $datetime2 = date_create($min_time); //格式化日期
- $interval = date_diff($datetime1, $datetime2);
- if($interval->format('%a') > 31){
- $type='all';
- $date=$this->dateMonths($min_time,$max_time);
- }else{
- $type='daily';
- $date=$this->getDateFromRange($min_time,$max_time);
- }
- }else{
- $type='daily';
- $date=$this->getDateFromRange(date("Y-m-d",strtotime("-1 days")),date("Y-m-d"));
- }
- }
- $list=[];
- $list['count']=See::where($where)->where('store_id',$store_id)->groupBy('user_id')->get()->count();
- foreach($date as $key=>$val){
- if($type=='yesterday' || $type=='today' || $type=='week' || $type=='month'){
- $user_ids=See::where('store_id',$store_id)->whereDate('created_at',$val)->groupBy('user_id')->pluck('user_id');
- }else{
- $timestamp=strtotime($val);
- $start=Carbon::parse($timestamp)->tz('PRC')->startOfMonth()->toDateTimeString();
- $end=Carbon::parse($timestamp)->tz('PRC')->endOfMonth()->toDateTimeString();
- $user_ids=See::query()->where('store_id',$store_id)->whereBetween('created_at',[$start,$end])->groupBy('user_id')->pluck('user_id');
- }
- $line[$val]=count($user_ids);
- }
- $list['line']=$line;
- return $this->success($list);
- }
- public function getSeeUserList(Request $request){
- $cycle=$request->input('cycle');
- $search_name=$request->input('search_name');
- $page_index=$request->input('page_index');
- $page_size=$request->input('page_size');
- $num=$page_size*($page_index-1);
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- switch($cycle){
- case 'yesterday':
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- break;
- case 'today':
- $where=function($query){
- $query->whereDate('created_at',date("Y-m-d",strtotime('-1 day')));
- };
- break;
- case 'week':
- $w=date('w');
- if($w==0){
- $w=7;
- }
- $w-=1;
- $where=function($query)use($w){
- $query->whereBetween('created_at',[date("Y-m-d 00:00:00",strtotime("-$w day")),date("Y-m-d 23:59:59")]);
- };
- break;
- case 'month':
- $where=function($query){
- $query->whereBetween('created_at',[date("Y-m-01 00:00:00"),date("Y-m-d 23:59:59")]);
- };
- break;
- default:
- $where=[];
- }
- $count=See::where($where)->where('store_id',$store_id)->whereHas('user',function($query)use($search_name){
- $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%');
- })->count();
- $list=See::with(['user:id,nickname,avatar','goods:id,name,img'])
- ->whereHas('user',function($query)use($search_name){
- $query->where('nickname','like','%'.$search_name.'%')->orWhere('phone','like','%'.$search_name.'%');
- })
- ->where($where)->where('store_id',$store_id)->orderByDesc('created_at')->skip($num)->take($page_size)->get();
- return $this->success_list($list,'',$count);
- }
- //设置店铺商品库存
- public function setStoreGoodsInventory(Request $request){
- $data=$request->input('data');
- $user_id=Auth::user()->id;
- $store_id=Store::where('user_id',$user_id)->value('id');
- foreach($data as $key=>$val){
- $sku=StoreGoodsSku::where('id',$val[0])->first();
- if($sku){
- InventoryW::updateOrCreate(
- [
- 'store_id'=>$store_id,
- 'goods_id'=>$sku->goods_id,
- 'sku_id'=>$val[0],
- 'size'=>$sku->size,
- 'type'=>$sku->type
- ],
- [
- 'num'=>$val[1]
- ]
- );
- }
- }
- return $this->success([]);
- }
- }
|