GoodtestController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Activity;
  4. use App\Models\Goodtest;
  5. use App\Models\LimitGood;
  6. use App\Models\OrderDetail;
  7. use App\Models\Ordertest;
  8. use App\Models\User;
  9. use Carbon\Carbon;
  10. use Illuminate\Support\Facades\Auth;
  11. use Illuminate\Support\Facades\Cache;
  12. use function Couchbase\defaultDecoder;
  13. class GoodtestController extends Controller{
  14. public function GetGoodStatus(){
  15. $activity=Activity::where('is_ing',1)->first();
  16. $time=Carbon::now();
  17. $status=false;
  18. if ($time>=$activity->start_time && $time<=$activity->end_time){
  19. if ($activity->set_company_buy_num==1){
  20. $status=true;
  21. }
  22. }
  23. return $this->success(['status'=>$status]);
  24. }
  25. public function good_show(){
  26. // return $this->success_list([]);
  27. // if (Cache::get('GiftWaZiStatus')){
  28. // return $this->success_list([]);
  29. // }
  30. $id=Auth::user()->id;
  31. // if (!Cache::has('LIMITUSER'.$id)){
  32. // Cache::forever('LIMITUSER'.$id,0);
  33. // }
  34. // if(Cache::get('LIMITUSER'.$id)>=50){
  35. // return $this->success_list([]);
  36. // }
  37. // if ($id!=39516){
  38. // return $this->success_list([]);
  39. // }
  40. $user=User::find($id);
  41. $time=Carbon::now();
  42. $activity=Activity::where('is_ing',1)->first();
  43. // //暂时关闭
  44. // if ($activity){
  45. // if ($time <$activity->start_time || $time>$activity->end_time){
  46. // return $this->success_list([]);
  47. // }
  48. // if ($time>=$activity->start_time && $time<=$activity->end_time){
  49. // if ($time<Carbon::today()->addHours(9) || $time>Carbon::today()->addHours(21)){
  50. // return $this->success_list([]);
  51. // }
  52. // }
  53. // }
  54. $re=[];
  55. $goods_id=[];
  56. $mobile=Auth::user()->mobile;
  57. $ids=Auth::user()->id;
  58. // if (in_array($ids,[123226])){
  59. $datas=Goodtest::whereIn('is_show',[2,3])->where('is_deleted',0)->count();
  60. if ($datas>0){
  61. $data=Goodtest::whereIn('is_show',[2,3])->whereNotIn('id',$goods_id)->where('is_deleted',0)->groupBy('main_attr')->orderBy('sort')->select('main_attr','attr_id')->get();
  62. $i=0;
  63. $re=[];
  64. foreach ($data as $k=>$v){
  65. $sec_attr=Goodtest::whereIn('is_show',[2,3])
  66. ->whereNotIn('id',$goods_id)
  67. ->where('is_deleted',0)
  68. ->where('main_attr',$v->main_attr)
  69. ->groupBy('sec_attr')
  70. ->orderBy('sort')
  71. ->select('sec_attr','name','goods_num','money','unit','main_img','banner_img','id','attr_id','show_time','off_time','main_attr')
  72. ->get();
  73. foreach ($sec_attr as $ke=>$va){
  74. $size=Goodtest::whereIn('is_show',[2,3])
  75. ->whereNotIn('id',$goods_id)
  76. ->where('is_deleted',0)->where('main_attr',$v->main_attr)->where('sec_attr',$va->sec_attr)->select('storage','size','id')->get()->toArray();
  77. // $now=Carbon::now()->timestamp;
  78. // if ($va->show_time==null){
  79. // $re[$i]['limit_time']=false;
  80. // }else{
  81. // if (strtotime($va->show_time)<$now&&strtotime($va->off_time)>$now){
  82. // $re[$i]['limit_time']=true;
  83. // $re[$i]['show_time']=$va->show_time->toDateTimeString();
  84. // $re[$i]['off_time']=$va->off_time->toDateTimeString();
  85. // }
  86. // }
  87. $re[$i]['step']=1;
  88. if($user->level=='3'){
  89. if($activity && $activity->set_company_buy_num==1){
  90. if ($time>=$activity->start_time && $time<=$activity->end_time){
  91. // if ($time>=Carbon::today()->addHours(9) && $time<=Carbon::today()->addHours(21)){
  92. if($va->main_attr=='大卫博士精装版'){
  93. $re[$i]['step']=6;
  94. }elseif($va->main_attr=='大卫博士高腰版' || $va->main_attr=='大卫博士青春版'){
  95. $re[$i]['step']=3;
  96. }
  97. // }
  98. }
  99. }
  100. }
  101. $re[$i]['name']=$va->name;
  102. $re[$i]['attr_id']=$va->attr_id;
  103. $re[$i]['size_id']=array_column($size,'id');
  104. $re[$i]['size']=array_column($size,'size');
  105. $ss=[];
  106. foreach ($size as $kkes=>$vvas){
  107. $ss[]=Cache::get('dwbs_good_num'.$vvas['id']);
  108. }
  109. // $ss=array_column($size,'storage');
  110. if ($ss<3){
  111. $re[$i]['storage']=0;
  112. }else{
  113. $re[$i]['storage']=$ss;
  114. }
  115. $re[$i]['goods_num']=$va->goods_num;
  116. $re[$i]['money']=$va->money;
  117. $re[$i]['unit']=$va->unit;
  118. $re[$i]['main_img']=$va->main_img;
  119. $re[$i]['banner_img']=json_decode($va->banner_img);
  120. // $re[$i]['banner_img']=[$va->main_img];
  121. $re[$i]['sec_attr']=$va->sec_attr;
  122. $i++;
  123. }
  124. }
  125. }else{
  126. return $this->success_list([]);
  127. }
  128. // }
  129. return $this->success_list($re);
  130. }
  131. public function LimitGood(){
  132. $arr=['男款-L',
  133. '男款-XL',
  134. '男款-XXL',
  135. '男款-3XL',
  136. '男款-4XL',
  137. '男款-5XL',
  138. '男款-6XL',
  139. '女款-M',
  140. '女款-L',
  141. '女款-XL',
  142. '女款-XXL',
  143. '女款-3XL',
  144. '女款-4XL',
  145. '女款-5XL'];
  146. // $re=LimitGood::where('user_id',Auth::user()->id)->get();
  147. $data=[];
  148. foreach ($arr as $k=>$v){
  149. $data[]=[
  150. 'user_id'=>Auth::user()->id,
  151. 'limit_num'=>2000,
  152. 'num'=>0,
  153. 'size'=>$v
  154. ];
  155. }
  156. return $this->success($data);
  157. }
  158. public function again_order(){
  159. $order_detail=OrderDetail::where('order_id',7)->groupBy('goods_name')->get();
  160. foreach ($order_detail as $k=>$v){
  161. $data=OrderDetail::where('goods_name',$v->goods_name)->where('order_id',7)->with(['get_good'])->get();
  162. $size=[];
  163. $size_id=[];
  164. $num=[];
  165. dump($data);
  166. foreach ($data as $ke=>$va){
  167. $size[$ke]=$va->goods_size;
  168. $size_id[$ke]=$va->goods_id;
  169. $num[$ke]=$va->num;
  170. }
  171. $re[$k]['size']=$size;
  172. $re[$k]['size_id']=$size_id;
  173. $re[$k]['num']=$num;
  174. $re[$k]['name']=$v->goods_name;
  175. $re[$k]['main_img']=$data[0]->get_good->main_img;
  176. }
  177. dd($re);
  178. }
  179. public function AddDataGood(){
  180. // dd(Cache::get('LIMITUSER39516'));
  181. $good=Goodtest::where('is_deleted',0)->whereIn('is_show',[1,2,3])->get();
  182. // $order_id=Ordertest::where('created_at','>','2024-07-01 21:00:00')->where('is_deleted',0)->pluck('id');
  183. // $gg=Orderdetail::whereIn('order_id',$order_id)->where('goods_unit','套')->sum('num');
  184. // $gg1=Orderdetail::whereIn('order_id',$order_id)->where('goods_unit','件')->sum('num');
  185. // dump('赠品数量===='.($gg+$gg1*2));
  186. // Cache::forever('GiftWaZiStatus',0);
  187. // Cache::forever('GiftWaZi',$gg+$gg1*2);
  188. foreach ($good as $k=>$v){
  189. $num=$v->storage;
  190. // Cache::forget('dwbs_good_num'.$v->id);
  191. // Cache::forever('dwbs_good_num'.$v->id,$v->storage);
  192. $ids=Ordertest::where('created_at','>','2024-07-30 00:00:00')->where('is_deleted',0)->pluck('id');
  193. $nums=Orderdetail::whereIn('order_id',$ids)->where('goods_id',$v->id)->sum('num');
  194. $n=$nums;
  195. // if (($num-$n)<=0){
  196. // $cache_num=0;
  197. // }else{
  198. // $cache_num=$num-$n;
  199. // }
  200. // Cache::forever('dwbs_good_num'.$v->id,$cache_num);
  201. $mm=Cache::get('dwbs_good_num'.$v->id);
  202. $k=$v->all_storage;
  203. dump($mm.'缓存数量=========='.$v->name.$v->size.'('.$v->id.')订单数量'.$n.'=======总库存'.$v->storage.'======='.$k.'======'.($n+$mm-$k));
  204. // if ($mm<30){
  205. // if (($n+$mm-$k)>0){
  206. //// Cache::forget('dwbs_good_num'.$v->id);
  207. // Cache::decrement('dwbs_good_num'.$v->id,43);
  208. // dump($n.'===='.$k.'===='.$mm);
  209. // }
  210. // if ($mm==0){
  211. // if (($k-$n)>0){
  212. // dump(111);
  213. // Cache::forever('dwbs_good_num'.$v->id,$k-$n);
  214. //// Cache::increment('dwbs_good_num'.$v->id,$k-$n-$mm);
  215. // Goodtest::where('id',$v->id)->update(['storage'=>$k-$n]);
  216. // }else{
  217. // dump(222);
  218. // Cache::forever('dwbs_good_num'.$v->id,0);
  219. // Goodtest::where('id',$v->id)->update(['storage'=>0]);
  220. // }
  221. ////
  222. // }
  223. // }
  224. // dump(Cache::get('dwbs_good_num'.$v->id).'=========='.$v->name.$v->size.'('.$v->id.')'.'======='.$v->storage);
  225. }
  226. }
  227. public function GetIndex(){
  228. $good=Goodtest::where('is_deleted',0)->whereIn('is_show',[1,2,3])->get();
  229. foreach ($good as $k=>$v){
  230. $ids=Ordertest::where('created_at','>','2022-03-18 08:00:00')->where('is_deleted',0)->pluck('id');
  231. $nums=Orderdetail::whereIn('order_id',$ids)->where('goods_id',$v->id)->sum('num');
  232. $n=$nums;
  233. // if (Cache::get('dwbs_good_num'.$v->id)==0){
  234. // dump(Cache::get('dwbs_good_num'.$v->id).'=========='.$v->name.$v->size.'('.$v->id.')'.'======='.$v->all_storage.'======'.$n);
  235. // if ($n<$v->all_storage){
  236. // Cache::forever('dwbs_good_num'.$v->id,($v->all_storage-$n));
  237. // Goodtest::where('id',$v->id)->update(['storage'=>Cache::get('dwbs_good_num'.$v->id)]);
  238. }
  239. // dd(1);
  240. // }
  241. // }
  242. dd(1);
  243. }
  244. public function getuser_num(){
  245. $user=User::where('level',3)->get();
  246. foreach ($user as $k=>$v){
  247. $num=Cache::get('LIMITUSER'.$v->id);
  248. // Cache::forever('LIMITUSER'.$v->id,$nums);
  249. // if ($num==50){
  250. $id=Ordertest::where('user_id',$v->id)->where('is_deleted',0)->where('created_at','>','2024-05-18 09:00:00')->pluck('id');
  251. $nums=OrderDetail::whereIn('order_id',$id)->where('created_at','>','2024-05-18 09:00:00')->sum('num');
  252. // if ($nums!=50){
  253. // Cache::forever('LIMITUSER'.$v->id,$nums);
  254. // }
  255. // }
  256. $str='';
  257. if ($num!=$nums){
  258. $str='异常';
  259. }
  260. dump(Cache::get('LIMITUSER'.$v->id).'------'.$nums.'====='.$v->nickname.'===='.$v->mobile.'====='.$str);
  261. }
  262. }
  263. }