No Description

OrderController.php 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  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 Illuminate\Http\Request;
  13. use Illuminate\Support\Facades\DB;
  14. class OrderController extends Controller
  15. {
  16. public function orderindex(Request $request){
  17. $page = (int)$request->input('page');
  18. $pageSize = 20;
  19. if($page<=0){
  20. $page = 1;
  21. }
  22. $offset = ($page-1) * $pageSize;
  23. $self_role = session('role_name');
  24. if($self_role == '超级管理员' || $self_role == '团队主管'){
  25. $admin_id = $request->input('admin_id');
  26. $search_admin = 1;
  27. }else{
  28. $admin_id = session('admin_id');
  29. $search_admin = 0;
  30. }
  31. $stime = $request->input('stime');
  32. $etime = $request->input('etime');
  33. $count = Order::where(function($query) use($admin_id, $stime, $etime){
  34. if($admin_id) $query->where('admin_id', $admin_id);
  35. if($stime) $query->where('createTime', '>=', $stime);
  36. if($etime) $query->where('createTime', '<=', $etime);
  37. })->where('is_del',0)->count();
  38. if ($count > 1) {
  39. // 总页数
  40. $pages = ceil($count/$pageSize);
  41. }else{
  42. // 总页数
  43. $pages = 1;
  44. }
  45. $result = Order::where(function($query) use($admin_id, $stime, $etime){
  46. if($admin_id) $query->where('admin_id', $admin_id);
  47. if($stime) $query->where('createTime', '>=', $stime);
  48. if($etime) $query->where('createTime', '<=', $etime);
  49. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  50. $result = json_decode(json_encode($result),true);
  51. foreach($result as $k=>&$v){
  52. /*
  53. //获取商品信息
  54. $v['goods'] = '';
  55. $goods = DB::table('order_goods')->where('outerParentCode', $v['outerCode'])->get();
  56. foreach($goods as $item){
  57. $v['goods'][] = $item->goodsName.'&nbsp; 单价:¥'.$item->price.'&nbsp; 件数:'.$item->quantity.'';
  58. }
  59. */
  60. $v['receiverMobile'] = substr($v['receiverMobile'], 0, 3).'****'.substr($v['receiverMobile'], 7);
  61. }
  62. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  63. $adminList = json_decode(json_encode($adminList), true);
  64. return view('order/orderlist', ['result' =>$result,
  65. 'page' =>$page,
  66. 'count' =>$count,
  67. 'pages' =>$pages,
  68. 'admin_id' =>$admin_id,
  69. 'stime' =>$stime,
  70. 'etime' =>$etime,
  71. 'adminlist' =>$adminList,
  72. 'search_admin' =>$search_admin,
  73. ]);
  74. }
  75. /**
  76. * 添加订单
  77. * @return \Illuminate\View\View
  78. */
  79. public function ordercreate(Request $request)
  80. {
  81. $catelist = DB::table('goods_category')->select(DB::raw('distinct goods_category_name'))->lists('goods_category_name');
  82. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  83. $teamList = DB::table('teams')->select('id', 'name')->get();
  84. $teamList = json_decode(json_encode($teamList), true);
  85. $adminList = json_decode(json_encode($adminList), true);
  86. return view('order/ordercreate', ['categorylist' => $catelist, 'adminlist'=>$adminList, 'teamlist'=>$teamList]);
  87. }
  88. /**
  89. * 分组管理-进行添加操作
  90. * @param Request $request
  91. * @return \Illuminate\Http\RedirectResponse
  92. */
  93. public function orderstore(Request $request)
  94. {
  95. $this->validate($request, [
  96. 'receiverName' => 'required',
  97. 'receiverMobile' => 'required',
  98. 'receivedAmount' => 'required',
  99. 'goods_note' => 'required',
  100. ], [
  101. 'receiverName.required' => '收货人不能为空',
  102. 'receiverMobile.required' => '收货人手机号不能为空',
  103. 'receivedAmount.required' => '付款金额不能为空',
  104. 'goods_note.required' => '商品信息不能为空',
  105. ]);
  106. //数据库-新增数据
  107. $order = array();
  108. $order['eshopCode'] = '99|34881'; //默认
  109. $order['outerCode'] = Order::createOuterCode();//随机生成
  110. $order['status'] = '已审核待发货';
  111. $order['customerName'] = $request->input('customerName'); //买家名称
  112. $order['shippingType'] = '卖家包邮';
  113. $order['expressCompanyCode'] = '10084';
  114. $order['expressCompanyName'] = '顺丰快递';
  115. $order['receiverName'] = $request->input('receiverName'); //收件人
  116. $order['receiverMobile'] = $request->input('receiverMobile'); //收件人手机
  117. $order['receiverPhone'] = $request->input('receiverMobile'); //收件人手机
  118. $order['receiverState'] = $request->input('receiverState'); //省份
  119. $order['receiverCity'] = $request->input('receiverCity'); //市
  120. $order['receiverDistrict'] = $request->input('receiverDistrict'); //区
  121. $order['receiverStreet'] = $request->input('receiverStreet'); //街道
  122. $order['receiverAddress'] = $request->input('receiverAddress'); //详细地址
  123. $order['buyerPostageFee'] = 0; //买家邮费
  124. $order['discountFee'] = 0; //订单优惠
  125. $order['adjustFee'] = 0; //订单调价
  126. $order['serviceFee'] = 0; //服务费
  127. $order['paymentMethod'] = '在线付款';
  128. $order['paymentType'] = '网银';
  129. $order['paymentAccount'] = '18322223333'; // 付款账号,暂时默认写死
  130. $order['paymentTime'] = date('Y-m-d H:i:s'); // 付款时间
  131. $order['receivedAmount'] = $request->input('receivedAmount'); //付款金额
  132. $order['buyerMemo'] = $request->input('buyerMemo', ''); // 买家备注
  133. $order['sellerMemo'] = $request->input('sellerMemo', ''); // 卖家备注
  134. $order['createTime'] = date('Y-m-d H:i:s'); // 订单创建时间
  135. $order['modifyTime'] = date('Y-m-d H:i:s'); // 订单修改时间
  136. $order['goods_note'] = $request->input('goods_note');
  137. if($request->input('cost')) $order['cost'] = $request->input('cost'); //成本
  138. $order['logistics_id'] = $request->input('logistics_id'); //物流单号
  139. $order['is_refund'] = (int)$request->input('is_refund'); //是否退过单
  140. $order['is_fugou'] = (int)$request->input('is_fugou'); //是否复购
  141. //商品信息
  142. /*
  143. $g_info = trim($request->input('g_info'),';');
  144. //var_dump($g_info);
  145. $g_info = explode(';' , $g_info);
  146. $goods_info = array();
  147. foreach($g_info as $k=>$info){
  148. $info = explode(':', $info);
  149. $goods_info[$k]['id'] = $info[0];
  150. $goods_info[$k]['num'] = $info[1];
  151. }
  152. foreach($goods_info as $k=>$v){
  153. $goods = DB::table('goods_sku_list')->where('id', $v['id'])->first();
  154. $params = array();
  155. $params['outerCode'] = $order['outerCode']+$k+1; //外部平台中子订单编码
  156. $params['outerParentCode'] = $order['outerCode']; //外部平台中订单编码
  157. $params['goodsCode'] = $goods->code;// strstr($goods->code,'-',true);
  158. $params['skuCode'] = $goods->code;
  159. #商品名称
  160. $params['goodsName'] = DB::table('goods_category')->where('goods_id', $goods->goods_id)->pluck('goods_name');
  161. //$params['goodsName'] = '海钓黄翅鱼';//$goods->code;
  162. $params['price'] = $goods->price;
  163. $params['quantity'] = $v['num'];
  164. $params['discountFee'] = 0;
  165. $params['adjustFee'] = 0;
  166. $params['refundStatus'] = '正常';
  167. $order['skuList'][] = $params;
  168. }
  169. */
  170. //卖家云添加订单
  171. //$mj_add = Order::mjOrderAdd($order);
  172. if(true){
  173. #更新客户表
  174. $customer = array();
  175. $customers['name'] = $order['receiverName'];
  176. $customers['receiverState'] = $order['receiverState'];
  177. $customers['receiverCity'] = $order['receiverCity'];
  178. $customers['receiverDistrict'] = $order['receiverDistrict'];
  179. $customers['receiverStreet'] = $order['receiverStreet'];
  180. $customers['receiverAddress'] = $order['receiverAddress'];
  181. $if_e = DB::table('customers')->select('id')->where('phone', $order['receiverMobile'])->first();
  182. if(isset($if_e->id)){
  183. $customers['is_fugou'] = 1;
  184. $order['is_fugou'] = 1;
  185. $up_c = DB::table('customers')->where('id', $if_e->id)->update($customers);
  186. }else{
  187. $customers['phone'] = $order['receiverMobile'];
  188. $customers['fanTime'] = $request->input('fanTime');
  189. $customers['is_fugou'] = $order['is_fugou'];
  190. $in_c = DB::table('customers')->insert($customers);
  191. }
  192. //$order_goods = $order['skuList'];
  193. //unset($order['skuList']);
  194. //DB::table('order_goods')->insert($order_goods);
  195. //$order['orderCode'] = $mj_add['order']['code'];
  196. $admin_id = (int)$request->input('admin_id');
  197. if($admin_id>0){
  198. $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
  199. $order['admin_id'] = $admin_id;
  200. $order['admin_name'] = $admin_info->realname;
  201. $order['team_id'] = $admin_info->team_id;
  202. }else{
  203. $order['admin_id'] = session('admin_id');
  204. $order['admin_name'] = session('real_name');
  205. $order['team_id'] = session('team_id');
  206. }
  207. DB::table('order')->insert($order);
  208. return redirect('/admin/order/index')->with('info', '添加成功');
  209. }
  210. }
  211. /**
  212. * 分组管理-编辑分组界面
  213. * @param $id
  214. * @return \Illuminate\View\View
  215. */
  216. public function orderedit($id,Request $request)
  217. {
  218. //$catelist = DB::table('goods_category')->select(DB::raw('distinct goods_category_name'))->lists('goods_category_name');
  219. $adminList = DB::table('admin')->select('id', 'realname', 'username')->where('id','>', 1)->get();
  220. $teamList = DB::table('teams')->select('id', 'name')->get();
  221. $teamList = json_decode(json_encode($teamList), true);
  222. $adminList = json_decode(json_encode($adminList), true);
  223. $order = Order::findOrFail($id);
  224. $order = json_decode(json_encode($order), true);
  225. $order['receiverMobile'] = substr($order['receiverMobile'], 0, 3).'****'.substr($order['receiverMobile'], 7);
  226. return view('order/orderedit', [
  227. 'order' => $order,
  228. //'categorylist' => $catelist,
  229. 'adminlist'=>$adminList,
  230. 'teamlist'=>$teamList
  231. ]);
  232. }
  233. /**
  234. * 分组管理-进行编辑操作
  235. * @param Request $request
  236. * @return \Illuminate\Http\RedirectResponse
  237. */
  238. public function orderupdate(Request $request)
  239. {
  240. $this->validate($request, [
  241. 'id' => 'required',
  242. 'receiverName' => 'required',
  243. 'receiverMobile' => 'required',
  244. 'receivedAmount' => 'required',
  245. 'goods_note' => 'required',
  246. ], [
  247. 'id.required' => 'id不能为空',
  248. 'receiverName.required' => '收货人不能为空',
  249. 'receiverMobile.required' => '收货人手机号不能为空',
  250. 'receivedAmount.required' => '付款金额不能为空',
  251. 'goods_note.required' => '商品信息不能为空',
  252. ]);
  253. $phone = $request->input('receiverMobile');
  254. //更新数据
  255. $order = array();
  256. $order['customerName'] = $request->input('customerName'); //买家名称
  257. $order['receiverName'] = $request->input('receiverName'); //收件人
  258. if(preg_match('/^1\d{10}$/', $phone)) $order['receiverMobile'] = $phone; //收件人手机
  259. $order['receiverState'] = $request->input('receiverState'); //省份
  260. $order['receiverCity'] = $request->input('receiverCity'); //市
  261. $order['receiverDistrict'] = $request->input('receiverDistrict'); //区
  262. $order['receiverStreet'] = $request->input('receiverStreet'); //街道
  263. $order['receiverAddress'] = $request->input('receiverAddress'); //详细地址
  264. $order['receivedAmount'] = $request->input('receivedAmount'); //付款金额
  265. $order['buyerMemo'] = $request->input('buyerMemo', ''); // 买家备注
  266. $order['sellerMemo'] = $request->input('sellerMemo', ''); // 卖家备注
  267. $order['goods_note'] = $request->input('goods_note');
  268. if($request->input('cost')) $order['cost'] = $request->input('cost'); //成本
  269. $order['logistics_id'] = $request->input('logistics_id'); //物流单号
  270. $order['is_refund'] = (int)$request->input('is_refund'); //是否退过单
  271. $order['is_fugou'] = (int)$request->input('is_fugou'); //是否复购
  272. $admin_id = (int)$request->input('admin_id');
  273. if($admin_id>0){
  274. $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
  275. $order['admin_id'] = $admin_id;
  276. $order['admin_name'] = $admin_info->realname;
  277. $order['team_id'] = $admin_info->team_id;
  278. }
  279. $id = (int)$request->input('id');
  280. $res = DB::table('order')->where('id', $id)->update($order);
  281. return redirect('/admin/order/index')->with('info', '更新成功');
  282. }
  283. /**
  284. * 分组管理-进行删除操作
  285. * @param Request $request
  286. * @return \Illuminate\Http\RedirectResponse
  287. */
  288. public function orderdelete($id)
  289. {
  290. $order = Order::find($id);
  291. $order->is_del = 1;
  292. if ($order ->save()){
  293. return redirect('/admin/order/index')->with('info', '删除成功');
  294. }
  295. }
  296. /**
  297. * 分组管理-分组展示
  298. * @param Request $request
  299. * @return \Illuminate\Http\RedirectResponse
  300. */
  301. public function orderup($id)
  302. {
  303. //数据库-修改status字段值
  304. $order = Order::find($id);
  305. $order ->status = 1;
  306. if ($order ->update()){
  307. return redirect('/admin/order/index')->with('info', '启用成功');
  308. }
  309. }
  310. /**
  311. * 分组管理-取消展示
  312. * @param Request $request
  313. * @return \Illuminate\Http\RedirectResponse
  314. */
  315. public function orderdown($id)
  316. {
  317. //数据库-修改status字段值
  318. $order = Order::find($id);
  319. $order ->status = 0;
  320. if ($order ->update()){
  321. return redirect('/admin/order/index')->with('info', '禁用成功');
  322. }
  323. }
  324. /**
  325. * 分类取商品
  326. */
  327. public function categoods($category){
  328. $goods_ids = DB::table('goods_category')->where('goods_category_name', $category)->lists('goods_id');
  329. $goods = DB::table('goods_sku_list')->select('id', 'price', 'props_name', 'goods_id')->whereIn('goods_id', $goods_ids)->orderBy('goods_id', 'asc')->get();
  330. foreach($goods as $item){
  331. $gname = DB::table('goods_category')->select('goods_name')->where('goods_id', $item->goods_id)->first();
  332. $item->goods_name = $gname->goods_name;
  333. }
  334. $goods = json_decode(json_encode($goods), true);
  335. return json_encode($goods);
  336. }
  337. /**
  338. * 操作员列表
  339. */
  340. public function teamAdmins($team_id){
  341. $res = DB::table('admin')->select('id', 'realname', 'username')->where('team_id', $team_id)->where('id','>', 1)->get();
  342. $res = json_decode(json_encode($res),true);
  343. return json_encode($res);
  344. }
  345. /**
  346. * 客户地址信息
  347. */
  348. public function getCustomer(Request $request){
  349. $phone = $request->input('phone');
  350. if(!preg_match('/^1\d{10}$/')){
  351. return 0;
  352. }
  353. $res = DB::table('customers')->where('phone', $phone)->first();
  354. if(isset($res->id)){
  355. $result = json_decode(json_encode($res),true);
  356. return json_encode($result);
  357. }
  358. }
  359. public function order_export(Request $request){
  360. $self_role = session('role_name');
  361. if($self_role == '超级管理员' || $self_role == '团队主管'){
  362. $admin_id = $request->input('admin_id');
  363. }else{
  364. $admin_id = session('admin_id');
  365. }
  366. $stime = $request->input('stime');
  367. $etime = $request->input('etime');
  368. $result = Order::where(function($query) use($admin_id, $stime, $etime){
  369. if($admin_id) $query->where('admin_id', $admin_id);
  370. if($stime) $query->where('createTime', '>=', $stime);
  371. if($etime) $query->where('createTime', '<=', $etime);
  372. })->where('is_del',0)->orderBy('id', 'desc')->get();
  373. $result = json_decode(json_encode($result),true);
  374. $filename="订单数据.xls";
  375. header("Content-type:application/vnd.ms-excel");
  376. Header("Accept-Ranges:bytes");
  377. Header("Content-Disposition:attachment;filename=".$filename); //$filename导出的文件名
  378. header("Pragma: no-cache");
  379. header("Expires: 0");
  380. $data_str = '<html xmlns:o="urn:schemas-microsoft-com:office:office"
  381. xmlns:x="urn:schemas-microsoft-com:office:excel"
  382. xmlns="http://www.w3.org/TR/REC-html40">
  383. <head>
  384. <meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
  385. <meta http-equiv=Content-Type content="text/html; charset=gb2312">
  386. <!--[if gte mso 9]><xml>
  387. <x:ExcelWorkbook>
  388. <x:ExcelWorksheets>
  389. <x:ExcelWorksheet>
  390. <x:Name></x:Name>
  391. <x:WorksheetOptions>
  392. <x:DisplayGridlines/>
  393. </x:WorksheetOptions>
  394. </x:ExcelWorksheet>
  395. </x:ExcelWorksheets>
  396. </x:ExcelWorkbook>
  397. </xml><![endif]-->
  398. </head>';
  399. $data_str .= "
  400. <table>
  401. <tr>
  402. <th>".iconv("UTF-8", "GB2312//IGNORE","销售微信号")."</th>
  403. <th>".iconv("UTF-8", "GB2312//IGNORE","销售团队")."</th>
  404. <th>".iconv("UTF-8", "GB2312//IGNORE","销售")."</th>
  405. <th>".iconv("UTF-8", "GB2312//IGNORE","订单时间")."</th>
  406. <th>".iconv("UTF-8", "GB2312//IGNORE","加粉时间")."</th>
  407. <th>".iconv("UTF-8", "GB2312//IGNORE","是否复购")."</th>
  408. <th>".iconv("UTF-8", "GB2312//IGNORE","订单金额")."</th>
  409. <th>".iconv("UTF-8", "GB2312//IGNORE","订单商品")."</th>
  410. <th>".iconv("UTF-8", "GB2312//IGNORE","是否退补单")."</th>
  411. <th>".iconv("UTF-8", "GB2312//IGNORE","配送地址")."</th>
  412. <th>".iconv("UTF-8", "GB2312//IGNORE","配送姓名")."</th>
  413. <th>".iconv("UTF-8", "GB2312//IGNORE","配送电话")."</th>
  414. <th>".iconv("UTF-8", "GB2312//IGNORE","供应商成本")."</th>
  415. <th>".iconv("UTF-8", "GB2312//IGNORE","顺丰单号")."</th>
  416. </tr>";
  417. foreach ($result as $k => $v)
  418. {
  419. #销售
  420. $admin = DB::table('admin')->where('id', $v['admin_id'])->first();
  421. $v['wx_id'] = isset($admin->wx_id) ? $admin->wx_id : '';
  422. #team
  423. $team = DB::table('teams')->where('id', $v['team_id'])->first();
  424. $v['team_name'] = isset($team->name) ? $team->name : '';
  425. #加粉时间
  426. $customr = DB::table('customers')->where('phone', $v['receiverMobile'])->first();
  427. $v['fanTime'] = isset($customr->fanTime) ? $customr->fanTime : '';
  428. $v['receiverMobile'] = substr($v['receiverMobile'], 0, 3).'****'.substr($v['receiverMobile'], 7);
  429. $fugou = $v['is_fugou']==1? '是' : '否';
  430. $is_refund = $v['is_refund']==1? '是' : '否';
  431. $address = $v['receiverState'].$v['receiverCity'].$v['receiverDistrict'].$v['receiverAddress'];
  432. $data_str .= "<tr>";
  433. $data_str .= "<td>".$v['wx_id']."</td>";
  434. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["team_name"])."</td>";
  435. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["admin_name"])."</td>";
  436. $data_str .= "<td>".$v['createTime']."</td>";
  437. $data_str .= "<td>".$v['fanTime']."</td>";
  438. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $fugou)."</td>";
  439. $data_str .= "<td>".$v['receivedAmount']."</td>";
  440. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["goods_note"])."</td>";
  441. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $is_refund)."</td>";
  442. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $address)."</td>";
  443. $data_str .= "<td>".iconv("UTF-8", "GB2312//IGNORE", $v["receiverName"])."</td>";
  444. $data_str .= "<td>".$v['receiverMobile']."</td>";
  445. $data_str .= "<td>".$v['cost']."</td>";
  446. $data_str .= "<td style='vnd.ms-excel.numberformat:@'>".$v["logistics_id"]."</td>";
  447. $data_str .= "</tr>";
  448. }
  449. $data_str .= "</table>";
  450. echo $data_str;
  451. exit;
  452. }
  453. }