Browse Source

h5页面添加订单

sunhao 5 years ago
parent
commit
91fa9e87be
3 changed files with 265 additions and 83 deletions
  1. 3 1
      app/Error.php
  2. 257 81
      app/Http/Controllers/Api/OrderController.php
  3. 5 1
      app/Http/routes.php

+ 3 - 1
app/Error.php

@@ -13,7 +13,9 @@ class Error
13 13
     public static $errCodes = [
14 14
 
15 15
         0 => "成功",
16
-        1001 => '未分配销售'
16
+        1001 => '未分配销售',
17
+
18
+        2001 => '参数有误',
17 19
         
18 20
     ];
19 21
     /**

+ 257 - 81
app/Http/Controllers/Api/OrderController.php

@@ -12,6 +12,7 @@ namespace App\Http\Controllers\Api;
12 12
 use App\Http\Controllers\Controller;
13 13
 use Illuminate\Http\Request;
14 14
 use App\Log;
15
+use App\Admin;
15 16
 use App\Order;
16 17
 use App\Oplog;
17 18
 use App\RedisModel;
@@ -76,7 +77,7 @@ class OrderController extends Controller {
76 77
                     
77 78
                 }
78 79
             }
79
-            $v['goods'] = $goods;
80
+            $v['skus'] = $goods;
80 81
             
81 82
             #加粉时间
82 83
             $fanTime = DB::table('customers')->select('fanTime')->where('phone', $v['receiverMobile'])->first();
@@ -101,52 +102,60 @@ class OrderController extends Controller {
101 102
      */
102 103
     public function orderstore(Request $request)
103 104
     {       
104
-        $this->validate($request, [
105
-            'customerName'           => 'required|between:1,6', 
106
-            'receiverName'           => 'required|between:1,6', 
107
-            'receiverMobile'           => 'required|regex:/^1[3456789]\d{9}$/',  
108
-            'fanTime'           => 'required|date', 
109
-            'receiverState'           => 'required|between:1,5', 
110
-            'receiverCity'           => 'required|between:1,10', 
111
-            'receiverAddress'           => 'required', 
112
-            'delivery_date'           => 'required|date', 
113
-            'receivedAmount'           => 'required|numeric|min:1',    
114
-            'skus'                => 'required'
115
-        ], [                  
116
-            'customerName.required'           => '买家姓名不能为空',                   
117
-            'customerName.between'           => '买家姓名不能超过6个字符',                   
118
-            'receiverName.required'           => '收货人不能为空', 
119
-            'receiverName.between'           => '收货人不能超过6个字符',                  
120
-            'receiverMobile.required'           => '收货人手机号不能为空',                   
121
-            'receiverMobile.regex'           => '收货人手机号格式有误',                   
122
-            'fanTime.required'           => '加粉时间不能为空',              
123
-            'receiverState.required'           => '省不能为空',   
124
-            'receiverState.between'           => '省填写有误',   
125
-            'receiverCity.required'           => '市不能为空',   
126
-            'receiverCity.between'           => '市填写有误',   
127
-            'receiverAddress.required'           => '详细地址不能为空',             
128
-            'delivery_date.required'           => '预发货时间不能为空',     
129
-            'receivedAmount.required'           => '付款金额不能为空',                   
130
-            'receivedAmount.numeric'           => '付款金额必须为数字',                                     
131
-        ]);
105
+        $admin_id = (int)$request->input('admin_id'); 
106
+        if(empty($admin_id)){
107
+            return self::returnValue(['msg'=>'登录过期'], 2001); 
108
+        }
109
+        $phone = $request->input('receiverMobile'); 
110
+        if(!preg_match('/^1\d{10}$/', $phone)){
111
+            return self::returnValue(['msg'=>'手机号格式有误'], 2001); 
112
+        }
113
+        $customerName = $request->input('customerName');
114
+        if(empty($customerName)){
115
+            return self::returnValue(['msg'=>'买家姓名不能为空'], 2001); 
116
+        } 
117
+        $receiverName = $request->input('receiverName'); 
118
+        if(empty($receiverName)){
119
+            return self::returnValue(['msg'=>'收货人姓名不能为空'], 2001); 
120
+        } 
121
+        $receiverState = $request->input('receiverState'); 
122
+        if(empty($receiverState)){
123
+            return self::returnValue(['msg'=>'省份不能为空'], 2001); 
124
+        } 
125
+        $receiverCity = $request->input('receiverCity'); 
126
+        if(empty($receiverCity)){
127
+            return self::returnValue(['msg'=>'市不能为空'], 2001); 
128
+        }
129
+        $receiverAddress = $request->input('receiverAddress'); 
130
+        if(empty($receiverAddress)){
131
+            return self::returnValue(['msg'=>'详细地址不能为空'], 2001); 
132
+        }
133
+        $delivery_date = $request->input('delivery_date'); 
134
+        if(empty($delivery_date)){
135
+            return self::returnValue(['msg'=>'预发货时间不能为空'], 2001); 
136
+        }
137
+        $receivedAmount = $request->input('receivedAmount'); 
138
+        if(empty($receivedAmount)){
139
+            return self::returnValue(['msg'=>'实付金额不能为空'], 2001); 
140
+        }
141
+        $skus = $request->input('skus'); 
142
+        if(empty($skus)){
143
+            return self::returnValue(['msg'=>'必须添加商品'], 2001);
144
+        }
145
+        $payment_type = (int)$request->input('payment_type'); 
146
+        if(empty($payment_type)){
147
+            return self::returnValue(['msg'=>'必选支付方式'], 2001);
148
+        }
132 149
 
133
-        //redis防重复数据
134
-        $phone = $request->input('receiverMobile');       
150
+        /*     
135 151
         $redisKey = 'seafood.order_phone_add.'.$phone;
136 152
         $res = RedisModel::setnx($redisKey, 1);
137 153
         if( $res == 0 ){
138 154
             $msg = '操作过于频繁,请一分钟后继续操作';
139
-            return redirect('/admin/order/index')->with('info', $msg);
155
+            return self::returnValue(['msg'=>$msg], 2001);
140 156
         }
141 157
         $res = RedisModel::expire( $redisKey, 60 );
142
-        
143
-        $skus = $request->input('skus');
144
-        $warehouse = (int)$request->input('warehouse');
145
-        if($warehouse == 3 && empty($skus)){
146
-            $msg = 'C仓必须添加卖家云商品';
147
-            return redirect('/admin/order/index')->with('info', $msg);
148
-        }
149
-    
158
+        */
150 159
         //数据库-新增数据
151 160
         $order = array();
152 161
         $order['eshopCode'] = config('constants.ESHOP_CODE'); //默认
@@ -187,6 +196,7 @@ class OrderController extends Controller {
187 196
         //商品信息
188 197
         $skus = $request->input('skus');
189 198
         $gnum = $request->input('gnum');
199
+        $order_goods = array();
190 200
         if(!empty($skus)){
191 201
             foreach($skus as $k=>$sku_id){
192 202
                 $sku_info = GoodsSkus::where('id', $sku_id)->first();
@@ -199,30 +209,19 @@ class OrderController extends Controller {
199 209
                 #商品名称
200 210
                 $params['goodsName'] = $goods_info->name;
201 211
                 $params['propertiesName'] = $sku_info->propsName;
202
-                //$params['goodsName'] = '海钓黄翅鱼';//$goods->code; 
203 212
                 $params['price'] = $sku_info->price;
204 213
                 
205 214
                 $params['quantity'] = $gnum[$k];
206 215
                 $params['discountFee'] = 0;
207 216
                 $params['adjustFee'] = 0;
208 217
                 $params['refundStatus'] = '正常';
209
-                $order['skuList'][] = $params;
218
+                $order_goods[] = $params;
210 219
             }
211 220
         }
212 221
 
213
-        //卖家云添加订单 ->改为审核通过再同步卖家云
214
-        //$mj_add = Order::mjOrderAdd($order);
215
-
216 222
         //本系统订单额外参数
217
-        $order['goods_note'] = trim($request->input('goods_note'));
218
-        if($request->input('cost')) $order['cost'] = trim($request->input('cost'));  //成本
219
-        $order['logistics_id'] = trim($request->input('logistics_id')); //物流单号
220
-        $order['is_refund'] = (int)$request->input('is_refund'); //是否退过单
221
-        if($request->input('refund_price')) $order['refund_price'] = trim($request->input('refund_price')); //应该退补差价
222
-        //$order['is_fugou'] = (int)$request->input('is_fugou'); //是否复购
223
-        $order['warehouse'] = (int)$request->input('warehouse'); //仓库
223
+        $order['warehouse'] = 3; //仓库
224 224
         $order['delivery_date'] = !empty($request->input('delivery_date')) ? $request->input('delivery_date') : date('Y-m-d'); //发货日期
225
-        $order['order_status'] = (int)$request->input('order_status');
226 225
         $order['payment_type'] = (int)$request->input('payment_type'); //支付方式
227 226
        
228 227
         //充值卡验证余额
@@ -231,10 +230,12 @@ class OrderController extends Controller {
231 230
             $customerInfo = CustomerInfo::where('phone', $deposit_phone)->first();
232 231
             $balance = isset($customerInfo->balance) ? $customerInfo->balance : 0;
233 232
             if($balance < $order['receivedAmount']){
234
-                //余额不足
235
-                return redirect('/admin/order/index')->with('info', '充值卡余额不足');
233
+                $msg = '余额不足';
234
+                return self::returnValue(['msg'=>$msg], 2003);
236 235
             }
237 236
         }
237
+
238
+        $admin_id = (int)$request->input('admin_id');
238 239
         DB::beginTransaction();
239 240
         try{      
240 241
 
@@ -247,7 +248,7 @@ class OrderController extends Controller {
247 248
             $customers['receiverStreet'] = $order['receiverStreet'];
248 249
             $customers['receiverAddress'] = $order['receiverAddress'];
249 250
 
250
-            $if_e = DB::table('customers')->select('id')->where('phone', $order['receiverMobile'])->first();
251
+            $if_e = DB::table('customers')->select('id', 'fanTime')->where('phone', $order['receiverMobile'])->first();
251 252
             if(isset($if_e->id)){               
252 253
                 $customers['is_fugou'] = 1;
253 254
                 $order['is_fugou'] = 1;
@@ -256,29 +257,18 @@ class OrderController extends Controller {
256 257
                 $customers['phone'] = $order['receiverMobile'];                
257 258
                 $customers['is_fugou'] = 0;
258 259
                 $customers['fanTime'] = $request->input('fanTime');
259
-                $customers['admin_id'] = session('admin_id');
260
+                $customers['admin_id'] = $admin_id;
260 261
                 $in_c = DB::table('customers')->insert($customers);
261 262
             }
262
-
263
-            if(!empty($skus)){
264
-                $order_goods = $order['skuList'];
265
-                unset($order['skuList']);
266
-            }
267
-           
268
-            //$order['orderCode'] = $mj_add['order']['code']; 
269
-            $admin_id = (int)$request->input('admin_id');   
270
-            if($admin_id>0){
271
-                $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
272
-                $order['admin_id'] = $admin_id;
273
-                $order['admin_name'] = $admin_info->realname;
274
-                $order['team_id'] = $admin_info->team_id;
275
-            }else{
276
-                $order['admin_id'] = session('admin_id');
277
-                $order['admin_name'] = session('real_name');
278
-                $order['team_id'] = session('team_id');
279
-            }
263
+               
264
+            $admin_info = DB::table('admin')->select('realname', 'team_id')->where('id', $admin_id)->first();
265
+            $order['admin_id'] = $admin_id;
266
+            $order['admin_name'] = $admin_info->realname;
267
+            $order['team_id'] = $admin_info->team_id;
268
+            
280 269
             //新加is_able 9.4之前粉丝不参与销售复购统计
281 270
             $fanTime = $request->input('fanTime');
271
+            if(!$fanTime && isset($if_e->id)) $fanTime = $if_e->fanTime;
282 272
             if($fanTime < '2019-09-04'){
283 273
                 $order['is_able'] = 0;
284 274
             }
@@ -309,8 +299,8 @@ class OrderController extends Controller {
309 299
                     $customerInfo->save();
310 300
                 }
311 301
                 #记录操作日志
312
-                $self_id = session('admin_id');
313
-                $self_name = session('real_name');
302
+                $self_id = $admin_id;
303
+                $self_name = $admin_info->realname;
314 304
                 if($order['status'] == 0){
315 305
                     $status_text = '仅录入';
316 306
                 }else{
@@ -321,9 +311,6 @@ class OrderController extends Controller {
321 311
                 $tables = 'order';
322 312
                 $data_id = $res;
323 313
                 Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
324
-
325
-                #如果提交审核,发短信
326
-                //if( $order['status'] == 1 ) $this->sendRemind($self_id, $res, 1);
327 314
             }
328 315
             
329 316
             DB::commit();
@@ -331,8 +318,197 @@ class OrderController extends Controller {
331 318
             DB::rollback();
332 319
         }   
333 320
 
334
-        return redirect('/admin/order/index')->with('info', '添加成功'); 
321
+        return self::returnValue(['msg'=>'添加成功']);
335 322
         
336 323
     }
337 324
 
325
+    /**
326
+     * 根据手机号获取默认地址信息
327
+     *
328
+     */
329
+    public function getAddress(Request $request){
330
+        $phone = $request->input('phone');
331
+        if(!preg_match('/^1\d{10}$/', $phone)){
332
+            return self::returnValue([],2001);
333
+        }
334
+
335
+        $result = DB::table('customers')->select('receiverState', 'receiverCity', 'receiverAddress', 'fanTime')->where('phone', $phone)->first();
336
+        $result = json_decode(json_encode($result), true);
337
+        return self::returnValue(['data'=>$result]);
338
+    }
339
+
340
+    //获余额
341
+    public function getBalance(Request $request){
342
+        $phone = $request->input('phone');
343
+        if(!preg_match('/^1\d{10}$/', $phone)){
344
+            return self::returnValue([],2001);
345
+        }
346
+        $result = CustomerInfo::where('phone', $phone)->pluck('balance');
347
+        if(empty($result)) $result = 0;
348
+        return self::returnValue(['balance'=>$result]);
349
+    }
350
+
351
+     /**
352
+     * 分组管理-进行编辑操作
353
+     * @param Request $request
354
+     * @return \Illuminate\Http\RedirectResponse
355
+     */
356
+    public function orderupdate(Request $request)
357
+    {   
358
+        $admin_id = (int)$request->input('admin_id'); 
359
+        if(empty($admin_id)){
360
+            return self::returnValue(['msg'=>'登录过期'], 2001); 
361
+        }
362
+        $id = (int)$request->input('id'); 
363
+        if(empty($id)){
364
+            return self::returnValue(['msg'=>'订单id有误'], 2001); 
365
+        }
366
+        $phone = $request->input('receiverMobile'); 
367
+        if(!preg_match('/^1\d{10}$/', $phone)){
368
+            return self::returnValue(['msg'=>'手机号格式有误'], 2001); 
369
+        }
370
+        $customerName = $request->input('customerName');
371
+        if(empty($customerName)){
372
+            return self::returnValue(['msg'=>'买家姓名不能为空'], 2001); 
373
+        } 
374
+        $receiverName = $request->input('receiverName'); 
375
+        if(empty($receiverName)){
376
+            return self::returnValue(['msg'=>'收货人姓名不能为空'], 2001); 
377
+        } 
378
+        $receiverState = $request->input('receiverState'); 
379
+        if(empty($receiverState)){
380
+            return self::returnValue(['msg'=>'省份不能为空'], 2001); 
381
+        } 
382
+        $receiverCity = $request->input('receiverCity'); 
383
+        if(empty($receiverCity)){
384
+            return self::returnValue(['msg'=>'市不能为空'], 2001); 
385
+        }
386
+        $receiverAddress = $request->input('receiverAddress'); 
387
+        if(empty($receiverAddress)){
388
+            return self::returnValue(['msg'=>'详细地址不能为空'], 2001); 
389
+        }
390
+        $delivery_date = $request->input('delivery_date'); 
391
+        if(empty($delivery_date)){
392
+            return self::returnValue(['msg'=>'预发货时间不能为空'], 2001); 
393
+        }
394
+        $receivedAmount = $request->input('receivedAmount'); 
395
+        if(empty($receivedAmount)){
396
+            return self::returnValue(['msg'=>'实付金额不能为空'], 2001); 
397
+        }
398
+        $skus = $request->input('skus'); 
399
+        if(empty($skus)){
400
+            return self::returnValue(['msg'=>'必须添加商品'], 2001);
401
+        }
402
+        $payment_type = (int)$request->input('payment_type'); 
403
+        if(empty($payment_type)){
404
+            return self::returnValue(['msg'=>'必选支付方式'], 2001);
405
+        }
406
+      
407
+        //更新数据
408
+        $order = array();
409
+        $order['customerName'] = trim($request->input('customerName')); //买家名称
410
+        $order['receiverName'] = trim($request->input('receiverName')); //收件人
411
+        if(preg_match('/^1\d{10}$/', $phone)) $order['receiverMobile'] = $phone; //收件人手机
412
+        $order['receiverState'] = trim($request->input('receiverState')); //省份
413
+        $order['receiverCity'] = trim($request->input('receiverCity')); //市
414
+        
415
+        $order['receiverState'] = str_replace(['省', '市'], '', $order['receiverState']);
416
+        $order['receiverCity'] = str_replace('市', '', $order['receiverCity']);
417
+
418
+        $order['receiverAddress'] = trim($request->input('receiverAddress')); //详细地址
419
+        $order['receivedAmount'] = trim($request->input('receivedAmount')); //付款金额        
420
+        $order['buyerMemo'] = trim($request->input('buyerMemo', '')); // 买家备注
421
+        $order['sellerMemo'] = trim($request->input('sellerMemo', '')); // 卖家备注
422
+        $order['delivery_date'] = !empty($request->input('delivery_date')) ? $request->input('delivery_date') : date('Y-m-d'); //发货日期
423
+        $order['payment_type'] = (int)$request->input('payment_type'); //支付方式
424
+
425
+        $order['status'] = (int)$request->input('status');
426
+        $order['should_amount'] = $request->input('should_amount');
427
+        if(!$order['should_amount']) $order['should_amount'] = null;
428
+        
429
+        $id = (int)$request->input('id');
430
+        //获取订单原信息
431
+        $old_order = DB::table('order')->where('id', $id)->first();
432
+        // ++++++充值卡验证余额逻辑 +++++++ //
433
+        if($order['payment_type'] == 4){
434
+            $deposit_phone = $phone;//$request->input('deposit_phone');
435
+            if($old_order->payment_type != 4){                            
436
+                $customerInfo = CustomerInfo::where('phone', $deposit_phone)->first();
437
+                $balance = isset($customerInfo->balance) ? $customerInfo->balance : 0 ;
438
+                if($balance < $order['receivedAmount']){
439
+                    //余额不足
440
+                    return self::returnValue(['msg'=>'充值卡余额不足'], 2001); 
441
+                }               
442
+            }elseif($old_order->receivedAmount != $order['receivedAmount']){              
443
+                $customerInfo = CustomerInfo::where('phone', $deposit_phone)->first();
444
+                $balance = $customerInfo->balance;
445
+                if( $balance < $order['receivedAmount']-$old_order->receivedAmount ){
446
+                    //余额不足
447
+                    return self::returnValue(['msg'=>'充值卡余额不足'], 2001);             
448
+                }
449
+            }
450
+        }
451
+
452
+        $today_date = date('Y-m-d');
453
+        DB::beginTransaction();
454
+        try{
455
+            $res = DB::table('order')->where('id', $id)->update($order); 
456
+            //商品信息
457
+            $skus = $request->input('skus');
458
+            $gnum = $request->input('gnum');
459
+            if(empty($skus)) $skus = [];
460
+            //先删除
461
+            $del_re = DB::table('order_goods_skus')->where('order_id', $id)->whereNotIn('sku_id', $skus)->update(['is_del'=>1]);
462
+            if(!empty($skus)){            
463
+                //再同步
464
+                foreach($skus as $k=>$sku_id){
465
+                    $sku_info = GoodsSkus::select('goodsCode', 'price', 'propsName','is_weigh')->where('id', $sku_id)->first();
466
+                    $sync_re = OrderGoodsSkus::updateOrCreate(['order_id'=>$id, 'sku_id'=>$sku_id, 'goods_id'=>$sku_info->goodsCode], ['num'=>$gnum[$k], 'is_del'=>0, 'price'=>$sku_info->price]);
467
+                }
468
+
469
+            }
470
+  
471
+            if($res){        
472
+                #新加逻辑,若付款方式为充值卡/消费记录
473
+                if($order['payment_type'] == 4 ){
474
+                    if($old_order->payment_type != 4 ){
475
+                        $consum = new CustomerConsum();
476
+                        $consum->phone = $deposit_phone;
477
+                        $consum->order_id = $id;
478
+                        $consum->money = $order['receivedAmount'];
479
+                        $consum->save();
480
+                        //更新余额                   
481
+                        $customerInfo->balance = $customerInfo->balance - $order['receivedAmount'];
482
+                        $customerInfo->save();
483
+                    }elseif($old_order->receivedAmount != $order['receivedAmount']){
484
+                        $consum = CustomerConsum::where('order_id', $id)->first();                       
485
+                        $consum->money = $order['receivedAmount'];
486
+                        $consum->save();
487
+                        //更新余额
488
+                        $add_amount = $order['receivedAmount'] - $old_order->receivedAmount; //新增消费额,有可能为负数
489
+                        $customerInfo->balance = $customerInfo->balance - $add_amount;
490
+                        $customerInfo->save();
491
+                    }
492
+                }
493
+
494
+                #记录操作日志
495
+                $self_id = (int)$request->input('admin_id');
496
+                $self_name = Admin::where('id', $self_id)->pluck('realname');            
497
+                $context = "修改订单";
498
+                $type = 0; 
499
+                $tables = 'order';
500
+                $data_id = $id;
501
+                Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
502
+
503
+            }  
504
+
505
+            DB::commit();
506
+        }catch (Exception $e){
507
+            DB::rollback();
508
+            Log::errorLog($request,['error'=>$e->getMessage()],"order/update",0,'');
509
+            return self::returnValue(['msg'=>$e->getMessage()], 2001); 
510
+        }     
511
+
512
+        return self::returnValue(['msg' => '更新成功']);         
513
+    }
338 514
 }

+ 5 - 1
app/Http/routes.php

@@ -308,6 +308,10 @@ Route::group(['prefix' => 'api'], function() {
308 308
     Route::get('/template/addLongLog', 'Api\TemplateController@addLongLog');
309 309
     Route::get('/dayGrandTotal', 'Api\TemplateController@dayGrandTotal');
310 310
 
311
-    Route::get('order/orderList', 'Api\OrderController@orderList');
311
+    Route::get('/order/orderList', 'Api\OrderController@orderList');
312
+    Route::post('/order/orderstore', 'Api\OrderController@orderstore');
313
+    Route::post('/order/orderupdate', 'Api\OrderController@orderupdate');
314
+    Route::get('/order/getAddress', 'Api\OrderController@getAddress');
315
+    Route::get('/order/getBalance', 'Api\OrderController@getBalance');
312 316
 
313 317
 });