ExpressController.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Express;
  4. use App\Models\Goodtest;
  5. use App\Models\Orderdetail;
  6. use App\Models\Ordertest;
  7. use Illuminate\Http\Request;
  8. class ExpressController extends Controller
  9. {
  10. public function GetExpress(){
  11. $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');
  12. $data=Express::whereIn('order_id',$order_ids)->where('is_gift',0)->get();
  13. $type_1=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
  14. $type_2=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
  15. $type_3=['order_num'=>0,'num'=>0,'size'=>[],'order_size'=>[],'goods_name'=>''];
  16. foreach ($data as $k=>$v){
  17. $arr=explode('+',$v->note);
  18. foreach ($arr as $ka=>$va){
  19. $arrs=explode(':',$va);
  20. if (mb_substr($arrs[0],0,1)=='女'){
  21. $sex='女款-';
  22. $str_count=substr_count(mb_substr($arrs[0],1),'X');
  23. if ($str_count>=2){
  24. $size=$str_count.'XL';
  25. }else{
  26. $size=mb_substr($arrs[0],1);
  27. }
  28. }else{
  29. $sex='男款-';
  30. $str_count=substr_count($arrs[0],'X');
  31. if ($str_count>=2){
  32. $size=$str_count.'XL';
  33. }else{
  34. $size=$arrs[0];
  35. }
  36. }
  37. if (mb_strlen($arrs[1])<4){
  38. if (mb_substr($arrs[1],-1)=='精'){
  39. $num=mb_substr($arrs[1],0,-1);
  40. if (isset($type_1['size'][$sex.$size])){
  41. $type_1['size'][$sex.$size]+=$num;
  42. }else{
  43. $type_1['size'][$sex.$size]=$num;
  44. }
  45. $type_1['num']+=$num;
  46. }elseif (mb_substr($arrs[1],-1)=='简'){
  47. $num=mb_substr($arrs[1],0,-1);
  48. if (isset($type_2['size'][$sex.$size])){
  49. $type_2['size'][$sex.$size]+=$num;
  50. }else{
  51. $type_2['size'][$sex.$size]=$num;
  52. }
  53. $type_2['num']+=$num;
  54. }elseif (mb_substr($arrs[1],-1)=='老'){
  55. $num=mb_substr($arrs[1],0,-1);
  56. if (isset($type_3['size'][$sex.$size])){
  57. $type_3['size'][$sex.$size]+=$num;
  58. }else{
  59. $type_3['size'][$sex.$size]=$num;
  60. }
  61. $type_3['num']+=$num;
  62. }
  63. }else{
  64. $arrr=[
  65. ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
  66. ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
  67. ];
  68. foreach ($arrr as $kes=>$vas){
  69. if ($vas['type']=='简'){
  70. if (isset($type_2['size'][$sex.$size])){
  71. $type_2['size'][$sex.$size]+=$vas['num'];
  72. }else{
  73. $type_2['size'][$sex.$size]=$vas['num'];
  74. }
  75. $type_2['num']+=$vas['num'];
  76. }else{
  77. if (isset($type_3['size'][$sex.$size])){
  78. $type_3['size'][$sex.$size]+=$vas['num'];
  79. }else{
  80. $type_3['size'][$sex.$size]=$vas['num'];
  81. }
  82. $type_3['num']+=$vas['num'];
  83. }
  84. }
  85. }
  86. }
  87. }
  88. $size_type1=[];
  89. $size_type2=[];
  90. $size_type3=[];
  91. $datas=Orderdetail::whereIn('order_id',$order_ids)->groupBy('goods_name')->get();
  92. foreach ($datas as $k=>$v){
  93. $type=[];
  94. $re=Orderdetail::whereIn('order_id',$order_ids)->where('goods_name',$v->goods_name)->groupBy('goods_id')->get();
  95. foreach ($re as $ke=>$va){
  96. $num=Orderdetail::whereIn('order_id',$order_ids)->where('goods_id',$va->goods_id)->groupBy('goods_id')->sum('num');
  97. $str_count=substr_count($va->goods_size,'X');
  98. if ($str_count>=2){
  99. $size=mb_substr($va->goods_size,0,3).$str_count.'XL';
  100. }else{
  101. $size=$va->goods_size;
  102. }
  103. $type[$size]=['num'=>$num,'name'=>$v->goods_name,'goods_id'=>$v->goods_id];
  104. }
  105. if (substr_count($v->goods_name,'精')){
  106. $size_type1=$type;
  107. }
  108. if (substr_count($v->goods_name,'简')){
  109. $size_type2=$type;
  110. }
  111. if (substr_count($v->goods_name,'老')){
  112. $size_type3=$type;
  113. }
  114. // dump($v->goods_name.'==='.$v->goods_size.'==='.$num);
  115. }
  116. // dump($size_type1);
  117. // dump($size_type2);
  118. // dump($size_type3);
  119. $all=[];
  120. foreach ($type_1['size'] as $k=>$v){
  121. if (isset($size_type1[$k])){
  122. $type_1['order_num']+=$size_type1[$k]['num'];
  123. $type_1['order_size'][$k]=$size_type1[$k]['num'];
  124. $type_1['goods_name']=$size_type1[$k]['name'];
  125. $all[0]['num']=$type_1['num'];
  126. $all[0]['order_num']=$type_1['order_num'];
  127. $all[0]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type1[$k]['num']];
  128. $all[0]['title']=$size_type1[$k]['name'];
  129. $all[0]['price']=Goodtest::where('id',$size_type1[$k]['goods_id'])->value('money');
  130. }
  131. }
  132. foreach ($type_2['size'] as $k=>$v){
  133. if (isset($size_type2[$k])){
  134. $type_2['order_num']+=$size_type2[$k]['num'];
  135. $type_2['order_size'][$k]=$size_type2[$k]['num'];
  136. $type_2['goods_name']=$size_type2[$k]['name'];
  137. $all[1]['num']=$type_2['num'];
  138. $all[1]['order_num']=$type_2['order_num'];
  139. $all[1]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type2[$k]['num']];
  140. $all[1]['title']=$size_type2[$k]['name'];
  141. $all[1]['price']=Goodtest::where('id',$size_type2[$k]['goods_id'])->value('money');
  142. }
  143. }
  144. foreach ($type_3['size'] as $k=>$v){
  145. if (isset($size_type3[$k])){
  146. $type_3['order_num']+=$size_type3[$k]['num'];
  147. $type_3['order_size'][$k]=$size_type3[$k]['num'];
  148. $type_3['goods_name']=$size_type3[$k]['name'];
  149. $all[2]['num']=$type_3['num'];
  150. $all[2]['title']=$size_type3[$k]['name'];
  151. $all[2]['order_num']=$type_3['order_num'];
  152. $all[2]['list'][]=['size'=>$k,'num'=>$v,'order_num'=>$size_type3[$k]['num']];
  153. $all[2]['price']=Goodtest::where('id',$size_type3[$k]['goods_id'])->value('money');
  154. }
  155. }
  156. return $this->success($all);
  157. }
  158. }