StudioController.php 55 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187
  1. <?php
  2. namespace Modules\Manager\Http\Controllers;
  3. use App\Imports\ExpressImport;
  4. use App\Models\Activity;
  5. use App\Models\Address;
  6. use App\Models\Studio;
  7. use App\Models\StudioExpress;
  8. use App\Models\StudioExpressStorage;
  9. use App\Models\StudioGood;
  10. use App\Models\StudioOrder;
  11. use App\Models\StudioOrderDetail;
  12. use App\Models\StudioOrderLog;
  13. use App\Models\StudioUser;
  14. use App\Models\System;
  15. use App\Models\User;
  16. use App\Models\Warea;
  17. use Carbon\Carbon;
  18. use Illuminate\Http\Request;
  19. use Illuminate\Support\Facades\Auth;
  20. use Illuminate\Support\Facades\DB;
  21. use Illuminate\Support\Facades\Log;
  22. use Illuminate\Support\Facades\Validator;
  23. use Maatwebsite\Excel\Facades\Excel;
  24. class StudioController extends Controller
  25. {
  26. /*
  27. * 导入工作室
  28. * ***/
  29. public function importStudio(Request $request){
  30. // $file = $request->file('file');
  31. // if ( !$file->isValid()) { //判断文件是否有效
  32. // return redirect()
  33. // ->back()
  34. // ->withErrors('文件上传失败,请重新上传');
  35. // }
  36. // $array = Excel::toArray(new ExpressImport, request()->file('file'));
  37. $input=$request->all();
  38. $excel=$input['data'];
  39. DB::beginTransaction();
  40. try{
  41. foreach ($excel as $k=>$v){
  42. $arr=(array)($v);
  43. $user=User::where('mobile',$arr['代理公司手机号'])->first();
  44. if (!$user){
  45. return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号查不到对应的代理');
  46. }
  47. if ($user->level!=3){
  48. return $this->error(50028,'根据表格中第'.($k+2).'行的代理公司手机号对应的代理不是代理公司');
  49. }
  50. $re=Studio::where('user_id',$user->id)->first();
  51. if ($re){
  52. return $this->error(50028,'表格中第'.($k+2).'行的代理公司已存在'.$arr['代理公司手机号'],$re);
  53. }
  54. $studio_user=new Studio();
  55. $studio_user->studio_name=$arr['工作室名称'];
  56. $studio_user->user_id=$user->id;
  57. $studio_user->status=0;
  58. $studio_user->province=$arr['省份'];
  59. $studio_user->city=$arr['城市'];
  60. $studio_user->area=$arr['地区'];
  61. $studio_user->address=$arr['详细地址'];
  62. if (!$studio_user->save()){
  63. throw new \Exception('1');
  64. }
  65. }
  66. DB::commit();
  67. return $this->success([]);
  68. }catch (\Exception $exception){
  69. DB::rollBack();
  70. return $this->error(50023,$exception->getMessage());
  71. }
  72. }
  73. public function get_studio(Request $request){
  74. $input=$request->all();
  75. $page_index=$input['page_index'];
  76. $page_size=$input['page_size'];
  77. $num=($page_index-1)*$page_size;
  78. $activity_id=$input['activity_id'];
  79. $studio=Studio::where('studios.status',$input['status'])->with(['get_user'=>function($q){
  80. $q->select('users.level','users.id','users.nickname','users.mobile','users.realname');
  81. },'get_bonus'=>function($q)use($activity_id){
  82. $q->where('studio_user.activity_id',$activity_id);
  83. }]);
  84. if ($input['search_user']){
  85. $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id');
  86. $studio=$studio->whereIn('studios.user_id',$user_ids);
  87. }
  88. if ($input['search_content']){
  89. $studio=$studio->where('studios.studio_name','like','%'.$input['search_content'].'%');
  90. }
  91. if (isset($input['sort_type'])){
  92. if ($input['sort_type']==0){
  93. $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
  94. $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
  95. })->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'));
  96. }elseif ($input['sort_type']==1){
  97. $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
  98. $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
  99. })->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'));
  100. }else{
  101. $studio=$studio->leftJoin('studio_user',function ($q)use ($activity_id){
  102. $q->on('studio_user.studio_id','studios.id')->where('studio_user.activity_id',$activity_id);
  103. })->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'));
  104. }
  105. if ($input['sort']==0){
  106. $desc='asc';
  107. }else{
  108. $desc='desc';
  109. }
  110. $studio=$studio->orderBy('total',$desc);
  111. }
  112. $count=$studio->count();
  113. $data=$studio->orderBy('studios.id')->take($page_size)->skip($num)->get();
  114. return $this->success_list($data,'',$count);
  115. }
  116. public function exportstudio(Request $request){
  117. $input=$request->all();
  118. $activity=Activity::find($input['activity_id']);
  119. $studio=Studio::where('status',$input['status']);
  120. if ($input['search_user']){
  121. $user_ids=User::where('level',3)->where('mobile','like','%'.$input['search_user'].'%')->orwhere('nickname','like','%'.$input['search_user'].'%')->pluck('id');
  122. $studio=$studio->whereIn('user_id',$user_ids);
  123. }
  124. if ($input['search_content']){
  125. $studio=$studio->where('studio_name','like','%'.$input['search_content'].'%');
  126. }
  127. $activity_id=$input['activity_id'];
  128. $data=$studio->with(['get_user'=>function($q){
  129. $q->select('level','id','nickname','mobile','realname');
  130. },'get_bonus'=>function($q)use($activity_id){
  131. $q->where('activity_id',$activity_id);
  132. }])->get();
  133. $arr=[];
  134. foreach ($data as $k=>$v){
  135. $arr[$k]['工作室名称']=$v->studio_name;
  136. $arr[$k]['负责人昵称']=$v->get_user->nickname;
  137. $arr[$k]['负责人姓名']=$v->get_user->realname;
  138. $arr[$k]['负责人电话']=$v->get_user->mobile;
  139. $arr[$k]['工作室地址']=$v->province.$v->city.$v->area.$v->address;
  140. if ($v->get_bonus){
  141. $arr[$k]['订单金额']=$v->get_bonus->order_money??0;
  142. $arr[$k]['产品补助金']=$v->get_bonus->bonus??0;
  143. $arr[$k]['已兑换补助金']=$v->get_bonus->exchange_bonus??0;
  144. }else{
  145. $arr[$k]['订单金额']=0;
  146. $arr[$k]['产品补助金']=0;
  147. $arr[$k]['已兑换补助金']=0;
  148. }
  149. $arr[$k]['订单奖励所属活动']=$activity->title;
  150. }
  151. return $this->success_list($arr);
  152. }
  153. /*
  154. *工作室兑换订单
  155. * ***/
  156. public function studio_order(Request $request){
  157. $input=$request->all();
  158. $page_index=$input['page_index'];
  159. $page_size=$input['page_size'];
  160. $num=($page_index-1)*$page_size;
  161. $order=StudioOrder::where('activity_id',$input['activity_id']);
  162. if ($input['search_content']){
  163. $ids=User::where('level',3)->where('mobile','like','%'.$input['search_content'].'%')->orwhere('nickname','like','%'.$input['search_content'].'%')->pluck('id');
  164. $order=$order->whereIn('user_id',$ids);
  165. }
  166. if ($input['search_number']){
  167. $order=$order->where('order_num','like','%'.$input['search_number'].'%');
  168. }
  169. $count=$order->count();
  170. $data=$order->with(['get_user'=>function($q){
  171. $q->select('id','nickname','mobile');
  172. },'get_address'])->orderByDesc('created_at')->take($page_size)->skip($num)->get();
  173. return $this->success_list($data,'',$count);
  174. }
  175. /*
  176. * 订单详情
  177. * */
  178. public function order_detail(Request $request)
  179. {
  180. $order_num = $request->id;
  181. $order = StudioOrder::where('id', $order_num)->with(['get_order_log', 'get_address', 'get_user'])->first()->toArray();
  182. $order_detail = StudioOrderDetail::where('order_id', $order['id'])->get();
  183. $data = [];
  184. foreach ($order_detail as $k => $v) {
  185. $good = StudioGood::find($v->goods_id);
  186. $data['goods_detail'][$k]['name'] = $good->name;
  187. $data['goods_detail'][$k]['main_img'] = $good->main_img;
  188. $data['goods_detail'][$k]['size'] = $good->size;
  189. $data['goods_detail'][$k]['unit'] = $good->unit;
  190. $data['goods_detail'][$k]['money'] = $v->money;
  191. $data['goods_detail'][$k]['num'] = $v->num;
  192. $data['goods_detail'][$k]['id'] = $v->goods_id;
  193. $data['goods_detail'][$k]['detail_id'] = $v->id;
  194. $data['goods_detail'][$k]['goods_price'] = $v->goods_price;
  195. $data['goods_detail'][$k]['remark'] = $v->remark == null ? '' : $v->remark;
  196. }
  197. $all = array_merge($order, $data);
  198. // return $all;
  199. return $this->success($all);
  200. }
  201. /*
  202. * 订单的修改
  203. * */
  204. public function order_update(Request $request)
  205. {
  206. $rule = [
  207. 'order_id' => 'required',
  208. 'size_id' => 'required',
  209. 'num' => 'required',
  210. 'total' => 'required',
  211. 'money' => 'required',
  212. 'type' => 'required',
  213. ];
  214. $message = [
  215. 'required' => ':attribute不能为空',
  216. ];
  217. $attributes = [
  218. 'order_id' => '订单id',
  219. 'size_id' => 'size_id',
  220. 'total' => '商品总数量',
  221. 'type' => '商品中总类型',
  222. 'num' => '单类商品商量',
  223. 'money' => '商品金额',
  224. ];
  225. $vali = Validator::make($request->all(), $rule, $message, $attributes);
  226. if ($vali->fails()) {
  227. return $this->error('40010', '', $vali->errors()->first());
  228. }
  229. $input = $request->all();
  230. $activity_id=$input['activity_id'];
  231. DB::beginTransaction();
  232. try {
  233. $order = StudioOrder::find($input['order_id']);
  234. $studio_user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first();
  235. if (!$studio_user){
  236. return $this->error(50021,'该用户没有奖励金');
  237. }
  238. if ($studio_user->bonus+$order->money<$input['money']){
  239. return $this->error(50021,'奖励金不足');
  240. }
  241. $studio_user->exchange_bonus+=$input['money']-$order->money;
  242. if (!$studio_user->save()){
  243. throw new \Exception('1');
  244. }
  245. $num_gift=0;$mes_info=null;
  246. foreach ($input['size_id'] as $k => $v) {
  247. $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first();
  248. $good = StudioGood::find($v);
  249. if ($orderdetail) {
  250. if ($orderdetail->num != $input['num'][$k]) {
  251. $orderlog = new StudioOrderLog();
  252. $orderlog->order_id = $order->id;
  253. $orderlog->user_id = $order->user_id;
  254. $orderlog->log_name = Auth::user()->name;
  255. $orderlog->log_title = '修改订单商品数量';
  256. $orderlog->log_text = '商品' . $orderdetail->goods_name . ' 的' . $orderdetail->goods_size . '款式原数量为' . $orderdetail->num . '更改后的数量为' . $input['num'][$k];
  257. if(empty($mes_info)){
  258. $mes_info='修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k];
  259. }else{
  260. if(mb_strlen($mes_info) < 100){
  261. $mes_info.=';修改'.$orderdetail->goods_name.'-'. $orderdetail->goods_size .',原数量:'.$orderdetail->num. ',更改后的数量:'.$input['num'][$k];
  262. }
  263. }
  264. if (!$orderlog->save()) {
  265. throw new \Exception('1');
  266. }
  267. $count = $input['num'][$k] - $orderdetail->num;
  268. if ($count > $good->storage) {
  269. return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足');
  270. }
  271. $goods = StudioGood::find($v);
  272. $goods->storage = $goods->storage - $input['num'][$k] + $orderdetail->num;
  273. $goods->sold_num = $goods->sold_num + $input['num'][$k] - $orderdetail->num;
  274. if (!$goods->save()) {
  275. throw new \Exception('1');
  276. }
  277. $orderdetail->num = $input['num'][$k];
  278. $orderdetail->money = $input['num'][$k] * $good->money;
  279. if (!$orderdetail->save()) {
  280. throw new \Exception('1');
  281. }
  282. }else{
  283. if($good->unit=='套'){
  284. $num_gift+=$input['num'][$k];
  285. }
  286. if($good->unit=='件'){
  287. $num_gift+=$input['num'][$k]*2;
  288. }
  289. }
  290. } else {
  291. $orderlog = new StudioOrderLog();
  292. $orderlog->order_id = $order->id;
  293. $orderlog->user_id = $order->user_id;
  294. $orderlog->log_name = Auth::user()->name;
  295. $orderlog->log_title = '修改订单';
  296. $orderlog->log_text = '添加了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $input['num'][$k];
  297. if(empty($mes_info)){
  298. $mes_info='添加'.$good->name.'-'.$good->size.'数量:'.$input['num'][$k];
  299. }else {
  300. if (mb_strlen($mes_info) < 100) {
  301. $mes_info .= ';添加' . $good->name . '-' . $good->size . '数量:' . $input['num'][$k];
  302. }
  303. }
  304. if (!$orderlog->save()) {
  305. throw new \Exception('1');
  306. }
  307. $goods = StudioGood::find($v);
  308. $goods->storage = $goods->storage - $input['num'][$k];
  309. $goods->sold_num = $goods->sold_num + $input['num'][$k];
  310. if (!$goods->save()) {
  311. throw new \Exception('1');
  312. }
  313. $orderdetail = new StudioOrderDetail();
  314. $orderdetail->goods_name = $good->name;
  315. $orderdetail->goods_size = $good->size;
  316. $orderdetail->goods_price= $good->money;
  317. $orderdetail->goods_unit= $good->unit;
  318. $orderdetail->order_id = $order->id;
  319. $orderdetail->goods_id = $v;
  320. $orderdetail->num = $input['num'][$k];
  321. $orderdetail->money = $input['num'][$k] * $good->money;
  322. if (!$orderdetail->save()) {
  323. throw new \Exception('1');
  324. }
  325. $count = $input['num'][$k];
  326. if ($count > $good->storage) {
  327. return $this->error(40013, '商品' . $good->name . '的' . $good->size . '型号数量不足');
  328. }
  329. }
  330. }
  331. foreach ($input['del_id'] as $k => $v) {
  332. $orderdetail = StudioOrderDetail::where('order_id', $order->id)->where('goods_id', $v)->first();
  333. $good = StudioGood::find($v);
  334. $orderlog = new StudioOrderLog();
  335. $orderlog->order_id = $order->id;
  336. $orderlog->user_id = $order->user_id;
  337. $orderlog->log_name = Auth::user()->name;
  338. $orderlog->log_title = '修改订单';
  339. $orderlog->log_text = '删除了商品' . $good->name . ' 的' . $good->size . '款式,数量为' . $orderdetail->num;
  340. if(empty( $mes_info)){
  341. $mes_info='删除'.$good->name.'-'.$good->size.'数量:'.$orderdetail->num;
  342. }else {
  343. if (mb_strlen($mes_info) < 100) {
  344. $mes_info .= ';删除' . $good->name . '-' . $good->size . '数量:' . $orderdetail->num;
  345. }
  346. }
  347. if (!$orderlog->save()) {
  348. throw new \Exception('1');
  349. }
  350. $goods = StudioGood::find($v);
  351. $goods->storage = $goods->storage + $orderdetail->num;
  352. $goods->sold_num = $goods->sold_num - $orderdetail->num;
  353. if (!$goods->save()) {
  354. throw new \Exception('1');
  355. }
  356. if (!$orderdetail->delete()) {
  357. throw new \Exception('1');
  358. }
  359. }
  360. $money_old = $order->money;
  361. $total_old = $order->total;
  362. $type_old = $order->type;
  363. $total = $input['total'];
  364. $money = $input['money'];
  365. $type = $input['type'];
  366. $order->money = $money;
  367. $order->total = $total;
  368. $order->type = $type;
  369. if (!$order->save()) {
  370. throw new \Exception('s');
  371. }
  372. $orderlog = new StudioOrderLog();
  373. $orderlog->order_id = $order->id;
  374. $orderlog->user_id = $order->user_id;
  375. $orderlog->log_name = Auth::user()->name;
  376. $orderlog->log_title = '修改订单';
  377. $orderlog->log_text = '原订单总金额为' . $money_old . ',商品数量为' . $total_old . ',商品种类为' . $type_old . '。新订单金额为' . $money . ',商品数量为' . $total . ',种类为' . $type;
  378. if (!$orderlog->save()) {
  379. throw new \Exception('1');
  380. }
  381. DB::commit();
  382. return $this->success([]);
  383. } catch (\Exception $exception) {
  384. DB::rollBack();
  385. Log::info('订单修改的错误信息为' . $exception);
  386. return $this->error(40013, '订单修改出错');
  387. }
  388. }
  389. /**
  390. *notes:订单作废
  391. *author:kele
  392. *time:times
  393. */
  394. public function destory_order(Request $request)
  395. {
  396. $rules = [
  397. 'order_id' => 'required',
  398. 'remark' => 'required'
  399. ];
  400. $message = [
  401. 'order_id.required' => '订单id是必填项',
  402. 'remark.required' => '订单备注是必填项'
  403. ];
  404. $vali = Validator::make($request->all(), $rules, $message);
  405. if ($vali->fails()) {
  406. return $this->error(40016, '', $vali->errors()->first());
  407. }
  408. $order = StudioOrder::where('id', $request->order_id)->first();
  409. if (!$order) {
  410. return $this->error(300, '', '查无此订单,请重试');
  411. }
  412. DB::beginTransaction();
  413. try {
  414. $order->is_deleted = 1;
  415. $orderdetail = StudioOrderDetail::where('order_id', $order->id)->get();
  416. foreach ($orderdetail as $k => $v) {
  417. $good = StudioGood::find($v->goods_id);
  418. $good->storage = $good->storage + $v->num;
  419. $good->sold_num = $good->sold_num - $v->num;
  420. if (!$good->save()) {
  421. throw new \Exception('2');
  422. }
  423. }
  424. $user=StudioUser::where('user_id',$order->user_id)->where('activity_id',$order->activity_id)->first();
  425. $user->exchange_bonus-=$order->money;
  426. if (!$user->save()){
  427. throw new \Exception('1');
  428. }
  429. $log=new StudioOrderLog();
  430. $log->user_id=$order->user_id;
  431. $log->order_id=$order->id;
  432. $log->log_name=Auth::user()->name;
  433. $log->log_title='作废订单';
  434. $log->log_text=$request->remark;
  435. if (!$log->save()){
  436. throw new \Exception(2);
  437. }
  438. DB::commit();
  439. return $this->success([]);
  440. } catch (\Exception $exception) {
  441. DB::rollBack();
  442. Log::info('订单作废错误信息' . $exception);
  443. return $this->error('40018', '', '订单作废失败,请重试');
  444. }
  445. }
  446. /*地址管理---展示地址*/
  447. public function show_address(Request $request)
  448. {
  449. $id = $request->user_id;
  450. $address = Address::where('user_id', $id)->where('belong_id',$id)->where('is_deleted',0)->get();
  451. $data = [];
  452. foreach ($address as $k => $v) {
  453. $data[$k]["id"] = $v->id;
  454. $data[$k]["con_name"] = $v->username == null ? '' : $v->username;
  455. $data[$k]["con_mobile"] = $v->mobile;
  456. $data[$k]["provice"] = $v->province;
  457. $data[$k]["city"] = $v->city;
  458. $data[$k]["area"] = $v->town;
  459. $data[$k]["address"] = $v->address;
  460. }
  461. return $this->success_list($data);
  462. }
  463. public function order_address(Request $request)
  464. {
  465. $order = StudioOrder::find($request->order_id);
  466. $order->address_id = $request->address_id;
  467. $order->save();
  468. return $this->success([]);
  469. }
  470. public function orderBreakUpCourier(Request $request)
  471. {
  472. ini_set('memory_limit', '1024M');
  473. $input = $request->all();
  474. if ($request->has('id')) {
  475. $list = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id')
  476. ->leftJoin('users', 'studio_order.user_id', '=', 'users.id')
  477. // ->join('warea','warea.id','=','users.warea_id')
  478. ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id')
  479. ->leftJoin('address', 'address.id', '=', 'studio_order.address_id')
  480. ->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'))
  481. ->whereIn('studio_order.id', $request->id)
  482. ->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr')
  483. ->orderBy('studio_order.id', 'studio_order_detail.id')
  484. ->get()->toArray();
  485. } else {
  486. if ($request->has('order_no')) {
  487. $order_no = $input['order_no'];
  488. } else {
  489. $order_no = '';
  490. }
  491. $start_time = $input['start_time'] ?? '';
  492. $end_time = $input['end_time'] ?? '';
  493. $activity_id = $input['activity_id'] ?? '';
  494. $search_name = $input['search_name'] ?? '';
  495. if ($request->has('order_status')) {
  496. $order_status = $input['order_status'];
  497. } else {
  498. $order_status = [];
  499. }
  500. $data = StudioOrder::leftJoin('studio_order_detail', 'studio_order.id', '=', 'studio_order_detail.order_id')
  501. ->leftJoin('users', 'studio_order.user_id', '=', 'users.id')
  502. // ->join('warea','warea.id','=','users.warea_id')
  503. ->leftJoin('studio_goods', 'studio_goods.id', '=', 'studio_order_detail.goods_id')
  504. ->leftJoin('address', 'address.id', '=', 'studio_order.address_id')
  505. ->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'));
  506. $admin = Auth::user();
  507. if ($admin->role_id == 23) {
  508. $warea_ids = Warea::where('admin_id', $admin->id)->pluck('id');
  509. $data->whereIn('users.warea_id', $warea_ids);
  510. }
  511. if ($order_no) {
  512. $data->where('studio_order.order_num', $order_no);
  513. }
  514. if ($search_name) {
  515. // $s=substr(trim($search_name),0,4);
  516. // if($s=='DWBS'){
  517. // $data->where('order_test.order_num',trim($search_name));
  518. // }else{
  519. $ids = $this->getUserIds($search_name);
  520. $data->whereIn('studio_order.user_id', $ids);
  521. // }
  522. }
  523. if ($start_time && $end_time && empty($activity_id)) {
  524. $data->whereBetween('studio_order.created_at', [$start_time, $end_time]);
  525. }
  526. if ($activity_id) {
  527. $actice = Activity::find($activity_id);
  528. $data->whereBetween('studio_order.created_at', [$actice->start_time, $actice->end_time]);
  529. }
  530. $list = $data->groupBy('studio_order_detail.order_id', 'studio_goods.sec_attr', 'studio_goods.size', 'studio_goods.main_attr')
  531. ->orderBy('studio_order.id', 'studio_order_detail.id')
  532. ->get()->toArray();
  533. }
  534. $dd = $this->dataGroup($list, 'order_num');
  535. $d = [];
  536. foreach ($dd as $key => $val) {
  537. $info['u_nickname'] = $val[0]['u_nickname'];
  538. $info['u_name'] = $val[0]['u_name'];
  539. $info['u_mobile'] = $val[0]['u_mobile'];
  540. $info['username'] = $val[0]['username'];
  541. $info['mobile'] = $val[0]['mobile'];
  542. $info['address'] = $val[0]['address'];
  543. $info['province'] = $val[0]['province'];
  544. $info['city'] = $val[0]['city'];
  545. $info['town'] = $val[0]['town'];
  546. $admin_name=Warea::where('id',$val[0]['warea_id'])->value('admin_name');
  547. $info['admin_name'] =$admin_name;
  548. $info['created_at'] = $val[0]['created_at'];
  549. // $info['remark'] = (string)$val[0]['remark'];
  550. $info['remark'] = $val[0]['remark'];
  551. $d[$key]['data'] = $info;
  552. $d[$key]['精装'] = [];
  553. $d[$key]['普通'] = [];
  554. $d[$key]['精装混合'] = [];
  555. $d[$key]['普通混合'] = [];
  556. $x1 = 0;
  557. $y1 = [];//精装
  558. $x = 0;
  559. $y = [];//普通
  560. foreach ($val as $k => $v) {
  561. if ($v['main_attr'] == '大卫博士精装版') {
  562. $main_attr = '精';
  563. $n = floor($v['total'] / 10);
  564. for ($i = 0; $i < $n; $i++) {
  565. $cc = [];
  566. $cc['main_attr'] = $main_attr;
  567. $cc['sec_attr'] = $v['sec_attr'];
  568. $cc['size'] = $v['size'];
  569. $cc['num'] = 10;
  570. array_push($d[$key]['精装'], $cc);
  571. }
  572. if ($v['total'] % 10 > 0) {
  573. $t1 = $v['total'] % 10;
  574. if ($x1 + $t1 >= 10) {
  575. $x1 = $x1 + $t1 - 10;
  576. $z1['main_attr'] = $main_attr;
  577. $z1['sec_attr'] = $v['sec_attr'];
  578. $z1['size'] = $v['size'];
  579. $z1['num'] = $t1 - $x1;
  580. if ($y1) {
  581. array_pop($d[$key]['精装混合']);
  582. }
  583. array_push($y1, $z1);
  584. $z1 = [];
  585. array_push($d[$key]['精装混合'], $y1);
  586. $y1 = [];
  587. if ($x1 > 0) {
  588. $z1['main_attr'] = $main_attr;
  589. $z1['sec_attr'] = $v['sec_attr'];
  590. $z1['size'] = $v['size'];
  591. $z1['num'] = $x1;
  592. array_push($y1, $z1);
  593. array_push($d[$key]['精装混合'], $y1);
  594. }
  595. } else {
  596. $x1 += $t1;
  597. $z1['main_attr'] = $main_attr;
  598. $z1['sec_attr'] = $v['sec_attr'];
  599. $z1['size'] = $v['size'];
  600. $z1['num'] = $v['total'] % 10;
  601. if ($y1) {
  602. array_pop($d[$key]['精装混合']);
  603. }
  604. array_push($y1, $z1);
  605. array_push($d[$key]['精装混合'], $y1);
  606. }
  607. }
  608. } else {
  609. $n = floor($v['total'] / 6);
  610. if ($v['main_attr'] == '大卫博士老人版') {
  611. $main_attr = '老';
  612. } elseif ($v['main_attr'] == '大卫博士简约版') {
  613. $main_attr = '简';
  614. } else {
  615. $main_attr = '棉';
  616. }
  617. for ($i = 0; $i < $n; $i++) {
  618. $cc = [];
  619. $cc['main_attr'] = $main_attr;
  620. $cc['sec_attr'] = $v['sec_attr'];
  621. $cc['size'] = $v['size'];
  622. $cc['num'] = 6;
  623. array_push($d[$key]['普通'], $cc);
  624. }
  625. if ($v['total'] % 6 > 0) {
  626. $t = $v['total'] % 6;
  627. if ($x + $t >= 6) {
  628. $x = $x + $t - 6;
  629. $z['main_attr'] = $main_attr;
  630. $z['sec_attr'] = $v['sec_attr'];
  631. $z['size'] = $v['size'];
  632. $z['num'] = $t - $x;
  633. if ($y) {
  634. array_pop($d[$key]['普通混合']);
  635. }
  636. array_push($y, $z);
  637. $z = [];
  638. array_push($d[$key]['普通混合'], $y);
  639. $y = [];
  640. if ($x > 0) {
  641. $z['main_attr'] = $main_attr;
  642. $z['sec_attr'] = $v['sec_attr'];
  643. $z['size'] = $v['size'];
  644. $z['num'] = $x;
  645. array_push($y, $z);
  646. array_push($d[$key]['普通混合'], $y);
  647. }
  648. } else {
  649. $x += $t;
  650. $z['main_attr'] = $main_attr;
  651. $z['sec_attr'] = $v['sec_attr'];
  652. $z['size'] = $v['size'];
  653. $z['num'] = $v['total'] % 6;
  654. if ($y) {
  655. array_pop($d[$key]['普通混合']);
  656. }
  657. array_push($y, $z);
  658. array_push($d[$key]['普通混合'], $y);
  659. }
  660. }
  661. }
  662. }
  663. }
  664. return $this->success($d);
  665. }
  666. protected function dataGroup(array $dataArr, string $keyStr): array
  667. {
  668. $newArr = [];
  669. foreach ($dataArr as $k => $val) { //数据根据日期分组
  670. $newArr[$val[$keyStr]][] = $val;
  671. }
  672. return $newArr;
  673. }
  674. /*
  675. * 工作室兑换开启时间
  676. * ***/
  677. public function set_studio_time(Request $request){
  678. $input=$request->all();
  679. $activity_id=$request->activity_id;
  680. $start_time=$input['start_time'];
  681. $end_time=$input['end_time'];
  682. $re=Activity::where('id',$activity_id)->first();
  683. $re->user_bonus_start=$start_time;
  684. $re->user_bonus_end=$end_time;
  685. $re->save();
  686. return $this->success([]);
  687. }
  688. public function get_studio_time(Request $request){
  689. $activity_id=$request->activity_id;
  690. $re=Activity::where('id',$activity_id)->first();
  691. return $this->success(['start_time'=>$re->user_bonus_start,'end_time'=>$re->user_bonus_end]);
  692. }
  693. public function GetStudioSystem(){
  694. $re=System::whereIn('keys',['studio_first_reward','studio_second_reward','studio_third_reward'])->select('values','keys')->get();
  695. $arr=[];
  696. foreach ($re as $k=>$v){
  697. $res=explode('/',$v->values);
  698. $arr[$v->keys]['money']=$res[0];
  699. $arr[$v->keys]['scale']=$res[1];
  700. }
  701. return $this->success($arr);
  702. }
  703. public function SetStudioSystem(Request $request){
  704. $input=$request->all();
  705. $studio_first_reward_money=$input['studio_first_reward_money'];
  706. $studio_second_reward_money=$input['studio_second_reward_money'];
  707. $studio_third_reward_money=$input['studio_third_reward_money'];
  708. $studio_first_reward_scale=$input['studio_first_reward_scale'];
  709. $studio_second_reward_scale=$input['studio_second_reward_scale'];
  710. $studio_third_reward_scale=$input['studio_third_reward_scale'];
  711. System::where('keys','studio_first_reward')->update(['values'=>$studio_first_reward_money.'/'.$studio_first_reward_scale]);
  712. System::where('keys','studio_second_reward')->update(['values'=>$studio_second_reward_money.'/'.$studio_second_reward_scale]);
  713. System::where('keys','studio_third_reward')->update(['values'=>$studio_third_reward_money.'/'.$studio_third_reward_scale]);
  714. return $this->success([]);
  715. }
  716. /*
  717. * 上传物流单号
  718. * */
  719. public function send_order(Request $request)
  720. {
  721. $time=Carbon::now()->toDateTimeString();
  722. $file = $request->file('file');
  723. if ( !$file->isValid()) { //判断文件是否有效
  724. return redirect()
  725. ->back()
  726. ->withErrors('文件上传失败,请重新上传');
  727. }
  728. $array = Excel::toArray(new ExpressImport, request()->file('file'));
  729. if(count($array)>5001){
  730. return $this->error('450001',"单次最多导入5000条数据");
  731. }
  732. $newArr=[];
  733. $one = array_shift($array[0]);
  734. $express_num_keys=array_search('快递单号',$one);
  735. if(!$express_num_keys){
  736. return $this->error('450001',"表头无'快递单号'字段");
  737. }
  738. $order_num_keys=array_search('订单编号',$one);
  739. if(!$express_num_keys){
  740. return $this->error('450001',"表头无'订单编号'字段");
  741. }
  742. $express_total=array_search('数据求和',$one);
  743. if(!$express_total){
  744. return $this->error('450001',"表头无'数据求和'字段");
  745. }
  746. $express_com_keys=array_search('快递公司',$one);
  747. if(!$express_num_keys){
  748. return $this->error('450001',"表头无'快递公司'字段");
  749. }
  750. $express_status_keys=array_search('发货状态',$one);
  751. if(!$express_status_keys){
  752. return $this->error('450001',"表头无'发货状态'字段");
  753. }
  754. $l_keys=array_search('L',$one);
  755. $xl_keys=array_search('XL',$one);
  756. $xxl_keys=array_search('XXL',$one);
  757. $xxxl_keys=array_search('XXXL',$one);
  758. $vm_keys=array_search('女M',$one);
  759. $vl_keys=array_search('女L',$one);
  760. $vxl_keys=array_search('女XL',$one);
  761. $vxxl_keys=array_search('女XXL',$one);
  762. $vxxxl_keys=array_search('女XXXL',$one);
  763. $wxl_keys=array_search('5XL',$one);
  764. $keys=[$l_keys,$xl_keys,$xxl_keys,$xxxl_keys,$vm_keys,$vl_keys,$vxl_keys,$vxxl_keys,$vxxxl_keys,$wxl_keys];
  765. $express_code=['中通快递'=>'ZTO','中通快运'=>'ZTOKY','德邦快递'=>'DBL','德邦物流'=>'DBL','邮政EMS'=>'EMS'];
  766. $arres=[];
  767. $o=0;
  768. foreach ($array[0] as $k=>$v){
  769. if ($v[$express_com_keys]!='中通快运'){
  770. $arres[$o]=$v;
  771. }
  772. }
  773. $express_nums=array_column($arres,$express_num_keys);
  774. $unique_express_nums=array_unique($express_nums);
  775. $que_express_nums=array_diff_assoc($express_nums,$unique_express_nums);
  776. if(count($que_express_nums)>0){
  777. $que_express_str=implode(',',$que_express_nums);
  778. return $this->error('450001','快递单号'.$que_express_str.'重复出现');
  779. }
  780. $statusArr=[];$arr=[];
  781. $area_list=[];
  782. $arr_order=[];
  783. foreach ($array[0] as $key => $value) {
  784. $area_list[$value[0]][] = $value;
  785. }
  786. $is=0;
  787. foreach ($area_list as $k=>$v){
  788. $arr_order[$is]['order_num']=$k;
  789. $arr_order[$is]['express_code']=$v[0][$express_num_keys];
  790. $arr_order[$is]['express_com']=$v[0][$express_com_keys];
  791. $is++;
  792. }
  793. DB::beginTransaction();
  794. try {
  795. foreach ($array[0] as $key => $val) {
  796. $statusArr[$val[$order_num_keys]][] = $val[$express_status_keys];
  797. $arr[$val[$order_num_keys]] = array_unique($statusArr[$val[$order_num_keys]]);
  798. if (count($arr[$val[$order_num_keys]]) > 1) {
  799. return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '发货状态不一致');
  800. }
  801. if (empty($val[$order_num_keys])) {
  802. return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号为空');
  803. }
  804. $order = StudioOrder::where('order_num', $val[$order_num_keys])->first();
  805. if (empty($order)) {
  806. return $this->error('450001', '第' . ($key + 2) . '行附近,订单编号:' . $val[$order_num_keys] . '订单信息不存在');
  807. }
  808. if (empty($val[$express_total])) {
  809. return $this->error('450001', '第' . ($key + 2) . '行附近,数据求和为空');
  810. }
  811. if (empty($val[$express_num_keys])) {
  812. return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号为空');
  813. }
  814. if (empty($val[$express_com_keys])) {
  815. return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司为空');
  816. }
  817. if (empty($express_code[$val[$express_com_keys]])) {
  818. return $this->error('450001', '第' . ($key + 2) . '行附近,快递公司名称有误');
  819. }
  820. if ($express_com_keys=='中通快运'){
  821. $express = StudioExpress::where('express_number', $val[$express_num_keys])->where('created_at','<',$time)->first();
  822. if ($express) {
  823. return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在');
  824. }
  825. }else{
  826. $express = StudioExpress::where('express_number', $val[$express_num_keys])->first();
  827. if ($express) {
  828. return $this->error('450001', '第' . ($key + 2) . '行附近,快递单号:' . $val[$express_num_keys] . '物流信息已存在');
  829. }
  830. }
  831. }
  832. $i=0;
  833. $ks=0;
  834. $d=[];
  835. foreach ($area_list as $ke=>$va){
  836. $order=StudioOrder::where('order_num',$ke)->first();
  837. $number=StudioExpress::where('order_id',$order->id)->groupBy('number')->get()->count();
  838. $count=StudioExpress::where('order_id',$order->id)->count();
  839. $total=StudioExpress::where('order_id',$order->id)->sum('total');
  840. foreach ($va as $key=>$val){
  841. $exp=new StudioExpress();
  842. if (!empty($newArr[$i]['note'])) {
  843. $exp->note = $newArr[$i]['note'] . ',';
  844. } else {
  845. $exp->note = '';
  846. }
  847. $exp->order_id = $order->id;
  848. $exp->user_id=$order->user_id;
  849. if ($val[$express_com_keys]=='中通快递'){
  850. $exp->express_number=$this->get_number($val[$express_num_keys]);
  851. }else{
  852. $exp->express_number = $val[$express_num_keys];
  853. }
  854. $exp->express_com = $val[$express_com_keys];
  855. $exp->express_code = $express_code[$val[$express_com_keys]];
  856. $data = '';
  857. $datas=[];
  858. $l=0;
  859. foreach ($keys as $k => $v) {
  860. if (!empty($val[$v])) {
  861. if (empty($data)) {
  862. $data .= $one[$v] . ':' . $val[$v];
  863. } else {
  864. $data .= '+' . $one[$v] . ':' . $val[$v];
  865. }
  866. $nums=mb_strlen($val[$v]);
  867. if ($nums==2){
  868. $re=mb_strstr($val[$v],'精');
  869. if ($re){
  870. $n=mb_strlen($val[$v]);
  871. $num=mb_substr($val[$v],0,$n-1);
  872. $kuan='精装版';
  873. $ku=0;
  874. }else{
  875. $re=mb_strstr($val[$v],'简');
  876. if ($re){
  877. $n=mb_strlen($val[$v]);
  878. $num=mb_substr($val[$v],0,$n-1);
  879. $kuan='简约版';
  880. $ku=1;
  881. }else{
  882. $re=mb_strstr($val[$v],'棉');
  883. if ($re){
  884. $n=mb_strlen($val[$v]);
  885. $num=mb_substr($val[$v],0,$n-1);
  886. $kuan='棉老版';
  887. $ku=3;
  888. }else{
  889. $re=mb_strstr($val[$v],'老');
  890. if ($re){
  891. $n=mb_strlen($val[$v]);
  892. $num=mb_substr($val[$v],0,$n-1);
  893. $kuan='老人版';
  894. $ku=2;
  895. }else{
  896. return $this->error(50021,'尺码不对','');
  897. }
  898. }
  899. }
  900. }
  901. if ($k<=3){
  902. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$num,'kuan'=>$kuan,'ku'=>$ku];
  903. $total+=$num;
  904. }else{
  905. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$num,'kuna'=>$kuan,'ku'=>$ku];
  906. $total+=$num;
  907. }
  908. $l++;
  909. $count++;
  910. }else{
  911. if ($nums%2!=0){
  912. $re_1=mb_strstr($val[$v],'精');
  913. if ($re_1){
  914. $numss=mb_strlen($re_1);
  915. $aa=mb_substr($val[$v],$nums-$numss-2,2);
  916. if (!is_numeric($aa)){
  917. return $this->error(500024,'尺码对应的数量不对,请核对数量0');
  918. }
  919. if ($k<=3){
  920. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0];
  921. $total+=$aa;
  922. }else{
  923. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0];
  924. $total+=$aa;
  925. }
  926. $l++;
  927. $count++;
  928. }
  929. }else{
  930. $re_1=mb_strstr($val[$v],'精');
  931. if ($re_1){
  932. $numss=mb_strlen($re_1);
  933. $aa=mb_substr($val[$v],$nums-$numss-1,1);
  934. if (!is_numeric($aa)){
  935. return $this->error(500024,'尺码对应的数量不对,请核对数量1');
  936. }
  937. if ($k<=3){
  938. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'精装版','ku'=>0];
  939. $total+=$aa;
  940. }else{
  941. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'精装版','ku'=>0];
  942. $total+=$aa;
  943. }
  944. $l++;
  945. $count++;
  946. }
  947. }
  948. $re_2=mb_strstr($val[$v],'简');
  949. if ($re_2){
  950. $numss=mb_strlen($re_2);
  951. $aa=mb_substr($val[$v],$nums-$numss-1,1);
  952. if (!is_numeric($aa)){
  953. return $this->error(500024,'尺码对应的数量不对,请核对数量2');
  954. }
  955. if ($k<=3){
  956. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'简约版','ku'=>1];
  957. $total+=$aa;
  958. }else{
  959. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'简约版','ku'=>1];
  960. $total+=$aa;
  961. }
  962. $l++;
  963. $count++;
  964. }
  965. $re_3=mb_strstr($val[$v],'老');
  966. if ($re_3){
  967. $numss=mb_strlen($re_3);
  968. $aa=mb_substr($val[$v],$nums-$numss-1,1);
  969. if (!is_numeric($aa)){
  970. return $this->error(500024,'尺码对应的数量不对,请核对数量3');
  971. }
  972. if ($k<=3){
  973. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'老人版','ku'=>2];
  974. $total+=$aa;
  975. }else{
  976. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'老人版','ku'=>2];
  977. $total+=$aa;
  978. }
  979. $l++;
  980. $count++;
  981. }
  982. $re_4=mb_strstr($val[$v],'棉');
  983. if ($re_4){
  984. $numss=mb_strlen($re_4);
  985. $aa=mb_substr($val[$v],$nums-$numss-1,1);
  986. if (!is_numeric($aa)){
  987. return $this->error(500024,'尺码对应的数量不对,请核对数量4');
  988. }
  989. if ($k<=3){
  990. $datas[$l]=['sex'=>'男款','sexs'=>1,'size'=>$one[$v],'num'=>$aa,'kuan'=>'棉老版','ku'=>3];
  991. $total+=$aa;
  992. }else{
  993. $datas[$l]=['sex'=>'女款','sexs'=>0,'size'=>mb_substr($one[$v],1),'num'=>$aa,'kuna'=>'棉老版','ku'=>3];
  994. $total+=$aa;
  995. }
  996. $l++;
  997. $count++;
  998. }
  999. if (!$re_1&&!$re_2&&!$re_3&&!$re_4){
  1000. return $this->error(522201,'尺码对应的数量信息不正确','');
  1001. }
  1002. }
  1003. }
  1004. }
  1005. $exp->note .= $data;
  1006. $exp->notes = json_encode($datas);
  1007. $exp->status = 0;
  1008. $exp->number = $number+1;
  1009. $exp->count = $key+1;
  1010. $exp->total = $val[$express_total];
  1011. if (!$exp->save()){
  1012. throw new \Exception(1);
  1013. }
  1014. foreach ($datas as $kes=>$vals){
  1015. $es=new StudioExpressStorage();
  1016. $str_count=substr_count($vals['size'],'X');
  1017. if ($str_count>=2){
  1018. $vals['size']=$str_count.'XL';
  1019. }
  1020. $es->user_id=$order->good_user_id;
  1021. $es->express_id=$exp->id;
  1022. $es->sex=$vals['sexs'];
  1023. $es->size=$vals['size'];
  1024. $es->num=$vals['num'];
  1025. $es->type=$vals['ku'];
  1026. if (!$es->save()){
  1027. throw new \Exception(1);
  1028. }
  1029. }
  1030. }
  1031. if ($total==$order->total){
  1032. $order->track_status=2;
  1033. }elseif ($total<$order->total){
  1034. $order->track_status=1;
  1035. }else{
  1036. return $this->error(52201,$ke.'数量出错了');
  1037. }
  1038. $order->number+=$count;
  1039. $order->save();
  1040. }
  1041. StudioExpress::insert($newArr);
  1042. DB::commit();
  1043. return $this->success([]);
  1044. }catch(\Exception $e){
  1045. DB::rollBack();
  1046. Log::error($e);
  1047. return $this->error();
  1048. }
  1049. }
  1050. public function AddStudio(Request $request){
  1051. $input=$request->all();
  1052. DB::beginTransaction();
  1053. try{
  1054. $user=User::where('mobile',$input['mobile'])->first();
  1055. if (!$user){
  1056. return $this->error(50028,'代理公司手机号查不到对应的代理');
  1057. }
  1058. if ($user->level!=3){
  1059. return $this->error(50028,'代理公司手机号对应的代理不是代理公司');
  1060. }
  1061. $re=Studio::where('user_id',$user->id)->first();
  1062. if ($re){
  1063. return $this->error(50028,'代理公司已存在');
  1064. }
  1065. $studio_user=new Studio();
  1066. $studio_user->studio_name=$input['studio_name'];
  1067. $studio_user->user_id=$user->id;
  1068. $studio_user->status=$input['status'];
  1069. $studio_user->province=$input['province'];
  1070. $studio_user->city=$input['city'];
  1071. $studio_user->area=$input['area'];
  1072. $studio_user->address=$input['address'];
  1073. if (!$studio_user->save()){
  1074. throw new \Exception('1');
  1075. }
  1076. DB::commit();
  1077. return $this->success([]);
  1078. }catch (\Exception $exception){
  1079. DB::rollBack();
  1080. return $this->error(50023,$exception->getMessage());
  1081. }
  1082. }
  1083. public function SetStatusStudio(Request $request){
  1084. $input=$request->all();
  1085. $studio=Studio::find($input['id']);
  1086. if ($studio->status==0){
  1087. $studio->status=1;
  1088. }else{
  1089. $studio->status=0;
  1090. }
  1091. $studio->save();
  1092. return $this->success([]);
  1093. }
  1094. public function UpdateStudio(Request $request){
  1095. $input=$request->all();
  1096. $id=$input['id'];
  1097. DB::beginTransaction();
  1098. try{
  1099. $studio_user=Studio::find($id);
  1100. $user=User::where('mobile',$input['mobile'])->first();
  1101. if (!$user){
  1102. return $this->error(50028,'代理公司手机号查不到对应的代理');
  1103. }
  1104. if ($user->level!=3){
  1105. return $this->error(50028,'代理公司手机号对应的代理不是代理公司');
  1106. }
  1107. if ($studio_user->user_id!=$user->id){
  1108. $re=Studio::where('user_id',$user->id)->first();
  1109. if ($re){
  1110. return $this->error(50028,'代理公司已存在');
  1111. }
  1112. $studio_user->user_id=$user->id;
  1113. }
  1114. $studio_user->studio_name=$input['studio_name'];
  1115. $studio_user->status=$input['status'];
  1116. $studio_user->province=$input['province'];
  1117. $studio_user->city=$input['city'];
  1118. $studio_user->area=$input['area'];
  1119. $studio_user->address=$input['address'];
  1120. if (!$studio_user->save()){
  1121. throw new \Exception('1');
  1122. }
  1123. DB::commit();
  1124. return $this->success([]);
  1125. }catch (\Exception $exception){
  1126. DB::rollBack();
  1127. return $this->error(50023,$exception->getMessage());
  1128. }
  1129. }
  1130. }