No Description

OrderController.php 52KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185
  1. <?php
  2. /**
  3. * Created by Sublime.
  4. * User: hao
  5. * Date: 19/08/30
  6. * Time: 上午11:20
  7. */
  8. namespace App\Http\Controllers\Admin;
  9. use App\Http\Controllers\Controller;
  10. use App\Logs;
  11. use App\Order;
  12. use App\Oplog;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\DB;
  15. use PHPExcel_Reader_Excel2007;
  16. use PHPExcel_Reader_Excel5;
  17. use PHPExcel;
  18. use PHPExcel_Writer_Excel2007;
  19. class OrderController extends Controller
  20. {
  21. public function orderindex(Request $request){
  22. $page = (int)$request->input('page');
  23. $pageSize = 20;
  24. if($page<=0){
  25. $page = 1;
  26. }
  27. $offset = ($page-1) * $pageSize;
  28. $self_role = session('role_name');
  29. if($self_role == '超级管理员' || $self_role == '团队主管' || $self_role == '管理员' || $self_role == '售后管理员'){
  30. $admin_id = $request->input('admin_id');
  31. $search_admin = 1;
  32. }else{
  33. $admin_id = session('admin_id');
  34. $search_admin = 0;
  35. }
  36. $team_id = $request->input('team_id');
  37. #只能看自己团队的
  38. if($self_role != '超级管理员' && $self_role != '售后管理员'){
  39. $self_id = session('admin_id');
  40. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  41. }
  42. //假如有团队筛选,检索销售队员
  43. $sale_ids = null;
  44. if($team_id>0){
  45. $sale_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  46. }
  47. $stime = $request->input('stime');
  48. $etime = $request->input('etime');
  49. $receiverName = trim($request->input('receiverName'));
  50. $receiverMobile = trim($request->input('receiverMobile'));
  51. $status = $request->input('status');
  52. if($status === null){
  53. $status = -1;
  54. }
  55. $count = Order::where(function($query) use($admin_id, $stime, $etime, $receiverName, $receiverMobile, $self_role, $sale_ids, $status){
  56. if($admin_id) $query->where('admin_id', $admin_id);
  57. if($stime) $query->where('createTime', '>=', $stime);
  58. if($etime) $query->where('createTime', '<=', $etime);
  59. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  60. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  61. if($self_role == '管理员') $query->where('status','>',0);
  62. if(!empty($sale_ids)) $query->whereIn('admin_id', $sale_ids);
  63. if(($status>=0)) $query->where('status', $status);
  64. })->where('is_del',0)->count();
  65. if ($count > 1) {
  66. // 总页数
  67. $pages = ceil($count/$pageSize);
  68. }else{
  69. // 总页数
  70. $pages = 1;
  71. }
  72. $result = Order::where(function($query) use($admin_id, $stime, $etime, $receiverName, $receiverMobile, $self_role, $sale_ids, $status){
  73. if($admin_id) $query->where('admin_id', $admin_id);
  74. if($stime) $query->where('createTime', '>=', $stime);
  75. if($etime) $query->where('createTime', '<=', $etime);
  76. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  77. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  78. if($self_role == '管理员') $query->where('status','>',0);
  79. if(!empty($sale_ids)) $query->whereIn('admin_id', $sale_ids);
  80. if(($status>=0)) $query->where('status', $status);
  81. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  82. $result = json_decode(json_encode($result),true);
  83. $status_arr = array(
  84. 0 => '已录入',
  85. 1 => '待审核',
  86. 2 => '已审核',
  87. 3 => '已发货',
  88. );
  89. foreach($result as $k=>&$v){
  90. /*
  91. //获取商品信息
  92. $v['goods'] = '';
  93. $goods = DB::table('order_goods')->where('outerParentCode', $v['outerCode'])->get();
  94. foreach($goods as $item){
  95. $v['goods'][] = $item->goodsName.'&nbsp; 单价:¥'.$item->price.'&nbsp; 件数:'.$item->quantity.'';
  96. }
  97. */
  98. #加粉时间
  99. $fanTime = DB::table('customers')->select('fanTime')->where('phone', $v['receiverMobile'])->first();
  100. $v['fanTime'] = isset($fanTime->fanTime) ? $fanTime->fanTime : '';
  101. $v['receiverMobile'] = substr($v['receiverMobile'], 0, 3).'****'.substr($v['receiverMobile'], 7);
  102. #获取状态机
  103. if($self_role == '销售' && !in_array($v['status'], [0]) ){
  104. $v['enable_status'] = [];
  105. }else{
  106. $v['enable_status'] = $this->getEnableStatus($v['status']);
  107. }
  108. $v['status_name'] = $status_arr[$v['status']];
  109. }
  110. #销售筛选
  111. $saler_ids = DB::table('admin_role')->where('role_name', '销售')->lists('user_id');
  112. $adminList = DB::table('admin')->select('id', 'realname', 'username')->whereIn('id', $saler_ids)->where(function($query) use($team_id){
  113. if($team_id>0) $query->where('team_id', $team_id);
  114. })->where('id','>', 1)->get();
  115. $adminList = json_decode(json_encode($adminList), true);
  116. return view('order/orderlist', ['result' =>$result,
  117. 'page' =>$page,
  118. 'count' =>$count,
  119. 'pages' =>$pages,
  120. 'admin_id' =>$admin_id,
  121. 'team_id' =>$team_id,
  122. 'stime' =>$stime,
  123. 'etime' =>$etime,
  124. 'adminlist' =>$adminList,
  125. 'search_admin' =>$search_admin,
  126. 'self_role' =>$self_role,
  127. 'receiverName' =>$receiverName,
  128. 'receiverMobile' =>$receiverMobile,
  129. 'status' =>$status,
  130. ]);
  131. }
  132. /**
  133. * 仓库管理员订单列表
  134. */
  135. public function warehouse(Request $request){
  136. $page = (int)$request->input('page');
  137. $pageSize = 20;
  138. if($page<=0){
  139. $page = 1;
  140. }
  141. $offset = ($page-1) * $pageSize;
  142. $admin_id = $request->input('admin_id');
  143. $search_admin = 1;
  144. $self_role = session('role_name');
  145. if($self_role == 'A仓库管理员'){
  146. $warehouse = 1;
  147. }elseif($self_role == 'B仓库管理员'){
  148. $warehouse = 2;
  149. }else{
  150. $warehouse = 0;
  151. }
  152. $stime = $request->input('stime');
  153. $etime = $request->input('etime');
  154. $delivery_type = (int)$request->input('delivery_type'); //发货状态 0到发货时间(未填物流信息) 2全部
  155. $receiverName = trim($request->input('receiverName'));
  156. $receiverMobile = trim($request->input('receiverMobile'));
  157. //仓库管理员只能看到 918之后的数据
  158. $_start = '2019-09-18';
  159. //仓库管理员只能看到已审核订单
  160. $today_date = date('Y-m-d');
  161. $count = Order::where(function($query) use($admin_id, $stime, $etime, $today_date, $delivery_type, $receiverName, $receiverMobile, $_start){
  162. if($admin_id) $query->where('admin_id', $admin_id);
  163. if($stime) $query->where('createTime', '>=', $stime);
  164. if($etime) $query->where('createTime', '<=', $etime);
  165. if($delivery_type==0) $query->where('delivery_date', '<=', $today_date)->where('logistics_id', '=', '');
  166. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  167. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  168. $query->where('createTime', '>=', $_start);
  169. })->where('is_del',0)->where('warehouse', $warehouse)->where('status', '>', 1)->count();
  170. if ($count > 1) {
  171. // 总页数
  172. $pages = ceil($count/$pageSize);
  173. }else{
  174. // 总页数
  175. $pages = 1;
  176. }
  177. $result = Order::where(function($query) use($admin_id, $stime, $etime, $today_date, $delivery_type, $receiverName, $receiverMobile, $_start){
  178. if($admin_id) $query->where('admin_id', $admin_id);
  179. if($stime) $query->where('createTime', '>=', $stime);
  180. if($etime) $query->where('createTime', '<=', $etime);
  181. if($delivery_type==0) $query->where('delivery_date', '<=', $today_date)->where('logistics_id', '=', '');
  182. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  183. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  184. $query->where('createTime', '>=', $_start);
  185. })->where('is_del',0)->where('warehouse', $warehouse)->where('status', '>', 1)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  186. $result = json_decode(json_encode($result),true);
  187. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  188. $adminList = json_decode(json_encode($adminList), true);
  189. return view('order/warehouselist', ['result' =>$result,
  190. 'page' =>$page,
  191. 'count' =>$count,
  192. 'pages' =>$pages,
  193. 'admin_id' =>$admin_id,
  194. 'stime' =>$stime,
  195. 'etime' =>$etime,
  196. 'delivery_type' =>$delivery_type,
  197. 'adminlist' =>$adminList,
  198. 'receiverName' =>$receiverName,
  199. 'receiverMobile' =>$receiverMobile,
  200. ]);
  201. }
  202. /**
  203. * 预售订单列表
  204. */
  205. public function predictOrder(Request $request){
  206. $page = (int)$request->input('page');
  207. $pageSize = 20;
  208. if($page<=0){
  209. $page = 1;
  210. }
  211. $offset = ($page-1) * $pageSize;
  212. $self_role = session('role_name');
  213. if($self_role == '超级管理员' || $self_role == '团队主管' || $self_role == '管理员' || $self_role == '售后管理员'){
  214. $admin_id = $request->input('admin_id');
  215. $search_admin = 1;
  216. }else{
  217. $admin_id = session('admin_id');
  218. $search_admin = 0;
  219. }
  220. $team_id = $request->input('team_id');
  221. #只能看自己团队的
  222. if($self_role != '超级管理员' && $self_role != '售后管理员'){
  223. $self_id = session('admin_id');
  224. $team_id = DB::table('admin')->where('id', $self_id)->pluck('team_id');
  225. }
  226. //假如有团队筛选,检索销售队员
  227. $sale_ids = null;
  228. if($team_id>0){
  229. $sale_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  230. }
  231. $stime = $request->input('stime');
  232. $etime = $request->input('etime');
  233. $receiverName = trim($request->input('receiverName'));
  234. $receiverMobile = trim($request->input('receiverMobile'));
  235. $status = $request->input('status');
  236. if($status === null){
  237. $status = -1;
  238. }
  239. //预售逻辑 -> 预发货时间大于下单时间
  240. $count = Order::where(function($query) use($admin_id, $stime, $etime, $receiverName, $receiverMobile, $self_role, $sale_ids, $status){
  241. if($admin_id) $query->where('admin_id', $admin_id);
  242. if($stime) $query->where('createTime', '>=', $stime);
  243. if($etime) $query->where('createTime', '<=', $etime);
  244. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  245. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  246. if($self_role == '管理员') $query->where('status','>',0);
  247. if(!empty($sale_ids)) $query->whereIn('admin_id', $sale_ids);
  248. if(($status>=0)) $query->where('status', $status);
  249. })->where('is_del',0)->where(DB::raw('delivery_date>createTime'))->count();
  250. if ($count > 1) {
  251. // 总页数
  252. $pages = ceil($count/$pageSize);
  253. }else{
  254. // 总页数
  255. $pages = 1;
  256. }
  257. $result = Order::where(function($query) use($admin_id, $stime, $etime, $receiverName, $receiverMobile, $self_role, $sale_ids, $status){
  258. if($admin_id) $query->where('admin_id', $admin_id);
  259. if($stime) $query->where('createTime', '>=', $stime);
  260. if($etime) $query->where('createTime', '<=', $etime);
  261. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  262. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  263. if($self_role == '管理员') $query->where('status','>',0);
  264. if(!empty($sale_ids)) $query->whereIn('admin_id', $sale_ids);
  265. if(($status>=0)) $query->where('status', $status);
  266. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  267. $result = json_decode(json_encode($result),true);
  268. $status_arr = array(
  269. 0 => '已录入',
  270. 1 => '待审核',
  271. 2 => '已审核',
  272. 3 => '已发货',
  273. );
  274. foreach($result as $k=>&$v){
  275. /*
  276. //获取商品信息
  277. $v['goods'] = '';
  278. $goods = DB::table('order_goods')->where('outerParentCode', $v['outerCode'])->get();
  279. foreach($goods as $item){
  280. $v['goods'][] = $item->goodsName.'&nbsp; 单价:¥'.$item->price.'&nbsp; 件数:'.$item->quantity.'';
  281. }
  282. */
  283. #加粉时间
  284. $fanTime = DB::table('customers')->select('fanTime')->where('phone', $v['receiverMobile'])->first();
  285. $v['fanTime'] = isset($fanTime->fanTime) ? $fanTime->fanTime : '';
  286. $v['receiverMobile'] = substr($v['receiverMobile'], 0, 3).'****'.substr($v['receiverMobile'], 7);
  287. #获取状态机
  288. if($self_role == '销售' && !in_array($v['status'], [0]) ){
  289. $v['enable_status'] = [];
  290. }else{
  291. $v['enable_status'] = $this->getEnableStatus($v['status']);
  292. }
  293. $v['status_name'] = $status_arr[$v['status']];
  294. }
  295. #销售筛选
  296. $saler_ids = DB::table('admin_role')->where('role_name', '销售')->lists('user_id');
  297. $adminList = DB::table('admin')->select('id', 'realname', 'username')->whereIn('id', $saler_ids)->where(function($query) use($team_id){
  298. if($team_id>0) $query->where('team_id', $team_id);
  299. })->where('id','>', 1)->get();
  300. $adminList = json_decode(json_encode($adminList), true);
  301. return view('order/orderlist', ['result' =>$result,
  302. 'page' =>$page,
  303. 'count' =>$count,
  304. 'pages' =>$pages,
  305. 'admin_id' =>$admin_id,
  306. 'team_id' =>$team_id,
  307. 'stime' =>$stime,
  308. 'etime' =>$etime,
  309. 'adminlist' =>$adminList,
  310. 'search_admin' =>$search_admin,
  311. 'self_role' =>$self_role,
  312. 'receiverName' =>$receiverName,
  313. 'receiverMobile' =>$receiverMobile,
  314. 'status' =>$status,
  315. ]);
  316. }
  317. /**
  318. * 添加订单
  319. * @return \Illuminate\View\View
  320. */
  321. public function ordercreate(Request $request)
  322. {
  323. $catelist = DB::table('goods_category')->select(DB::raw('distinct goods_category_name'))->lists('goods_category_name');
  324. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  325. $teamList = DB::table('teams')->select('id', 'name')->get();
  326. $teamList = json_decode(json_encode($teamList), true);
  327. $adminList = json_decode(json_encode($adminList), true);
  328. $self_role = session('role_name');
  329. $createTime = date('Y-m-d H:i:s');
  330. return view('order/ordercreate', ['categorylist' => $catelist, 'adminlist'=>$adminList, 'teamlist'=>$teamList, 'self_role'=>$self_role, 'createTime'=>$createTime]);
  331. }
  332. /**
  333. * 分组管理-进行添加操作
  334. * @param Request $request
  335. * @return \Illuminate\Http\RedirectResponse
  336. */
  337. public function orderstore(Request $request)
  338. {
  339. $this->validate($request, [
  340. 'receiverName' => 'required',
  341. 'receiverMobile' => 'required',
  342. 'receivedAmount' => 'required',
  343. 'goods_note' => 'required',
  344. 'warehouse' => 'required|integer|min:1',
  345. ], [
  346. 'receiverName.required' => '收货人不能为空',
  347. 'receiverMobile.required' => '收货人手机号不能为空',
  348. 'receivedAmount.required' => '付款金额不能为空',
  349. 'goods_note.required' => '商品信息不能为空',
  350. 'warehouse.required' => '仓库必须选择',
  351. 'warehouse.min' => '仓库必须选择',
  352. ]);
  353. //数据库-新增数据
  354. $order = array();
  355. $order['eshopCode'] = '99|34881'; //默认
  356. $order['outerCode'] = Order::createOuterCode();//随机生成
  357. $order['status'] = (int)$request->input('status');
  358. $order['customerName'] = $request->input('customerName'); //买家名称
  359. $order['shippingType'] = '卖家包邮';
  360. $order['expressCompanyCode'] = '10084';
  361. $order['expressCompanyName'] = '顺丰快递';
  362. $order['receiverName'] = $request->input('receiverName'); //收件人
  363. $order['receiverMobile'] = $request->input('receiverMobile'); //收件人手机
  364. $order['receiverPhone'] = $request->input('receiverMobile'); //收件人手机
  365. $order['receiverState'] = $request->input('receiverState'); //省份
  366. $order['receiverCity'] = $request->input('receiverCity'); //市
  367. $order['receiverDistrict'] = $request->input('receiverDistrict'); //区
  368. $order['receiverStreet'] = $request->input('receiverStreet'); //街道
  369. $order['receiverAddress'] = $request->input('receiverAddress'); //详细地址
  370. $order['buyerPostageFee'] = 0; //买家邮费
  371. $order['discountFee'] = 0; //订单优惠
  372. $order['adjustFee'] = 0; //订单调价
  373. $order['serviceFee'] = 0; //服务费
  374. $order['paymentMethod'] = '在线付款';
  375. $order['paymentType'] = '网银';
  376. $order['paymentAccount'] = '18322223333'; // 付款账号,暂时默认写死
  377. $order['paymentTime'] = date('Y-m-d H:i:s'); // 付款时间
  378. $order['receivedAmount'] = $request->input('receivedAmount'); //付款金额
  379. $order['buyerMemo'] = $request->input('buyerMemo', ''); // 买家备注
  380. $order['sellerMemo'] = $request->input('sellerMemo', ''); // 卖家备注
  381. $order['createTime'] = !empty($request->input('createTime')) ? $request->input('createTime') : date('Y-m-d H:i:s'); // 订单创建时间
  382. $order['modifyTime'] = date('Y-m-d H:i:s'); // 订单修改时间
  383. $order['goods_note'] = $request->input('goods_note');
  384. if($request->input('cost')) $order['cost'] = $request->input('cost'); //成本
  385. $order['logistics_id'] = $request->input('logistics_id'); //物流单号
  386. $order['is_refund'] = (int)$request->input('is_refund'); //是否退过单
  387. if($request->input('refund_price')) $order['refund_price'] = $request->input('refund_price'); //应该退补差价
  388. $order['is_fugou'] = (int)$request->input('is_fugou'); //是否复购
  389. $order['warehouse'] = (int)$request->input('warehouse'); //仓库
  390. $order['delivery_date'] = !empty($request->input('delivery_date')) ? $request->input('delivery_date') : date('Y-m-d'); //发货日期
  391. $order['order_status'] = (int)$request->input('order_status');
  392. $order['payment_type'] = (int)$request->input('payment_type'); //支付方式
  393. //商品信息
  394. /*
  395. $g_info = trim($request->input('g_info'),';');
  396. //var_dump($g_info);
  397. $g_info = explode(';' , $g_info);
  398. $goods_info = array();
  399. foreach($g_info as $k=>$info){
  400. $info = explode(':', $info);
  401. $goods_info[$k]['id'] = $info[0];
  402. $goods_info[$k]['num'] = $info[1];
  403. }
  404. foreach($goods_info as $k=>$v){
  405. $goods = DB::table('goods_sku_list')->where('id', $v['id'])->first();
  406. $params = array();
  407. $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
  408. $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
  409. $params['goodsCode'] = $goods->code;// strstr($goods->code,'-',true);
  410. $params['skuCode'] = $goods->code;
  411. #商品名称
  412. $params['goodsName'] = DB::table('goods_category')->where('goods_id', $goods->goods_id)->pluck('goods_name');
  413. //$params['goodsName'] = '海钓黄翅鱼';//$goods->code;
  414. $params['price'] = $goods->price;
  415. $params['quantity'] = $v['num'];
  416. $params['discountFee'] = 0;
  417. $params['adjustFee'] = 0;
  418. $params['refundStatus'] = '正常';
  419. $order['skuList'][] = $params;
  420. }
  421. */
  422. //卖家云添加订单
  423. //$mj_add = Order::mjOrderAdd($order);
  424. if(true){
  425. #更新客户表
  426. $customer = array();
  427. $customers['name'] = $order['receiverName'];
  428. $customers['receiverState'] = $order['receiverState'];
  429. $customers['receiverCity'] = $order['receiverCity'];
  430. $customers['receiverDistrict'] = $order['receiverDistrict'];
  431. $customers['receiverStreet'] = $order['receiverStreet'];
  432. $customers['receiverAddress'] = $order['receiverAddress'];
  433. $customers['fanTime'] = $request->input('fanTime');
  434. $if_e = DB::table('customers')->select('id')->where('phone', $order['receiverMobile'])->first();
  435. if(isset($if_e->id)){
  436. $customers['is_fugou'] = 1;
  437. $order['is_fugou'] = 1;
  438. $up_c = DB::table('customers')->where('id', $if_e->id)->update($customers);
  439. }else{
  440. $customers['phone'] = $order['receiverMobile'];
  441. $customers['is_fugou'] = $order['is_fugou'];
  442. $in_c = DB::table('customers')->insert($customers);
  443. }
  444. //$order_goods = $order['skuList'];
  445. //unset($order['skuList']);
  446. //DB::table('order_goods')->insert($order_goods);
  447. //$order['orderCode'] = $mj_add['order']['code'];
  448. $admin_id = (int)$request->input('admin_id');
  449. if($admin_id>0){
  450. $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
  451. $order['admin_id'] = $admin_id;
  452. $order['admin_name'] = $admin_info->realname;
  453. $order['team_id'] = $admin_info->team_id;
  454. }else{
  455. $order['admin_id'] = session('admin_id');
  456. $order['admin_name'] = session('real_name');
  457. $order['team_id'] = session('team_id');
  458. }
  459. $res = DB::table('order')->insertGetId($order);
  460. if($res){
  461. #记录操作日志
  462. $self_id = session('admin_id');
  463. $self_name = session('real_name');
  464. if($order['status'] == 0){
  465. $status_text = '仅录入';
  466. }else{
  467. $status_text = '录入并提审';
  468. }
  469. $context = "录入订单:".$status_text;
  470. $type = 0; //订单录入
  471. $tables = 'order';
  472. $data_id = $res;
  473. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  474. }
  475. return redirect('/admin/order/index')->with('info', '添加成功');
  476. }
  477. }
  478. /**
  479. * 分组管理-编辑分组界面
  480. * @param $id
  481. * @return \Illuminate\View\View
  482. */
  483. public function orderedit($id,Request $request)
  484. {
  485. $stime = $request->input('stime');
  486. $etime = $request->input('etime');
  487. $receiverName = $request->input('receiverName');
  488. $receiverMobile = $request->input('receiverMobile');
  489. $admin_id = (int)$request->input('admin_id');
  490. $page = (int)$request->input('page');
  491. $self_role = session('role_name');
  492. //$catelist = DB::table('goods_category')->select(DB::raw('distinct goods_category_name'))->lists('goods_category_name');
  493. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  494. $teamList = DB::table('teams')->select('id', 'name')->get();
  495. $teamList = json_decode(json_encode($teamList), true);
  496. $adminList = json_decode(json_encode($adminList), true);
  497. $order = Order::findOrFail($id);
  498. $order = json_decode(json_encode($order), true);
  499. $order['receiverMobile'] = substr($order['receiverMobile'], 0, 3).'****'.substr($order['receiverMobile'], 7);
  500. return view('order/orderedit', [
  501. 'order' => $order,
  502. //'categorylist' => $catelist,
  503. 'adminlist'=>$adminList,
  504. 'teamlist'=>$teamList,
  505. 'self_role'=>$self_role,
  506. 'str_query'=> 'page='.$page.'&admin_id='.$admin_id.'&stime='.$stime.'&etime='.$etime.'&receiverName='.$receiverName.'&receiverMobile='.$receiverMobile
  507. ]);
  508. }
  509. /**
  510. * 分组管理-进行编辑操作
  511. * @param Request $request
  512. * @return \Illuminate\Http\RedirectResponse
  513. */
  514. public function orderupdate(Request $request)
  515. {
  516. $this->validate($request, [
  517. 'id' => 'required',
  518. 'receiverName' => 'required',
  519. 'receiverMobile' => 'required',
  520. 'receivedAmount' => 'required',
  521. 'goods_note' => 'required',
  522. 'warehouse' => 'required|integer|min:1',
  523. ], [
  524. 'id.required' => 'id不能为空',
  525. 'receiverName.required' => '收货人不能为空',
  526. 'receiverMobile.required' => '收货人手机号不能为空',
  527. 'receivedAmount.required' => '付款金额不能为空',
  528. 'goods_note.required' => '商品信息不能为空',
  529. 'warehouse.required' => '仓库必须选择',
  530. 'warehouse.min' => '仓库必须选择',
  531. ]);
  532. $str_query = trim($request->input('str_query'));
  533. $phone = $request->input('receiverMobile');
  534. //更新数据
  535. $order = array();
  536. $order['customerName'] = $request->input('customerName'); //买家名称
  537. $order['receiverName'] = $request->input('receiverName'); //收件人
  538. if(preg_match('/^1\d{10}$/', $phone)) $order['receiverMobile'] = $phone; //收件人手机
  539. $order['receiverState'] = $request->input('receiverState'); //省份
  540. $order['receiverCity'] = $request->input('receiverCity'); //市
  541. $order['receiverDistrict'] = $request->input('receiverDistrict'); //区
  542. $order['receiverStreet'] = $request->input('receiverStreet'); //街道
  543. $order['receiverAddress'] = $request->input('receiverAddress'); //详细地址
  544. $order['receivedAmount'] = $request->input('receivedAmount'); //付款金额
  545. $order['buyerMemo'] = $request->input('buyerMemo', ''); // 买家备注
  546. $order['sellerMemo'] = $request->input('sellerMemo', ''); // 卖家备注
  547. $order['goods_note'] = $request->input('goods_note');
  548. if($request->input('cost')) $order['cost'] = $request->input('cost'); //成本
  549. $order['logistics_id'] = $request->input('logistics_id'); //物流单号
  550. $order['is_refund'] = (int)$request->input('is_refund'); //是否退过单
  551. if($request->input('refund_price')) $order['refund_price'] = $request->input('refund_price'); //应该退补差价
  552. $order['is_fugou'] = (int)$request->input('is_fugou'); //是否复购
  553. $order['warehouse'] = (int)$request->input('warehouse'); //仓库
  554. $order['delivery_date'] = !empty($request->input('delivery_date')) ? $request->input('delivery_date') : date('Y-m-d'); //发货日期
  555. if(!empty($request->input('createTime'))) $order['createTime'] = $request->input('createTime'); // 订单创建时间
  556. $order['order_status'] = (int)$request->input('order_status');
  557. $order['payment_type'] = (int)$request->input('payment_type'); //支付方式
  558. //$order['status'] = (int)$request->input('status');
  559. $admin_id = (int)$request->input('admin_id');
  560. if($admin_id>0){
  561. $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
  562. $order['admin_id'] = $admin_id;
  563. $order['admin_name'] = $admin_info->realname;
  564. $order['team_id'] = $admin_info->team_id;
  565. }
  566. $id = (int)$request->input('id');
  567. $res = DB::table('order')->where('id', $id)->update($order);
  568. if($res){
  569. #记录操作日志
  570. $self_id = session('admin_id');
  571. $self_name = session('real_name');
  572. $context = "修改订单";
  573. $type = 0;
  574. $tables = 'order';
  575. $data_id = $id;
  576. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  577. }
  578. return redirect('/admin/order/index?'.$str_query)->with('info', '更新成功');
  579. }
  580. /**
  581. * 分组管理-进行删除操作
  582. * @param Request $request
  583. * @return \Illuminate\Http\RedirectResponse
  584. */
  585. public function orderdelete($id)
  586. {
  587. $order = Order::find($id);
  588. $order->is_del = 1;
  589. if ($order ->save()){
  590. #记录操作日志
  591. $self_id = session('admin_id');
  592. $self_name = session('real_name');
  593. $context = "删除订单";
  594. $type = 0;
  595. $tables = 'order';
  596. $data_id = $id;
  597. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  598. return redirect('/admin/order/index')->with('info', '删除成功');
  599. }
  600. }
  601. public function setrefund($id){
  602. $order = Order::find($id);
  603. $order->order_status = 2;
  604. if ($order ->save()){
  605. exit('0');
  606. }
  607. exit('1');
  608. }
  609. public function setverify($id, Request $request){
  610. $order = Order::find($id);
  611. $old_status = $order->status;
  612. $order->status = (int)$request->input('status');
  613. if($order->status == 0){
  614. $refuse_reason = trim($request->input('refuse_reason'));
  615. if(!empty($refuse_reason)){
  616. $order->refuse_reason = $refuse_reason;
  617. }
  618. }
  619. $res = $order ->save();
  620. if($res){
  621. #记录操作日志
  622. $status_arr = array(
  623. 0 => '已录入(驳回)',
  624. 1 => '待审核',
  625. 2 => '已审核',
  626. 3 => '已发货',
  627. );
  628. $self_id = session('admin_id');
  629. $self_name = session('real_name');
  630. $context = "订单状态变更:【".$status_arr[$old_status]."】变更为【". $status_arr[$order->status]."】({$old_status}->{$order->status})";
  631. $type = 1; //状态变更
  632. $tables = 'order';
  633. $data_id = $id;
  634. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  635. }
  636. $stime = $request->input('stime');
  637. $etime = $request->input('etime');
  638. $receiverName = $request->input('receiverName');
  639. $receiverMobile = $request->input('receiverMobile');
  640. $admin_id = (int)$request->input('admin_id');
  641. $page = (int)$request->input('page');
  642. $str_query = 'page='.$page.'&admin_id='.$admin_id.'&stime='.$stime.'&etime='.$etime.'&receiverName='.$receiverName.'&receiverMobile='.$receiverMobile;
  643. return redirect('/admin/order/index?'.$str_query)->with('info', '操作成功');
  644. }
  645. public function setverifymore(Request $request){
  646. $ids = $request->get('id');
  647. foreach($ids as $id){
  648. $order = Order::find($id);
  649. $order->status = 1;
  650. $order ->save();
  651. }
  652. $stime = $request->input('stime');
  653. $etime = $request->input('etime');
  654. $receiverName = $request->input('receiverName');
  655. $receiverMobile = $request->input('receiverMobile');
  656. $admin_id = (int)$request->input('admin_id');
  657. $page = (int)$request->input('page');
  658. $str_query = 'page='.$page.'&admin_id='.$admin_id.'&stime='.$stime.'&etime='.$etime.'&receiverName='.$receiverName.'&receiverMobile='.$receiverMobile;
  659. return redirect('/admin/order/index?'.$str_query)->with('info', '操作成功');
  660. }
  661. /**
  662. * 分组管理-分组展示
  663. * @param Request $request
  664. * @return \Illuminate\Http\RedirectResponse
  665. */
  666. public function orderup($id)
  667. {
  668. //数据库-修改status字段值
  669. $order = Order::find($id);
  670. $order ->status = 1;
  671. if ($order ->update()){
  672. return redirect('/admin/order/index')->with('info', '启用成功');
  673. }
  674. }
  675. /**
  676. * 分组管理-取消展示
  677. * @param Request $request
  678. * @return \Illuminate\Http\RedirectResponse
  679. */
  680. public function orderdown($id)
  681. {
  682. //数据库-修改status字段值
  683. $order = Order::find($id);
  684. $order ->status = 0;
  685. if ($order ->update()){
  686. return redirect('/admin/order/index')->with('info', '禁用成功');
  687. }
  688. }
  689. /**
  690. * 分类取商品
  691. */
  692. public function categoods($category){
  693. $goods_ids = DB::table('goods_category')->where('goods_category_name', $category)->lists('goods_id');
  694. $goods = DB::table('goods_sku_list')->select('id', 'price', 'props_name', 'goods_id')->whereIn('goods_id', $goods_ids)->orderBy('goods_id', 'asc')->get();
  695. foreach($goods as $item){
  696. $gname = DB::table('goods_category')->select('goods_name')->where('goods_id', $item->goods_id)->first();
  697. $item->goods_name = $gname->goods_name;
  698. }
  699. $goods = json_decode(json_encode($goods), true);
  700. return json_encode($goods);
  701. }
  702. /**
  703. * 操作员列表
  704. */
  705. public function teamAdmins($team_id){
  706. $res = DB::table('admin')->select('id', 'realname', 'username')->where('team_id', $team_id)->where('id','>', 1)->get();
  707. $res = json_decode(json_encode($res),true);
  708. return json_encode($res);
  709. }
  710. /**
  711. * 客户地址信息
  712. */
  713. public function getCustomer(Request $request){
  714. $phone = $request->input('phone');
  715. if(!preg_match('/^1\d{10}$/')){
  716. return 0;
  717. }
  718. $res = DB::table('customers')->where('phone', $phone)->first();
  719. if(isset($res->id)){
  720. $result = json_decode(json_encode($res),true);
  721. return json_encode($result);
  722. }
  723. }
  724. public function order_export(Request $request){
  725. $self_role = session('role_name');
  726. if($self_role == '超级管理员' || $self_role == '团队主管' || $self_role == '管理员' || $self_role == 'A仓库管理员' || $self_role == 'B仓库管理员' || $self_role == '售后管理员'){
  727. $admin_id = $request->input('admin_id');
  728. }else{
  729. $admin_id = session('admin_id');
  730. }
  731. $is_saler = 0;
  732. if($self_role == '销售'){
  733. $is_saler = 1;
  734. }
  735. if($self_role == 'A仓库管理员'){
  736. $warehouse = 1;
  737. }elseif($self_role == 'B仓库管理员'){
  738. $warehouse = 2;
  739. }else{
  740. $warehouse = 0;
  741. }
  742. $team_id = $request->input('team_id');
  743. #只能看自己团队的
  744. if($self_role != '超级管理员' && $self_role != '售后管理员'){
  745. $admin_id = session('admin_id');
  746. $team_id = DB::table('admin')->where('id', $admin_id)->pluck('team_id');
  747. }
  748. //假如有团队筛选,检索销售队员
  749. $sale_ids = null;
  750. if($team_id>0){
  751. $sale_ids = DB::table('admin')->where('team_id', $team_id)->lists('id');
  752. }
  753. $stime = $request->input('stime');
  754. $etime = $request->input('etime');
  755. $receiverName = $request->input('receiverName');
  756. $receiverMobile = $request->input('receiverMobile');
  757. $status = (int)$request->input('status');
  758. $result = Order::where(function($query) use($admin_id, $stime, $etime, $warehouse, $receiverMobile, $receiverName, $self_role, $sale_ids, $status){
  759. if($admin_id) $query->where('admin_id', $admin_id);
  760. if($warehouse) $query->where('warehouse', $warehouse);
  761. if($stime) $query->where('createTime', '>=', $stime);
  762. if($etime) $query->where('createTime', '<=', $etime);
  763. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  764. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  765. if($self_role == '管理员') $query->where('status','>',0);
  766. if(!empty($sale_ids)) $query->whereIn('admin_id', $sale_ids);
  767. if($status>=0) $query->where('status', $status);
  768. })->where('is_del',0)->orderBy('id', 'desc')->get();
  769. $result = json_decode(json_encode($result),true);
  770. $filename="订单数据.xls";
  771. header("Content-type:application/vnd.ms-excel");
  772. Header("Accept-Ranges:bytes");
  773. Header("Content-Disposition:attachment;filename=".$filename); //$filename导出的文件名
  774. header("Pragma: no-cache");
  775. header("Expires: 0");
  776. $data_str = '<html xmlns:o="urn:schemas-microsoft-com:office:office"
  777. xmlns:x="urn:schemas-microsoft-com:office:excel"
  778. xmlns="http://www.w3.org/TR/REC-html40">
  779. <head>
  780. <meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
  781. <meta http-equiv=Content-Type content="text/html; charset=gb2312">
  782. <!--[if gte mso 9]><xml>
  783. <x:ExcelWorkbook>
  784. <x:ExcelWorksheets>
  785. <x:ExcelWorksheet>
  786. <x:Name></x:Name>
  787. <x:WorksheetOptions>
  788. <x:DisplayGridlines/>
  789. </x:WorksheetOptions>
  790. </x:ExcelWorksheet>
  791. </x:ExcelWorksheets>
  792. </x:ExcelWorkbook>
  793. </xml><![endif]-->
  794. </head>';
  795. $data_str .= "<table><tr>";
  796. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","销售微信号")."</th>";
  797. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","销售团队")."</th>";
  798. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","销售")."</th>";
  799. $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","订单时间")."</th>";
  800. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","加粉时间")."</th>";
  801. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","是否复购")."</th>";
  802. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","订单金额")."</th>";
  803. $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","订单商品")."</th>";
  804. if($warehouse==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","是否退补单")."</th>";
  805. $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","配送地址")."</th>";
  806. $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","配送姓名")."</th>";
  807. $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","配送电话")."</th>";
  808. if($is_saler==0) $data_str .= "<th>".iconv("UTF-8", "GB2312//IGNORE","供应商成本")."</th>";
  809. $data_str .="<th>".iconv("UTF-8", "GB2312//IGNORE","顺丰单号")."</th></tr>";
  810. foreach ($result as $k => $v)
  811. {
  812. #销售
  813. $admin = DB::table('admin')->where('id', $v['admin_id'])->first();
  814. $v['wx_id'] = isset($admin->wx_id) ? $admin->wx_id : '';
  815. #team
  816. $team = DB::table('teams')->where('id', $v['team_id'])->first();
  817. $v['team_name'] = isset($team->name) ? $team->name : '';
  818. #加粉时间
  819. $customr = DB::table('customers')->where('phone', $v['receiverMobile'])->first();
  820. $v['fanTime'] = isset($customr->fanTime) ? $customr->fanTime : '';
  821. $v['receiverMobile'] = substr($v['receiverMobile'], 0, 3).'****'.substr($v['receiverMobile'], 7);
  822. $fugou = $v['is_fugou']==1? '是' : '否';
  823. $is_refund = $v['is_refund']==1? '是' : '否';
  824. $address = $v['receiverState'].$v['receiverCity'].$v['receiverDistrict'].$v['receiverAddress'];
  825. $data_str .= "<tr>";
  826. if($warehouse==0) $data_str .= "<td>".$v['wx_id']."</td>";
  827. if($warehouse==0) $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["team_name"])."</td>";
  828. if($warehouse==0) $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["admin_name"])."</td>";
  829. $data_str .= "<td>".$v['createTime']."</td>";
  830. if($warehouse==0) $data_str .= "<td>".$v['fanTime']."</td>";
  831. if($warehouse==0) $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $fugou)."</td>";
  832. if($warehouse==0) $data_str .= "<td>".$v['receivedAmount']."</td>";
  833. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["goods_note"])."</td>";
  834. if($warehouse==0) $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $is_refund)."</td>";
  835. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $address)."</td>";
  836. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["receiverName"])."</td>";
  837. $data_str .= "<td>".$v['receiverMobile']."</td>";
  838. if($is_saler==0) $data_str .= "<td>".$v['cost']."</td>";
  839. $data_str .= "<td style='vnd.ms-excel.numberformat:@'>".$v["logistics_id"]."</td>";
  840. $data_str .= "</tr>";
  841. }
  842. $data_str .= "</table>";
  843. echo $data_str;
  844. exit;
  845. }
  846. public function editLogisticsId(Request $request){
  847. $id = $request->input('id');
  848. $logistics_id = $request->input('logistics_id');
  849. $cost = $request->input('cost');
  850. $freight_cost = $request->input('freight_cost');
  851. $send_note = $request->input('send_note');
  852. $refund_note = $request->input('refund_note');
  853. $buyerMemo = $request->input('buyerMemo');
  854. $sellerMemo = $request->input('sellerMemo');
  855. $data = array();
  856. if(isset($logistics_id)) $data['logistics_id'] = $logistics_id;
  857. if(isset($cost)){
  858. if(empty($cost)) $cost = null;
  859. $data['cost'] = $cost;
  860. }
  861. if(isset($freight_cost)){
  862. if(empty($freight_cost)) $freight_cost = null;
  863. $data['freight_cost'] = $freight_cost;
  864. }
  865. if(isset($buyerMemo)) $data['buyerMemo'] = trim($buyerMemo);
  866. if(isset($sellerMemo)) $data['sellerMemo'] = trim($sellerMemo);
  867. if(isset($send_note)) $data['send_note'] = trim($send_note);
  868. if(isset($refund_note)) $data['refund_note'] = trim($refund_note);
  869. if($id>0 && !empty($data)){
  870. $res = Order::where('id', $id)->update($data);
  871. }
  872. return 1;
  873. }
  874. public function warehouse_export(Request $request){
  875. $self_role = session('role_name');
  876. $admin_id = $request->input('admin_id');
  877. if($self_role == 'A仓库管理员'){
  878. $warehouse = 1;
  879. }elseif($self_role == 'B仓库管理员'){
  880. $warehouse = 2;
  881. }else{
  882. $warehouse = 0;
  883. }
  884. $stime = $request->input('stime');
  885. $etime = $request->input('etime');
  886. $receiverName = $request->input('receiverName');
  887. $receiverMobile = $request->input('receiverMobile');
  888. $delivery_type = (int)$request->input('delivery_type'); //发货状态 0到发货时间(未填物流信息) 2全部
  889. $_start = '2019-09-18';// 只看18号之后数据
  890. $today_date = date('Y-m-d');
  891. $result = Order::where(function($query) use($admin_id, $stime, $etime, $warehouse, $receiverMobile, $receiverName, $today_date, $delivery_type, $_start){
  892. if($admin_id) $query->where('admin_id', $admin_id);
  893. if($warehouse) $query->where('warehouse', $warehouse);
  894. if($stime) $query->where('createTime', '>=', $stime);
  895. if($etime) $query->where('createTime', '<=', $etime);
  896. if($receiverName) $query->where('receiverName', 'like', $receiverName . '%');
  897. if($receiverMobile) $query->where('receiverMobile', $receiverMobile);
  898. if($delivery_type==0) $query->where('delivery_date', '<=', $today_date)->where('logistics_id', '=', '');
  899. $query->where('createTime', '>=', $_start);
  900. })->where('is_del',0)->where('status', '>', 1)->orderBy('id', 'desc')->get();
  901. $result = json_decode(json_encode($result),true);
  902. foreach ($result as $k => &$v)
  903. {
  904. $v['address'] = $v['receiverState'].$v['receiverCity'].$v['receiverDistrict'].$v['receiverAddress'];
  905. }
  906. $indexKey = ['id','goods_note','receiverName','receiverMobile','address','createTime','sellerMemo','buyerMemo','cost','logistics_id','freight_cost','send_note'];
  907. $title = ['订单编号', '商品信息', '收货人', '收货人手机号', '收货地址', '下单时间', '卖家备注', '买家备注', '供应商成本', '顺丰单号', '运费成本', '发货备注'];
  908. $filename = 'dingdan_'.date('Y-m-d_H').'.xlsx';
  909. return $this->export_excel($result, $filename, $indexKey, $title);
  910. }
  911. /**
  912. * excel导入订单信息
  913. * @param Request $request
  914. */
  915. public function importGoodsExcel(Request $request) {
  916. $excelFile = $request->file('orderFile');
  917. //实例化Excel读取类
  918. $objReader = new PHPExcel_Reader_Excel2007();
  919. if(!$objReader->canRead($excelFile)){
  920. $objReader = new PHPExcel_Reader_Excel5();
  921. if(!$objReader->canRead($excelFile)){
  922. echo "\n".'无法识别的Excel文件!';
  923. return false;
  924. }
  925. }
  926. $objPHPExcel=$objReader->load($excelFile);
  927. $worksheet=$objPHPExcel->getSheet(0);//获取第一个工作表
  928. $highestRow=$worksheet->getHighestRow();//取得总行数
  929. $highestColumn=$worksheet->getHighestColumn(); //取得总列数
  930. $lines = $highestRow - 1;
  931. if ($lines <= 0) {
  932. //'Excel表格中没有数据';
  933. return false;
  934. }
  935. $errorArr=[];
  936. $okStr = '';
  937. for ($row = 2; $row <= $highestRow; ++$row) {
  938. $params = array();
  939. $order_id = (int)$worksheet->getCellByColumnAndRow(0, $row)->getValue();
  940. $cost = trim($worksheet->getCellByColumnAndRow(8, $row)->getValue());
  941. $logistics_id = trim($worksheet->getCellByColumnAndRow(9, $row)->getValue());
  942. $freight_cost = trim($worksheet->getCellByColumnAndRow(10, $row)->getValue());
  943. $send_note = trim($worksheet->getCellByColumnAndRow(11, $row)->getValue());
  944. if($cost>0){
  945. $params['cost'] = $cost;
  946. }else{
  947. $params['cost'] = null;
  948. }
  949. if($logistics_id){
  950. $params['logistics_id'] = $logistics_id;
  951. }else{
  952. $params['logistics_id'] = '';
  953. }
  954. if($send_note){
  955. $params['send_note'] = $send_note;
  956. }else{
  957. $params['send_note'] = '';
  958. }
  959. if($freight_cost>0){
  960. $params['freight_cost'] = $freight_cost;
  961. }else{
  962. $params['freight_cost'] = null;
  963. }
  964. $result = Order::where('id', $order_id)->update($params);
  965. if (!$result) {
  966. $errorArr[] = $order_id;
  967. }else{
  968. $okStr .= $order_id.',';
  969. }
  970. }
  971. if (count($errorArr)) {
  972. $desc = '共'.($highestRow-1).'个订单, 其中'.count($errorArr).'个订单录入失败';
  973. }else {
  974. $desc = '订单导入成功';
  975. }
  976. #记录操作日志
  977. $self_id = session('admin_id');
  978. $self_name = session('real_name');
  979. $context = "仓管excel导入订单成本等信息 ".$desc;
  980. $type = 0;
  981. $tables = 'order';
  982. $data_id = $okStr;
  983. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  984. return redirect('admin/order/warehouse')->with('info',$desc);
  985. }
  986. /**
  987. * 导出excel
  988. * @param $data
  989. * @param string
  990. */
  991. public function export_excel($data, $filename = '未命名.xlsx', $indexKey, $title) {
  992. if( !is_array($indexKey)) return false;
  993. $header_arr = array('A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  994. //初始化PHPExcel()
  995. $objPHPExcel = new PHPExcel();
  996. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  997. //接下来就是写数据到表格里面去
  998. $objActSheet = $objPHPExcel->getActiveSheet();
  999. foreach($title as $k=>$item){
  1000. $objActSheet->setCellValue($header_arr[$k].'1',$item);
  1001. }
  1002. $startRow = 2;
  1003. foreach ($data as $row) {
  1004. foreach ($indexKey as $key => $value){
  1005. //这里是设置单元格的内容
  1006. $objActSheet->setCellValue($header_arr[$key].$startRow,$row[$value]);
  1007. }
  1008. $startRow++;
  1009. }
  1010. header("Pragma: public");
  1011. header("Expires: 0");
  1012. header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
  1013. header("Content-Type:application/force-download");
  1014. header("Content-Type:application/vnd.ms-execl");
  1015. header("Content-Type:application/octet-stream");
  1016. header("Content-Type:application/download");;
  1017. header('Content-Disposition:attachment;filename='.$filename.'');
  1018. header("Content-Transfer-Encoding:binary");
  1019. $objWriter->save('php://output');
  1020. exit();
  1021. }
  1022. /**
  1023. * 根据手机号获取默认地址信息
  1024. *
  1025. */
  1026. public function getAddress(Request $request){
  1027. $phone = $request->input('phone');
  1028. if(!preg_match('/^1\d{10}$/', $phone)){
  1029. exit('0');
  1030. }
  1031. $result = DB::table('customers')->select('receiverState', 'receiverCity', 'receiverDistrict', 'receiverStreet', 'receiverAddress', 'fanTime')->where('phone', $phone)->first();
  1032. if(empty($result)) exit('0');
  1033. $result = json_decode(json_encode($result), true);
  1034. exit( json_encode($result) );
  1035. }
  1036. /**
  1037. * 订单状态机制,获取可变更状态
  1038. * @param status:0已录入 1提交审核 2已审核 3已发货
  1039. */
  1040. public function getEnableStatus($status){
  1041. $status_arr = [
  1042. 0 => ['status'=>0, 'name'=>'已录入'],
  1043. 1 => ['status'=>1, 'name'=>'提交审核'],
  1044. 2 => ['status'=>2, 'name'=>'审核通过'],
  1045. 3 => ['status'=>3, 'name'=>'设为发货'],
  1046. ];
  1047. $status = (int)$status;
  1048. $result = array();
  1049. switch ($status) {
  1050. case '0':
  1051. $result[] = $status_arr[1];
  1052. break;
  1053. case '1':
  1054. $result[] = $status_arr[2];
  1055. $result[] = $status_arr[0];
  1056. break;
  1057. case '2':
  1058. $result[] = $status_arr[3];
  1059. break;
  1060. default:
  1061. break;
  1062. }
  1063. return $result;
  1064. }
  1065. }