123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\Express;
- use App\Models\Goodtest;
- use App\Models\Orderdetail;
- use App\Models\Ordertest;
- use Illuminate\Http\Request;
- class ExpressController extends Controller
- {
- public function GetExpress(){
- $order_ids=Ordertest::where('is_deleted',0)->whereBetween('created_at',['2021-04-26 22:00:00','2021-04-30 00:00:00'])->whereNull('store_id')->pluck('id');
- $data=Express::whereIn('order_id',$order_ids)->where('is_gift',0)->get();
- $type_1=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
- $type_2=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
- $type_3=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
- foreach ($data as $k=>$v){
- $arr=explode('+',$v->note);
- foreach ($arr as $ka=>$va){
- $arrs=explode(':',$va);
- if (mb_substr($arrs[0],0,1)=='女'){
- $sex='女款-';
- $str_count=substr_count(mb_substr($arrs[0],1),'X');
- if ($str_count>=2){
- $size=$str_count.'XL';
- }else{
- $size=mb_substr($arrs[0],1);
- }
- }else{
- $sex='男款-';
- $str_count=substr_count($arrs[0],'X');
- if ($str_count>=2){
- $size=$str_count.'XL';
- }else{
- $size=$arrs[0];
- }
- }
- if (mb_strlen($arrs[1])<4){
- if (mb_substr($arrs[1],-1)=='精'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_1['size'][$sex.$size])){
- $type_1['size'][$sex.$size]+=$num;
- }else{
- $type_1['size'][$sex.$size]=$num;
- }
- $type_1['num']+=$num;
- }elseif (mb_substr($arrs[1],-1)=='简'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_2['size'][$sex.$size])){
- $type_2['size'][$sex.$size]+=$num;
- }else{
- $type_2['size'][$sex.$size]=$num;
- }
- $type_2['num']+=$num;
- }elseif (mb_substr($arrs[1],-1)=='老'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_3['size'][$sex.$size])){
- $type_3['size'][$sex.$size]+=$num;
- }else{
- $type_3['size'][$sex.$size]=$num;
- }
- $type_3['num']+=$num;
- }
- }else{
- $arrr=[
- ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
- ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
- ];
- foreach ($arrr as $kes=>$vas){
- if ($vas['type']=='简'){
- if (isset($type_2['size'][$sex.$size])){
- $type_2['size'][$sex.$size]+=$vas['num'];
- }else{
- $type_2['size'][$sex.$size]=$vas['num'];
- }
- $type_2['num']+=$vas['num'];
- }else{
- if (isset($type_3['size'][$sex.$size])){
- $type_3['size'][$sex.$size]+=$vas['num'];
- }else{
- $type_3['size'][$sex.$size]=$vas['num'];
- }
- $type_3['num']+=$vas['num'];
- }
- }
- }
- }
- }
- $size_type1=[];
- $size_type2=[];
- $size_type3=[];
- $datas=Orderdetail::whereIn('order_id',$order_ids)->groupBy('goods_name')->get();
- foreach ($datas as $k=>$v){
- $type=[];
- $re=Orderdetail::whereIn('order_id',$order_ids)->where('goods_name',$v->goods_name)->groupBy('goods_id')->get();
- foreach ($re as $ke=>$va){
- $num=Orderdetail::whereIn('order_id',$order_ids)->where('goods_id',$va->goods_id)->groupBy('goods_id')->sum('num');
- $str_count=substr_count($va->goods_size,'X');
- if ($str_count>=2){
- $size=mb_substr($va->goods_size,0,3).$str_count.'XL';
- }else{
- $size=$va->goods_size;
- }
- $type[$size]=['num'=>$num,'name'=>$v->goods_name,'goods_id'=>$v->goods_id];
- }
- if (substr_count($v->goods_name,'精')){
- $size_type1=$type;
- }
- if (substr_count($v->goods_name,'简')){
- $size_type2=$type;
- }
- if (substr_count($v->goods_name,'老')){
- $size_type3=$type;
- }
- // dump($v->goods_name.'==='.$v->goods_size.'==='.$num);
- }
- // dump($size_type1);
- // dump($size_type2);
- // dump($size_type3);
- $all=[];
- foreach ($type_1['size'] as $k=>$v){
- if (isset($size_type1[$k])){
- $type_1['order_num']+=$size_type1[$k]['num'];
- $type_1['order_size'][$k]=$size_type1[$k]['num'];
- $type_1['goods_name']=$size_type1[$k]['name'];
- $all[0]['num']=$type_1['num'];
- $all[0]['order_num']=$type_1['order_num'];
- $all[0]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type1[$k]['num']];
- $all[0]['title']=$size_type1[$k]['name'];
- $all[0]['price']=Goodtest::where('id',$size_type1[$k]['goods_id'])->value('money');
- }
- }
- foreach ($type_2['size'] as $k=>$v){
- if (isset($size_type2[$k])){
- $type_2['order_num']+=$size_type2[$k]['num'];
- $type_2['order_size'][$k]=$size_type2[$k]['num'];
- $type_2['goods_name']=$size_type2[$k]['name'];
- $all[1]['num']=$type_2['num'];
- $all[1]['order_num']=$type_2['order_num'];
- $all[1]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type2[$k]['num']];
- $all[1]['title']=$size_type2[$k]['name'];
- $all[1]['price']=Goodtest::where('id',$size_type2[$k]['goods_id'])->value('money');
- }
- }
- foreach ($type_3['size'] as $k=>$v){
- if (isset($size_type3[$k])){
- $type_3['order_num']+=$size_type3[$k]['num'];
- $type_3['order_size'][$k]=$size_type3[$k]['num'];
- $type_3['goods_name']=$size_type3[$k]['name'];
- $all[2]['num']=$type_3['num'];
- $all[2]['title']=$size_type3[$k]['name'];
- $all[2]['order_num']=$type_3['order_num'];
- $all[2]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type3[$k]['num']];
- $all[2]['price']=Goodtest::where('id',$size_type3[$k]['goods_id'])->value('money');
- }
- }
- return $this->success($all);
- }
- }
|