OrdertestController.php 100 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Events\DestoryOrder;
  4. use App\Events\OrderPayEvent;
  5. use App\Events\OrderPayInfoEvent;
  6. use App\Events\SubmitOrdersInfoEvent;
  7. use App\Handlers\ExpressHandler;
  8. use App\Models\Activity;
  9. use App\Models\Address;
  10. use App\Models\Article;
  11. use App\Models\CrownCount;
  12. use App\Models\Express;
  13. use App\Models\ExpStoreAgent;
  14. use App\Models\Gift;
  15. use App\Models\Goodtest;
  16. use App\Models\HonorInfo;
  17. use App\Models\Order;
  18. use App\Models\OrderDetail;
  19. use App\Models\OrderGift;
  20. use App\Models\Orderlog;
  21. use App\Models\OrderRemark;
  22. use App\Models\Ordertest;
  23. use App\Models\User;
  24. use App\Models\UserPay;
  25. use Carbon\Carbon;
  26. use Illuminate\Http\Request;
  27. use Illuminate\Support\Facades\Auth;
  28. use Illuminate\Support\Facades\Cache;
  29. use Illuminate\Support\Facades\DB;
  30. use Illuminate\Support\Facades\Log;
  31. use Illuminate\Support\Facades\Validator;
  32. class OrdertestController extends Controller
  33. {
  34. /*
  35. * 检测订单是否需要合并
  36. * **/
  37. public function search_order(Request $request){
  38. $user=Auth::user();
  39. $active=Activity::where('start_time','<=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())
  40. ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first();
  41. //如果处于活动期间
  42. if ($active){
  43. //判断活动期间是否有相同地址的订单
  44. $or=Ordertest::where('user_id',$user->id)->where('address_id',$request->address_id)
  45. ->whereBetween('created_at',[$active->start_time,$active->end_time])
  46. ->where('is_deleted',0)->where('apply_status',0)->whereIn('status',[0,1])->first();
  47. if ($or){//如果存在
  48. return $this->error(4600,'','系统检测,该订单和订单编号为'.$or->order_num.'的收货信息一致,将会和它合并成一个订单');
  49. }
  50. }
  51. return $this->success([]);
  52. }
  53. /**查找代理**/
  54. public function get_user(Request $request){
  55. $input=$request->all();
  56. $id=Auth::user()->id;
  57. $ids=[$id];
  58. $user_id=User::where('agent_id',$id)->whereIn('cert_status',[3,6])->pluck('id')->toArray();
  59. $user_ids=User::whereIn('agent_id',$user_id)->whereIn('cert_status',[3,6])->pluck('id')->toArray();
  60. $all_ids=array_merge($ids,array_merge($user_id,$user_ids));
  61. $search_name=$input['search_name'];
  62. $where=[];
  63. if ($search_name){
  64. $where=function ($q)use($search_name){
  65. $q->where('mobile','like','%'.$search_name.'%')->orwhere('nickname','like','%'.$search_name.'%');
  66. };
  67. }
  68. $user=User::whereIn('id',$all_ids)->where($where)->select('id','mobile','level','nickname','realname','headimgurl');
  69. $count=$user->get()->count();
  70. $re=$user->take(30)->skip(($request->page-1)*30)->get();
  71. return $this->success_list($re,'',$count);
  72. }
  73. /*
  74. * 处理每次订单数据
  75. * **/
  76. public function DealOrder($size=[],$num=[]){
  77. $nums=[];
  78. $sizes=[];
  79. foreach ($size as $k=>$v){
  80. $re=Goodtest::find($v);
  81. $s=strpos($re->main_attr,'精');
  82. if (is_numeric($s)){
  83. $sizes[]='精-'.$re->size;
  84. $nums[]=$num[$k];
  85. }else{
  86. $s=strpos($re->main_attr,'简');
  87. if (is_numeric($s)){
  88. $sizes[]='简-'.$re->size;
  89. $nums[]=$num[$k];
  90. }else{
  91. $s=strpos($re->main_attr,'纯棉');
  92. if (is_numeric($s)){
  93. $sizes[]='纯棉-'.$re->size;
  94. $nums[]=$num[$k];
  95. }else{
  96. $s=strpos($re->main_attr,'高');
  97. if (is_numeric($s)){
  98. $sizes[]='高-'.$re->size;
  99. $nums[]=$num[$k];
  100. }else{
  101. $s=strpos($re->main_attr,'青');
  102. if (is_numeric($s)){
  103. $sizes[]='青-'.$re->size;
  104. $nums[]=$num[$k];
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111. return [$sizes,$nums];
  112. }
  113. /*
  114. * 提交订单
  115. * */
  116. public function submit_order(Request $request)
  117. {
  118. // return $this->error(50021,'暂停');
  119. $user=Auth::user();
  120. if ($user->level!=3){
  121. return $this->error('4001','','当前用户不是经销商');
  122. }
  123. $rules = [
  124. 'size_id' => 'required',
  125. 'total' => 'required',
  126. 'type' => 'required',
  127. 'num' => 'required',
  128. 'money'=>'required',
  129. 'address_id'=>'required',
  130. 'belong_id'=>'required'
  131. ];
  132. $message = [
  133. 'required' => ':attribute不能为空',
  134. ];
  135. $attributes = [
  136. 'size_id' => 'size_id',
  137. 'total' => '商品总数量',
  138. 'type' => '商品中总类型',
  139. 'num' => '单类商品商量',
  140. 'money'=>'商品金额',
  141. 'address_id'=>'地址',
  142. ];
  143. $vali = Validator::make($request->all(), $rules, $message,$attributes);
  144. if ($vali->fails()) {
  145. Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first());
  146. return $this->error('40010', '',$vali->errors()->first());
  147. }
  148. $time=Carbon::now();
  149. $input=$request->all();
  150. $Numarr=[70,71,72,73,74,75,76,77];
  151. $activity=Activity::where('is_ing',1)->first();
  152. if ($activity){
  153. if ($time>=$activity->start_time && $time<=$activity->end_time){
  154. if ($time<Carbon::today()->addHours(9) || $time>Carbon::today()->addHours(21)){
  155. return $this->error(500214,'','当前时间不能下单');
  156. }
  157. }
  158. }
  159. foreach ($input['size_id'] as $k=>$v){
  160. $data=Goodtest::find($v);
  161. if (!$data){
  162. return $this->error(40013,'','购物车有未知商品,请清空购物车');
  163. }
  164. $now=Carbon::now()->timestamp;
  165. if ($data->off_time!=null){
  166. if (strtotime($data->off_time)<$now){
  167. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
  168. }
  169. }
  170. if($data->is_show==4){
  171. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
  172. }
  173. if($data->is_show==1){
  174. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架');
  175. }
  176. }
  177. foreach ($input['size_id'] as $k=>$v){
  178. if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){
  179. $data=Goodtest::find($v);
  180. return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量');
  181. }
  182. }
  183. //
  184. // $lock=Cache::lock('foo',4);
  185. // $lock->block(3);
  186. foreach ($input['size_id'] as $k=>$v){
  187. Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]);
  188. }
  189. // optional($lock)->release();
  190. DB::beginTransaction();
  191. try{
  192. $users=User::where('id',$user->id)->first();
  193. $address=Address::where('id',$request->input('address_id'))->select('id','province','city','town')->first();
  194. $area=$address->province.$address->city.$address->town;
  195. if ($area=='山东省临沂市临沭县'){
  196. $store_id = 17;
  197. }else{
  198. $store_id = null;
  199. }
  200. // if ($users->deleted_at){
  201. // return $this->error(50024,'','您已退出!不能参与下单');
  202. // }
  203. /*
  204. * 判断当前订单是处于什么状态
  205. * **/
  206. // if ($users->money==0){
  207. // $no_pay_money=$input['money'];
  208. // $pay_money=0;
  209. // $pay_status=0;
  210. // $money=0;
  211. // }else{
  212. // if ($users->money>=$input['money']){
  213. // $no_pay_money=0;
  214. // $pay_money=$input['money'];
  215. // $pay_status=2;
  216. // $money=$users->money-$input['money'];
  217. // }else{
  218. // $no_pay_money=$input['money']-$users->money;
  219. // $pay_money=$users->money;
  220. // $pay_status=1;
  221. // $money=0;
  222. // }
  223. // }
  224. $no_pay_money=$input['money'];//订单金额,也是未支付金额
  225. $pay_money=0;
  226. /*
  227. * 判断当前时间是否处于活动期间
  228. * ***/
  229. $active=Activity::where('start_time','<=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())
  230. ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first();
  231. $address=Address::find($request->address_id);
  232. $address->belong_id=$request->belong_id;
  233. if (!$address->save()){
  234. throw new \Exception('1');
  235. }
  236. //如果处于活动期间
  237. if ($active){
  238. //判断活动期间是否有相同地址的订单
  239. $or=Ordertest::where('user_id',$user->id)->where('address_id',$input['address_id'])
  240. ->whereBetween('created_at',[$active->start_time,$active->end_time])
  241. ->where('is_deleted',0)->whereIn('status',[0,1])->where('apply_status',0)->first();
  242. if ($or){//如果存在
  243. /*
  244. * 合并订单
  245. * **/
  246. $money_old=$or->money;
  247. $total_old=$or->total;
  248. $or->total+=$input['total'];//合并总量
  249. $or->money+=$input['money'];//合并订单金额
  250. // $or->pay_money+=$pay_money;//合并支付金额
  251. $or->is_merge=1;
  252. $money_now=$or->money;//记录当前订单的金额
  253. $total_now=$or->total;//记录当前订单的金额
  254. $orderlog = new Orderlog();
  255. $orderlog->order_id = $or->id;
  256. $orderlog->user_id = $or->user_id;
  257. $orderlog->log_name = $user->nickname;
  258. $orderlog->log_title = '合并订单';
  259. if ($or->pay_status==3){
  260. if ($or->wait_back_money>$no_pay_money){
  261. $or->no_pay_money=0;
  262. $or->wait_back_money-=$no_pay_money;
  263. }elseif ($or->wait_back_money==$no_pay_money){
  264. $or->no_pay_money=0;
  265. $or->wait_back_money-=$no_pay_money;
  266. $or->pay_status=2;
  267. }else{
  268. $or->no_pay_money=$no_pay_money-$or->wait_back_money;
  269. $or->wait_back_money=0;
  270. $or->pay_status=1;
  271. }
  272. }else{
  273. $or->no_pay_money+=$no_pay_money;
  274. }
  275. //订单金额等于支付金额
  276. if ($or->money==$or->pay_money){
  277. $or->no_pay_money=0;//未支付变为0
  278. $or->pay_status=2;//支付状态2,为全部支付
  279. $or->wait_back_money=0;//待退回金额为0
  280. }elseif ($or->money<$or->pay_money){//订单金额小于支付金额
  281. $or->no_pay_money=0;//未支付金额变为0
  282. $or->pay_status=3;//支付状态3,待退款状态
  283. $or->wait_back_money=$or->pay_money-$or->money;//待退款金额为支付金额减去订单金额
  284. }elseif ($or->money>$or->pay_money){//订单金额大于支付金额
  285. if ($or->pay_money==0){//如果支付金额为0
  286. $or->pay_status=0;//则支付状态0,未支付
  287. }else{
  288. $or->pay_status=1;//否则支付状态1,部分支付
  289. }
  290. $or->no_pay_money=$or->money-$or->pay_money;//未支付金额等于订单金额减去支付金额
  291. $or->wait_back_money=0;//待退款为0
  292. }
  293. $ar=json_decode($or->arr_json);
  294. $arr=array_merge($ar,$this->DealOrder($input['size_id'],$input['num']));
  295. $or->arr_json=json_encode($arr);
  296. // $users->money=$money;
  297. // if (!$users->save()){
  298. // throw new \Exception(1);
  299. // }
  300. //存在备注信息则添加新区
  301. if (!empty($input['remark'])){
  302. $orderremark = new OrderRemark();
  303. $orderremark->order_id = $or->id;
  304. $orderremark->name=Auth::user()->nickname;
  305. $orderremark->level = $user->level;
  306. $orderremark->type = 0;
  307. $orderremark->remark = $input['remark'];
  308. if (!$orderremark->save()) {
  309. throw new \Exception('2');
  310. }
  311. }
  312. $hard=0;
  313. $simple=0;
  314. $log='';
  315. foreach ($input['size_id'] as $k=>$v){
  316. $data=Goodtest::find($v);
  317. //判断是否订单详情是否存在相同商品的记录
  318. $or_de=OrderDetail::where('order_id',$or->id)->where('goods_id',$data->id)->first();
  319. if ($or_de){//存在
  320. $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].',';
  321. $or_de->num+=$input['num'][$k];//合并数量
  322. $or_de->money+=$input['num'][$k]*$data->money;//合并订单中此商品的总金额
  323. if (!$or_de->save()){
  324. throw new \Exception('1');
  325. }
  326. $data->sold_num=$data->sold_num+$input['num'][$k];//记录商品新卖数量
  327. $data->storage=Cache::get('dwbs_good_num'.$data->id);;//减少商品的库存
  328. if (!$data->save()){
  329. throw new \Exception('3');
  330. }
  331. }else{//订单详情中不存在此商品的记录
  332. $order_detail=new OrderDetail();
  333. $order_detail->order_id=$or->id;
  334. $order_detail->goods_id=$data->id;
  335. $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].',';
  336. $order_detail->num=$input['num'][$k];
  337. $order_detail->money=$input['num'][$k]*$data->money;
  338. $order_detail->goods_name=$data->name;
  339. $order_detail->goods_size=$data->size;
  340. $order_detail->goods_price=$data->money;
  341. $order_detail->goods_unit=$data->unit;
  342. if (!$order_detail->save()){
  343. Log::error('{-----订单详情保存出错-----}'.$user->id);
  344. throw new \Exception('订单详情出错');
  345. }
  346. $data->sold_num=$data->sold_num+$input['num'][$k];
  347. $data->storage=Cache::get('dwbs_good_num'.$data->id);
  348. if (!$data->save()){
  349. throw new \Exception('3');
  350. }
  351. }
  352. }
  353. $nums=OrderDetail::where('order_id',$or->id)->count();//判断商品的种类
  354. $hard=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','套')->sum('num');//判断商品的种类
  355. $simple=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','件')->sum('num');//判断商品的种类
  356. $or->type=$nums;
  357. if (!$or->save()){
  358. throw new \Exception('1');
  359. }
  360. $orderlog->log_text = '用户合并了订单,原订单总金额为' . $money_old . ',商品数量为' . $total_old . '。合并后订单金额为' . $money_now . ',合并后商品数量为' . $total_now.',添加订单包含:'.$log ;
  361. if (!$orderlog->save()) {
  362. throw new \Exception('1');
  363. }
  364. $order_ids=$or->id;//记录下订单的ID
  365. $order_nums=$or->order_num;//记录下订单的ID
  366. if($users->openid){
  367. $goodsInfo='';
  368. foreach($input['size_id'] as $key => $val){
  369. $goods=Goodtest::find($val);
  370. if($key<=5){
  371. if(empty($goodsInfo)){
  372. $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  373. }else{
  374. $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  375. }
  376. }elseif($key==6){
  377. $goodsInfo.=',...';
  378. }
  379. }
  380. $mes['openid']=$users->openid;
  381. $mes['data']=[
  382. 'first' => '您的订单已提交成功,该订单将与订单号:'.$order_nums.' 进行合并',
  383. 'keyword1' => $goodsInfo,
  384. 'keyword2' => $order_nums,
  385. 'keyword3' => number_format($input['money'], 2),
  386. 'remark' => '点击链接进入系统,查看详情',
  387. ];
  388. event(new SubmitOrdersInfoEvent($mes));
  389. $this->nopaymessage();
  390. // if ($pay_money!=0){
  391. // $user_pay=new UserPay();
  392. // $user_pay->user_id=$users->id;
  393. // $user_pay->pay_money=$pay_money;
  394. // $user_pay->type=1;
  395. // $user_pay->op_name='系统自动支付';
  396. // $user_pay->order_num=$or->order_num;
  397. // $user_pay->pay_num=$this->pay_num();
  398. // $user_pay->user_money=$money;
  399. // $user_pay->remark='订单编号为'.$or->order_num.'合并订单时系统自动支付';
  400. // if (!$user_pay->save()){
  401. // throw new \Exception(1);
  402. // }
  403. // if ($user_pay->pay_money!=0){
  404. // if($users->openid){
  405. // $mes['openid']=$users->openid;
  406. // $mes['data']=[
  407. // 'first' => '您的订单:'.$or->order_num.'合并订单时,自动款成功',
  408. // 'keyword1' => '-'.number_format($pay_money, 2),
  409. // 'keyword2' => number_format($money, 2),
  410. // 'keyword3' => date("Y-m-d H:i"),
  411. // 'keyword4' => '合并订单自动支付',
  412. // 'remark' => '点击链接进入系统,查看详情',
  413. // ];
  414. // event(new OrderPayEvent($mes));
  415. // }
  416. // }
  417. //
  418. // }
  419. }
  420. }
  421. else{//不合并
  422. $order=new Ordertest();
  423. $order->user_id=$user->id;
  424. $order->store_id=$store_id;
  425. $order->order_num=$this->order_num();
  426. $order->total=$input['total'];
  427. $order->type=$input['type'];
  428. $order->money=$input['money'];
  429. $order->no_pay_money=$no_pay_money;
  430. $order->pay_money=$pay_money;
  431. $order->pay_status=0;
  432. $order->address_id=$input['address_id'];
  433. $order->good_user_id=$input['belong_id'];
  434. $order->relation=json_encode($this->GetRelation($input['belong_id']));
  435. $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num']));
  436. if (!empty($input['remark'])){
  437. $order->remark=$input['remark'];
  438. }
  439. if (!$order->save()){
  440. Log::error('{-----订单保存出错-----}'.$user->id);
  441. throw new \Exception('订单保存出错');
  442. }
  443. // $users->money=$money;
  444. // if (!$users->save()){
  445. // throw new \Exception('1');
  446. // }
  447. // if ($pay_money!=0){
  448. // $user_pay=new UserPay();
  449. // $user_pay->user_id=$users->id;
  450. // $user_pay->pay_money=$pay_money;
  451. // $user_pay->type=1;
  452. // $user_pay->op_name='系统自动支付';
  453. // $user_pay->order_num=$order->order_num;
  454. // $user_pay->pay_num=$this->pay_num();
  455. // $user_pay->user_money=$users->money;
  456. // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付';
  457. // if (!$user_pay->save()){
  458. // Log::error('3333333');
  459. // throw new \Exception('3');
  460. // }
  461. // }
  462. if (!empty($input['remark'])){
  463. $orderremark = new OrderRemark();
  464. $orderremark->order_id = $order->id;
  465. $orderremark->name=Auth::user()->nickname;
  466. $orderremark->level = $user->level;
  467. $orderremark->type = 0;
  468. $orderremark->remark = $input['remark'];
  469. if (!$orderremark->save()) {
  470. throw new \Exception('2');
  471. }
  472. }
  473. $hard=0;
  474. $simple=0;
  475. $old=0;
  476. $new_old=0;
  477. foreach ($input['size_id'] as $k=>$v){
  478. $data=Goodtest::find($v);
  479. $order_detail=new OrderDetail();
  480. $order_detail->order_id=$order->id;
  481. $order_detail->goods_id=$data->id;
  482. $order_detail->num=$input['num'][$k];
  483. $order_detail->money=$input['num'][$k]*$data->money;
  484. $order_detail->goods_name=$data->name;
  485. $order_detail->goods_size=$data->size;
  486. $order_detail->goods_price=$data->money;
  487. $order_detail->goods_unit=$data->unit;
  488. if (!$order_detail->save()){
  489. Log::error('{-----订单详情保存出错-----}'.$user->id);
  490. throw new \Exception('订单详情出错');
  491. }
  492. $data->sold_num=$data->sold_num+$input['num'][$k];
  493. $data->storage=Cache::get('dwbs_good_num'.$data->id);
  494. if (!$data->save()){
  495. throw new \Exception('3');
  496. }
  497. if ($data->unit=='套'){
  498. $hard+=$input['num'][$k];
  499. }elseif ($data->unit=='件'){
  500. $simple+=$input['num'][$k];
  501. }
  502. }
  503. $order_ids=$order->id;
  504. $order_nums=$order->order_num;//记录下订单的ID
  505. $goodsInfo='';
  506. $goodsInfos='';
  507. foreach($input['size_id'] as $key => $val){
  508. $goods=Goodtest::find($val);
  509. if(empty($goodsInfo)){
  510. $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  511. }else{
  512. $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  513. }
  514. if($key<=5){
  515. if(empty($goodsInfo)){
  516. $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  517. }else{
  518. $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  519. }
  520. }elseif($key==6){
  521. $goodsInfo.=',...';
  522. }
  523. }
  524. $orderlog=new Orderlog();
  525. $orderlog->order_id = $order->id;
  526. $orderlog->user_id = $order->user_id;
  527. $orderlog->log_name = $user->nickname;
  528. $orderlog->log_title = '初始订单数据';
  529. $orderlog->log_text = $goodsInfos;
  530. if (!$orderlog->save()){
  531. throw new \Exception(1);
  532. }
  533. if($users->openid){
  534. $goodsInfo='';
  535. foreach($input['size_id'] as $key => $val){
  536. $goods=Goodtest::find($val);
  537. if($key<=5){
  538. if(empty($goodsInfo)){
  539. $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  540. }else{
  541. $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  542. }
  543. }elseif($key==6){
  544. $goodsInfo.=',...';
  545. }
  546. }
  547. $mes['openid']=$users->openid;
  548. $mes['data']=[
  549. 'first' => '您的订单已提交成功',
  550. 'keyword1' => $goodsInfo,
  551. 'keyword2' => $order_nums,
  552. 'keyword3' => number_format($input['money'], 2),
  553. 'remark' => '点击链接进入系统,查看详情',
  554. ];
  555. event(new SubmitOrdersInfoEvent($mes));
  556. $this->nopaymessage();
  557. // if ($pay_money!=0){
  558. // if($users->openid){
  559. // $mes['openid']=$users->openid;
  560. // $mes['data']=[
  561. // 'first' => '您的订单:'.$order->order_num.'已扣款成功',
  562. // 'keyword1' => '-'.number_format($pay_money, 2),
  563. // 'keyword2' => number_format($users->money, 2),
  564. // 'keyword3' => date("Y-m-d H:i"),
  565. // 'keyword4' => '提交订单自动支付',
  566. // 'remark' => '点击链接进入系统,查看详情',
  567. // ];
  568. // event(new OrderPayEvent($mes));
  569. // }
  570. // }
  571. }
  572. }
  573. $gifts=Gift::where('activity_id',$active->id)->get();
  574. if ($gifts){
  575. $total=$hard+$simple*2;
  576. foreach ($gifts as $k=>$v){
  577. if ($total>=$v->limit_num){
  578. $num=floor($total/$v->num);
  579. }else{
  580. $num=0;
  581. }
  582. $ordergift=OrderGift::where('order_id',$order_ids)->where('gift_id',$v->id)->first();
  583. if ($ordergift){
  584. $ordergift->activity_id=$active->id;
  585. $ordergift->gift_id=$v->id;
  586. $ordergift->num=$num;
  587. $ordergift->order_id=$order_ids;
  588. if (!$ordergift->save()){
  589. throw new \Exception('1');
  590. }
  591. }else{
  592. $ordergifts=new OrderGift();
  593. $ordergifts->activity_id=$active->id;
  594. $ordergifts->gift_id=$v->id;
  595. $ordergifts->num=$num;
  596. $ordergifts->order_id=$order_ids;
  597. if (!$ordergifts->save()){
  598. throw new \Exception('1');
  599. }
  600. }
  601. }
  602. }
  603. }else{
  604. $order=new Ordertest();
  605. $order->user_id=$user->id;
  606. $order->store_id=$store_id;
  607. $order->order_num=$this->order_num();
  608. $order->total=$input['total'];
  609. $order->type=$input['type'];
  610. $order->money=$input['money'];
  611. $order->no_pay_money=$no_pay_money;
  612. $order->pay_money=$pay_money;
  613. $order->pay_status=0;
  614. $order->address_id=$input['address_id'];
  615. $order->good_user_id=$input['belong_id'];
  616. $order->relation=json_encode($this->GetRelation($input['belong_id']));
  617. $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num']));
  618. if (!empty($input['remark'])){
  619. $order->remark=$input['remark'];
  620. }
  621. if (!$order->save()){
  622. Log::error('{-----订单保存出错-----}'.$user->id);
  623. throw new \Exception('订单保存出错');
  624. }
  625. // $users->money=$money;
  626. // if (!$users->save()){
  627. // throw new \Exception('1');
  628. // }
  629. // if ($pay_money!=0){
  630. // $user_pay=new UserPay();
  631. // $user_pay->user_id=$users->id;
  632. // $user_pay->pay_money=$pay_money;
  633. // $user_pay->type=1;
  634. // $user_pay->op_name='系统自动支付';
  635. // $user_pay->order_num=$order->order_num;
  636. // $user_pay->pay_num=$this->pay_num();
  637. // $user_pay->user_money=$users->money;
  638. // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付';
  639. // if (!$user_pay->save()){
  640. // Log::error('3333333');
  641. // throw new \Exception('3');
  642. // }
  643. // }
  644. if (!empty($input['remark'])){
  645. $orderremark = new OrderRemark();
  646. $orderremark->order_id = $order->id;
  647. $orderremark->name=Auth::user()->nickname;
  648. $orderremark->level = $user->level;
  649. $orderremark->type = 0;
  650. $orderremark->remark = $input['remark'];
  651. if (!$orderremark->save()) {
  652. throw new \Exception('2');
  653. }
  654. }
  655. foreach ($input['size_id'] as $k=>$v){
  656. $data=Goodtest::find($v);
  657. $order_detail=new OrderDetail();
  658. $order_detail->order_id=$order->id;
  659. $order_detail->goods_id=$data->id;
  660. $order_detail->num=$input['num'][$k];
  661. $order_detail->money=$input['num'][$k]*$data->money;
  662. $order_detail->goods_name=$data->name;
  663. $order_detail->goods_size=$data->size;
  664. $order_detail->goods_price=$data->money;
  665. $order_detail->goods_unit=$data->unit;
  666. if (!$order_detail->save()){
  667. Log::error('{-----订单详情保存出错-----}'.$user->id);
  668. throw new \Exception('订单详情出错');
  669. }
  670. $data->sold_num=$data->sold_num+$input['num'][$k];
  671. $data->storage=Cache::get('dwbs_good_num'.$data->id);
  672. if (!$data->save()){
  673. throw new \Exception('3');
  674. }
  675. }
  676. $order_ids=$order->id;
  677. $order_nums=$order->order_num;//记录下订单的ID
  678. $goodsInfo='';
  679. $goodsInfos='';
  680. foreach($input['size_id'] as $key => $val){
  681. $goods=Goodtest::find($val);
  682. if(empty($goodsInfos)){
  683. $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  684. }else{
  685. $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  686. }
  687. if($key<=5){
  688. if(empty($goodsInfo)){
  689. $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  690. }else{
  691. $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
  692. }
  693. }elseif($key==6){
  694. $goodsInfo.=',...';
  695. }
  696. }
  697. $orderlog=new Orderlog();
  698. $orderlog->order_id = $order->id;
  699. $orderlog->user_id = $order->user_id;
  700. $orderlog->log_name = $user->nickname;
  701. $orderlog->log_title = '初始订单数据';
  702. $orderlog->log_text = $goodsInfos;
  703. if (!$orderlog->save()){
  704. throw new \Exception(1);
  705. }
  706. if($users->openid){
  707. $mes['openid']=$users->openid;
  708. $mes['data']=[
  709. 'first' => '您的订单已提交成功',
  710. 'keyword1' => $goodsInfo,
  711. 'keyword2' => $order_nums,
  712. 'keyword3' => number_format($input['money'], 2),
  713. 'remark' => '点击链接进入系统,查看详情',
  714. ];
  715. event(new SubmitOrdersInfoEvent($mes));
  716. // if ($pay_money!=0){
  717. // if($users->openid){
  718. // $mes['openid']=$users->openid;
  719. // $mes['data']=[
  720. // 'first' => '您的订单:'.$order->order_num.'已扣款成功',
  721. // 'keyword1' => '-'.number_format($pay_money, 2),
  722. // 'keyword2' => number_format($users->money, 2),
  723. // 'keyword3' => date("Y-m-d H:i"),
  724. // 'keyword4' => '提交订单自动支付',
  725. // 'remark' => '点击链接进入系统,查看详情',
  726. // ];
  727. // event(new OrderPayEvent($mes));
  728. // }
  729. // }
  730. }
  731. }
  732. DB::commit();
  733. return $this->success(['order_id'=>$order_ids,'order_num'=>$order_nums]);
  734. }catch (\Exception $exception){
  735. Log::error('------------提交订单出错,出错信息为------:'.$exception);
  736. DB::rollBack();
  737. return $this->error('40011','','订单出错');
  738. }
  739. }
  740. /**订单结算通知**/
  741. public function nopaymessage(){
  742. $id=Auth::user()->id;
  743. $user=User::find($id);
  744. $activity=Activity::where('is_ing',1)->first();
  745. $orders=Ordertest::where('user_id',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('is_deleted',0)->get();
  746. $money=0;
  747. $pay_money=0;
  748. $no_pay_money=0;
  749. $wait_back_money=0;
  750. foreach ($orders as $k=>$v){
  751. $money+=$v->money;
  752. $pay_money+=$v->pay_money;
  753. $no_pay_money+=$v->no_pay_money;
  754. $wait_back_money+=$v->wait_back_money;
  755. }
  756. try {
  757. if($user->openid){
  758. if ($wait_back_money==0){
  759. $remark='点击链接进入系统,查看详情';
  760. }else{
  761. $remark='其中包含需要退款的金额共'.$wait_back_money.'元。点击链接进入系统,查看详情';
  762. }
  763. $mes['openid']=$user->openid;
  764. $mes['data']=[
  765. 'first' => '您在'.$activity->title.'活动中下的订单支付情况如下:',
  766. 'keyword1' => number_format($money,2),
  767. 'keyword2' => number_format($pay_money,2),
  768. 'keyword3' => number_format($no_pay_money,2),
  769. 'keyword4' => date("Y-m-d H:i"),
  770. 'remark' => $remark,
  771. ];
  772. event(new OrderPayInfoEvent($mes));
  773. }
  774. }catch (\Exception $exception){
  775. }
  776. }
  777. /*生成订单编号*/
  778. public function order_num(){
  779. $user=Auth::user();
  780. $number='DWBS-'.date('Ymd',time()).mb_substr(time(),7,10).'-'.rand(1111,9999);
  781. $num=Ordertest::where('order_num',$number)->count();
  782. if ($num>0){
  783. $number=$this->order_num();
  784. return $number;
  785. }
  786. return $number;
  787. }
  788. /*生成订单编号*/
  789. public function order_nums(){
  790. $user=Auth::user();
  791. $number='DWBS-'.date('Ymd',time()).mb_substr(time(),7,10).'-'.rand(1111,9999);
  792. $num=Ordertest::where('order_num',$number)->count();
  793. if ($num>0){
  794. $number=$this->order_num();
  795. return $number;
  796. }
  797. return $number;
  798. }
  799. /*
  800. * 订单详情
  801. * */
  802. public function order_detail(Request $request){
  803. $rules=[
  804. 'order_num'=>'required',
  805. ];
  806. $message=[
  807. 'order_num.message'=>'订单id是必填项',
  808. ];
  809. $vali=Validator::make($request->all(),$rules,$message);
  810. if ($vali->fails()){
  811. return $this->error('40012','',$vali->errors()->first());
  812. }
  813. // DB::enableQueryLog();
  814. $order=Ordertest::where('order_num',$request->order_num)->with(['belong_user'])->first();
  815. $detail=OrderDetail::where('order_id',$order->id)->groupBy('goods_name')->get();
  816. foreach ($detail as $k=>$v){
  817. $order_detail=OrderDetail::where('order_id',$v->order_id)->where('goods_name',$v->goods_name)->with(['get_good'])->get();
  818. $size=[];
  819. $size_id=[];
  820. $num=[];
  821. foreach ($order_detail as $ke=>$va){
  822. $size[$ke]=$va->get_good->size;
  823. $size_id[$ke]=$va->goods_id;
  824. $num[$ke]=$va->num;
  825. }
  826. $re[$k]['name']=$v->goods_name;
  827. $re[$k]['size']=$size;
  828. $re[$k]['size_id']=$size_id;
  829. $re[$k]['attr_id']=$v->get_good->attr_id;
  830. $re[$k]['num']=$num;
  831. $re[$k]['money']=$v->money/$v->num;
  832. $re[$k]['unit']=$v->get_good->unit;
  833. $re[$k]['main_img']=$v->get_good->main_img;
  834. // $re[$k]['remark']=$v->remark;
  835. $re[$k]['banner_img']=$v->get_good->banner_img;
  836. $re[$k]['sec_attr']=$v->get_good->sec_attr;
  837. }
  838. $activity=Activity::where('is_ing',1)->first();
  839. $time=Carbon::now();
  840. $bigstatus=false;
  841. if ($activity){
  842. if ($time<=$activity->end_time && $time>=$activity->start_time){
  843. $bigstatus=true;
  844. }
  845. }
  846. $all_data=[
  847. // 'order_num'=>$order->ordersn,
  848. // 'time'=>strtotime($order->created_at)*1000,
  849. // 'status'=>$order->status,
  850. 'address'=>[
  851. 'city'=>$order->address->city,
  852. 'provice'=>$order->address->province,
  853. 'area'=>$order->address->town,
  854. "address"=>$order->address->address,
  855. "con_name"=>$order->address->username,
  856. "con_mobile"=>$order->address->mobile,
  857. ],
  858. 'remark'=>$order->remark,
  859. 'track_number'=>$order->track_number==null?'':$order->track_number,
  860. 'track_time'=>$order->track_time==null?'':$order->track_time,
  861. 'track_remark'=>$order->track_remark==null?'':$order->track_remark,
  862. 'track_company'=>$order->track_company==null?'':$order->track_company,
  863. 'track_status'=>$order->track_status,
  864. 'belong_user'=>$order->belong_user,
  865. 'bigstatus'=>$bigstatus,
  866. 'biggift'=>DB::table('big_gift_apply')->where('order_id',$order->id)->where('is_deleted',0)->first(),
  867. 'list'=>$re
  868. ];
  869. return $this->success($all_data);
  870. }
  871. /*
  872. *订单日志
  873. */
  874. public function get_log(Request $request){
  875. $rules=[
  876. 'order_num'=>'required',
  877. ];
  878. $message=[
  879. 'order_num.required'=>'订单id是必填项',
  880. ];
  881. $vali=Validator::make($request->all(),$rules,$message);
  882. if ($vali->fails()){
  883. return $this->error('40012','',$vali->errors()->first());
  884. }
  885. $order_id=Ordertest::where('order_num',$request->order_num)->value('id');
  886. $data=Orderlog::where('order_id',$order_id)->get();
  887. return $this->success_list($data);
  888. }
  889. /*
  890. * 支付订单
  891. * */
  892. public function pay_order(Request $request){
  893. // Log::error(json_encode($request->all()));
  894. return $this->error(40014,'','活动期间不能支付,活动后统一支付');
  895. $rules=[
  896. 'order_id'=>'required',
  897. ];
  898. $message=[
  899. 'order_id.required'=>'订单id是必填项',
  900. ];
  901. $vali=Validator::make($request->all(),$rules,$message);
  902. if ($vali->fails()){
  903. return $this->error('40012','',$vali->errors()->first());
  904. }
  905. $users=Auth::user();
  906. $order=Ordertest::find($request->order_id);
  907. if ($order->pay_status!=0){
  908. return $this->error(40014,'','订单已经支付,请勿重复支付');
  909. }
  910. $user=User::find($users->id);
  911. if ($user->money<$order->money){
  912. return $this->error(40015,'','所剩余额不足');
  913. }
  914. DB::beginTransaction();
  915. try{
  916. $order->pay_status=2;
  917. $order->pay_money=$order->money;
  918. $order->no_pay_money=0;
  919. if (!$order->save()){
  920. Log::error('11111');
  921. throw new \Exception('1');
  922. }
  923. $user->money=$user->money-$order->money;
  924. if (!$user->save()){
  925. Log::error('222222');
  926. throw new \Exception('2');
  927. }
  928. $user_pay=new UserPay();
  929. $user_pay->user_id=$user->id;
  930. $user_pay->pay_money=$order->money;
  931. $user_pay->type=1;
  932. $user_pay->op_name=$user->nickname;
  933. $user_pay->order_num=$order->order_num;
  934. $user_pay->pay_num=$this->pay_num();
  935. $user_pay->user_money=$user->money;
  936. $user_pay->remark='订单编号为'.$order->order_num;
  937. if (!$user_pay->save()){
  938. Log::error('3333333');
  939. throw new \Exception('3');
  940. }
  941. if($users->openid){
  942. $mes['openid']=$users->openid;
  943. $mes['data']=[
  944. 'first' => '您的订单:'.$order->order_num.'已扣款成功',
  945. 'keyword1' => '-'.number_format($order->money, 2),
  946. 'keyword2' => number_format($user->money, 2),
  947. 'keyword3' => date("Y-m-d H:i"),
  948. 'keyword4' => '用户支付',
  949. 'remark' => '点击链接进入系统,查看详情',
  950. ];
  951. event(new OrderPayEvent($mes));
  952. }
  953. DB::commit();
  954. return $this->success([]);
  955. }catch (\Exception $exception){
  956. DB::rollBack();
  957. Log::error('支付订单出错'.$exception);
  958. return $this->error(40016,'','支付失败,请重试');
  959. }
  960. }
  961. /*
  962. * 订单列表
  963. * */
  964. public function order_list(Request $request){
  965. $rules=[
  966. 'status'=>'required',
  967. ];
  968. $message=[
  969. 'status.required'=>'订单id是必填项',
  970. ];
  971. $vali=Validator::make($request->all(),$rules,$message);
  972. if ($vali->fails()){
  973. return $this->error(40017,'',$vali->errors()->first());
  974. }
  975. $user=Auth::user();
  976. $user=User::find($user->id);
  977. $type=$request->status;
  978. if ($type==0){
  979. $order_all=Ordertest::where('user_id','=',$user->id)
  980. ->with(['order_details'])->orderByDesc('created_at')->paginate(15);
  981. }elseif($type==1){
  982. $order_all=Ordertest::where('user_id','=',$user->id)
  983. ->where('pay_status','=',0)->orderByDesc('created_at')->where('is_deleted',0)->paginate(15);
  984. }elseif ($type==2){
  985. $order_all=Ordertest::where('user_id','=',$user->id)
  986. ->where(function ($q){
  987. $q->where('pay_status','=',2)->whereIn('status',[0,1,2])->orwhere('apply_status',1);
  988. })->orderByDesc('created_at')->where('is_deleted',0)->paginate(15);
  989. }elseif ($type==3){
  990. $order_all=Ordertest::where('user_id','=',$user->id)
  991. ->where('pay_status','=',2)->where('is_deleted',0)->where('status',3)
  992. ->orderByDesc('created_at')->paginate(15);
  993. }elseif ($type==4){
  994. $order_all=Ordertest::where('user_id','=',$user->id)
  995. ->where('pay_status','=',2)->where('is_deleted',0)->where('status',4)
  996. ->orderByDesc('created_at')->paginate(15);
  997. }
  998. $res=[];
  999. foreach ($order_all as $k=>$v){
  1000. // $detail=OrderDetail::where('order_id',$v->id)->with(['get_good'])->groupBy('goods_name')->get();
  1001. $re=[];
  1002. // $d=[];
  1003. foreach ($v->order_details as $key=>$value){
  1004. // $order_detail=OrderDetail::where('id',$value->id)->where('goods_name',$value->goods_name)->with(['get_good'])->get();
  1005. // $size=[];
  1006. // foreach ($order_detail as $ke=>$va){
  1007. // $size[$ke]=$va->get_good->size;
  1008. // $size_id[$ke]=$va->goods_id;
  1009. // }
  1010. // $re[$key]['name']=$value->goods_name;
  1011. // $re[$key]['size']=$size;
  1012. // $re[$key]['size_id']=$size_id;
  1013. // $re[$key]['num']=$value->num;
  1014. // $re[$key]['money']=$value->money/$value->num;
  1015. // $re[$key]['unit']=$value->get_good->unit;
  1016. $re[$key]['main_img']=$value->main_img;
  1017. // $re[$key]['banner_img']=$value->get_good->banner_img;
  1018. // $re[$key]['sec_attr']=$value->get_good->sec_attr;
  1019. }
  1020. $res[$k]['id']=$v->id;
  1021. $res[$k]['order_id']=$v->id;
  1022. $res[$k]['order']=$re;
  1023. $res[$k]['type']=$v->type;
  1024. $res[$k]['order_type']=$v->order_type;
  1025. $res[$k]['total']=$v->total;
  1026. $res[$k]['is_deleted']=$v->is_deleted==0?false:true;
  1027. $res[$k]['pay_status']=$v->pay_status==0?false:true;
  1028. $res[$k]['status']=$v->status;
  1029. $res[$k]['order_num']=$v->order_num;
  1030. $res[$k]['money']=$v->money;
  1031. $res[$k]['is_merge']=$v->is_merge;
  1032. $res[$k]['order_type']=$v->order_type;
  1033. $res[$k]['track_status']=$v->track_status;
  1034. $res[$k]['apply_status']=$v->apply_status;
  1035. $res[$k]['destroy_cause']=$v->destroy_cause;
  1036. $res[$k]['destroy_status']=$v->destroy_status;
  1037. $res[$k]['reject_cause']=$v->reject_cause;
  1038. if ($v->address){
  1039. if ($v->get_address->isEmpty()){
  1040. $res[$k]['address']=$v->address;
  1041. $res[$k]['address']['level']=null;
  1042. $res[$k]['address']['nickname']=$v->address->username;
  1043. }else{
  1044. $address=$v->get_address[0];
  1045. $res[$k]['address']=$v->address;
  1046. $res[$k]['address']['level']=$address->level;
  1047. $res[$k]['address']['nickname']=$address->nickname==null?$address->username:$address->nickname;
  1048. }
  1049. }
  1050. $res[$k]['created_at']=$v->created_at->toDateTimeString();
  1051. if ($v->is_deleted){
  1052. $res[$k]['deleted_time']=$v->updated_at->toDateTimeString();
  1053. }
  1054. if ($v->status==3||$v->status==4){
  1055. if (!empty($v->track_number)){
  1056. $res[$k]['express']='https://m.kuaidi100.com/app/query/?com='.$v->track_company.'&nu='.$v->track_number.'&coname';
  1057. }
  1058. }
  1059. }
  1060. // dd(DB::getQueryLog());
  1061. return $this->success_list($res,'',$order_all->total());
  1062. }
  1063. /*
  1064. *订单作废-----订单修改
  1065. */
  1066. public function destory(Request $request){
  1067. $rules=[
  1068. 'order_num'=>'required',
  1069. 'destroy_cause'=>'required',
  1070. ];
  1071. $message=[
  1072. 'order_num.required'=>'订单id是必填项',
  1073. 'destroy_cause.required'=>'作废原因是必填项',
  1074. ];
  1075. $vali=Validator::make($request->all(),$rules,$message);
  1076. if ($vali->fails()){
  1077. return $this->error(40016,'',$vali->errors()->first());
  1078. }
  1079. $order=Ordertest::where('order_num',$request->order_num)->lockForUpdate()->first();
  1080. if (!$order){
  1081. return $this->error(300,'','查无此订单,请重试');
  1082. }
  1083. if ($order->is_deleted==1){
  1084. return $this->error(400214,'','该订单已作废,请刷新订单列表');
  1085. }
  1086. DB::beginTransaction();
  1087. try{
  1088. $order->is_deleted=1;
  1089. $order->destroy_cause=$request->input('destroy_cause','');
  1090. $order->wait_back_money=0;
  1091. $order->pay_status=0;
  1092. if (!$order->save()){
  1093. throw new \Exception('1');
  1094. }
  1095. // if ($order->pay_status!=0){
  1096. // return $this->error(40013,'','该订单已支付,请联系客服修改');
  1097. // }
  1098. if ($order->pay_money!=0){
  1099. $user=User::where('id',$order->user_id)->lockForUpdate()->first();
  1100. $user->money=$user->money+$order->pay_money;
  1101. if (!$user->save()){
  1102. throw new \Exception('2');
  1103. }
  1104. $user_logs=UserPay::where('user_id',$order->user_id)->lockForUpdate()->orderByDesc('id')->limit(1)->first();
  1105. $user_log=new UserPay();
  1106. $user_log->user_id=$order->user_id;
  1107. $user_log->pay_money=$order->pay_money;
  1108. $user_log->op_name=$user->nickname;
  1109. $user_log->order_num=$order->order_num;
  1110. $user_log->pay_num=$this->pay_num();
  1111. $user_log->type=2;
  1112. $user_log->remark='订单作废退回';
  1113. $user_log->user_money=$user_logs->user_money+$order->pay_money;
  1114. if (!$user_log->save()){
  1115. throw new \Exception('3');
  1116. }
  1117. }
  1118. $orderlog = new Orderlog();
  1119. $orderlog->order_id = $order->id;
  1120. $orderlog->user_id = $order->user_id;
  1121. $orderlog->log_name = '用户本人';
  1122. $orderlog->log_title = '作废订单';
  1123. $orderlog->log_text = '用户本人自动作废订单';
  1124. if (!$orderlog->save()){
  1125. throw new \Exception('3');
  1126. }
  1127. $orderdetail=OrderDetail::where('order_id',$order->id)->get();
  1128. foreach ($orderdetail as $k=>$v){
  1129. $good=Goodtest::find($v->goods_id);
  1130. $good->storage=$good->storage+$v->num;
  1131. $good->sold_num=$good->sold_num-$v->num;
  1132. Cache::increment('dwbs_good_num'.$v->goods_id,$v->num);
  1133. if (!$good->save()){
  1134. throw new \Exception('2');
  1135. }
  1136. }
  1137. // $orders=Ordertest::where('order_num',$request->order_num)->first();
  1138. // if ($orders->pay_money>0){
  1139. // return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废');
  1140. // }
  1141. // if ($orders->pay_status!=0){
  1142. // return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废');
  1143. // }
  1144. DB::commit();
  1145. try {
  1146. $user=User::find($order->user_id);
  1147. if($user->openid){
  1148. $mes['openid']=$user->openid;
  1149. $mes['data']=[
  1150. 'first' => '您的订单已主动作废',
  1151. 'keyword1' => $order->order_num,
  1152. 'keyword2' => $request->destroy_cause,
  1153. 'remark' => '点击链接进入系统,查看详情',
  1154. ];
  1155. event(new DestoryOrder($mes));
  1156. }
  1157. }catch (\Exception $exception){
  1158. }
  1159. return $this->success([]);
  1160. }catch (\Exception $exception){
  1161. DB::rollBack();
  1162. return $this->error('40018','','订单作废失败,请重试');
  1163. }
  1164. }
  1165. public function pay_num(){
  1166. $num=date('Ymd',time()).'100000'.str_pad(Auth::user()->id,6,0,STR_PAD_LEFT).rand(11111,99999);
  1167. $count=UserPay::where('pay_num',$num)->count();
  1168. if ($count>0){
  1169. $num=$this->pay_num();
  1170. return $num;
  1171. }
  1172. return $num;
  1173. }
  1174. /*确认收货
  1175. * **/
  1176. public function sure_order(Request $request){
  1177. $rules=[
  1178. 'order_num'=>'required',
  1179. ];
  1180. $message=[
  1181. 'order_num.required'=>'订单id是必填项',
  1182. ];
  1183. $vali=Validator::make($request->all(),$rules,$message);
  1184. if ($vali->fails()){
  1185. return $this->error(40017,'',$vali->errors()->first());
  1186. }
  1187. $order=Ordertest::where('order_num',$request->order_num)->first();
  1188. $order->status=4;
  1189. $order->save();
  1190. return $this->success([]);
  1191. }
  1192. /*
  1193. * 订单统计
  1194. * */
  1195. public function order_data(Request $request){
  1196. $user=Auth::user();
  1197. // $user=User::where('mobile',13509768818)->first();
  1198. $activity=Activity::where('is_ing',1)->first();
  1199. if (Carbon::now()->addDays(-3)>$activity->end_time){
  1200. $data=[
  1201. 'hard'=>0,
  1202. 'simple'=>0,
  1203. 'old'=>0,
  1204. 'newold'=>0,
  1205. 'youth'=>0,
  1206. 'hard_money'=>0,
  1207. 'simple_money'=>0,
  1208. 'old_money'=>0,
  1209. 'newold_money'=>0,
  1210. 'youth_money'=>0,
  1211. 'hard_all'=>0,
  1212. 'simple_all'=>0,
  1213. 'old_all'=>0,
  1214. 'newold_all'=>0,
  1215. 'youth_all'=>0,
  1216. 'money'=>0,
  1217. 'pay_money'=>0,
  1218. 'no_pay_money'=>0,
  1219. ];
  1220. return $this->success($data);
  1221. }
  1222. DB::enableQueryLog();
  1223. $wherebetween=[];
  1224. $where=function ($query){
  1225. $query->where('is_deleted',0);
  1226. };
  1227. $order_all=Ordertest::where($where)->where('user_id',$user->id)->get();
  1228. $hard_all=0;
  1229. $simple_all=0;
  1230. $old_all=0;
  1231. $newold_all=0;
  1232. $youth_all=0;
  1233. $hard_good=Goodtest::where('main_attr','大卫博士精装版')->pluck('id')->toArray();
  1234. $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray();
  1235. $old_good=Goodtest::where('main_attr','大卫博士高腰版')->pluck('id')->toArray();
  1236. $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray();
  1237. $youth_good=Goodtest::where('main_attr','大卫博士青春版')->pluck('id')->toArray();
  1238. foreach ($order_all as $k=>$v) {
  1239. $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first();
  1240. foreach ($order->order_detail as $ke=>$va){
  1241. if (in_array($va->goods_id,$hard_good)){
  1242. $hard_all+=$va->num;
  1243. }elseif (in_array($va->goods_id,$simple_good)){
  1244. $simple_all+=$va->num;
  1245. }elseif (in_array($va->goods_id,$old_good)){
  1246. $old_all+=$va->num;
  1247. }elseif (in_array($va->goods_id,$newold_good)){
  1248. $newold_all+=$va->num;
  1249. }elseif (in_array($va->goods_id,$youth_good)){
  1250. $youth_all+=$va->num;
  1251. }
  1252. }
  1253. }
  1254. if ($request->has('start')){
  1255. if ($request->start){
  1256. $start=date('Y-m-d H:i:s',strtotime($request->start));
  1257. $end=date('Y-m-d H:i:s',strtotime($request->end));
  1258. $wherebetween=function ($query)use($start,$end){
  1259. $query->whereBetween('created_at',[$start,$end]);
  1260. };
  1261. }
  1262. }
  1263. $orders=Ordertest::where($where)->where('user_id',$user->id)->where($wherebetween)->get();
  1264. $hard=0;
  1265. $simple=0;
  1266. $old=0;
  1267. $newold=0;
  1268. $youth=0;
  1269. $old_money=0;
  1270. $newold_money=0;
  1271. $simple_money=0;
  1272. $hard_money=0;
  1273. $youth_money=0;
  1274. $money=0;
  1275. $pay_money=0;
  1276. $no_pay_money=0;
  1277. foreach ($orders as $k=>$v) {
  1278. $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first();
  1279. foreach ($order->order_detail as $ke=>$va){
  1280. if (in_array($va->goods_id,$hard_good)){
  1281. $hard+=$va->num;
  1282. $hard_money+=$va->money;
  1283. }elseif (in_array($va->goods_id,$simple_good)){
  1284. $simple+=$va->num;
  1285. $simple_money+=$va->money;
  1286. }elseif (in_array($va->goods_id,$old_good)){
  1287. $old+=$va->num;
  1288. $old_money+=$va->money;
  1289. }elseif (in_array($va->goods_id,$newold_good)){
  1290. $newold+=$va->num;
  1291. $newold_money+=$va->money;
  1292. }elseif (in_array($va->goods_id,$youth_good)){
  1293. $youth+=$va->num;
  1294. $youth_money+=$va->money;
  1295. }
  1296. }
  1297. $money+=$v->money;
  1298. $pay_money+=$v->pay_money;
  1299. $no_pay_money+=$v->no_pay_money;
  1300. }
  1301. $data=[
  1302. 'hard'=>$hard,
  1303. 'simple'=>$simple,
  1304. 'old'=>$old,
  1305. 'newold'=>$newold,
  1306. 'youth'=>$youth,
  1307. 'hard_money'=>$hard_money,
  1308. 'simple_money'=>$simple_money,
  1309. 'old_money'=>$old_money,
  1310. 'newold_money'=>$newold_money,
  1311. 'youth_money'=>$youth_money,
  1312. 'hard_all'=>$hard_all,
  1313. 'simple_all'=>$simple_all,
  1314. 'old_all'=>$old_all,
  1315. 'newold_all'=>$newold_all,
  1316. 'youth_all'=>$youth_all,
  1317. 'money'=>$money,
  1318. 'pay_money'=>$pay_money,
  1319. 'no_pay_money'=>$no_pay_money,
  1320. ];
  1321. return $this->success($data);
  1322. }
  1323. public function order_rank(Request $request){
  1324. $user_id=Auth::user()->id;
  1325. // $user=User::where('mobile',13509768818)->first();
  1326. // $user_id=$user->id;
  1327. $actity=Activity::where('is_ing',1)->first();
  1328. if (Carbon::now()->addDays(-3)>$actity->end_time){
  1329. return $this->success(['all'=>[],'list'=>[], 'size'=>15, 'total'=>0]);
  1330. }
  1331. $wherebetween=[];
  1332. if ($request->has('start')){
  1333. if ($request->start){
  1334. $start=date('Y-m-d H:i:s',strtotime($request->start));
  1335. $end=date('Y-m-d H:i:s',strtotime($request->end));
  1336. $wherebetween=function ($query)use($start,$end){
  1337. $query->whereBetween('order_test.created_at',[$start,$end]);
  1338. };
  1339. }
  1340. }
  1341. $re=Ordertest::where('is_deleted',0)->with(['address','get_address'])->where('user_id',$user_id)->where($wherebetween)->get()->groupBy('address.mobile')->toArray();
  1342. $hard_good=Goodtest::where('main_attr','like','%精装%')->pluck('id')->toArray();
  1343. $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray();
  1344. $old_good=Goodtest::where('main_attr','大卫博士高腰版')->pluck('id')->toArray();
  1345. $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray();
  1346. $youth_good=Goodtest::where('main_attr','大卫博士青春版')->pluck('id')->toArray();
  1347. $i=0;
  1348. $res=[];
  1349. foreach ($re as $k=>$v){
  1350. $ids=Address::where('mobile',$v[0]['address']['mobile'])->pluck('id');
  1351. $order_all=Ordertest::where('is_deleted',0)->where('user_id',$user_id)->where($wherebetween)->with(['order_detail'])->whereIn('address_id',$ids)->get();
  1352. $hard_all=0;
  1353. $simple_all=0;
  1354. $old_all=0;
  1355. $newold_all=0;
  1356. $youth_all=0;
  1357. foreach ($order_all as $key=>$value){
  1358. foreach ($value->order_detail as $ke=>$va){
  1359. if (in_array($va->goods_id,$hard_good)){
  1360. $hard_all+=$va->num;
  1361. }elseif (in_array($va->goods_id,$simple_good)){
  1362. $simple_all+=$va->num;
  1363. }elseif (in_array($va->goods_id,$old_good)){
  1364. $old_all+=$va->num;
  1365. }elseif (in_array($va->goods_id,$newold_good)){
  1366. $newold_all+=$va->num;
  1367. }elseif (in_array($va->goods_id,$youth_good)){
  1368. $youth_all+=$va->num;
  1369. }
  1370. }
  1371. }
  1372. $res[$i]['username']=$v[0]['address']['username'];
  1373. $res[$i]['mobile']=$v[0]['address']['mobile'];
  1374. $res[$i]['hard']=$hard_all;
  1375. $res[$i]['simple']=$simple_all;
  1376. $res[$i]['old']=$old_all;
  1377. $res[$i]['newold']=$newold_all;
  1378. $res[$i]['youth']=$youth_all;
  1379. if (empty($v[0]['get_address'])){
  1380. $res[$i]['address']['nickname']=null;
  1381. $res[$i]['address']['level']=null;
  1382. }else{
  1383. $res[$i]['address']['nickname']=$v[0]['get_address'][0]['nickname'];
  1384. $res[$i]['address']['level']=$v[0]['get_address'][0]['level'];
  1385. }
  1386. $res[$i]['all']=$old_all+$simple_all+$hard_all+$newold_all+$youth_all;
  1387. $i++;
  1388. }
  1389. return $this->success_list($res);
  1390. }
  1391. /**-----T恤统计------**/
  1392. public function type_count(){
  1393. $user=Auth::user();
  1394. $data=DB::table('crown_count')->where('crown_mobile','=',$user->mobile)->orderBy('id')->get();
  1395. $re=[];
  1396. foreach ($data as $k=>$v){
  1397. $re[$k]['nickname']=$v->nickname;
  1398. $re[$k]['id']=$v->id;
  1399. $re[$k]['mobile']=$v->mobile;
  1400. $re[$k]['province']=$v->province;
  1401. $re[$k]['city']=$v->city;
  1402. $re[$k]['area']=$v->area;
  1403. $re[$k]['address']=$v->address;
  1404. $re[$k]['total']=$v->total;
  1405. $re[$k]['type_l']=$v->type_l;
  1406. $re[$k]['type_xl']=$v->type_xl;
  1407. $re[$k]['type_3xl']=$v->type_3xl;
  1408. }
  1409. return $this->success($re);
  1410. }
  1411. /**统计提交**/
  1412. public function type_submit(Request $request){
  1413. $time='2020-05-16 18:00:00';
  1414. $now=Carbon::now()->timestamp;
  1415. if ($now>strtotime($time)){
  1416. return $this->error(40013,'','提交时间已过,请联系客服(政委)');
  1417. }
  1418. $rule=[
  1419. 'id'=>'required',
  1420. 'type_l'=>'required',
  1421. 'type_xl'=>'required',
  1422. 'type_3xl'=>'required',
  1423. ];
  1424. $message=[
  1425. 'id.required'=>'id必填项',
  1426. 'type_l.reuqired'=>'type_l必填项',
  1427. 'type_xl.reuqired'=>'type_xl必填项',
  1428. 'type_3xl.reuqired'=>'type_3xl必填项',
  1429. ];
  1430. $input=$request->all();
  1431. $vali=Validator::make($request->all(),$rule,$message);
  1432. if ($vali->fails()){
  1433. return $this->error(40013,'',$vali->errors()->first());
  1434. }
  1435. DB::beginTransaction();
  1436. try{
  1437. foreach ($input['id'] as $k=>$v){
  1438. $user=CrownCount::find($v);
  1439. $num=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k];
  1440. if ($num>$user->total){
  1441. return $this->error(40013,'',$user->nickname.'的所填礼品总量超过规定数量,请重新选择');
  1442. }
  1443. $user->type_l=$input['type_l'][$k];
  1444. $user->type_xl=$input['type_xl'][$k];
  1445. $user->type_3xl=$input['type_3xl'][$k];
  1446. $user->exchange=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k];
  1447. if (!$user->save()){
  1448. throw new \Exception('1');
  1449. }
  1450. }
  1451. DB::commit();
  1452. return $this->success([]);
  1453. }catch (\Exception $exception){
  1454. Log::error('{-------统计出错------}'.$exception);
  1455. DB::rollBack();
  1456. return $this->error(40013,'','提交失败,请重新提交');
  1457. }
  1458. }
  1459. /**查看已获得赠品**/
  1460. public function get_data(Request $request){
  1461. $data=Ordertest::where('order_num',$request->order_num)->with(['get_gift_infos'])->first();
  1462. $i=0;
  1463. $re=[];
  1464. if ($data->get_gift){
  1465. foreach ($data->get_gift_infos as $ke=>$va){
  1466. $re[$i]['name']=$va->name;
  1467. $re[$i]['img']=$va->img;
  1468. $re[$i]['num']=$va->pivot->num;
  1469. $i++;
  1470. }
  1471. }
  1472. return $this->success_list($re);
  1473. }
  1474. /**获取赠品信息**/
  1475. public function get_gift(Request $request){
  1476. $now=Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString();
  1477. $active=Activity::where('start_time','<=',$now)
  1478. ->where('end_time','>=',$now)->where('is_ing',1)->first();
  1479. if ($active){
  1480. $gifts=Gift::where('activity_id',$active->id)->get();
  1481. if ($gifts){
  1482. return $this->success_list($gifts);
  1483. }else{
  1484. return $this->error(600,'','此次活动没有赠品');
  1485. }
  1486. }else{
  1487. return $this->error(600,'','活动时间已过');
  1488. }
  1489. }
  1490. /***获取订单的物流信息**/
  1491. public function get_order_expresses(Request $request){
  1492. $rule=[
  1493. 'order_num'=>'required'
  1494. ];
  1495. $message=[
  1496. 'order_num.required'=>'订单编号没有填写'
  1497. ];
  1498. $va=Validator::make($request->all(),$rule,$message);
  1499. if ($va->fails()){
  1500. return $this->error(40012,'',$va->errors()->first());
  1501. }
  1502. $data=Ordertest::where('order_num',$request->order_num)->with(['get_express','address'])->first();
  1503. $re=[];
  1504. if ($data->get_express){
  1505. foreach ($data->get_express as $k=>$v){
  1506. $re[$k]['id']=$v->id;
  1507. $re[$k]['order_id']=$v->order_id;
  1508. $re[$k]['express_com']=$v->express_com;
  1509. $re[$k]['express_number']=$v->express_number;
  1510. $re[$k]['status']=$v->status;
  1511. $re[$k]['note']=$v->note;
  1512. if ($v->created_at){
  1513. $re[$k]['created_at']=$v->created_at->toDateTimeString();
  1514. }else{
  1515. $re[$k]['created_at']=$v->created_at;
  1516. }
  1517. $re[$k]['city']=$data->address->city;
  1518. $re[$k]['area']=$data->address->town;
  1519. }
  1520. }
  1521. return $this->success($re);
  1522. }
  1523. /**获取物流轨迹**/
  1524. public function get_express(Request $request,ExpressHandler $expressHandler){
  1525. $express=Express::find($request->id);
  1526. if (!$express){
  1527. return $this->error(40011,'','该物流订单不存在');
  1528. }
  1529. if ($express->status==1){
  1530. return $this->success(json_decode($express->data));
  1531. }else{
  1532. $re=$expressHandler->search($express->express_number,$express->express_code);
  1533. $re=(array)$re;
  1534. if ($re['State']==3){
  1535. DB::beginTransaction();
  1536. try{
  1537. $express->data=json_encode($re);
  1538. $express->status=1;
  1539. $express->save();
  1540. DB::commit();
  1541. }catch (\Exception $exception){
  1542. Log::error('-------物流信息保存出错--------'.$exception);
  1543. DB::rollBack();
  1544. }
  1545. }
  1546. return $this->success($re);
  1547. }
  1548. }
  1549. public function get_activity(){
  1550. // return $this->success(['start_time'=>1675840487000,'end_time'=>1675840497000]);
  1551. $re=Activity::where('is_ing',1)->first();
  1552. $data=[
  1553. 'start_time'=>strtotime($re->start_time)*1000,
  1554. 'end_time'=>strtotime($re->end_time)*1000,
  1555. ];
  1556. return $this->success($data);
  1557. }
  1558. public function get_activity_list(Request $request){
  1559. if ($request->has('page_index')){
  1560. $count=Activity::where('disabled',0)->count();
  1561. $data=Activity::where('disabled',0)->limit(1)->OrderByDesc('id')->skip(($request->page_index-1)*$request->page_size)->take($request->page_size)->get();
  1562. return $this->success_list($data,'',$count);
  1563. }else{
  1564. $re=Activity::where('disabled',0)->limit(1)->orderByDesc('id')->get();
  1565. $data=[];
  1566. foreach ($re as $k=>$v){
  1567. $data[$k]['title']=$v->title;
  1568. $data[$k]['id']=$v->id;
  1569. $data[$k]['start_time']=$v->start_time;
  1570. $data[$k]['end_time']=$v->end_time;
  1571. }
  1572. return $this->success($data);
  1573. }
  1574. }
  1575. public function GetRelation($id){
  1576. $u=User::find($id);
  1577. $da['belong_user']=$id;
  1578. $da['belong_level']=$u->level;
  1579. $da['agent_user']='';
  1580. $da['agent_level']='';
  1581. $da['top_user']='';
  1582. $da['time']=Carbon::now()->toDateTimeString();
  1583. if ($u->level==1){
  1584. $uu=User::find($u->agent_id);
  1585. if ($uu->level==3){
  1586. $da['top_user']=$uu->id;
  1587. $da['top_level']=3;
  1588. }else{
  1589. $da['agent_user']=$uu->id;
  1590. $da['agent_level']=$uu->level;
  1591. $da['top_user']=$uu->agent_id;
  1592. }
  1593. }elseif ($u->level==2){
  1594. $da['top_user']=$u->agent_id;
  1595. $da['top_level']=3;
  1596. }
  1597. return $da;
  1598. }
  1599. public function GetUserHonor(Request $request){
  1600. $data=$request->all();
  1601. $activity_id=$data['id'];
  1602. $id=Auth::user()->id;
  1603. $re=HonorInfo::where('activity_id',$activity_id)->where('user_id',$id)->first();
  1604. if (!$re){
  1605. $bid_gift=0;
  1606. $honor_wal=0;
  1607. $tour=0;
  1608. $rank=0;
  1609. $activity=Activity::find($activity_id);
  1610. $money=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('user_id',$id)->where('is_deleted',0)->sum('money');
  1611. if ($money!=0){
  1612. $rank_arr=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])
  1613. ->select(DB::raw('sum(money) as money_all'))
  1614. ->where('is_deleted',0)->groupBy('user_id')->orderBy('money_all','desc')->get()->toArray();
  1615. $rank_arr=array_column($rank_arr,'money_all');
  1616. array_unique($rank_arr);
  1617. $rank=array_search($money,$rank_arr);
  1618. $res=DB::table('activity_limit')->Where('activity_id',$activity_id)->where('type',1)->get();
  1619. if ($res){
  1620. foreach ($res as $k=>$v){
  1621. if ($v->title=='大礼包B'){
  1622. if ($v->account<=$money){
  1623. $bid_gift=1;
  1624. }
  1625. }elseif ($v->title=='荣誉墙'){
  1626. if ($v->account<=$money){
  1627. $honor_wal=1;
  1628. }
  1629. }elseif ($v->title=='旅游'){
  1630. if ($v->account<=$money){
  1631. $tour=1;
  1632. }
  1633. }
  1634. }
  1635. }
  1636. }else{
  1637. $ress=DB::table('gift_user_img')->where('activity_id',$activity->id)->where('user_id',$id)->first();
  1638. if ($ress){
  1639. $bid_gift=1;
  1640. }
  1641. $rank=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])
  1642. ->where('is_deleted',0)->groupBy('user_id')->get();
  1643. $rank=count($rank);
  1644. }
  1645. $activity_id_now=Activity::where('is_ing',1)->value('id');
  1646. if ($activity_id==$activity_id_now){
  1647. $data['activity_id']=$activity_id;
  1648. $data['user_id']=$id;
  1649. $data['user_ids']=$id;
  1650. $data['rank']=$rank+1;
  1651. $data['big_gift']=$bid_gift;
  1652. $data['tour']=$tour;
  1653. $data['honor_wall']=$honor_wal;
  1654. $giftA=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',0)->where('img_type',1)->whereNotNull('url')->first();
  1655. $giftB=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',1)->where('img_type',1)->whereNotNull('url')->first();
  1656. $data['giftA']=$giftA;
  1657. $data['giftB']=$giftB;
  1658. return $this->success($data);
  1659. }else{
  1660. $hon_user=new HonorInfo();
  1661. $hon_user->activity_id=$activity_id;
  1662. $hon_user->user_id=$id;
  1663. $hon_user->rank=$rank+1;
  1664. $hon_user->big_gift=$bid_gift;
  1665. $hon_user->tour=$tour;
  1666. $hon_user->honor_wall=$honor_wal;
  1667. $hon_user->order_money=$money;
  1668. $hon_user->save();
  1669. return $this->success($hon_user);
  1670. }
  1671. }else{
  1672. $giftA=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',0)->where('img_type',1)->first();
  1673. $giftB=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',1)->where('img_type',1)->first();
  1674. $re->giftA=$giftA;
  1675. $re->giftB=$giftB;
  1676. return $this->success($re);
  1677. }
  1678. }
  1679. public function GetOrderDetail(Request $request){
  1680. $order=Ordertest::where('id',$request->id)->first();
  1681. if (!$order){
  1682. return $this->error(50021);
  1683. }
  1684. $arrs=Cache::get('DLS_GOOD_ARRS');
  1685. if (!$arrs){
  1686. $arrs=$this->GetGoodArr();
  1687. }
  1688. if ($order->arr_json){
  1689. $order_de=OrderDetail::where('order_id',$request->id)->get();
  1690. $arrss=[];
  1691. foreach ($order_de as $k=>$v){
  1692. $s=strpos($v->goods_name,'精');
  1693. if (is_numeric($s)){
  1694. $z='精-'.$v->goods_size;
  1695. }else{
  1696. $s=strpos($v->goods_name,'简');
  1697. if (is_numeric($s)){
  1698. $z='简-'.$v->goods_size;
  1699. }else{
  1700. $s=strpos($v->goods_name,'纯棉');
  1701. if (is_numeric($s)){
  1702. $z='纯棉-'.$v->goods_size;
  1703. }else{
  1704. $s=strpos($v->goods_name,'高');
  1705. if (is_numeric($s)){
  1706. $z='高-'.$v->goods_size;
  1707. }else{
  1708. $s=strpos($v->goods_name,'青');
  1709. if (is_numeric($s)){
  1710. $z='青-'.$v->goods_size;
  1711. }
  1712. }
  1713. }
  1714. }
  1715. }
  1716. $arrss[$z]=$v->num;
  1717. }
  1718. $re=json_decode($order->arr_json);
  1719. $data=[];
  1720. foreach ($re as $k=>$v){
  1721. if ($k%2==0){
  1722. $data=array_merge($v,$data);
  1723. }
  1724. }
  1725. $data=array_unique($data);
  1726. $arr=[];
  1727. foreach ($re as $k=>$v){
  1728. if ($k%2==0){
  1729. $num=[];
  1730. foreach ($data as $ke=>$va){
  1731. $s=array_search($va,$v);
  1732. if (is_numeric($s)){
  1733. $num[$va]=$re[$k+1][$s];
  1734. }else{
  1735. $num[$va]=0;
  1736. }
  1737. }
  1738. $arr[]=$num;
  1739. }
  1740. }
  1741. $key=array_keys($arr[0]);
  1742. $arr=array_merge($arr,[$arrss]);
  1743. $a=array_intersect($arrs,$key);
  1744. $array=[$a];
  1745. foreach ($arr as $k=>$v){
  1746. $arrr=[];
  1747. foreach ($a as $ke=>$va){
  1748. if (isset($v[$va])){
  1749. $arrr[$ke]=$v[$va];
  1750. }else{
  1751. $arrr[$ke]=0;
  1752. }
  1753. }
  1754. $array[]=$arrr;
  1755. }
  1756. return $this->success($array);
  1757. }else{
  1758. return $this->error(50023,'','该订单不能查看合并信息');
  1759. }
  1760. }
  1761. public function GetGoodArr(){
  1762. $good=Goodtest::where('is_deleted',0)->orderBy('sort')->orderBy('id')->get();
  1763. $arrs=[];
  1764. foreach ($good as $k=>$v){
  1765. $s=strpos($v->main_attr,'精');
  1766. if (is_numeric($s)){
  1767. $z='精-'.$v->size;
  1768. }else{
  1769. $s=strpos($v->main_attr,'简');
  1770. if (is_numeric($s)){
  1771. $z='简-'.$v->size;
  1772. }else{
  1773. $s=strpos($v->main_attr,'纯棉');
  1774. if (is_numeric($s)){
  1775. $z='纯棉-'.$v->size;
  1776. }else{
  1777. $s=strpos($v->main_attr,'高');
  1778. if (is_numeric($s)){
  1779. $z='高-'.$v->size;
  1780. }else{
  1781. $s=strpos($v->main_attr,'青');
  1782. if (is_numeric($s)){
  1783. $z='青-'.$v->size;
  1784. }
  1785. }
  1786. }
  1787. }
  1788. }
  1789. $arrs[$k]=$z;
  1790. }
  1791. $arrs=Cache::remember('DLS_GOOD_ARRS',Carbon::now()->addYears(1),function ()use($arrs){
  1792. return $arrs;
  1793. });
  1794. return $arrs;
  1795. }
  1796. public function GetExpresses(Request $request)
  1797. {
  1798. $order_ids = Ordertest::find($request->id);
  1799. $data = Express::whereIn('order_id', $order_ids)->where('is_gift', 0)->get();
  1800. }
  1801. /**申请作废订单**/
  1802. public function ApplyDestoryOrder(Request $request)
  1803. {
  1804. $id=$request->input('id',0);
  1805. $cause=$request->input('destroy_cause','');
  1806. $activity=Activity::where('is_ing',1)->first();
  1807. $order=Ordertest::where('id','=',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->first();
  1808. if (empty($order)){
  1809. return $this->error(500216,'','该订单不是活动订单,如需作废请联系政委');
  1810. }
  1811. if ($order->status!=0 && $order->status!=1){
  1812. return $this->error(500216,'','该订单状态不能作废,如需作废请联系政委');
  1813. }
  1814. $count=Ordertest::where('id','<>',$id)->where('address_id',$order->address_id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('apply_status',1)->where('is_deleted',0)->count();
  1815. if ($count>=1){
  1816. return $this->error(500216,'','申请作废列表中包含一个和该订单相同地址的申请,请完成上一个申请');
  1817. }
  1818. $order->apply_status=1;
  1819. $order->destroy_cause=$cause;
  1820. $order->destroy_status=0;
  1821. $order->apply_time=Carbon::now()->toDateTimeString();
  1822. $order->save();
  1823. return $this->success([]);
  1824. }
  1825. /**取消作废订单**/
  1826. public function CancleDestoryOrder(Request $request)
  1827. {
  1828. $id=$request->input('id',0);
  1829. // $cause=$request->input('destroy_cause','');
  1830. $order=Ordertest::find($id);
  1831. $order->apply_status=0;
  1832. $order->save();
  1833. return $this->success([]);
  1834. }
  1835. public function GetExpressInnage(Request $request){
  1836. $id=$request->input('id');
  1837. $data=Express::where('order_id',$request->id)->where('is_gift',0)->get();
  1838. $type_1=[];
  1839. $type_2=[];
  1840. $type_3=[];
  1841. $type_4=[];
  1842. $type_5=[];
  1843. foreach ($data as $k=>$v){
  1844. $arr=explode('+',$v->note);
  1845. foreach ($arr as $ka=>$va){
  1846. $arrs=explode(':',$va);
  1847. if (mb_substr($arrs[0],0,1)=='女'){
  1848. $sex='女款-';
  1849. $sexs=0;
  1850. $str_count=substr_count(mb_substr($arrs[0],1),'X');
  1851. if ($str_count>=3){
  1852. $size=$str_count.'XL';
  1853. }else{
  1854. $size=mb_substr($arrs[0],1);
  1855. }
  1856. }else{
  1857. $sex='男款-';
  1858. $sexs=1;
  1859. $str_count=substr_count($arrs[0],'X');
  1860. if ($str_count>=3){
  1861. $size=$str_count.'XL';
  1862. }else{
  1863. $size=$arrs[0];
  1864. }
  1865. }
  1866. if (mb_strlen($arrs[1])<4){
  1867. if (mb_substr($arrs[1],-1)=='精'){
  1868. $num=mb_substr($arrs[1],0,-1);
  1869. if (isset($type_1[$sex.$size])){
  1870. $type_1[$sex.$size]['num']+=$num;
  1871. }else{
  1872. $type_1[$sex.$size]['num']=$num;
  1873. $type_1[$sex.$size]['sex']=$sexs;
  1874. $type_1[$sex.$size]['size']=$size;
  1875. }
  1876. }elseif (mb_substr($arrs[1],-1)=='简'){
  1877. $num=mb_substr($arrs[1],0,-1);
  1878. if (isset($type_2[$sex.$size])){
  1879. $type_2[$sex.$size]['num']+=$num;
  1880. }else{
  1881. $type_2[$sex.$size]['num']=$num;
  1882. $type_2[$sex.$size]['sex']=$sexs;
  1883. $type_2[$sex.$size]['size']=$size;
  1884. }
  1885. }elseif (mb_substr($arrs[1],-1)=='老' || mb_substr($arrs[1],-1)=='高'){
  1886. $num=mb_substr($arrs[1],0,-1);
  1887. if (isset($type_3[$sex.$size])){
  1888. $type_3[$sex.$size]['num']+=$num;
  1889. }else{
  1890. $type_3[$sex.$size]['num']=$num;
  1891. $type_3[$sex.$size]['sex']=$sexs;
  1892. $type_3[$sex.$size]['size']=$size;
  1893. }
  1894. }elseif (mb_substr($arrs[1],-1)=='棉老'){
  1895. $num=mb_substr($arrs[1],0,-1);
  1896. if (isset($type_4[$sex.$size])){
  1897. $type_4[$sex.$size]['num']+=$num;
  1898. }else{
  1899. $type_4[$sex.$size]['num']=$num;
  1900. $type_4[$sex.$size]['sex']=$sexs;
  1901. $type_4[$sex.$size]['size']=$size;
  1902. }
  1903. }elseif (mb_substr($arrs[1],-1)=='青'){
  1904. $num=mb_substr($arrs[1],0,-1);
  1905. if (isset($type_5[$sex.$size])){
  1906. $type_5[$sex.$size]['num']+=$num;
  1907. }else{
  1908. $type_5[$sex.$size]['num']=$num;
  1909. $type_5[$sex.$size]['sex']=$sexs;
  1910. $type_5[$sex.$size]['size']=$size;
  1911. }
  1912. }
  1913. }else{
  1914. $arrr=[
  1915. ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
  1916. ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
  1917. ];
  1918. foreach ($arrr as $kes=>$vas){
  1919. if ($vas['type']=='简'){
  1920. if (isset($type_2[$sex.$size])){
  1921. $type_2[$sex.$size]['num']+=$vas['num'];
  1922. }else{
  1923. $type_2[$sex.$size]['num']=$vas['num'];
  1924. $type_2[$sex.$size]['sex']=$sexs;
  1925. $type_2[$sex.$size]['size']=$size;
  1926. }
  1927. }elseif($vas['type']=='高' || $vas['type']=='老'){
  1928. if (isset($type_3[$sex.$size])){
  1929. $type_3[$sex.$size]['num']+=$vas['num'];
  1930. }else{
  1931. $type_3[$sex.$size]['num']=$vas['num'];
  1932. $type_3[$sex.$size]['sex']=$sexs;
  1933. $type_3[$sex.$size]['size']=$size;
  1934. }
  1935. }elseif($vas['type']=='青'){
  1936. if (isset($type_5[$sex.$size])){
  1937. $type_5[$sex.$size]['num']+=$vas['num'];
  1938. }else{
  1939. $type_5[$sex.$size]['num']=$vas['num'];
  1940. $type_5[$sex.$size]['sex']=$sexs;
  1941. $type_5[$sex.$size]['size']=$size;
  1942. }
  1943. }elseif($vas['type']=='棉老'){
  1944. if (isset($type_4[$sex.$size])){
  1945. $type_4[$sex.$size]['num']+=$vas['num'];
  1946. }else{
  1947. $type_4[$sex.$size]['num']=$vas['num'];
  1948. $type_4[$sex.$size]['sex']=$sexs;
  1949. $type_4[$sex.$size]['size']=$size;
  1950. }
  1951. }
  1952. }
  1953. }
  1954. }
  1955. }
  1956. $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[],'youth'=>[]];
  1957. $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get();
  1958. $good=Goodtest::where('is_deleted',0)->where('name','大卫博士精装版')->first();
  1959. $data['hard']['name']=$good->name;
  1960. $data['hard']['imgurl']=$good->main_img;
  1961. $data['hard']['spec']=[];
  1962. foreach ($hard_de as $k=>$v){
  1963. if (isset($type_1[$v->goods_size])){
  1964. $n=$v->num-$type_1[$v->goods_size]['num'];
  1965. if ($n>0){
  1966. $data['hard']['spec'][]=[
  1967. 'num'=>$v->num-$type_1[$v->goods_size]['num'],
  1968. 'sex'=>$type_1[$v->goods_size]['sex'],
  1969. 'size'=>$type_1[$v->goods_size]['size'],
  1970. ];
  1971. }
  1972. }else{
  1973. if (mb_substr($v->goods_size,0,1)=='女'){
  1974. $sex=0;
  1975. }else{
  1976. $sex=1;
  1977. }
  1978. $size=mb_substr($v->goods_size,3);
  1979. $data['hard']['spec'][]=[
  1980. 'num'=>$v->num,
  1981. 'sex'=>$sex,
  1982. 'size'=>$size,
  1983. ];
  1984. }
  1985. }
  1986. $old_de=OrderDetail::where('goods_name','大卫博士高腰版')->where('order_id',$id)->get();
  1987. $good=Goodtest::where('is_deleted',0)->where('name','大卫博士高腰版')->first();
  1988. $data['old']['name']=$good->name;
  1989. $data['old']['imgurl']=$good->main_img;
  1990. $data['old']['spec']=[];
  1991. foreach ($old_de as $k=>$v){
  1992. if (isset($type_3[$v->goods_size])){
  1993. $n=$v->num-$type_3[$v->goods_size]['num'];
  1994. if ($n>0){
  1995. $data['old']['spec'][]=[
  1996. 'num'=>$v->num-$type_3[$v->goods_size]['num'],
  1997. 'sex'=>$type_3[$v->goods_size]['sex'],
  1998. 'size'=>$type_3[$v->goods_size]['size'],
  1999. ];
  2000. }
  2001. }else{
  2002. if (mb_substr($v->goods_size,0,1)=='女'){
  2003. $sex=0;
  2004. }else{
  2005. $sex=1;
  2006. }
  2007. $size=mb_substr($v->goods_size,3);
  2008. $data['old']['spec'][]=[
  2009. 'num'=>$v->num,
  2010. 'sex'=>$sex,
  2011. 'size'=>$size,
  2012. ];
  2013. }
  2014. }
  2015. $youth_de=OrderDetail::where('goods_name','大卫博士青春版')->where('order_id',$id)->get();
  2016. $good=Goodtest::where('is_deleted',0)->where('name','大卫博士青春版')->first();
  2017. $data['youth']['name']=$good->name;
  2018. $data['youth']['imgurl']=$good->main_img;
  2019. $data['youth']['spec']=[];
  2020. foreach ($youth_de as $k=>$v){
  2021. if (isset($type_5[$v->goods_size])){
  2022. $n=$v->num-$type_5[$v->goods_size]['num'];
  2023. if ($n>0){
  2024. $data['youth']['spec'][]=[
  2025. 'num'=>$v->num-$type_5[$v->goods_size]['num'],
  2026. 'sex'=>$type_5[$v->goods_size]['sex'],
  2027. 'size'=>$type_5[$v->goods_size]['size'],
  2028. ];
  2029. }
  2030. }else{
  2031. if (mb_substr($v->goods_size,0,1)=='女'){
  2032. $sex=0;
  2033. }else{
  2034. $sex=1;
  2035. }
  2036. $size=mb_substr($v->goods_size,3);
  2037. $data['youth']['spec'][]=[
  2038. 'num'=>$v->num,
  2039. 'sex'=>$sex,
  2040. 'size'=>$size,
  2041. ];
  2042. }
  2043. }
  2044. $good=Goodtest::where('is_deleted',0)->where('name','大卫博士简约版')->first();
  2045. $data['simple']['name']=$good->name;
  2046. $data['simple']['imgurl']=$good->main_img;
  2047. $data['simple']['spec']=[];
  2048. $good=Goodtest::where('is_deleted',0)->where('name','大卫博士纯棉老人版')->first();
  2049. $data['new_old']['name']=$good->name;
  2050. $data['new_old']['imgurl']=$good->main_img;
  2051. $data['new_old']['spec']=[];
  2052. return $this->success($data);
  2053. }
  2054. public function Innage(Request $request){
  2055. $id=$request->input('id');
  2056. $data=Express::where('order_id',$request->id)->where('is_gift',0)->get();
  2057. $type_1=[];
  2058. $type_2=[];
  2059. $type_3=[];
  2060. foreach ($data as $k=>$v){
  2061. $arr=explode('+',$v->note);
  2062. foreach ($arr as $ka=>$va){
  2063. $arrs=explode(':',$va);
  2064. if (mb_substr($arrs[0],0,1)=='女'){
  2065. $sex='女款-';
  2066. $sexs=0;
  2067. $str_count=substr_count(mb_substr($arrs[0],1),'X');
  2068. if ($str_count>=3){
  2069. $size=$str_count.'XL';
  2070. }else{
  2071. $size=mb_substr($arrs[0],1);
  2072. }
  2073. }else{
  2074. $sex='男款-';
  2075. $sexs=1;
  2076. $str_count=substr_count($arrs[0],'X');
  2077. if ($str_count>=3){
  2078. $size=$str_count.'XL';
  2079. }else{
  2080. $size=$arrs[0];
  2081. }
  2082. }
  2083. if (mb_strlen($arrs[1])<4){
  2084. if (mb_substr($arrs[1],-1)=='精'){
  2085. $num=mb_substr($arrs[1],0,-1);
  2086. if (isset($type_1[$sex.$size])){
  2087. $type_1[$sex.$size]['num']+=$num;
  2088. }else{
  2089. $type_1[$sex.$size]['num']=$num;
  2090. $type_1[$sex.$size]['sex']=$sexs;
  2091. $type_1[$sex.$size]['size']=$size;
  2092. }
  2093. }elseif (mb_substr($arrs[1],-1)=='简'){
  2094. $num=mb_substr($arrs[1],0,-1);
  2095. if (isset($type_2[$sex.$size])){
  2096. $type_2[$sex.$size]['num']+=$num;
  2097. }else{
  2098. $type_2[$sex.$size]['num']=$num;
  2099. $type_2[$sex.$size]['sex']=$sexs;
  2100. $type_2[$sex.$size]['size']=$size;
  2101. }
  2102. }elseif (mb_substr($arrs[1],-1)=='老'){
  2103. $num=mb_substr($arrs[1],0,-1);
  2104. if (isset($type_3[$sex.$size])){
  2105. $type_3[$sex.$size]['num']+=$num;
  2106. }else{
  2107. $type_3[$sex.$size]['num']=$num;
  2108. $type_3[$sex.$size]['sex']=$sexs;
  2109. $type_3[$sex.$size]['size']=$size;
  2110. }
  2111. }
  2112. }else{
  2113. $arrr=[
  2114. ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
  2115. ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
  2116. ];
  2117. foreach ($arrr as $kes=>$vas){
  2118. if ($vas['type']=='简'){
  2119. if (isset($type_2[$sex.$size])){
  2120. $type_2[$sex.$size]['num']+=$vas['num'];
  2121. }else{
  2122. $type_2[$sex.$size]['num']=$vas['num'];
  2123. $type_2[$sex.$size]['sex']=$sexs;
  2124. $type_2[$sex.$size]['size']=$size;
  2125. }
  2126. }else{
  2127. if (isset($type_3[$sex.$size])){
  2128. $type_3[$sex.$size]['num']+=$vas['num'];
  2129. }else{
  2130. $type_3[$sex.$size]['num']=$vas['num'];
  2131. $type_3[$sex.$size]['sex']=$sexs;
  2132. $type_3[$sex.$size]['size']=$size;
  2133. }
  2134. }
  2135. }
  2136. }
  2137. }
  2138. }
  2139. $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[]];
  2140. $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get();
  2141. $good=Goodtest::find($hard_de[0]->goods_id);
  2142. $data['hard']['name']=$good->name;
  2143. $data['hard']['imgurl']=$good->main_img;
  2144. foreach ($hard_de as $k=>$v){
  2145. if (isset($type_1[$v->goods_size])){
  2146. $n=$v->num-$type_1[$v->goods_size]['num'];
  2147. if ($n>0){
  2148. $data['hard']['spec'][]=[
  2149. 'num'=>$v->num-$type_1[$v->goods_size]['num'],
  2150. 'sex'=>$type_1[$v->goods_size]['sex'],
  2151. 'size'=>$type_1[$v->goods_size]['size'],
  2152. ];
  2153. }
  2154. }else{
  2155. if (mb_substr($v->goods_size,0,1)=='女'){
  2156. $sex=0;
  2157. }else{
  2158. $sex=1;
  2159. }
  2160. $size=mb_substr($v->goods_size,3);
  2161. $data['hard']['spec'][]=[
  2162. 'num'=>$v->num,
  2163. 'sex'=>$sex,
  2164. 'size'=>$size,
  2165. ];
  2166. }
  2167. }
  2168. $old_de=OrderDetail::where('goods_name','大卫博士高腰版')->where('order_id',$id)->get();
  2169. $good=Goodtest::find($old_de[0]->goods_id);
  2170. $data['old']['name']=$good->name;
  2171. $data['old']['imgurl']=$good->main_img;
  2172. foreach ($old_de as $k=>$v){
  2173. if (isset($type_3[$v->goods_size])){
  2174. $n=$v->num-$type_3[$v->goods_size]['num'];
  2175. if ($n>0){
  2176. $data['old']['spec'][]=[
  2177. 'num'=>$v->num-$type_3[$v->goods_size]['num'],
  2178. 'sex'=>$type_3[$v->goods_size]['sex'],
  2179. 'size'=>$type_3[$v->goods_size]['size'],
  2180. ];
  2181. }
  2182. }else{
  2183. if (mb_substr($v->goods_size,0,1)=='女'){
  2184. $sex=0;
  2185. }else{
  2186. $sex=1;
  2187. }
  2188. $size=mb_substr($v->goods_size,3);
  2189. $data['old']['spec'][]=[
  2190. 'num'=>$v->num,
  2191. 'sex'=>$sex,
  2192. 'size'=>$size,
  2193. ];
  2194. }
  2195. }
  2196. return $this->success($data);
  2197. }
  2198. /**校验数量**/
  2199. public function CheckGoodNum(Request $request){
  2200. Log::error(json_encode($request->all()));
  2201. $user=Auth::user();
  2202. if ($user->level!=3){
  2203. return $this->error('4001','','当前用户不是经销商');
  2204. }
  2205. $rules = [
  2206. 'size_id' => 'required',
  2207. 'total' => 'required',
  2208. 'type' => 'required',
  2209. 'num' => 'required',
  2210. ];
  2211. $message = [
  2212. 'required' => ':attribute不能为空',
  2213. ];
  2214. $attributes = [
  2215. 'size_id' => 'size_id',
  2216. 'total' => '商品总数量',
  2217. 'type' => '商品中总类型',
  2218. 'num' => '单类商品商量',
  2219. ];
  2220. $vali = Validator::make($request->all(), $rules, $message,$attributes);
  2221. if ($vali->fails()) {
  2222. Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first());
  2223. return $this->error('40010', '',$vali->errors()->first());
  2224. }
  2225. $input=$request->all();
  2226. $time=Carbon::now();
  2227. $Numarr=[70,71,72,73,74,75,76,77];
  2228. $activity=Activity::where('is_ing',1)->first();
  2229. if ($activity){
  2230. if ($time>=$activity->start_time && $time<=$activity->end_time){
  2231. if ($time<Carbon::today()->addHours(9) || $time>Carbon::today()->addHours(21)){
  2232. return $this->error(500214,'','当前时间不能下单');
  2233. }
  2234. if ($activity->set_company_buy_num){
  2235. foreach ($input['size_id'] as $k=>$v){
  2236. if (in_array($v,$Numarr)){
  2237. if ($input['num'][$k]%6!=0){
  2238. $data=Goodtest::find($v);
  2239. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是六的倍数');
  2240. }
  2241. }else{
  2242. if ($input['num'][$k]%3!=0){
  2243. $data=Goodtest::find($v);
  2244. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是三的倍数');
  2245. }
  2246. }
  2247. }
  2248. }
  2249. }
  2250. }
  2251. foreach ($input['size_id'] as $k=>$v){
  2252. $data=Goodtest::find($v);
  2253. if (!$data){
  2254. return $this->error(40013,'','购物车有未知商品,请清空购物车');
  2255. }
  2256. $now=Carbon::now()->timestamp;
  2257. if ($data->off_time!=null){
  2258. if (strtotime($data->off_time)<$now){
  2259. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
  2260. }
  2261. }
  2262. if($data->is_show==4){
  2263. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
  2264. }
  2265. if($data->is_show==1){
  2266. return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架');
  2267. }
  2268. }
  2269. foreach ($input['size_id'] as $k=>$v){
  2270. if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){
  2271. $data=Goodtest::find($v);
  2272. return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量');
  2273. }
  2274. }
  2275. return $this->success([]);
  2276. }
  2277. }