12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408 |
- <?php
- namespace App\Http\Controllers;
- use App\Events\DestoryOrder;
- use App\Events\OrderPayEvent;
- use App\Events\OrderPayInfoEvent;
- use App\Events\SubmitOrdersInfoEvent;
- use App\Handlers\ExpressHandler;
- use App\Models\Activity;
- use App\Models\Address;
- use App\Models\Article;
- use App\Models\CrownCount;
- use App\Models\Express;
- use App\Models\ExpStoreAgent;
- use App\Models\Gift;
- use App\Models\Goodtest;
- use App\Models\HonorInfo;
- use App\Models\Order;
- use App\Models\OrderDetail;
- use App\Models\OrderGift;
- use App\Models\Orderlog;
- use App\Models\OrderRemark;
- use App\Models\Ordertest;
- use App\Models\User;
- use App\Models\UserPay;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Validator;
- class OrdertestController extends Controller
- {
- /*
- * 检测订单是否需要合并
- * **/
- public function search_order(Request $request){
- $user=Auth::user();
- $active=Activity::where('start_time','<=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())
- ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first();
- //如果处于活动期间
- if ($active){
- //判断活动期间是否有相同地址的订单
- $or=Ordertest::where('user_id',$user->id)->where('address_id',$request->address_id)
- ->whereBetween('created_at',[$active->start_time,$active->end_time])
- ->where('is_deleted',0)->where('apply_status',0)->whereIn('status',[0,1])->first();
- if ($or){//如果存在
- return $this->error(4600,'','系统检测,该订单和订单编号为'.$or->order_num.'的收货信息一致,将会和它合并成一个订单');
- }
- }
- return $this->success([]);
- }
- /**查找代理**/
- public function get_user(Request $request){
- $input=$request->all();
- $id=Auth::user()->id;
- $ids=[$id];
- $user_id=User::where('agent_id',$id)->whereIn('cert_status',[3,6])->pluck('id')->toArray();
- $user_ids=User::whereIn('agent_id',$user_id)->whereIn('cert_status',[3,6])->pluck('id')->toArray();
- $all_ids=array_merge($ids,array_merge($user_id,$user_ids));
- $search_name=$input['search_name'];
- $where=[];
- if ($search_name){
- $where=function ($q)use($search_name){
- $q->where('mobile','like','%'.$search_name.'%')->orwhere('nickname','like','%'.$search_name.'%');
- };
- }
- $user=User::whereIn('id',$all_ids)->where($where)->select('id','mobile','level','nickname','realname','headimgurl');
- $count=$user->get()->count();
- $re=$user->take(30)->skip(($request->page-1)*30)->get();
- return $this->success_list($re,'',$count);
- }
- /*
- * 处理每次订单数据
- * **/
- public function DealOrder($size=[],$num=[]){
- $nums=[];
- $sizes=[];
- foreach ($size as $k=>$v){
- $re=Goodtest::find($v);
- $s=strpos($re->main_attr,'精');
- if (is_numeric($s)){
- $sizes[]='精-'.$re->size;
- $nums[]=$num[$k];
- }else{
- $s=strpos($re->main_attr,'简');
- if (is_numeric($s)){
- $sizes[]='简-'.$re->size;
- $nums[]=$num[$k];
- }else{
- $s=strpos($re->main_attr,'纯棉');
- if (is_numeric($s)){
- $sizes[]='纯棉-'.$re->size;
- $nums[]=$num[$k];
- }else{
- $s=strpos($re->main_attr,'高');
- if (is_numeric($s)){
- $sizes[]='高-'.$re->size;
- $nums[]=$num[$k];
- }else{
- $s=strpos($re->main_attr,'青');
- if (is_numeric($s)){
- $sizes[]='青-'.$re->size;
- $nums[]=$num[$k];
- }
- }
- }
- }
- }
- }
- return [$sizes,$nums];
- }
- /*
- * 提交订单
- * */
- public function submit_order(Request $request)
- {
- // return $this->error(50021,'暂停');
- $user=Auth::user();
- if ($user->level!=3){
- return $this->error('4001','','当前用户不是经销商');
- }
- $rules = [
- 'size_id' => 'required',
- 'total' => 'required',
- 'type' => 'required',
- 'num' => 'required',
- 'money'=>'required',
- 'address_id'=>'required',
- 'belong_id'=>'required'
- ];
- $message = [
- 'required' => ':attribute不能为空',
- ];
- $attributes = [
- 'size_id' => 'size_id',
- 'total' => '商品总数量',
- 'type' => '商品中总类型',
- 'num' => '单类商品商量',
- 'money'=>'商品金额',
- 'address_id'=>'地址',
- ];
- $vali = Validator::make($request->all(), $rules, $message,$attributes);
- if ($vali->fails()) {
- Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first());
- return $this->error('40010', '',$vali->errors()->first());
- }
- $time=Carbon::now();
- $input=$request->all();
- $Numarr=[70,71,72,73,74,75,76,77];
- $activity=Activity::where('is_ing',1)->first();
- if ($activity){
- if ($time>=$activity->start_time && $time<=$activity->end_time){
- if ($time<Carbon::today()->addHours(9) || $time>Carbon::today()->addHours(21)){
- return $this->error(500214,'','当前时间不能下单');
- }
- }
- }
- foreach ($input['size_id'] as $k=>$v){
- $data=Goodtest::find($v);
- if (!$data){
- return $this->error(40013,'','购物车有未知商品,请清空购物车');
- }
- $now=Carbon::now()->timestamp;
- if ($data->off_time!=null){
- if (strtotime($data->off_time)<$now){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
- }
- }
- if($data->is_show==4){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
- }
- if($data->is_show==1){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架');
- }
- }
- foreach ($input['size_id'] as $k=>$v){
- if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){
- $data=Goodtest::find($v);
- return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量');
- }
- }
- //
- // $lock=Cache::lock('foo',4);
- // $lock->block(3);
- foreach ($input['size_id'] as $k=>$v){
- Cache::decrement('dwbs_good_num'.$v,$input['num'][$k]);
- }
- // optional($lock)->release();
- DB::beginTransaction();
- try{
- $users=User::where('id',$user->id)->first();
- $address=Address::where('id',$request->input('address_id'))->select('id','province','city','town')->first();
- $area=$address->province.$address->city.$address->town;
- if ($area=='山东省临沂市临沭县'){
- $store_id = 17;
- }else{
- $store_id = null;
- }
- // if ($users->deleted_at){
- // return $this->error(50024,'','您已退出!不能参与下单');
- // }
- /*
- * 判断当前订单是处于什么状态
- * **/
- // if ($users->money==0){
- // $no_pay_money=$input['money'];
- // $pay_money=0;
- // $pay_status=0;
- // $money=0;
- // }else{
- // if ($users->money>=$input['money']){
- // $no_pay_money=0;
- // $pay_money=$input['money'];
- // $pay_status=2;
- // $money=$users->money-$input['money'];
- // }else{
- // $no_pay_money=$input['money']-$users->money;
- // $pay_money=$users->money;
- // $pay_status=1;
- // $money=0;
- // }
- // }
- $no_pay_money=$input['money'];//订单金额,也是未支付金额
- $pay_money=0;
- /*
- * 判断当前时间是否处于活动期间
- * ***/
- $active=Activity::where('start_time','<=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())
- ->where('end_time','>=',Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString())->first();
- $address=Address::find($request->address_id);
- $address->belong_id=$request->belong_id;
- if (!$address->save()){
- throw new \Exception('1');
- }
- //如果处于活动期间
- if ($active){
- //判断活动期间是否有相同地址的订单
- $or=Ordertest::where('user_id',$user->id)->where('address_id',$input['address_id'])
- ->whereBetween('created_at',[$active->start_time,$active->end_time])
- ->where('is_deleted',0)->whereIn('status',[0,1])->where('apply_status',0)->first();
- if ($or){//如果存在
- /*
- * 合并订单
- * **/
- $money_old=$or->money;
- $total_old=$or->total;
- $or->total+=$input['total'];//合并总量
- $or->money+=$input['money'];//合并订单金额
- // $or->pay_money+=$pay_money;//合并支付金额
- $or->is_merge=1;
- $money_now=$or->money;//记录当前订单的金额
- $total_now=$or->total;//记录当前订单的金额
- $orderlog = new Orderlog();
- $orderlog->order_id = $or->id;
- $orderlog->user_id = $or->user_id;
- $orderlog->log_name = $user->nickname;
- $orderlog->log_title = '合并订单';
- if ($or->pay_status==3){
- if ($or->wait_back_money>$no_pay_money){
- $or->no_pay_money=0;
- $or->wait_back_money-=$no_pay_money;
- }elseif ($or->wait_back_money==$no_pay_money){
- $or->no_pay_money=0;
- $or->wait_back_money-=$no_pay_money;
- $or->pay_status=2;
- }else{
- $or->no_pay_money=$no_pay_money-$or->wait_back_money;
- $or->wait_back_money=0;
- $or->pay_status=1;
- }
- }else{
- $or->no_pay_money+=$no_pay_money;
- }
- //订单金额等于支付金额
- if ($or->money==$or->pay_money){
- $or->no_pay_money=0;//未支付变为0
- $or->pay_status=2;//支付状态2,为全部支付
- $or->wait_back_money=0;//待退回金额为0
- }elseif ($or->money<$or->pay_money){//订单金额小于支付金额
- $or->no_pay_money=0;//未支付金额变为0
- $or->pay_status=3;//支付状态3,待退款状态
- $or->wait_back_money=$or->pay_money-$or->money;//待退款金额为支付金额减去订单金额
- }elseif ($or->money>$or->pay_money){//订单金额大于支付金额
- if ($or->pay_money==0){//如果支付金额为0
- $or->pay_status=0;//则支付状态0,未支付
- }else{
- $or->pay_status=1;//否则支付状态1,部分支付
- }
- $or->no_pay_money=$or->money-$or->pay_money;//未支付金额等于订单金额减去支付金额
- $or->wait_back_money=0;//待退款为0
- }
- $ar=json_decode($or->arr_json);
- $arr=array_merge($ar,$this->DealOrder($input['size_id'],$input['num']));
- $or->arr_json=json_encode($arr);
- // $users->money=$money;
- // if (!$users->save()){
- // throw new \Exception(1);
- // }
- //存在备注信息则添加新区
- if (!empty($input['remark'])){
- $orderremark = new OrderRemark();
- $orderremark->order_id = $or->id;
- $orderremark->name=Auth::user()->nickname;
- $orderremark->level = $user->level;
- $orderremark->type = 0;
- $orderremark->remark = $input['remark'];
- if (!$orderremark->save()) {
- throw new \Exception('2');
- }
- }
- $hard=0;
- $simple=0;
- $log='';
- foreach ($input['size_id'] as $k=>$v){
- $data=Goodtest::find($v);
- //判断是否订单详情是否存在相同商品的记录
- $or_de=OrderDetail::where('order_id',$or->id)->where('goods_id',$data->id)->first();
- if ($or_de){//存在
- $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].',';
- $or_de->num+=$input['num'][$k];//合并数量
- $or_de->money+=$input['num'][$k]*$data->money;//合并订单中此商品的总金额
- if (!$or_de->save()){
- throw new \Exception('1');
- }
- $data->sold_num=$data->sold_num+$input['num'][$k];//记录商品新卖数量
- $data->storage=Cache::get('dwbs_good_num'.$data->id);;//减少商品的库存
- if (!$data->save()){
- throw new \Exception('3');
- }
- }else{//订单详情中不存在此商品的记录
- $order_detail=new OrderDetail();
- $order_detail->order_id=$or->id;
- $order_detail->goods_id=$data->id;
- $log.='商品'.$data->name.'('.$data->size.')'.',数量为'.$input['num'][$k].',';
- $order_detail->num=$input['num'][$k];
- $order_detail->money=$input['num'][$k]*$data->money;
- $order_detail->goods_name=$data->name;
- $order_detail->goods_size=$data->size;
- $order_detail->goods_price=$data->money;
- $order_detail->goods_unit=$data->unit;
- if (!$order_detail->save()){
- Log::error('{-----订单详情保存出错-----}'.$user->id);
- throw new \Exception('订单详情出错');
- }
- $data->sold_num=$data->sold_num+$input['num'][$k];
- $data->storage=Cache::get('dwbs_good_num'.$data->id);
- if (!$data->save()){
- throw new \Exception('3');
- }
- }
- }
- $nums=OrderDetail::where('order_id',$or->id)->count();//判断商品的种类
- $hard=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','套')->sum('num');//判断商品的种类
- $simple=OrderDetail::where('order_id',$or->id)->where('goods_unit','=','件')->sum('num');//判断商品的种类
- $or->type=$nums;
- if (!$or->save()){
- throw new \Exception('1');
- }
- $orderlog->log_text = '用户合并了订单,原订单总金额为' . $money_old . ',商品数量为' . $total_old . '。合并后订单金额为' . $money_now . ',合并后商品数量为' . $total_now.',添加订单包含:'.$log ;
- if (!$orderlog->save()) {
- throw new \Exception('1');
- }
- $order_ids=$or->id;//记录下订单的ID
- $order_nums=$or->order_num;//记录下订单的ID
- if($users->openid){
- $goodsInfo='';
- foreach($input['size_id'] as $key => $val){
- $goods=Goodtest::find($val);
- if($key<=5){
- if(empty($goodsInfo)){
- $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- }elseif($key==6){
- $goodsInfo.=',...';
- }
- }
- $mes['openid']=$users->openid;
- $mes['data']=[
- 'first' => '您的订单已提交成功,该订单将与订单号:'.$order_nums.' 进行合并',
- 'keyword1' => $goodsInfo,
- 'keyword2' => $order_nums,
- 'keyword3' => number_format($input['money'], 2),
- 'remark' => '点击链接进入系统,查看详情',
- ];
- event(new SubmitOrdersInfoEvent($mes));
- $this->nopaymessage();
- // if ($pay_money!=0){
- // $user_pay=new UserPay();
- // $user_pay->user_id=$users->id;
- // $user_pay->pay_money=$pay_money;
- // $user_pay->type=1;
- // $user_pay->op_name='系统自动支付';
- // $user_pay->order_num=$or->order_num;
- // $user_pay->pay_num=$this->pay_num();
- // $user_pay->user_money=$money;
- // $user_pay->remark='订单编号为'.$or->order_num.'合并订单时系统自动支付';
- // if (!$user_pay->save()){
- // throw new \Exception(1);
- // }
- // if ($user_pay->pay_money!=0){
- // if($users->openid){
- // $mes['openid']=$users->openid;
- // $mes['data']=[
- // 'first' => '您的订单:'.$or->order_num.'合并订单时,自动款成功',
- // 'keyword1' => '-'.number_format($pay_money, 2),
- // 'keyword2' => number_format($money, 2),
- // 'keyword3' => date("Y-m-d H:i"),
- // 'keyword4' => '合并订单自动支付',
- // 'remark' => '点击链接进入系统,查看详情',
- // ];
- // event(new OrderPayEvent($mes));
- // }
- // }
- //
- // }
- }
- }
- else{//不合并
- $order=new Ordertest();
- $order->user_id=$user->id;
- $order->store_id=$store_id;
- $order->order_num=$this->order_num();
- $order->total=$input['total'];
- $order->type=$input['type'];
- $order->money=$input['money'];
- $order->no_pay_money=$no_pay_money;
- $order->pay_money=$pay_money;
- $order->pay_status=0;
- $order->address_id=$input['address_id'];
- $order->good_user_id=$input['belong_id'];
- $order->relation=json_encode($this->GetRelation($input['belong_id']));
- $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num']));
- if (!empty($input['remark'])){
- $order->remark=$input['remark'];
- }
- if (!$order->save()){
- Log::error('{-----订单保存出错-----}'.$user->id);
- throw new \Exception('订单保存出错');
- }
- // $users->money=$money;
- // if (!$users->save()){
- // throw new \Exception('1');
- // }
- // if ($pay_money!=0){
- // $user_pay=new UserPay();
- // $user_pay->user_id=$users->id;
- // $user_pay->pay_money=$pay_money;
- // $user_pay->type=1;
- // $user_pay->op_name='系统自动支付';
- // $user_pay->order_num=$order->order_num;
- // $user_pay->pay_num=$this->pay_num();
- // $user_pay->user_money=$users->money;
- // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付';
- // if (!$user_pay->save()){
- // Log::error('3333333');
- // throw new \Exception('3');
- // }
- // }
- if (!empty($input['remark'])){
- $orderremark = new OrderRemark();
- $orderremark->order_id = $order->id;
- $orderremark->name=Auth::user()->nickname;
- $orderremark->level = $user->level;
- $orderremark->type = 0;
- $orderremark->remark = $input['remark'];
- if (!$orderremark->save()) {
- throw new \Exception('2');
- }
- }
- $hard=0;
- $simple=0;
- $old=0;
- $new_old=0;
- foreach ($input['size_id'] as $k=>$v){
- $data=Goodtest::find($v);
- $order_detail=new OrderDetail();
- $order_detail->order_id=$order->id;
- $order_detail->goods_id=$data->id;
- $order_detail->num=$input['num'][$k];
- $order_detail->money=$input['num'][$k]*$data->money;
- $order_detail->goods_name=$data->name;
- $order_detail->goods_size=$data->size;
- $order_detail->goods_price=$data->money;
- $order_detail->goods_unit=$data->unit;
- if (!$order_detail->save()){
- Log::error('{-----订单详情保存出错-----}'.$user->id);
- throw new \Exception('订单详情出错');
- }
- $data->sold_num=$data->sold_num+$input['num'][$k];
- $data->storage=Cache::get('dwbs_good_num'.$data->id);
- if (!$data->save()){
- throw new \Exception('3');
- }
- if ($data->unit=='套'){
- $hard+=$input['num'][$k];
- }elseif ($data->unit=='件'){
- $simple+=$input['num'][$k];
- }
- }
- $order_ids=$order->id;
- $order_nums=$order->order_num;//记录下订单的ID
- $goodsInfo='';
- $goodsInfos='';
- foreach($input['size_id'] as $key => $val){
- $goods=Goodtest::find($val);
- if(empty($goodsInfo)){
- $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- if($key<=5){
- if(empty($goodsInfo)){
- $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- }elseif($key==6){
- $goodsInfo.=',...';
- }
- }
- $orderlog=new Orderlog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = $user->nickname;
- $orderlog->log_title = '初始订单数据';
- $orderlog->log_text = $goodsInfos;
- if (!$orderlog->save()){
- throw new \Exception(1);
- }
- if($users->openid){
- $goodsInfo='';
- foreach($input['size_id'] as $key => $val){
- $goods=Goodtest::find($val);
- if($key<=5){
- if(empty($goodsInfo)){
- $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- }elseif($key==6){
- $goodsInfo.=',...';
- }
- }
- $mes['openid']=$users->openid;
- $mes['data']=[
- 'first' => '您的订单已提交成功',
- 'keyword1' => $goodsInfo,
- 'keyword2' => $order_nums,
- 'keyword3' => number_format($input['money'], 2),
- 'remark' => '点击链接进入系统,查看详情',
- ];
- event(new SubmitOrdersInfoEvent($mes));
- $this->nopaymessage();
- // if ($pay_money!=0){
- // if($users->openid){
- // $mes['openid']=$users->openid;
- // $mes['data']=[
- // 'first' => '您的订单:'.$order->order_num.'已扣款成功',
- // 'keyword1' => '-'.number_format($pay_money, 2),
- // 'keyword2' => number_format($users->money, 2),
- // 'keyword3' => date("Y-m-d H:i"),
- // 'keyword4' => '提交订单自动支付',
- // 'remark' => '点击链接进入系统,查看详情',
- // ];
- // event(new OrderPayEvent($mes));
- // }
- // }
- }
- }
- $gifts=Gift::where('activity_id',$active->id)->get();
- if ($gifts){
- $total=$hard+$simple*2;
- foreach ($gifts as $k=>$v){
- if ($total>=$v->limit_num){
- $num=floor($total/$v->num);
- }else{
- $num=0;
- }
- $ordergift=OrderGift::where('order_id',$order_ids)->where('gift_id',$v->id)->first();
- if ($ordergift){
- $ordergift->activity_id=$active->id;
- $ordergift->gift_id=$v->id;
- $ordergift->num=$num;
- $ordergift->order_id=$order_ids;
- if (!$ordergift->save()){
- throw new \Exception('1');
- }
- }else{
- $ordergifts=new OrderGift();
- $ordergifts->activity_id=$active->id;
- $ordergifts->gift_id=$v->id;
- $ordergifts->num=$num;
- $ordergifts->order_id=$order_ids;
- if (!$ordergifts->save()){
- throw new \Exception('1');
- }
- }
- }
- }
- }else{
- $order=new Ordertest();
- $order->user_id=$user->id;
- $order->store_id=$store_id;
- $order->order_num=$this->order_num();
- $order->total=$input['total'];
- $order->type=$input['type'];
- $order->money=$input['money'];
- $order->no_pay_money=$no_pay_money;
- $order->pay_money=$pay_money;
- $order->pay_status=0;
- $order->address_id=$input['address_id'];
- $order->good_user_id=$input['belong_id'];
- $order->relation=json_encode($this->GetRelation($input['belong_id']));
- $order->arr_json=json_encode($this->DealOrder($input['size_id'],$input['num']));
- if (!empty($input['remark'])){
- $order->remark=$input['remark'];
- }
- if (!$order->save()){
- Log::error('{-----订单保存出错-----}'.$user->id);
- throw new \Exception('订单保存出错');
- }
- // $users->money=$money;
- // if (!$users->save()){
- // throw new \Exception('1');
- // }
- // if ($pay_money!=0){
- // $user_pay=new UserPay();
- // $user_pay->user_id=$users->id;
- // $user_pay->pay_money=$pay_money;
- // $user_pay->type=1;
- // $user_pay->op_name='系统自动支付';
- // $user_pay->order_num=$order->order_num;
- // $user_pay->pay_num=$this->pay_num();
- // $user_pay->user_money=$users->money;
- // $user_pay->remark='订单编号为'.$order->order_num.'是提交订单时系统自动支付';
- // if (!$user_pay->save()){
- // Log::error('3333333');
- // throw new \Exception('3');
- // }
- // }
- if (!empty($input['remark'])){
- $orderremark = new OrderRemark();
- $orderremark->order_id = $order->id;
- $orderremark->name=Auth::user()->nickname;
- $orderremark->level = $user->level;
- $orderremark->type = 0;
- $orderremark->remark = $input['remark'];
- if (!$orderremark->save()) {
- throw new \Exception('2');
- }
- }
- foreach ($input['size_id'] as $k=>$v){
- $data=Goodtest::find($v);
- $order_detail=new OrderDetail();
- $order_detail->order_id=$order->id;
- $order_detail->goods_id=$data->id;
- $order_detail->num=$input['num'][$k];
- $order_detail->money=$input['num'][$k]*$data->money;
- $order_detail->goods_name=$data->name;
- $order_detail->goods_size=$data->size;
- $order_detail->goods_price=$data->money;
- $order_detail->goods_unit=$data->unit;
- if (!$order_detail->save()){
- Log::error('{-----订单详情保存出错-----}'.$user->id);
- throw new \Exception('订单详情出错');
- }
- $data->sold_num=$data->sold_num+$input['num'][$k];
- $data->storage=Cache::get('dwbs_good_num'.$data->id);
- if (!$data->save()){
- throw new \Exception('3');
- }
- }
- $order_ids=$order->id;
- $order_nums=$order->order_num;//记录下订单的ID
- $goodsInfo='';
- $goodsInfos='';
- foreach($input['size_id'] as $key => $val){
- $goods=Goodtest::find($val);
- if(empty($goodsInfos)){
- $goodsInfos=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfos.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- if($key<=5){
- if(empty($goodsInfo)){
- $goodsInfo=$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }else{
- $goodsInfo.=','.PHP_EOL.$goods->name.'-'.$goods->size.'*'.$input['num'][$key];
- }
- }elseif($key==6){
- $goodsInfo.=',...';
- }
- }
- $orderlog=new Orderlog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = $user->nickname;
- $orderlog->log_title = '初始订单数据';
- $orderlog->log_text = $goodsInfos;
- if (!$orderlog->save()){
- throw new \Exception(1);
- }
- if($users->openid){
- $mes['openid']=$users->openid;
- $mes['data']=[
- 'first' => '您的订单已提交成功',
- 'keyword1' => $goodsInfo,
- 'keyword2' => $order_nums,
- 'keyword3' => number_format($input['money'], 2),
- 'remark' => '点击链接进入系统,查看详情',
- ];
- event(new SubmitOrdersInfoEvent($mes));
- // if ($pay_money!=0){
- // if($users->openid){
- // $mes['openid']=$users->openid;
- // $mes['data']=[
- // 'first' => '您的订单:'.$order->order_num.'已扣款成功',
- // 'keyword1' => '-'.number_format($pay_money, 2),
- // 'keyword2' => number_format($users->money, 2),
- // 'keyword3' => date("Y-m-d H:i"),
- // 'keyword4' => '提交订单自动支付',
- // 'remark' => '点击链接进入系统,查看详情',
- // ];
- // event(new OrderPayEvent($mes));
- // }
- // }
- }
- }
- DB::commit();
- return $this->success(['order_id'=>$order_ids,'order_num'=>$order_nums]);
- }catch (\Exception $exception){
- Log::error('------------提交订单出错,出错信息为------:'.$exception);
- DB::rollBack();
- return $this->error('40011','','订单出错');
- }
- }
- /**订单结算通知**/
- public function nopaymessage(){
- $id=Auth::user()->id;
- $user=User::find($id);
- $activity=Activity::where('is_ing',1)->first();
- $orders=Ordertest::where('user_id',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('is_deleted',0)->get();
- $money=0;
- $pay_money=0;
- $no_pay_money=0;
- $wait_back_money=0;
- foreach ($orders as $k=>$v){
- $money+=$v->money;
- $pay_money+=$v->pay_money;
- $no_pay_money+=$v->no_pay_money;
- $wait_back_money+=$v->wait_back_money;
- }
- try {
- if($user->openid){
- if ($wait_back_money==0){
- $remark='点击链接进入系统,查看详情';
- }else{
- $remark='其中包含需要退款的金额共'.$wait_back_money.'元。点击链接进入系统,查看详情';
- }
- $mes['openid']=$user->openid;
- $mes['data']=[
- 'first' => '您在'.$activity->title.'活动中下的订单支付情况如下:',
- 'keyword1' => number_format($money,2),
- 'keyword2' => number_format($pay_money,2),
- 'keyword3' => number_format($no_pay_money,2),
- 'keyword4' => date("Y-m-d H:i"),
- 'remark' => $remark,
- ];
- event(new OrderPayInfoEvent($mes));
- }
- }catch (\Exception $exception){
- }
- }
- /*生成订单编号*/
- public function order_num(){
- $user=Auth::user();
- $number='DWBS-'.date('Ymd',time()).mb_substr(time(),7,10).'-'.rand(1111,9999);
- $num=Ordertest::where('order_num',$number)->count();
- if ($num>0){
- $number=$this->order_num();
- return $number;
- }
- return $number;
- }
- /*生成订单编号*/
- public function order_nums(){
- $user=Auth::user();
- $number='DWBS-'.date('Ymd',time()).mb_substr(time(),7,10).'-'.rand(1111,9999);
- $num=Ordertest::where('order_num',$number)->count();
- if ($num>0){
- $number=$this->order_num();
- return $number;
- }
- return $number;
- }
- /*
- * 订单详情
- * */
- public function order_detail(Request $request){
- $rules=[
- 'order_num'=>'required',
- ];
- $message=[
- 'order_num.message'=>'订单id是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error('40012','',$vali->errors()->first());
- }
- // DB::enableQueryLog();
- $order=Ordertest::where('order_num',$request->order_num)->with(['belong_user'])->first();
- $detail=OrderDetail::where('order_id',$order->id)->groupBy('goods_name')->get();
- foreach ($detail as $k=>$v){
- $order_detail=OrderDetail::where('order_id',$v->order_id)->where('goods_name',$v->goods_name)->with(['get_good'])->get();
- $size=[];
- $size_id=[];
- $num=[];
- foreach ($order_detail as $ke=>$va){
- $size[$ke]=$va->get_good->size;
- $size_id[$ke]=$va->goods_id;
- $num[$ke]=$va->num;
- }
- $re[$k]['name']=$v->goods_name;
- $re[$k]['size']=$size;
- $re[$k]['size_id']=$size_id;
- $re[$k]['attr_id']=$v->get_good->attr_id;
- $re[$k]['num']=$num;
- $re[$k]['money']=$v->money/$v->num;
- $re[$k]['unit']=$v->get_good->unit;
- $re[$k]['main_img']=$v->get_good->main_img;
- // $re[$k]['remark']=$v->remark;
- $re[$k]['banner_img']=$v->get_good->banner_img;
- $re[$k]['sec_attr']=$v->get_good->sec_attr;
- }
- $activity=Activity::where('is_ing',1)->first();
- $time=Carbon::now();
- $bigstatus=false;
- if ($activity){
- if ($time<=$activity->end_time && $time>=$activity->start_time){
- $bigstatus=true;
- }
- }
- $all_data=[
- // 'order_num'=>$order->ordersn,
- // 'time'=>strtotime($order->created_at)*1000,
- // 'status'=>$order->status,
- 'address'=>[
- 'city'=>$order->address->city,
- 'provice'=>$order->address->province,
- 'area'=>$order->address->town,
- "address"=>$order->address->address,
- "con_name"=>$order->address->username,
- "con_mobile"=>$order->address->mobile,
- ],
- 'remark'=>$order->remark,
- 'track_number'=>$order->track_number==null?'':$order->track_number,
- 'track_time'=>$order->track_time==null?'':$order->track_time,
- 'track_remark'=>$order->track_remark==null?'':$order->track_remark,
- 'track_company'=>$order->track_company==null?'':$order->track_company,
- 'track_status'=>$order->track_status,
- 'belong_user'=>$order->belong_user,
- 'bigstatus'=>$bigstatus,
- 'biggift'=>DB::table('big_gift_apply')->where('order_id',$order->id)->where('is_deleted',0)->first(),
- 'list'=>$re
- ];
- return $this->success($all_data);
- }
- /*
- *订单日志
- */
- public function get_log(Request $request){
- $rules=[
- 'order_num'=>'required',
- ];
- $message=[
- 'order_num.required'=>'订单id是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error('40012','',$vali->errors()->first());
- }
- $order_id=Ordertest::where('order_num',$request->order_num)->value('id');
- $data=Orderlog::where('order_id',$order_id)->get();
- return $this->success_list($data);
- }
- /*
- * 支付订单
- * */
- public function pay_order(Request $request){
- // Log::error(json_encode($request->all()));
- return $this->error(40014,'','活动期间不能支付,活动后统一支付');
- $rules=[
- 'order_id'=>'required',
- ];
- $message=[
- 'order_id.required'=>'订单id是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error('40012','',$vali->errors()->first());
- }
- $users=Auth::user();
- $order=Ordertest::find($request->order_id);
- if ($order->pay_status!=0){
- return $this->error(40014,'','订单已经支付,请勿重复支付');
- }
- $user=User::find($users->id);
- if ($user->money<$order->money){
- return $this->error(40015,'','所剩余额不足');
- }
- DB::beginTransaction();
- try{
- $order->pay_status=2;
- $order->pay_money=$order->money;
- $order->no_pay_money=0;
- if (!$order->save()){
- Log::error('11111');
- throw new \Exception('1');
- }
- $user->money=$user->money-$order->money;
- if (!$user->save()){
- Log::error('222222');
- throw new \Exception('2');
- }
- $user_pay=new UserPay();
- $user_pay->user_id=$user->id;
- $user_pay->pay_money=$order->money;
- $user_pay->type=1;
- $user_pay->op_name=$user->nickname;
- $user_pay->order_num=$order->order_num;
- $user_pay->pay_num=$this->pay_num();
- $user_pay->user_money=$user->money;
- $user_pay->remark='订单编号为'.$order->order_num;
- if (!$user_pay->save()){
- Log::error('3333333');
- throw new \Exception('3');
- }
- if($users->openid){
- $mes['openid']=$users->openid;
- $mes['data']=[
- 'first' => '您的订单:'.$order->order_num.'已扣款成功',
- 'keyword1' => '-'.number_format($order->money, 2),
- 'keyword2' => number_format($user->money, 2),
- 'keyword3' => date("Y-m-d H:i"),
- 'keyword4' => '用户支付',
- 'remark' => '点击链接进入系统,查看详情',
- ];
- event(new OrderPayEvent($mes));
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- Log::error('支付订单出错'.$exception);
- return $this->error(40016,'','支付失败,请重试');
- }
- }
- /*
- * 订单列表
- * */
- public function order_list(Request $request){
- $rules=[
- 'status'=>'required',
- ];
- $message=[
- 'status.required'=>'订单id是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error(40017,'',$vali->errors()->first());
- }
- $user=Auth::user();
- $user=User::find($user->id);
- $type=$request->status;
- if ($type==0){
- $order_all=Ordertest::where('user_id','=',$user->id)
- ->with(['order_details'])->orderByDesc('created_at')->paginate(15);
- }elseif($type==1){
- $order_all=Ordertest::where('user_id','=',$user->id)
- ->where('pay_status','=',0)->orderByDesc('created_at')->where('is_deleted',0)->paginate(15);
- }elseif ($type==2){
- $order_all=Ordertest::where('user_id','=',$user->id)
- ->where(function ($q){
- $q->where('pay_status','=',2)->whereIn('status',[0,1,2])->orwhere('apply_status',1);
- })->orderByDesc('created_at')->where('is_deleted',0)->paginate(15);
- }elseif ($type==3){
- $order_all=Ordertest::where('user_id','=',$user->id)
- ->where('pay_status','=',2)->where('is_deleted',0)->where('status',3)
- ->orderByDesc('created_at')->paginate(15);
- }elseif ($type==4){
- $order_all=Ordertest::where('user_id','=',$user->id)
- ->where('pay_status','=',2)->where('is_deleted',0)->where('status',4)
- ->orderByDesc('created_at')->paginate(15);
- }
- $res=[];
- foreach ($order_all as $k=>$v){
- // $detail=OrderDetail::where('order_id',$v->id)->with(['get_good'])->groupBy('goods_name')->get();
- $re=[];
- // $d=[];
- foreach ($v->order_details as $key=>$value){
- // $order_detail=OrderDetail::where('id',$value->id)->where('goods_name',$value->goods_name)->with(['get_good'])->get();
- // $size=[];
- // foreach ($order_detail as $ke=>$va){
- // $size[$ke]=$va->get_good->size;
- // $size_id[$ke]=$va->goods_id;
- // }
- // $re[$key]['name']=$value->goods_name;
- // $re[$key]['size']=$size;
- // $re[$key]['size_id']=$size_id;
- // $re[$key]['num']=$value->num;
- // $re[$key]['money']=$value->money/$value->num;
- // $re[$key]['unit']=$value->get_good->unit;
- $re[$key]['main_img']=$value->main_img;
- // $re[$key]['banner_img']=$value->get_good->banner_img;
- // $re[$key]['sec_attr']=$value->get_good->sec_attr;
- }
- $res[$k]['id']=$v->id;
- $res[$k]['order_id']=$v->id;
- $res[$k]['order']=$re;
- $res[$k]['type']=$v->type;
- $res[$k]['order_type']=$v->order_type;
- $res[$k]['total']=$v->total;
- $res[$k]['is_deleted']=$v->is_deleted==0?false:true;
- $res[$k]['pay_status']=$v->pay_status==0?false:true;
- $res[$k]['status']=$v->status;
- $res[$k]['order_num']=$v->order_num;
- $res[$k]['money']=$v->money;
- $res[$k]['is_merge']=$v->is_merge;
- $res[$k]['order_type']=$v->order_type;
- $res[$k]['track_status']=$v->track_status;
- $res[$k]['apply_status']=$v->apply_status;
- $res[$k]['destroy_cause']=$v->destroy_cause;
- $res[$k]['destroy_status']=$v->destroy_status;
- $res[$k]['reject_cause']=$v->reject_cause;
- if ($v->address){
- if ($v->get_address->isEmpty()){
- $res[$k]['address']=$v->address;
- $res[$k]['address']['level']=null;
- $res[$k]['address']['nickname']=$v->address->username;
- }else{
- $address=$v->get_address[0];
- $res[$k]['address']=$v->address;
- $res[$k]['address']['level']=$address->level;
- $res[$k]['address']['nickname']=$address->nickname==null?$address->username:$address->nickname;
- }
- }
- $res[$k]['created_at']=$v->created_at->toDateTimeString();
- if ($v->is_deleted){
- $res[$k]['deleted_time']=$v->updated_at->toDateTimeString();
- }
- if ($v->status==3||$v->status==4){
- if (!empty($v->track_number)){
- $res[$k]['express']='https://m.kuaidi100.com/app/query/?com='.$v->track_company.'&nu='.$v->track_number.'&coname';
- }
- }
- }
- // dd(DB::getQueryLog());
- return $this->success_list($res,'',$order_all->total());
- }
- /*
- *订单作废-----订单修改
- */
- public function destory(Request $request){
- $rules=[
- 'order_num'=>'required',
- 'destroy_cause'=>'required',
- ];
- $message=[
- 'order_num.required'=>'订单id是必填项',
- 'destroy_cause.required'=>'作废原因是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error(40016,'',$vali->errors()->first());
- }
- $order=Ordertest::where('order_num',$request->order_num)->lockForUpdate()->first();
- if (!$order){
- return $this->error(300,'','查无此订单,请重试');
- }
- if ($order->is_deleted==1){
- return $this->error(400214,'','该订单已作废,请刷新订单列表');
- }
- DB::beginTransaction();
- try{
- $order->is_deleted=1;
- $order->destroy_cause=$request->input('destroy_cause','');
- $order->wait_back_money=0;
- $order->pay_status=0;
- if (!$order->save()){
- throw new \Exception('1');
- }
- // if ($order->pay_status!=0){
- // return $this->error(40013,'','该订单已支付,请联系客服修改');
- // }
- if ($order->pay_money!=0){
- $user=User::where('id',$order->user_id)->lockForUpdate()->first();
- $user->money=$user->money+$order->pay_money;
- if (!$user->save()){
- throw new \Exception('2');
- }
- $user_logs=UserPay::where('user_id',$order->user_id)->lockForUpdate()->orderByDesc('id')->limit(1)->first();
- $user_log=new UserPay();
- $user_log->user_id=$order->user_id;
- $user_log->pay_money=$order->pay_money;
- $user_log->op_name=$user->nickname;
- $user_log->order_num=$order->order_num;
- $user_log->pay_num=$this->pay_num();
- $user_log->type=2;
- $user_log->remark='订单作废退回';
- $user_log->user_money=$user_logs->user_money+$order->pay_money;
- if (!$user_log->save()){
- throw new \Exception('3');
- }
- }
- $orderlog = new Orderlog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = '用户本人';
- $orderlog->log_title = '作废订单';
- $orderlog->log_text = '用户本人自动作废订单';
- if (!$orderlog->save()){
- throw new \Exception('3');
- }
- $orderdetail=OrderDetail::where('order_id',$order->id)->get();
- foreach ($orderdetail as $k=>$v){
- $good=Goodtest::find($v->goods_id);
- $good->storage=$good->storage+$v->num;
- $good->sold_num=$good->sold_num-$v->num;
- Cache::increment('dwbs_good_num'.$v->goods_id,$v->num);
- if (!$good->save()){
- throw new \Exception('2');
- }
- }
- // $orders=Ordertest::where('order_num',$request->order_num)->first();
- // if ($orders->pay_money>0){
- // return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废');
- // }
- // if ($orders->pay_status!=0){
- // return $this->error(40013,'','该订单已由后台进行支付,暂时不能作废');
- // }
- DB::commit();
- try {
- $user=User::find($order->user_id);
- if($user->openid){
- $mes['openid']=$user->openid;
- $mes['data']=[
- 'first' => '您的订单已主动作废',
- 'keyword1' => $order->order_num,
- 'keyword2' => $request->destroy_cause,
- 'remark' => '点击链接进入系统,查看详情',
- ];
- event(new DestoryOrder($mes));
- }
- }catch (\Exception $exception){
- }
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error('40018','','订单作废失败,请重试');
- }
- }
- public function pay_num(){
- $num=date('Ymd',time()).'100000'.str_pad(Auth::user()->id,6,0,STR_PAD_LEFT).rand(11111,99999);
- $count=UserPay::where('pay_num',$num)->count();
- if ($count>0){
- $num=$this->pay_num();
- return $num;
- }
- return $num;
- }
- /*确认收货
- * **/
- public function sure_order(Request $request){
- $rules=[
- 'order_num'=>'required',
- ];
- $message=[
- 'order_num.required'=>'订单id是必填项',
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error(40017,'',$vali->errors()->first());
- }
- $order=Ordertest::where('order_num',$request->order_num)->first();
- $order->status=4;
- $order->save();
- return $this->success([]);
- }
- /*
- * 订单统计
- * */
- public function order_data(Request $request){
- $user=Auth::user();
- // $user=User::where('mobile',13509768818)->first();
- $activity=Activity::where('is_ing',1)->first();
- if (Carbon::now()->addDays(-3)>$activity->end_time){
- $data=[
- 'hard'=>0,
- 'simple'=>0,
- 'old'=>0,
- 'newold'=>0,
- 'youth'=>0,
- 'hard_money'=>0,
- 'simple_money'=>0,
- 'old_money'=>0,
- 'newold_money'=>0,
- 'youth_money'=>0,
- 'hard_all'=>0,
- 'simple_all'=>0,
- 'old_all'=>0,
- 'newold_all'=>0,
- 'youth_all'=>0,
- 'money'=>0,
- 'pay_money'=>0,
- 'no_pay_money'=>0,
- ];
- return $this->success($data);
- }
- DB::enableQueryLog();
- $wherebetween=[];
- $where=function ($query){
- $query->where('is_deleted',0);
- };
- $order_all=Ordertest::where($where)->where('user_id',$user->id)->get();
- $hard_all=0;
- $simple_all=0;
- $old_all=0;
- $newold_all=0;
- $youth_all=0;
- $hard_good=Goodtest::where('main_attr','大卫博士精装版')->pluck('id')->toArray();
- $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray();
- $old_good=Goodtest::where('main_attr','大卫博士高腰版')->pluck('id')->toArray();
- $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray();
- $youth_good=Goodtest::where('main_attr','大卫博士青春版')->pluck('id')->toArray();
- foreach ($order_all as $k=>$v) {
- $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first();
- foreach ($order->order_detail as $ke=>$va){
- if (in_array($va->goods_id,$hard_good)){
- $hard_all+=$va->num;
- }elseif (in_array($va->goods_id,$simple_good)){
- $simple_all+=$va->num;
- }elseif (in_array($va->goods_id,$old_good)){
- $old_all+=$va->num;
- }elseif (in_array($va->goods_id,$newold_good)){
- $newold_all+=$va->num;
- }elseif (in_array($va->goods_id,$youth_good)){
- $youth_all+=$va->num;
- }
- }
- }
- if ($request->has('start')){
- if ($request->start){
- $start=date('Y-m-d H:i:s',strtotime($request->start));
- $end=date('Y-m-d H:i:s',strtotime($request->end));
- $wherebetween=function ($query)use($start,$end){
- $query->whereBetween('created_at',[$start,$end]);
- };
- }
- }
- $orders=Ordertest::where($where)->where('user_id',$user->id)->where($wherebetween)->get();
- $hard=0;
- $simple=0;
- $old=0;
- $newold=0;
- $youth=0;
- $old_money=0;
- $newold_money=0;
- $simple_money=0;
- $hard_money=0;
- $youth_money=0;
- $money=0;
- $pay_money=0;
- $no_pay_money=0;
- foreach ($orders as $k=>$v) {
- $order=Ordertest::where('id',$v->id)->with(['order_detail'])->first();
- foreach ($order->order_detail as $ke=>$va){
- if (in_array($va->goods_id,$hard_good)){
- $hard+=$va->num;
- $hard_money+=$va->money;
- }elseif (in_array($va->goods_id,$simple_good)){
- $simple+=$va->num;
- $simple_money+=$va->money;
- }elseif (in_array($va->goods_id,$old_good)){
- $old+=$va->num;
- $old_money+=$va->money;
- }elseif (in_array($va->goods_id,$newold_good)){
- $newold+=$va->num;
- $newold_money+=$va->money;
- }elseif (in_array($va->goods_id,$youth_good)){
- $youth+=$va->num;
- $youth_money+=$va->money;
- }
- }
- $money+=$v->money;
- $pay_money+=$v->pay_money;
- $no_pay_money+=$v->no_pay_money;
- }
- $data=[
- 'hard'=>$hard,
- 'simple'=>$simple,
- 'old'=>$old,
- 'newold'=>$newold,
- 'youth'=>$youth,
- 'hard_money'=>$hard_money,
- 'simple_money'=>$simple_money,
- 'old_money'=>$old_money,
- 'newold_money'=>$newold_money,
- 'youth_money'=>$youth_money,
- 'hard_all'=>$hard_all,
- 'simple_all'=>$simple_all,
- 'old_all'=>$old_all,
- 'newold_all'=>$newold_all,
- 'youth_all'=>$youth_all,
- 'money'=>$money,
- 'pay_money'=>$pay_money,
- 'no_pay_money'=>$no_pay_money,
- ];
- return $this->success($data);
- }
- public function order_rank(Request $request){
- $user_id=Auth::user()->id;
- // $user=User::where('mobile',13509768818)->first();
- // $user_id=$user->id;
- $actity=Activity::where('is_ing',1)->first();
- if (Carbon::now()->addDays(-3)>$actity->end_time){
- return $this->success(['all'=>[],'list'=>[], 'size'=>15, 'total'=>0]);
- }
- $wherebetween=[];
- if ($request->has('start')){
- if ($request->start){
- $start=date('Y-m-d H:i:s',strtotime($request->start));
- $end=date('Y-m-d H:i:s',strtotime($request->end));
- $wherebetween=function ($query)use($start,$end){
- $query->whereBetween('order_test.created_at',[$start,$end]);
- };
- }
- }
- $re=Ordertest::where('is_deleted',0)->with(['address','get_address'])->where('user_id',$user_id)->where($wherebetween)->get()->groupBy('address.mobile')->toArray();
- $hard_good=Goodtest::where('main_attr','like','%精装%')->pluck('id')->toArray();
- $simple_good=Goodtest::where('main_attr','大卫博士简约版')->pluck('id')->toArray();
- $old_good=Goodtest::where('main_attr','大卫博士高腰版')->pluck('id')->toArray();
- $newold_good=Goodtest::where('main_attr','大卫博士纯棉老人版')->pluck('id')->toArray();
- $youth_good=Goodtest::where('main_attr','大卫博士青春版')->pluck('id')->toArray();
- $i=0;
- $res=[];
- foreach ($re as $k=>$v){
- $ids=Address::where('mobile',$v[0]['address']['mobile'])->pluck('id');
- $order_all=Ordertest::where('is_deleted',0)->where('user_id',$user_id)->where($wherebetween)->with(['order_detail'])->whereIn('address_id',$ids)->get();
- $hard_all=0;
- $simple_all=0;
- $old_all=0;
- $newold_all=0;
- $youth_all=0;
- foreach ($order_all as $key=>$value){
- foreach ($value->order_detail as $ke=>$va){
- if (in_array($va->goods_id,$hard_good)){
- $hard_all+=$va->num;
- }elseif (in_array($va->goods_id,$simple_good)){
- $simple_all+=$va->num;
- }elseif (in_array($va->goods_id,$old_good)){
- $old_all+=$va->num;
- }elseif (in_array($va->goods_id,$newold_good)){
- $newold_all+=$va->num;
- }elseif (in_array($va->goods_id,$youth_good)){
- $youth_all+=$va->num;
- }
- }
- }
- $res[$i]['username']=$v[0]['address']['username'];
- $res[$i]['mobile']=$v[0]['address']['mobile'];
- $res[$i]['hard']=$hard_all;
- $res[$i]['simple']=$simple_all;
- $res[$i]['old']=$old_all;
- $res[$i]['newold']=$newold_all;
- $res[$i]['youth']=$youth_all;
- if (empty($v[0]['get_address'])){
- $res[$i]['address']['nickname']=null;
- $res[$i]['address']['level']=null;
- }else{
- $res[$i]['address']['nickname']=$v[0]['get_address'][0]['nickname'];
- $res[$i]['address']['level']=$v[0]['get_address'][0]['level'];
- }
- $res[$i]['all']=$old_all+$simple_all+$hard_all+$newold_all+$youth_all;
- $i++;
- }
- return $this->success_list($res);
- }
- /**-----T恤统计------**/
- public function type_count(){
- $user=Auth::user();
- $data=DB::table('crown_count')->where('crown_mobile','=',$user->mobile)->orderBy('id')->get();
- $re=[];
- foreach ($data as $k=>$v){
- $re[$k]['nickname']=$v->nickname;
- $re[$k]['id']=$v->id;
- $re[$k]['mobile']=$v->mobile;
- $re[$k]['province']=$v->province;
- $re[$k]['city']=$v->city;
- $re[$k]['area']=$v->area;
- $re[$k]['address']=$v->address;
- $re[$k]['total']=$v->total;
- $re[$k]['type_l']=$v->type_l;
- $re[$k]['type_xl']=$v->type_xl;
- $re[$k]['type_3xl']=$v->type_3xl;
- }
- return $this->success($re);
- }
- /**统计提交**/
- public function type_submit(Request $request){
- $time='2020-05-16 18:00:00';
- $now=Carbon::now()->timestamp;
- if ($now>strtotime($time)){
- return $this->error(40013,'','提交时间已过,请联系客服(政委)');
- }
- $rule=[
- 'id'=>'required',
- 'type_l'=>'required',
- 'type_xl'=>'required',
- 'type_3xl'=>'required',
- ];
- $message=[
- 'id.required'=>'id必填项',
- 'type_l.reuqired'=>'type_l必填项',
- 'type_xl.reuqired'=>'type_xl必填项',
- 'type_3xl.reuqired'=>'type_3xl必填项',
- ];
- $input=$request->all();
- $vali=Validator::make($request->all(),$rule,$message);
- if ($vali->fails()){
- return $this->error(40013,'',$vali->errors()->first());
- }
- DB::beginTransaction();
- try{
- foreach ($input['id'] as $k=>$v){
- $user=CrownCount::find($v);
- $num=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k];
- if ($num>$user->total){
- return $this->error(40013,'',$user->nickname.'的所填礼品总量超过规定数量,请重新选择');
- }
- $user->type_l=$input['type_l'][$k];
- $user->type_xl=$input['type_xl'][$k];
- $user->type_3xl=$input['type_3xl'][$k];
- $user->exchange=$input['type_l'][$k]+$input['type_xl'][$k]+$input['type_3xl'][$k];
- if (!$user->save()){
- throw new \Exception('1');
- }
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- Log::error('{-------统计出错------}'.$exception);
- DB::rollBack();
- return $this->error(40013,'','提交失败,请重新提交');
- }
- }
- /**查看已获得赠品**/
- public function get_data(Request $request){
- $data=Ordertest::where('order_num',$request->order_num)->with(['get_gift_infos'])->first();
- $i=0;
- $re=[];
- if ($data->get_gift){
- foreach ($data->get_gift_infos as $ke=>$va){
- $re[$i]['name']=$va->name;
- $re[$i]['img']=$va->img;
- $re[$i]['num']=$va->pivot->num;
- $i++;
- }
- }
- return $this->success_list($re);
- }
- /**获取赠品信息**/
- public function get_gift(Request $request){
- $now=Carbon::now()->tz(env('APP_TIMEZONE'))->toDateTimeString();
- $active=Activity::where('start_time','<=',$now)
- ->where('end_time','>=',$now)->where('is_ing',1)->first();
- if ($active){
- $gifts=Gift::where('activity_id',$active->id)->get();
- if ($gifts){
- return $this->success_list($gifts);
- }else{
- return $this->error(600,'','此次活动没有赠品');
- }
- }else{
- return $this->error(600,'','活动时间已过');
- }
- }
- /***获取订单的物流信息**/
- public function get_order_expresses(Request $request){
- $rule=[
- 'order_num'=>'required'
- ];
- $message=[
- 'order_num.required'=>'订单编号没有填写'
- ];
- $va=Validator::make($request->all(),$rule,$message);
- if ($va->fails()){
- return $this->error(40012,'',$va->errors()->first());
- }
- $data=Ordertest::where('order_num',$request->order_num)->with(['get_express','address'])->first();
- $re=[];
- if ($data->get_express){
- foreach ($data->get_express as $k=>$v){
- $re[$k]['id']=$v->id;
- $re[$k]['order_id']=$v->order_id;
- $re[$k]['express_com']=$v->express_com;
- $re[$k]['express_number']=$v->express_number;
- $re[$k]['status']=$v->status;
- $re[$k]['note']=$v->note;
- if ($v->created_at){
- $re[$k]['created_at']=$v->created_at->toDateTimeString();
- }else{
- $re[$k]['created_at']=$v->created_at;
- }
- $re[$k]['city']=$data->address->city;
- $re[$k]['area']=$data->address->town;
- }
- }
- return $this->success($re);
- }
- /**获取物流轨迹**/
- public function get_express(Request $request,ExpressHandler $expressHandler){
- $express=Express::find($request->id);
- if (!$express){
- return $this->error(40011,'','该物流订单不存在');
- }
- if ($express->status==1){
- return $this->success(json_decode($express->data));
- }else{
- $re=$expressHandler->search($express->express_number,$express->express_code);
- $re=(array)$re;
- if ($re['State']==3){
- DB::beginTransaction();
- try{
- $express->data=json_encode($re);
- $express->status=1;
- $express->save();
- DB::commit();
- }catch (\Exception $exception){
- Log::error('-------物流信息保存出错--------'.$exception);
- DB::rollBack();
- }
- }
- return $this->success($re);
- }
- }
- public function get_activity(){
- // return $this->success(['start_time'=>1675840487000,'end_time'=>1675840497000]);
- $re=Activity::where('is_ing',1)->first();
- $data=[
- 'start_time'=>strtotime($re->start_time)*1000,
- 'end_time'=>strtotime($re->end_time)*1000,
- ];
- return $this->success($data);
- }
- public function get_activity_list(Request $request){
- if ($request->has('page_index')){
- $count=Activity::where('disabled',0)->count();
- $data=Activity::where('disabled',0)->limit(1)->OrderByDesc('id')->skip(($request->page_index-1)*$request->page_size)->take($request->page_size)->get();
- return $this->success_list($data,'',$count);
- }else{
- $re=Activity::where('disabled',0)->limit(1)->orderByDesc('id')->get();
- $data=[];
- foreach ($re as $k=>$v){
- $data[$k]['title']=$v->title;
- $data[$k]['id']=$v->id;
- $data[$k]['start_time']=$v->start_time;
- $data[$k]['end_time']=$v->end_time;
- }
- return $this->success($data);
- }
- }
- public function GetRelation($id){
- $u=User::find($id);
- $da['belong_user']=$id;
- $da['belong_level']=$u->level;
- $da['agent_user']='';
- $da['agent_level']='';
- $da['top_user']='';
- $da['time']=Carbon::now()->toDateTimeString();
- if ($u->level==1){
- $uu=User::find($u->agent_id);
- if ($uu->level==3){
- $da['top_user']=$uu->id;
- $da['top_level']=3;
- }else{
- $da['agent_user']=$uu->id;
- $da['agent_level']=$uu->level;
- $da['top_user']=$uu->agent_id;
- }
- }elseif ($u->level==2){
- $da['top_user']=$u->agent_id;
- $da['top_level']=3;
- }
- return $da;
- }
- public function GetUserHonor(Request $request){
- $data=$request->all();
- $activity_id=$data['id'];
- $id=Auth::user()->id;
- $re=HonorInfo::where('activity_id',$activity_id)->where('user_id',$id)->first();
- if (!$re){
- $bid_gift=0;
- $honor_wal=0;
- $tour=0;
- $rank=0;
- $activity=Activity::find($activity_id);
- $money=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])->where('user_id',$id)->where('is_deleted',0)->sum('money');
- if ($money!=0){
- $rank_arr=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])
- ->select(DB::raw('sum(money) as money_all'))
- ->where('is_deleted',0)->groupBy('user_id')->orderBy('money_all','desc')->get()->toArray();
- $rank_arr=array_column($rank_arr,'money_all');
- array_unique($rank_arr);
- $rank=array_search($money,$rank_arr);
- $res=DB::table('activity_limit')->Where('activity_id',$activity_id)->where('type',1)->get();
- if ($res){
- foreach ($res as $k=>$v){
- if ($v->title=='大礼包B'){
- if ($v->account<=$money){
- $bid_gift=1;
- }
- }elseif ($v->title=='荣誉墙'){
- if ($v->account<=$money){
- $honor_wal=1;
- }
- }elseif ($v->title=='旅游'){
- if ($v->account<=$money){
- $tour=1;
- }
- }
- }
- }
- }else{
- $ress=DB::table('gift_user_img')->where('activity_id',$activity->id)->where('user_id',$id)->first();
- if ($ress){
- $bid_gift=1;
- }
- $rank=Ordertest::whereBetween('created_at',[$activity->start_time,$activity->end_time])
- ->where('is_deleted',0)->groupBy('user_id')->get();
- $rank=count($rank);
- }
- $activity_id_now=Activity::where('is_ing',1)->value('id');
- if ($activity_id==$activity_id_now){
- $data['activity_id']=$activity_id;
- $data['user_id']=$id;
- $data['user_ids']=$id;
- $data['rank']=$rank+1;
- $data['big_gift']=$bid_gift;
- $data['tour']=$tour;
- $data['honor_wall']=$honor_wal;
- $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();
- $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();
- $data['giftA']=$giftA;
- $data['giftB']=$giftB;
- return $this->success($data);
- }else{
- $hon_user=new HonorInfo();
- $hon_user->activity_id=$activity_id;
- $hon_user->user_id=$id;
- $hon_user->rank=$rank+1;
- $hon_user->big_gift=$bid_gift;
- $hon_user->tour=$tour;
- $hon_user->honor_wall=$honor_wal;
- $hon_user->order_money=$money;
- $hon_user->save();
- return $this->success($hon_user);
- }
- }else{
- $giftA=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',0)->where('img_type',1)->first();
- $giftB=DB::table('gift_user_img')->where('user_id',$id)->where('activity_id',$activity_id)->where('type',1)->where('img_type',1)->first();
- $re->giftA=$giftA;
- $re->giftB=$giftB;
- return $this->success($re);
- }
- }
- public function GetOrderDetail(Request $request){
- $order=Ordertest::where('id',$request->id)->first();
- if (!$order){
- return $this->error(50021);
- }
- $arrs=Cache::get('DLS_GOOD_ARRS');
- if (!$arrs){
- $arrs=$this->GetGoodArr();
- }
- if ($order->arr_json){
- $order_de=OrderDetail::where('order_id',$request->id)->get();
- $arrss=[];
- foreach ($order_de as $k=>$v){
- $s=strpos($v->goods_name,'精');
- if (is_numeric($s)){
- $z='精-'.$v->goods_size;
- }else{
- $s=strpos($v->goods_name,'简');
- if (is_numeric($s)){
- $z='简-'.$v->goods_size;
- }else{
- $s=strpos($v->goods_name,'纯棉');
- if (is_numeric($s)){
- $z='纯棉-'.$v->goods_size;
- }else{
- $s=strpos($v->goods_name,'高');
- if (is_numeric($s)){
- $z='高-'.$v->goods_size;
- }else{
- $s=strpos($v->goods_name,'青');
- if (is_numeric($s)){
- $z='青-'.$v->goods_size;
- }
- }
- }
- }
- }
- $arrss[$z]=$v->num;
- }
- $re=json_decode($order->arr_json);
- $data=[];
- foreach ($re as $k=>$v){
- if ($k%2==0){
- $data=array_merge($v,$data);
- }
- }
- $data=array_unique($data);
- $arr=[];
- foreach ($re as $k=>$v){
- if ($k%2==0){
- $num=[];
- foreach ($data as $ke=>$va){
- $s=array_search($va,$v);
- if (is_numeric($s)){
- $num[$va]=$re[$k+1][$s];
- }else{
- $num[$va]=0;
- }
- }
- $arr[]=$num;
- }
- }
- $key=array_keys($arr[0]);
- $arr=array_merge($arr,[$arrss]);
- $a=array_intersect($arrs,$key);
- $array=[$a];
- foreach ($arr as $k=>$v){
- $arrr=[];
- foreach ($a as $ke=>$va){
- if (isset($v[$va])){
- $arrr[$ke]=$v[$va];
- }else{
- $arrr[$ke]=0;
- }
- }
- $array[]=$arrr;
- }
- return $this->success($array);
- }else{
- return $this->error(50023,'','该订单不能查看合并信息');
- }
- }
- public function GetGoodArr(){
- $good=Goodtest::where('is_deleted',0)->orderBy('sort')->orderBy('id')->get();
- $arrs=[];
- foreach ($good as $k=>$v){
- $s=strpos($v->main_attr,'精');
- if (is_numeric($s)){
- $z='精-'.$v->size;
- }else{
- $s=strpos($v->main_attr,'简');
- if (is_numeric($s)){
- $z='简-'.$v->size;
- }else{
- $s=strpos($v->main_attr,'纯棉');
- if (is_numeric($s)){
- $z='纯棉-'.$v->size;
- }else{
- $s=strpos($v->main_attr,'高');
- if (is_numeric($s)){
- $z='高-'.$v->size;
- }else{
- $s=strpos($v->main_attr,'青');
- if (is_numeric($s)){
- $z='青-'.$v->size;
- }
- }
- }
- }
- }
- $arrs[$k]=$z;
- }
- $arrs=Cache::remember('DLS_GOOD_ARRS',Carbon::now()->addYears(1),function ()use($arrs){
- return $arrs;
- });
- return $arrs;
- }
- public function GetExpresses(Request $request)
- {
- $order_ids = Ordertest::find($request->id);
- $data = Express::whereIn('order_id', $order_ids)->where('is_gift', 0)->get();
- }
- /**申请作废订单**/
- public function ApplyDestoryOrder(Request $request)
- {
- $id=$request->input('id',0);
- $cause=$request->input('destroy_cause','');
- $activity=Activity::where('is_ing',1)->first();
- $order=Ordertest::where('id','=',$id)->whereBetween('created_at',[$activity->start_time,$activity->end_time])->first();
- if (empty($order)){
- return $this->error(500216,'','该订单不是活动订单,如需作废请联系政委');
- }
- if ($order->status!=0 && $order->status!=1){
- return $this->error(500216,'','该订单状态不能作废,如需作废请联系政委');
- }
- $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();
- if ($count>=1){
- return $this->error(500216,'','申请作废列表中包含一个和该订单相同地址的申请,请完成上一个申请');
- }
- $order->apply_status=1;
- $order->destroy_cause=$cause;
- $order->destroy_status=0;
- $order->apply_time=Carbon::now()->toDateTimeString();
- $order->save();
- return $this->success([]);
- }
- /**取消作废订单**/
- public function CancleDestoryOrder(Request $request)
- {
- $id=$request->input('id',0);
- // $cause=$request->input('destroy_cause','');
- $order=Ordertest::find($id);
- $order->apply_status=0;
- $order->save();
- return $this->success([]);
- }
- public function GetExpressInnage(Request $request){
- $id=$request->input('id');
- $data=Express::where('order_id',$request->id)->where('is_gift',0)->get();
- $type_1=[];
- $type_2=[];
- $type_3=[];
- $type_4=[];
- $type_5=[];
- foreach ($data as $k=>$v){
- $arr=explode('+',$v->note);
- foreach ($arr as $ka=>$va){
- $arrs=explode(':',$va);
- if (mb_substr($arrs[0],0,1)=='女'){
- $sex='女款-';
- $sexs=0;
- $str_count=substr_count(mb_substr($arrs[0],1),'X');
- if ($str_count>=3){
- $size=$str_count.'XL';
- }else{
- $size=mb_substr($arrs[0],1);
- }
- }else{
- $sex='男款-';
- $sexs=1;
- $str_count=substr_count($arrs[0],'X');
- if ($str_count>=3){
- $size=$str_count.'XL';
- }else{
- $size=$arrs[0];
- }
- }
- if (mb_strlen($arrs[1])<4){
- if (mb_substr($arrs[1],-1)=='精'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_1[$sex.$size])){
- $type_1[$sex.$size]['num']+=$num;
- }else{
- $type_1[$sex.$size]['num']=$num;
- $type_1[$sex.$size]['sex']=$sexs;
- $type_1[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='简'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_2[$sex.$size])){
- $type_2[$sex.$size]['num']+=$num;
- }else{
- $type_2[$sex.$size]['num']=$num;
- $type_2[$sex.$size]['sex']=$sexs;
- $type_2[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='老' || mb_substr($arrs[1],-1)=='高'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_3[$sex.$size])){
- $type_3[$sex.$size]['num']+=$num;
- }else{
- $type_3[$sex.$size]['num']=$num;
- $type_3[$sex.$size]['sex']=$sexs;
- $type_3[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='棉老'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_4[$sex.$size])){
- $type_4[$sex.$size]['num']+=$num;
- }else{
- $type_4[$sex.$size]['num']=$num;
- $type_4[$sex.$size]['sex']=$sexs;
- $type_4[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='青'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_5[$sex.$size])){
- $type_5[$sex.$size]['num']+=$num;
- }else{
- $type_5[$sex.$size]['num']=$num;
- $type_5[$sex.$size]['sex']=$sexs;
- $type_5[$sex.$size]['size']=$size;
- }
- }
- }else{
- $arrr=[
- ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
- ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
- ];
- foreach ($arrr as $kes=>$vas){
- if ($vas['type']=='简'){
- if (isset($type_2[$sex.$size])){
- $type_2[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_2[$sex.$size]['num']=$vas['num'];
- $type_2[$sex.$size]['sex']=$sexs;
- $type_2[$sex.$size]['size']=$size;
- }
- }elseif($vas['type']=='高' || $vas['type']=='老'){
- if (isset($type_3[$sex.$size])){
- $type_3[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_3[$sex.$size]['num']=$vas['num'];
- $type_3[$sex.$size]['sex']=$sexs;
- $type_3[$sex.$size]['size']=$size;
- }
- }elseif($vas['type']=='青'){
- if (isset($type_5[$sex.$size])){
- $type_5[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_5[$sex.$size]['num']=$vas['num'];
- $type_5[$sex.$size]['sex']=$sexs;
- $type_5[$sex.$size]['size']=$size;
- }
- }elseif($vas['type']=='棉老'){
- if (isset($type_4[$sex.$size])){
- $type_4[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_4[$sex.$size]['num']=$vas['num'];
- $type_4[$sex.$size]['sex']=$sexs;
- $type_4[$sex.$size]['size']=$size;
- }
- }
- }
- }
- }
- }
- $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[],'youth'=>[]];
- $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get();
- $good=Goodtest::where('is_deleted',0)->where('name','大卫博士精装版')->first();
- $data['hard']['name']=$good->name;
- $data['hard']['imgurl']=$good->main_img;
- $data['hard']['spec']=[];
- foreach ($hard_de as $k=>$v){
- if (isset($type_1[$v->goods_size])){
- $n=$v->num-$type_1[$v->goods_size]['num'];
- if ($n>0){
- $data['hard']['spec'][]=[
- 'num'=>$v->num-$type_1[$v->goods_size]['num'],
- 'sex'=>$type_1[$v->goods_size]['sex'],
- 'size'=>$type_1[$v->goods_size]['size'],
- ];
- }
- }else{
- if (mb_substr($v->goods_size,0,1)=='女'){
- $sex=0;
- }else{
- $sex=1;
- }
- $size=mb_substr($v->goods_size,3);
- $data['hard']['spec'][]=[
- 'num'=>$v->num,
- 'sex'=>$sex,
- 'size'=>$size,
- ];
- }
- }
- $old_de=OrderDetail::where('goods_name','大卫博士高腰版')->where('order_id',$id)->get();
- $good=Goodtest::where('is_deleted',0)->where('name','大卫博士高腰版')->first();
- $data['old']['name']=$good->name;
- $data['old']['imgurl']=$good->main_img;
- $data['old']['spec']=[];
- foreach ($old_de as $k=>$v){
- if (isset($type_3[$v->goods_size])){
- $n=$v->num-$type_3[$v->goods_size]['num'];
- if ($n>0){
- $data['old']['spec'][]=[
- 'num'=>$v->num-$type_3[$v->goods_size]['num'],
- 'sex'=>$type_3[$v->goods_size]['sex'],
- 'size'=>$type_3[$v->goods_size]['size'],
- ];
- }
- }else{
- if (mb_substr($v->goods_size,0,1)=='女'){
- $sex=0;
- }else{
- $sex=1;
- }
- $size=mb_substr($v->goods_size,3);
- $data['old']['spec'][]=[
- 'num'=>$v->num,
- 'sex'=>$sex,
- 'size'=>$size,
- ];
- }
- }
- $youth_de=OrderDetail::where('goods_name','大卫博士青春版')->where('order_id',$id)->get();
- $good=Goodtest::where('is_deleted',0)->where('name','大卫博士青春版')->first();
- $data['youth']['name']=$good->name;
- $data['youth']['imgurl']=$good->main_img;
- $data['youth']['spec']=[];
- foreach ($youth_de as $k=>$v){
- if (isset($type_5[$v->goods_size])){
- $n=$v->num-$type_5[$v->goods_size]['num'];
- if ($n>0){
- $data['youth']['spec'][]=[
- 'num'=>$v->num-$type_5[$v->goods_size]['num'],
- 'sex'=>$type_5[$v->goods_size]['sex'],
- 'size'=>$type_5[$v->goods_size]['size'],
- ];
- }
- }else{
- if (mb_substr($v->goods_size,0,1)=='女'){
- $sex=0;
- }else{
- $sex=1;
- }
- $size=mb_substr($v->goods_size,3);
- $data['youth']['spec'][]=[
- 'num'=>$v->num,
- 'sex'=>$sex,
- 'size'=>$size,
- ];
- }
- }
- $good=Goodtest::where('is_deleted',0)->where('name','大卫博士简约版')->first();
- $data['simple']['name']=$good->name;
- $data['simple']['imgurl']=$good->main_img;
- $data['simple']['spec']=[];
- $good=Goodtest::where('is_deleted',0)->where('name','大卫博士纯棉老人版')->first();
- $data['new_old']['name']=$good->name;
- $data['new_old']['imgurl']=$good->main_img;
- $data['new_old']['spec']=[];
- return $this->success($data);
- }
- public function Innage(Request $request){
- $id=$request->input('id');
- $data=Express::where('order_id',$request->id)->where('is_gift',0)->get();
- $type_1=[];
- $type_2=[];
- $type_3=[];
- foreach ($data as $k=>$v){
- $arr=explode('+',$v->note);
- foreach ($arr as $ka=>$va){
- $arrs=explode(':',$va);
- if (mb_substr($arrs[0],0,1)=='女'){
- $sex='女款-';
- $sexs=0;
- $str_count=substr_count(mb_substr($arrs[0],1),'X');
- if ($str_count>=3){
- $size=$str_count.'XL';
- }else{
- $size=mb_substr($arrs[0],1);
- }
- }else{
- $sex='男款-';
- $sexs=1;
- $str_count=substr_count($arrs[0],'X');
- if ($str_count>=3){
- $size=$str_count.'XL';
- }else{
- $size=$arrs[0];
- }
- }
- if (mb_strlen($arrs[1])<4){
- if (mb_substr($arrs[1],-1)=='精'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_1[$sex.$size])){
- $type_1[$sex.$size]['num']+=$num;
- }else{
- $type_1[$sex.$size]['num']=$num;
- $type_1[$sex.$size]['sex']=$sexs;
- $type_1[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='简'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_2[$sex.$size])){
- $type_2[$sex.$size]['num']+=$num;
- }else{
- $type_2[$sex.$size]['num']=$num;
- $type_2[$sex.$size]['sex']=$sexs;
- $type_2[$sex.$size]['size']=$size;
- }
- }elseif (mb_substr($arrs[1],-1)=='老'){
- $num=mb_substr($arrs[1],0,-1);
- if (isset($type_3[$sex.$size])){
- $type_3[$sex.$size]['num']+=$num;
- }else{
- $type_3[$sex.$size]['num']=$num;
- $type_3[$sex.$size]['sex']=$sexs;
- $type_3[$sex.$size]['size']=$size;
- }
- }
- }else{
- $arrr=[
- ['type'=>mb_substr($arrs[1],1,1),'num'=>mb_substr($arrs[1],0,1)],
- ['type'=>mb_substr($arrs[1],3,1),'num'=>mb_substr($arrs[1],2,1)]
- ];
- foreach ($arrr as $kes=>$vas){
- if ($vas['type']=='简'){
- if (isset($type_2[$sex.$size])){
- $type_2[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_2[$sex.$size]['num']=$vas['num'];
- $type_2[$sex.$size]['sex']=$sexs;
- $type_2[$sex.$size]['size']=$size;
- }
- }else{
- if (isset($type_3[$sex.$size])){
- $type_3[$sex.$size]['num']+=$vas['num'];
- }else{
- $type_3[$sex.$size]['num']=$vas['num'];
- $type_3[$sex.$size]['sex']=$sexs;
- $type_3[$sex.$size]['size']=$size;
- }
- }
- }
- }
- }
- }
- $data=['hard'=>[],'simple'=>[],'old'=>[],'new_old'=>[]];
- $hard_de=OrderDetail::where('goods_name','大卫博士精装版')->where('order_id',$id)->get();
- $good=Goodtest::find($hard_de[0]->goods_id);
- $data['hard']['name']=$good->name;
- $data['hard']['imgurl']=$good->main_img;
- foreach ($hard_de as $k=>$v){
- if (isset($type_1[$v->goods_size])){
- $n=$v->num-$type_1[$v->goods_size]['num'];
- if ($n>0){
- $data['hard']['spec'][]=[
- 'num'=>$v->num-$type_1[$v->goods_size]['num'],
- 'sex'=>$type_1[$v->goods_size]['sex'],
- 'size'=>$type_1[$v->goods_size]['size'],
- ];
- }
- }else{
- if (mb_substr($v->goods_size,0,1)=='女'){
- $sex=0;
- }else{
- $sex=1;
- }
- $size=mb_substr($v->goods_size,3);
- $data['hard']['spec'][]=[
- 'num'=>$v->num,
- 'sex'=>$sex,
- 'size'=>$size,
- ];
- }
- }
- $old_de=OrderDetail::where('goods_name','大卫博士高腰版')->where('order_id',$id)->get();
- $good=Goodtest::find($old_de[0]->goods_id);
- $data['old']['name']=$good->name;
- $data['old']['imgurl']=$good->main_img;
- foreach ($old_de as $k=>$v){
- if (isset($type_3[$v->goods_size])){
- $n=$v->num-$type_3[$v->goods_size]['num'];
- if ($n>0){
- $data['old']['spec'][]=[
- 'num'=>$v->num-$type_3[$v->goods_size]['num'],
- 'sex'=>$type_3[$v->goods_size]['sex'],
- 'size'=>$type_3[$v->goods_size]['size'],
- ];
- }
- }else{
- if (mb_substr($v->goods_size,0,1)=='女'){
- $sex=0;
- }else{
- $sex=1;
- }
- $size=mb_substr($v->goods_size,3);
- $data['old']['spec'][]=[
- 'num'=>$v->num,
- 'sex'=>$sex,
- 'size'=>$size,
- ];
- }
- }
- return $this->success($data);
- }
- /**校验数量**/
- public function CheckGoodNum(Request $request){
- Log::error(json_encode($request->all()));
- $user=Auth::user();
- if ($user->level!=3){
- return $this->error('4001','','当前用户不是经销商');
- }
- $rules = [
- 'size_id' => 'required',
- 'total' => 'required',
- 'type' => 'required',
- 'num' => 'required',
- ];
- $message = [
- 'required' => ':attribute不能为空',
- ];
- $attributes = [
- 'size_id' => 'size_id',
- 'total' => '商品总数量',
- 'type' => '商品中总类型',
- 'num' => '单类商品商量',
- ];
- $vali = Validator::make($request->all(), $rules, $message,$attributes);
- if ($vali->fails()) {
- Log::error('{-------提交订单的参数错误--------}'.$vali->errors()->first());
- return $this->error('40010', '',$vali->errors()->first());
- }
- $input=$request->all();
- $time=Carbon::now();
- $Numarr=[70,71,72,73,74,75,76,77];
- $activity=Activity::where('is_ing',1)->first();
- if ($activity){
- if ($time>=$activity->start_time && $time<=$activity->end_time){
- if ($time<Carbon::today()->addHours(9) || $time>Carbon::today()->addHours(21)){
- return $this->error(500214,'','当前时间不能下单');
- }
- if ($activity->set_company_buy_num){
- foreach ($input['size_id'] as $k=>$v){
- if (in_array($v,$Numarr)){
- if ($input['num'][$k]%6!=0){
- $data=Goodtest::find($v);
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是六的倍数');
- }
- }else{
- if ($input['num'][$k]%3!=0){
- $data=Goodtest::find($v);
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码不是三的倍数');
- }
- }
- }
- }
- }
- }
- foreach ($input['size_id'] as $k=>$v){
- $data=Goodtest::find($v);
- if (!$data){
- return $this->error(40013,'','购物车有未知商品,请清空购物车');
- }
- $now=Carbon::now()->timestamp;
- if ($data->off_time!=null){
- if (strtotime($data->off_time)<$now){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
- }
- }
- if($data->is_show==4){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码已经下架');
- }
- if($data->is_show==1){
- return $this->error(300,'','商品'.$data->name.'的'.$data->size.'尺码未下架');
- }
- }
- foreach ($input['size_id'] as $k=>$v){
- if (Cache::get('dwbs_good_num'.$v)<$input['num'][$k]){
- $data=Goodtest::find($v);
- return $this->error(300,'',$data->name.'的'.$data->size.'尺码数量不足,请重新选择数量');
- }
- }
- return $this->success([]);
- }
- }
|