12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187 |
- <?php
- namespace Modules\Manager\Http\Controllers;
- use App\Imports\ExpressImport;
- use App\Models\Activity;
- use App\Models\Address;
- use App\Models\Studio;
- use App\Models\StudioExpress;
- use App\Models\StudioExpressStorage;
- use App\Models\StudioGood;
- use App\Models\StudioOrder;
- use App\Models\StudioOrderDetail;
- use App\Models\StudioOrderLog;
- use App\Models\StudioUser;
- use App\Models\System;
- use App\Models\User;
- use App\Models\Warea;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Validator;
- use Maatwebsite\Excel\Facades\Excel;
- class StudioController extends Controller
- {
- /*
- * 导入工作室
- * ***/
- public function importStudio(Request $request){
- // $file = $request->file('file');
- // if ( !$file->isValid()) { //判断文件是否有效
- // return redirect()
- // ->back()
- // ->withErrors('文件上传失败,请重新上传');
- // }
- // $array = Excel::toArray(new ExpressImport, request()->file('file'));
- $input=$request->all();
- $excel=$input['data'];
- DB::beginTransaction();
- try{
- foreach ($excel as $k=>$v){
- $arr=(array)($v);
- $user=User::where('mobile',$arr['代理公司手机号'])->first();
- if (!$user){
- return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号查不到对应的代理');
- }
- if ($user->level!=3){
- return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号对应的代理不是代理公司');
- }
- $re=Studio::where('user_id',$user->id)->first();
- if ($re){
- return $this->error(50028,'表格中第'.($k+2).'行的代理公司已存在'.$arr['代理公司手机号'],$re);
- }
- $studio_user=new Studio();
- $studio_user->studio_name=$arr['工作室名称'];
- $studio_user->user_id=$user->id;
- $studio_user->status=0;
- $studio_user->province=$arr['省份'];
- $studio_user->city=$arr['城市'];
- $studio_user->area=$arr['地区'];
- $studio_user->address=$arr['详细地址'];
- if (!$studio_user->save()){
- throw new \Exception('1');
- }
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(50023,$exception->getMessage());
- }
- }
- public function get_studio(Request $request){
- $input=$request->all();
- $page_index=$input['page_index'];
- $page_size=$input['page_size'];
- $num=($page_index-1)*$page_size;
- $activity_id=$input['activity_id'];
- $studio=Studio::where('studios.status',$input['status'])->with(['get_user'=>function($q){
- $q->select('users.level','users.id','users.nickname','users.mobile','users.realname');
- },'get_bonus'=>function($q)use($activity_id){
- $q->where('studio_user.activity_id',$activity_id);
- }]);
- if ($input['search_user']){
- $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id');
- $studio=$studio->whereIn('studios.user_id',$user_ids);
- }
- if ($input['search_content']){
- $studio=$studio->where('studios.studio_name','like','%'.$input['search_content'].'%');
- }
- if (isset($input['sort_type'])){
- if ($input['sort_type']==0){
- $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
- $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
- })->select('studios.studio_name','studios.province','studios.status','studios.user_id','studios.id','studios.city','studios.area','studios.address',DB::raw('ifnull(studio_user.order_money,0) as total'));
- }elseif ($input['sort_type']==1){
- $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
- $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
- })->select('studios.studio_name','studios.province','studios.status','studios.user_id','studios.id','studios.city','studios.area','studios.address',DB::raw('ifnull(studio_user.bonus,0) as total'));
- }else{
- $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
- $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
- })->select('studios.studio_name','studios.province','studios.status','studios.city','studios.user_id','studios.id','studios.area','studios.address',DB::raw('ifnull(studio_user.exchange_bonus,0) as total'));
- }
- if ($input['sort']==0){
- $desc='asc';
- }else{
- $desc='desc';
- }
- $studio=$studio->orderBy('total',$desc);
- }
- $count=$studio->count();
- $data=$studio->orderBy('studios.id')->take($page_size)->skip($num)->get();
- return $this->success_list($data,'',$count);
- }
- public function exportstudio(Request $request){
- $input=$request->all();
- $activity=Activity::find($input['activity_id']);
- $studio=Studio::where('status',$input['status']);
- if ($input['search_user']){
- $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id');
- $studio=$studio->whereIn('user_id',$user_ids);
- }
- if ($input['search_content']){
- $studio=$studio->where('studio_name','like','%'.$input['search_content'].'%');
- }
- $activity_id=$input['activity_id'];
- $data=$studio->with(['get_user'=>function($q){
- $q->select('level','id','nickname','mobile','realname');
- },'get_bonus'=>function($q)use($activity_id){
- $q->where('activity_id',$activity_id);
- }])->get();
- $arr=[];
- foreach ($data as $k=>$v){
- $arr[$k]['工作室名称']=$v->studio_name;
- $arr[$k]['负责人昵称']=$v->get_user->nickname;
- $arr[$k]['负责人姓名']=$v->get_user->realname;
- $arr[$k]['负责人电话']=$v->get_user->mobile;
- $arr[$k]['工作室地址']=$v->province.$v->city.$v->area.$v->address;
- if ($v->get_bonus){
- $arr[$k]['订单金额']=$v->get_bonus->order_money??0;
- $arr[$k]['产品补助金']=$v->get_bonus->bonus??0;
- $arr[$k]['已兑换补助金']=$v->get_bonus->exchange_bonus??0;
- }else{
- $arr[$k]['订单金额']=0;
- $arr[$k]['产品补助金']=0;
- $arr[$k]['已兑换补助金']=0;
- }
- $arr[$k]['订单奖励所属活动']=$activity->title;
- }
- return $this->success_list($arr);
- }
- /*
- *工作室兑换订单
- * ***/
- public function studio_order(Request $request){
- $input=$request->all();
- $page_index=$input['page_index'];
- $page_size=$input['page_size'];
- $num=($page_index-1)*$page_size;
- $order=StudioOrder::where('activity_id',$input['activity_id']);
- if ($input['search_content']){
- $ids=User::where('level',3)->where('mobile','like','%'.$input['search_content'].'%')->orwhere('nickname','like','%'.$input['search_content'].'%')->pluck('id');
- $order=$order->whereIn('user_id',$ids);
- }
- if ($input['search_number']){
- $order=$order->where('order_num','like','%'.$input['search_number'].'%');
- }
- $count=$order->count();
- $data=$order->with(['get_user'=>function($q){
- $q->select('id','nickname','mobile');
- },'get_address'])->orderByDesc('created_at')->take($page_size)->skip($num)->get();
- return $this->success_list($data,'',$count);
- }
- /*
- * 订单详情
- * */
- public function order_detail(Request $request)
- {
- $order_num = $request->id;
- $order = StudioOrder::where('id', $order_num)->with(['get_order_log', 'get_address', 'get_user'])->first()->toArray();
- $order_detail = StudioOrderDetail::where('order_id', $order['id'])->get();
- $data = [];
- foreach ($order_detail as $k => $v) {
- $good = StudioGood::find($v->goods_id);
- $data['goods_detail'][$k]['name'] = $good->name;
- $data['goods_detail'][$k]['main_img'] = $good->main_img;
- $data['goods_detail'][$k]['size'] = $good->size;
- $data['goods_detail'][$k]['unit'] = $good->unit;
- $data['goods_detail'][$k]['money'] = $v->money;
- $data['goods_detail'][$k]['num'] = $v->num;
- $data['goods_detail'][$k]['id'] = $v->goods_id;
- $data['goods_detail'][$k]['detail_id'] = $v->id;
- $data['goods_detail'][$k]['goods_price'] = $v->goods_price;
- $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark;
- }
- $all = array_merge($order, $data);
- // return $all;
- return $this->success($all);
- }
- /*
- * 订单的修改
- * */
- public function order_update(Request $request)
- {
- $rule = [
- 'order_id' => 'required',
- 'size_id' => 'required',
- 'num' => 'required',
- 'total' => 'required',
- 'money' => 'required',
- 'type' => 'required',
- ];
- $message = [
- 'required' => ':attribute不能为空',
- ];
- $attributes = [
- 'order_id' => '订单id',
- 'size_id' => 'size_id',
- 'total' => '商品总数量',
- 'type' => '商品中总类型',
- 'num' => '单类商品商量',
- 'money' => '商品金额',
- ];
- $vali = Validator::make($request->all(), $rule, $message, $attributes);
- if ($vali->fails()) {
- return $this->error('40010', '', $vali->errors()->first());
- }
- $input = $request->all();
- $activity_id=$input['activity_id'];
- DB::beginTransaction();
- try {
- $order = StudioOrder::find($input['order_id']);
- $studio_user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first();
- if (!$studio_user){
- return $this->error(50021,'该用户没有奖励金');
- }
- if ($studio_user->bonus+$order->money<$input['money']){
- return $this->error(50021,'奖励金不足');
- }
- $studio_user->exchange_bonus+=$input['money']-$order->money;
- if (!$studio_user->save()){
- throw new \Exception('1');
- }
- $num_gift=0;$mes_info=null;
- foreach ($input['size_id'] as $k => $v) {
- $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first();
- $good = StudioGood::find($v);
- if ($orderdetail) {
- if ($orderdetail->num != $input['num'][$k]) {
- $orderlog = new StudioOrderLog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = Auth::user()->name;
- $orderlog->log_title = '修改订单商品数量';
- $orderlog->log_text = '商品' . $orderdetail->goods_name . ' 的' . $orderdetail->goods_size . '款式原数量为' . $orderdetail->num . '更改后的数量为' . $input['num'][$k];
- if(empty($mes_info)){
- $mes_info='修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k];
- }else{
- if(mb_strlen($mes_info) < 100){
- $mes_info.=';修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k];
- }
- }
- if (!$orderlog->save()) {
- throw new \Exception('1');
- }
- $count = $input['num'][$k] - $orderdetail->num;
- if ($count > $good->storage) {
- return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足');
- }
- $goods = StudioGood::find($v);
- $goods->storage = $goods->storage - $input['num'][$k] + $orderdetail->num;
- $goods->sold_num = $goods->sold_num + $input['num'][$k] - $orderdetail->num;
- if (!$goods->save()) {
- throw new \Exception('1');
- }
- $orderdetail->num = $input['num'][$k];
- $orderdetail->money = $input['num'][$k] * $good->money;
- if (!$orderdetail->save()) {
- throw new \Exception('1');
- }
- }else{
- if($good->unit=='套'){
- $num_gift+=$input['num'][$k];
- }
- if($good->unit=='件'){
- $num_gift+=$input['num'][$k]*2;
- }
- }
- } else {
- $orderlog = new StudioOrderLog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = Auth::user()->name;
- $orderlog->log_title = '修改订单';
- $orderlog->log_text = '添加了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $input['num'][$k];
- if(empty($mes_info)){
- $mes_info='添加'.$good->name.'-'.$good->size.'数量:'.$input['num'][$k];
- }else {
- if (mb_strlen($mes_info) < 100) {
- $mes_info .= ';添加' . $good->name . '-' . $good->size . '数量:' . $input['num'][$k];
- }
- }
- if (!$orderlog->save()) {
- throw new \Exception('1');
- }
- $goods = StudioGood::find($v);
- $goods->storage = $goods->storage - $input['num'][$k];
- $goods->sold_num = $goods->sold_num + $input['num'][$k];
- if (!$goods->save()) {
- throw new \Exception('1');
- }
- $orderdetail = new StudioOrderDetail();
- $orderdetail->goods_name = $good->name;
- $orderdetail->goods_size = $good->size;
- $orderdetail->goods_price= $good->money;
- $orderdetail->goods_unit= $good->unit;
- $orderdetail->order_id = $order->id;
- $orderdetail->goods_id = $v;
- $orderdetail->num = $input['num'][$k];
- $orderdetail->money = $input['num'][$k] * $good->money;
- if (!$orderdetail->save()) {
- throw new \Exception('1');
- }
- $count = $input['num'][$k];
- if ($count > $good->storage) {
- return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足');
- }
- }
- }
- foreach ($input['del_id'] as $k => $v) {
- $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first();
- $good = StudioGood::find($v);
- $orderlog = new StudioOrderLog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = Auth::user()->name;
- $orderlog->log_title = '修改订单';
- $orderlog->log_text = '删除了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $orderdetail->num;
- if(empty( $mes_info)){
- $mes_info='删除'.$good->name.'-'.$good->size.'数量:'.$orderdetail->num;
- }else {
- if (mb_strlen($mes_info) < 100) {
- $mes_info .= ';删除' . $good->name . '-' . $good->size . '数量:' . $orderdetail->num;
- }
- }
- if (!$orderlog->save()) {
- throw new \Exception('1');
- }
- $goods = StudioGood::find($v);
- $goods->storage = $goods->storage + $orderdetail->num;
- $goods->sold_num = $goods->sold_num - $orderdetail->num;
- if (!$goods->save()) {
- throw new \Exception('1');
- }
- if (!$orderdetail->delete()) {
- throw new \Exception('1');
- }
- }
- $money_old = $order->money;
- $total_old = $order->total;
- $type_old = $order->type;
- $total = $input['total'];
- $money = $input['money'];
- $type = $input['type'];
- $order->money = $money;
- $order->total = $total;
- $order->type = $type;
- if (!$order->save()) {
- throw new \Exception('s');
- }
- $orderlog = new StudioOrderLog();
- $orderlog->order_id = $order->id;
- $orderlog->user_id = $order->user_id;
- $orderlog->log_name = Auth::user()->name;
- $orderlog->log_title = '修改订单';
- $orderlog->log_text = '原订单总金额为' . $money_old . ',商品数量为' . $total_old . ',商品种类为' . $type_old . '。新订单金额为' . $money . ',商品数量为' . $total . ',种类为' . $type;
- if (!$orderlog->save()) {
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- } catch (\Exception $exception) {
- DB::rollBack();
- Log::info('订单修改的错误信息为' . $exception);
- return $this->error(40013, '订单修改出错');
- }
- }
- /**
- *notes:订单作废
- *author:kele
- *time:times
- */
- public function destory_order(Request $request)
- {
- $rules = [
- 'order_id' => 'required',
- 'remark' => 'required'
- ];
- $message = [
- 'order_id.required' => '订单id是必填项',
- 'remark.required' => '订单备注是必填项'
- ];
- $vali = Validator::make($request->all(), $rules, $message);
- if ($vali->fails()) {
- return $this->error(40016, '', $vali->errors()->first());
- }
- $order = StudioOrder::where('id', $request->order_id)->first();
- if (!$order) {
- return $this->error(300, '', '查无此订单,请重试');
- }
- DB::beginTransaction();
- try {
- $order->is_deleted = 1;
- $orderdetail = StudioOrderDetail::where('order_id', $order->id)->get();
- foreach ($orderdetail as $k => $v) {
- $good = StudioGood::find($v->goods_id);
- $good->storage = $good->storage + $v->num;
- $good->sold_num = $good->sold_num - $v->num;
- if (!$good->save()) {
- throw new \Exception('2');
- }
- }
- $user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first();
- $user->exchange_bonus-=$order->money;
- if (!$user->save()){
- throw new \Exception('1');
- }
- $log=new StudioOrderLog();
- $log->user_id=$order->user_id;
- $log->order_id=$order->id;
- $log->log_name=Auth::user()->name;
- $log->log_title='作废订单';
- $log->log_text=$request->remark;
- if (!$log->save()){
- throw new \Exception(2);
- }
- DB::commit();
- return $this->success([]);
- } catch (\Exception $exception) {
- DB::rollBack();
- Log::info('订单作废错误信息' . $exception);
- return $this->error('40018', '', '订单作废失败,请重试');
- }
- }
- /*地址管理---展示地址*/
- public function show_address(Request $request)
- {
- $id = $request->user_id;
- $address = Address::where('user_id', $id)->where('belong_id',$id)->where('is_deleted',0)->get();
- $data = [];
- foreach ($address as $k => $v) {
- $data[$k]["id"] = $v->id;
- $data[$k]["con_name"] = $v->username == null ? '' : $v->username;
- $data[$k]["con_mobile"] = $v->mobile;
- $data[$k]["provice"] = $v->province;
- $data[$k]["city"] = $v->city;
- $data[$k]["area"] = $v->town;
- $data[$k]["address"] = $v->address;
- }
- return $this->success_list($data);
- }
- public function order_address(Request $request)
- {
- $order = StudioOrder::find($request->order_id);
- $order->address_id = $request->address_id;
- $order->save();
- return $this->success([]);
- }
- public function orderBreakUpCourier(Request $request)
- {
- ini_set('memory_limit', '1024M');
- $input = $request->all();
- if ($request->has('id')) {
- $list = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id')
- ->leftJoin('users', 'studio_order.user_id', '=', 'users.id')
- // ->join('warea','warea.id','=','users.warea_id')
- ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id')
- ->leftJoin('address', 'address.id', '=', 'studio_order.address_id')
- ->select('studio_order.order_num','studio_order.created_at','studio_order.id', 'studio_order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'studio_goods.main_attr', 'studio_goods.sec_attr', 'studio_goods.size', DB::raw('SUM(studio_order_detail.num) as total'))
- ->whereIn('studio_order.id', $request->id)
- ->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr')
- ->orderBy('studio_order.id', 'studio_order_detail.id')
- ->get()->toArray();
- } else {
- if ($request->has('order_no')) {
- $order_no = $input['order_no'];
- } else {
- $order_no = '';
- }
- $start_time = $input['start_time'] ?? '';
- $end_time = $input['end_time'] ?? '';
- $activity_id = $input['activity_id'] ?? '';
- $search_name = $input['search_name'] ?? '';
- if ($request->has('order_status')) {
- $order_status = $input['order_status'];
- } else {
- $order_status = [];
- }
- $data = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id')
- ->leftJoin('users', 'studio_order.user_id', '=', 'users.id')
- // ->join('warea','warea.id','=','users.warea_id')
- ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id')
- ->leftJoin('address', 'address.id', '=', 'studio_order.address_id')
- ->select('studio_order.order_num','studio_order.created_at','studio_order.id', 'studio_order.remark', 'users.nickname as u_nickname', 'users.mobile as u_mobile','users.warea_id', 'users.realname as u_name', 'address.username', 'address.mobile', 'address.address', 'address.province', 'address.city', 'address.town', 'studio_goods.main_attr', 'studio_goods.sec_attr', 'studio_goods.size', DB::raw('SUM(studio_order_detail.num) as total'));
- $admin = Auth::user();
- if ($admin->role_id == 23) {
- $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id');
- $data->whereIn('users.warea_id', $warea_ids);
- }
- if ($order_no) {
- $data->where('studio_order.order_num', $order_no);
- }
- if ($search_name) {
- // $s=substr(trim($search_name),0,4);
- // if($s=='DWBS'){
- // $data->where('order_test.order_num',trim($search_name));
- // }else{
- $ids = $this->getUserIds($search_name);
- $data->whereIn('studio_order.user_id', $ids);
- // }
- }
- if ($start_time && $end_time && empty($activity_id)) {
- $data->whereBetween('studio_order.created_at', [$start_time, $end_time]);
- }
- if ($activity_id) {
- $actice = Activity::find($activity_id);
- $data->whereBetween('studio_order.created_at', [$actice->start_time, $actice->end_time]);
- }
- $list = $data->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr')
- ->orderBy('studio_order.id', 'studio_order_detail.id')
- ->get()->toArray();
- }
- $dd = $this->dataGroup($list, 'order_num');
- $d = [];
- foreach ($dd as $key => $val) {
- $info['u_nickname'] = $val[0]['u_nickname'];
- $info['u_name'] = $val[0]['u_name'];
- $info['u_mobile'] = $val[0]['u_mobile'];
- $info['username'] = $val[0]['username'];
- $info['mobile'] = $val[0]['mobile'];
- $info['address'] = $val[0]['address'];
- $info['province'] = $val[0]['province'];
- $info['city'] = $val[0]['city'];
- $info['town'] = $val[0]['town'];
- $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name');
- $info['admin_name'] =$admin_name;
- $info['created_at'] = $val[0]['created_at'];
- // $info['remark'] = (string)$val[0]['remark'];
- $info['remark'] = $val[0]['remark'];
- $d[$key]['data'] = $info;
- $d[$key]['精装'] = [];
- $d[$key]['普通'] = [];
- $d[$key]['精装混合'] = [];
- $d[$key]['普通混合'] = [];
- $x1 = 0;
- $y1 = [];//精装
- $x = 0;
- $y = [];//普通
- foreach ($val as $k => $v) {
- if ($v['main_attr'] == '大卫博士精装版') {
- $main_attr = '精';
- $n = floor($v['total'] / 10);
- for ($i = 0; $i < $n; $i++) {
- $cc = [];
- $cc['main_attr'] = $main_attr;
- $cc['sec_attr'] = $v['sec_attr'];
- $cc['size'] = $v['size'];
- $cc['num'] = 10;
- array_push($d[$key]['精装'], $cc);
- }
- if ($v['total'] % 10 > 0) {
- $t1 = $v['total'] % 10;
- if ($x1 + $t1 >= 10) {
- $x1 = $x1 + $t1 - 10;
- $z1['main_attr'] = $main_attr;
- $z1['sec_attr'] = $v['sec_attr'];
- $z1['size'] = $v['size'];
- $z1['num'] = $t1 - $x1;
- if ($y1) {
- array_pop($d[$key]['精装混合']);
- }
- array_push($y1, $z1);
- $z1 = [];
- array_push($d[$key]['精装混合'], $y1);
- $y1 = [];
- if ($x1 > 0) {
- $z1['main_attr'] = $main_attr;
- $z1['sec_attr'] = $v['sec_attr'];
- $z1['size'] = $v['size'];
- $z1['num'] = $x1;
- array_push($y1, $z1);
- array_push($d[$key]['精装混合'], $y1);
- }
- } else {
- $x1 += $t1;
- $z1['main_attr'] = $main_attr;
- $z1['sec_attr'] = $v['sec_attr'];
- $z1['size'] = $v['size'];
- $z1['num'] = $v['total'] % 10;
- if ($y1) {
- array_pop($d[$key]['精装混合']);
- }
- array_push($y1, $z1);
- array_push($d[$key]['精装混合'], $y1);
- }
- }
- } else {
- $n = floor($v['total'] / 6);
- if ($v['main_attr'] == '大卫博士老人版') {
- $main_attr = '老';
- } elseif ($v['main_attr'] == '大卫博士简约版') {
- $main_attr = '简';
- } else {
- $main_attr = '棉';
- }
- for ($i = 0; $i < $n; $i++) {
- $cc = [];
- $cc['main_attr'] = $main_attr;
- $cc['sec_attr'] = $v['sec_attr'];
- $cc['size'] = $v['size'];
- $cc['num'] = 6;
- array_push($d[$key]['普通'], $cc);
- }
- if ($v['total'] % 6 > 0) {
- $t = $v['total'] % 6;
- if ($x + $t >= 6) {
- $x = $x + $t - 6;
- $z['main_attr'] = $main_attr;
- $z['sec_attr'] = $v['sec_attr'];
- $z['size'] = $v['size'];
- $z['num'] = $t - $x;
- if ($y) {
- array_pop($d[$key]['普通混合']);
- }
- array_push($y, $z);
- $z = [];
- array_push($d[$key]['普通混合'], $y);
- $y = [];
- if ($x > 0) {
- $z['main_attr'] = $main_attr;
- $z['sec_attr'] = $v['sec_attr'];
- $z['size'] = $v['size'];
- $z['num'] = $x;
- array_push($y, $z);
- array_push($d[$key]['普通混合'], $y);
- }
- } else {
- $x += $t;
- $z['main_attr'] = $main_attr;
- $z['sec_attr'] = $v['sec_attr'];
- $z['size'] = $v['size'];
- $z['num'] = $v['total'] % 6;
- if ($y) {
- array_pop($d[$key]['普通混合']);
- }
- array_push($y, $z);
- array_push($d[$key]['普通混合'], $y);
- }
- }
- }
- }
- }
- return $this->success($d);
- }
- protected function dataGroup(array $dataArr, string $keyStr): array
- {
- $newArr = [];
- foreach ($dataArr as $k => $val) { //数据根据日期分组
- $newArr[$val[$keyStr]][] = $val;
- }
- return $newArr;
- }
- /*
- * 工作室兑换开启时间
- * ***/
- public function set_studio_time(Request $request){
- $input=$request->all();
- $activity_id=$request->activity_id;
- $start_time=$input['start_time'];
- $end_time=$input['end_time'];
- $re=Activity::where('id',$activity_id)->first();
- $re->user_bonus_start=$start_time;
- $re->user_bonus_end=$end_time;
- $re->save();
- return $this->success([]);
- }
- public function get_studio_time(Request $request){
- $activity_id=$request->activity_id;
- $re=Activity::where('id',$activity_id)->first();
- return $this->success(['start_time'=>$re->user_bonus_start,'end_time'=>$re->user_bonus_end]);
- }
- public function GetStudioSystem(){
- $re=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->select('values','keys')->get();
- $arr=[];
- foreach ($re as $k=>$v){
- $res=explode('/',$v->values);
- $arr[$v->keys]['money']=$res[0];
- $arr[$v->keys]['scale']=$res[1];
- }
- return $this->success($arr);
- }
- public function SetStudioSystem(Request $request){
- $input=$request->all();
- $studio_first_reward_money=$input['studio_first_reward_money'];
- $studio_second_reward_money=$input['studio_second_reward_money'];
- $studio_third_reward_money=$input['studio_third_reward_money'];
- $studio_first_reward_scale=$input['studio_first_reward_scale'];
- $studio_second_reward_scale=$input['studio_second_reward_scale'];
- $studio_third_reward_scale=$input['studio_third_reward_scale'];
- System::where('keys','studio_first_reward')->update(['values'=>$studio_first_reward_money.'/'.$studio_first_reward_scale]);
- System::where('keys','studio_second_reward')->update(['values'=>$studio_second_reward_money.'/'.$studio_second_reward_scale]);
- System::where('keys','studio_third_reward')->update(['values'=>$studio_third_reward_money.'/'.$studio_third_reward_scale]);
- return $this->success([]);
- }
- /*
- * 上传物流单号
- * */
- public function send_order(Request $request)
- {
- $time=Carbon::now()->toDateTimeString();
- $file = $request->file('file');
- if ( !$file->isValid()) { //判断文件是否有效
- return redirect()
- ->back()
- ->withErrors('文件上传失败,请重新上传');
- }
- $array = Excel::toArray(new ExpressImport, request()->file('file'));
- if(count($array)>5001){
- return $this->error('450001',"单次最多导入5000条数据");
- }
- $newArr=[];
- $one = array_shift($array[0]);
- $express_num_keys=array_search('快递单号',$one);
- if(!$express_num_keys){
- return $this->error('450001',"表头无'快递单号'字段");
- }
- $order_num_keys=array_search('订单编号',$one);
- if(!$express_num_keys){
- return $this->error('450001',"表头无'订单编号'字段");
- }
- $express_total=array_search('数据求和',$one);
- if(!$express_total){
- return $this->error('450001',"表头无'数据求和'字段");
- }
- $express_com_keys=array_search('快递公司',$one);
- if(!$express_num_keys){
- return $this->error('450001',"表头无'快递公司'字段");
- }
- $express_status_keys=array_search('发货状态',$one);
- if(!$express_status_keys){
- return $this->error('450001',"表头无'发货状态'字段");
- }
- $l_keys=array_search('L',$one);
- $xl_keys=array_search('XL',$one);
- $xxl_keys=array_search('XXL',$one);
- $xxxl_keys=array_search('XXXL',$one);
- $vm_keys=array_search('女M',$one);
- $vl_keys=array_search('女L',$one);
- $vxl_keys=array_search('女XL',$one);
- $vxxl_keys=array_search('女XXL',$one);
- $vxxxl_keys=array_search('女XXXL',$one);
- $wxl_keys=array_search('5XL',$one);
- $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$vxxxl_keys,$wxl_keys];
- $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政EMS'=>'EMS'];
- $arres=[];
- $o=0;
- foreach ($array[0] as $k=>$v){
- if ($v[$express_com_keys]!='中通快运'){
- $arres[$o]=$v;
- }
- }
- $express_nums=array_column($arres,$express_num_keys);
- $unique_express_nums=array_unique($express_nums);
- $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums);
- if(count($que_express_nums)>0){
- $que_express_str=implode(',',$que_express_nums);
- return $this->error('450001','快递单号'.$que_express_str.'重复出现');
- }
- $statusArr=[];$arr=[];
- $area_list=[];
- $arr_order=[];
- foreach ($array[0] as $key => $value) {
- $area_list[$value[0]][] = $value;
- }
- $is=0;
- foreach ($area_list as $k=>$v){
- $arr_order[$is]['order_num']=$k;
- $arr_order[$is]['express_code']=$v[0][$express_num_keys];
- $arr_order[$is]['express_com']=$v[0][$express_com_keys];
- $is++;
- }
- DB::beginTransaction();
- try {
- foreach ($array[0] as $key => $val) {
- $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys];
- $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]);
- if (count($arr[$val[$order_num_keys]]) > 1) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致');
- }
- if (empty($val[$order_num_keys])) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空');
- }
- $order = StudioOrder::where('order_num', $val[$order_num_keys])->first();
- if (empty($order)) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在');
- }
- if (empty($val[$express_total])) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空');
- }
- if (empty($val[$express_num_keys])) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空');
- }
- if (empty($val[$express_com_keys])) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空');
- }
- if (empty($express_code[$val[$express_com_keys]])) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误');
- }
- if ($express_com_keys=='中通快运'){
- $express = StudioExpress::where('express_number', $val[$express_num_keys])->where('created_at','<',$time)->first();
- if ($express) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在');
- }
- }else{
- $express = StudioExpress::where('express_number', $val[$express_num_keys])->first();
- if ($express) {
- return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在');
- }
- }
- }
- $i=0;
- $ks=0;
- $d=[];
- foreach ($area_list as $ke=>$va){
- $order=StudioOrder::where('order_num',$ke)->first();
- $number=StudioExpress::where('order_id',$order->id)->groupBy('number')->get()->count();
- $count=StudioExpress::where('order_id',$order->id)->count();
- $total=StudioExpress::where('order_id',$order->id)->sum('total');
- foreach ($va as $key=>$val){
- $exp=new StudioExpress();
- if (!empty($newArr[$i]['note'])) {
- $exp->note = $newArr[$i]['note'] . ',';
- } else {
- $exp->note = '';
- }
- $exp->order_id = $order->id;
- $exp->user_id=$order->user_id;
- if ($val[$express_com_keys]=='中通快递'){
- $exp->express_number=$this->get_number($val[$express_num_keys]);
- }else{
- $exp->express_number = $val[$express_num_keys];
- }
- $exp->express_com = $val[$express_com_keys];
- $exp->express_code = $express_code[$val[$express_com_keys]];
- $data = '';
- $datas=[];
- $l=0;
- foreach ($keys as $k => $v) {
- if (!empty($val[$v])) {
- if (empty($data)) {
- $data .= $one[$v] . ':' . $val[$v];
- } else {
- $data .= '+' . $one[$v] . ':' . $val[$v];
- }
- $nums=mb_strlen($val[$v]);
- if ($nums==2){
- $re=mb_strstr($val[$v],'精');
- if ($re){
- $n=mb_strlen($val[$v]);
- $num=mb_substr($val[$v],0,$n-1);
- $kuan='精装版';
- $ku=0;
- }else{
- $re=mb_strstr($val[$v],'简');
- if ($re){
- $n=mb_strlen($val[$v]);
- $num=mb_substr($val[$v],0,$n-1);
- $kuan='简约版';
- $ku=1;
- }else{
- $re=mb_strstr($val[$v],'棉');
- if ($re){
- $n=mb_strlen($val[$v]);
- $num=mb_substr($val[$v],0,$n-1);
- $kuan='棉老版';
- $ku=3;
- }else{
- $re=mb_strstr($val[$v],'老');
- if ($re){
- $n=mb_strlen($val[$v]);
- $num=mb_substr($val[$v],0,$n-1);
- $kuan='老人版';
- $ku=2;
- }else{
- return $this->error(50021,'尺码不对','');
- }
- }
- }
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku];
- $total+=$num;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku];
- $total+=$num;
- }
- $l++;
- $count++;
- }else{
- if ($nums%2!=0){
- $re_1=mb_strstr($val[$v],'精');
- if ($re_1){
- $numss=mb_strlen($re_1);
- $aa=mb_substr($val[$v],$nums-$numss-2,2);
- if (!is_numeric($aa)){
- return $this->error(500024,'尺码对应的数量不对,请核对数量0');
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0];
- $total+=$aa;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0];
- $total+=$aa;
- }
- $l++;
- $count++;
- }
- }else{
- $re_1=mb_strstr($val[$v],'精');
- if ($re_1){
- $numss=mb_strlen($re_1);
- $aa=mb_substr($val[$v],$nums-$numss-1,1);
- if (!is_numeric($aa)){
- return $this->error(500024,'尺码对应的数量不对,请核对数量1');
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0];
- $total+=$aa;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0];
- $total+=$aa;
- }
- $l++;
- $count++;
- }
- }
- $re_2=mb_strstr($val[$v],'简');
- if ($re_2){
- $numss=mb_strlen($re_2);
- $aa=mb_substr($val[$v],$nums-$numss-1,1);
- if (!is_numeric($aa)){
- return $this->error(500024,'尺码对应的数量不对,请核对数量2');
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1];
- $total+=$aa;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1];
- $total+=$aa;
- }
- $l++;
- $count++;
- }
- $re_3=mb_strstr($val[$v],'老');
- if ($re_3){
- $numss=mb_strlen($re_3);
- $aa=mb_substr($val[$v],$nums-$numss-1,1);
- if (!is_numeric($aa)){
- return $this->error(500024,'尺码对应的数量不对,请核对数量3');
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'老人版','ku'=>2];
- $total+=$aa;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'老人版','ku'=>2];
- $total+=$aa;
- }
- $l++;
- $count++;
- }
- $re_4=mb_strstr($val[$v],'棉');
- if ($re_4){
- $numss=mb_strlen($re_4);
- $aa=mb_substr($val[$v],$nums-$numss-1,1);
- if (!is_numeric($aa)){
- return $this->error(500024,'尺码对应的数量不对,请核对数量4');
- }
- if ($k<=3){
- $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3];
- $total+=$aa;
- }else{
- $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3];
- $total+=$aa;
- }
- $l++;
- $count++;
- }
- if (!$re_1&&!$re_2&&!$re_3&&!$re_4){
- return $this->error(522201,'尺码对应的数量信息不正确','');
- }
- }
- }
- }
- $exp->note .= $data;
- $exp->notes = json_encode($datas);
- $exp->status = 0;
- $exp->number = $number+1;
- $exp->count = $key+1;
- $exp->total = $val[$express_total];
- if (!$exp->save()){
- throw new \Exception(1);
- }
- foreach ($datas as $kes=>$vals){
- $es=new StudioExpressStorage();
- $str_count=substr_count($vals['size'],'X');
- if ($str_count>=2){
- $vals['size']=$str_count.'XL';
- }
- $es->user_id=$order->good_user_id;
- $es->express_id=$exp->id;
- $es->sex=$vals['sexs'];
- $es->size=$vals['size'];
- $es->num=$vals['num'];
- $es->type=$vals['ku'];
- if (!$es->save()){
- throw new \Exception(1);
- }
- }
- }
- if ($total==$order->total){
- $order->track_status=2;
- }elseif ($total<$order->total){
- $order->track_status=1;
- }else{
- return $this->error(52201,$ke.'数量出错了');
- }
- $order->number+=$count;
- $order->save();
- }
- StudioExpress::insert($newArr);
- DB::commit();
- return $this->success([]);
- }catch(\Exception $e){
- DB::rollBack();
- Log::error($e);
- return $this->error();
- }
- }
- public function AddStudio(Request $request){
- $input=$request->all();
- DB::beginTransaction();
- try{
- $user=User::where('mobile',$input['mobile'])->first();
- if (!$user){
- return $this->error(50028,'代理公司手机号查不到对应的代理');
- }
- if ($user->level!=3){
- return $this->error(50028,'代理公司手机号对应的代理不是代理公司');
- }
- $re=Studio::where('user_id',$user->id)->first();
- if ($re){
- return $this->error(50028,'代理公司已存在');
- }
- $studio_user=new Studio();
- $studio_user->studio_name=$input['studio_name'];
- $studio_user->user_id=$user->id;
- $studio_user->status=$input['status'];
- $studio_user->province=$input['province'];
- $studio_user->city=$input['city'];
- $studio_user->area=$input['area'];
- $studio_user->address=$input['address'];
- if (!$studio_user->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(50023,$exception->getMessage());
- }
- }
- public function SetStatusStudio(Request $request){
- $input=$request->all();
- $studio=Studio::find($input['id']);
- if ($studio->status==0){
- $studio->status=1;
- }else{
- $studio->status=0;
- }
- $studio->save();
- return $this->success([]);
- }
- public function UpdateStudio(Request $request){
- $input=$request->all();
- $id=$input['id'];
- DB::beginTransaction();
- try{
- $studio_user=Studio::find($id);
- $user=User::where('mobile',$input['mobile'])->first();
- if (!$user){
- return $this->error(50028,'代理公司手机号查不到对应的代理');
- }
- if ($user->level!=3){
- return $this->error(50028,'代理公司手机号对应的代理不是代理公司');
- }
- if ($studio_user->user_id!=$user->id){
- $re=Studio::where('user_id',$user->id)->first();
- if ($re){
- return $this->error(50028,'代理公司已存在');
- }
- $studio_user->user_id=$user->id;
- }
- $studio_user->studio_name=$input['studio_name'];
- $studio_user->status=$input['status'];
- $studio_user->province=$input['province'];
- $studio_user->city=$input['city'];
- $studio_user->area=$input['area'];
- $studio_user->address=$input['address'];
- if (!$studio_user->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(50023,$exception->getMessage());
- }
- }
- }
|