ソースを参照

后台-订单-撤回订单列表,撤回撤回订单

xupuyuan 10 ヶ月 前
コミット
92cd630cf7
共有2 個のファイルを変更した171 個の追加20 個の削除を含む
  1. 168 19
      app/controller/admin/order/Order.php
  2. 3 1
      route/admin.php

+ 168 - 19
app/controller/admin/order/Order.php

@@ -346,16 +346,16 @@ class Order extends BaseController
346 346
             Db::startTrans();
347 347
             //查找是否有推荐人
348 348
             $spreadUid = Db::name('user')->where('uid', $uid)->value('spread_uid');
349
-            //取出并删除 pv
349
+            //取出pv
350 350
             $pv = $this->getValue('user_pv_log', [['order_id', '=', $order_id], ['status', '=', 1],], 'pv');
351
-            //取出 vr 消耗
351
+            //取出 vr
352 352
             $payVr = $this->getValue('user_sign_vr', [['order_id', '=', $order_id], ['type', '=', 2],], 'number');
353 353
             //取出购买赠送积分 / 支出积分
354 354
             $score = $this->getValue('user_sign_score', [['order_id', '=', $order_id], ['status', '=', 1], ['source_type', '=', 3], ['uid', '=', $uid], ['pm', '=', 1],], 'reward_socre');
355 355
             $payScore = $this->getValue('user_sign_score', [['order_id', '=', $order_id], ['status', '=', 1], ['pm', '=', 2], ['uid', '=', $uid],], 'reward_socre');
356 356
             // 贡献值
357 357
             $gongXian = $this->getValue('user_sign_gongxian', [['order_id', '=', $order_id], ['status', '=', 1], ['type', '=', 1], ['uid', '=', $uid],], 'number');
358
-            // 养老金 / 推广养老金 / 推广佣金
358
+            // 养老金
359 359
             $yangLaoJin = $this->getValue('user_bill', [['link_id', '=', $order_id], ['status', '=', 1], ['pm', '=', 1], ['uid', '=', $uid],], 'number');
360 360
             if($spreadUid){
361 361
                 $spreadScore = 0;
@@ -368,38 +368,78 @@ class Order extends BaseController
368 368
                 $spreadYongJin = $this->getValue('user_bill', [['link_id', '=', $order_id], ['commission_type', '=', 3], ['uid', '=', $spreadUid],], 'number');  //推荐获得佣金
369 369
                 $spreadUser = Db::name('user')->where('uid', $spreadUid)->find();
370 370
                 Db::name('backup_user')->insert($spreadUser);
371
-                Db::name('user')->where('uid', $spreadUid)->dec('score', $spreadScore)->update();
372
-                Db::name('user')->where('uid', $spreadUid)->dec('per_contribute', $spreadGongXian)->update();
373
-                Db::name('user')->where('uid', $spreadUid)->dec('annuity', $spreadYlj)->update();
374
-                Db::name('user')->where('uid', $spreadUid)->dec('brokerage_price', $spreadYongJin)->update();
371
+                Db::name('user')->where('uid', $spreadUid)
372
+                    ->update([
373
+                        'score' => Db::raw("score - {$spreadScore}"),
374
+                        'per_contribute' => Db::raw("per_contribute - {$spreadGongXian}"),
375
+                        'brokerage_price' => Db::raw("brokerage_price - {$spreadYongJin}"),
376
+                        'annuity' => Db::raw("annuity - {$spreadYlj}"),
377
+                    ]);
378
+                $userhjm1 =[
379
+                    'uid' => $spreadUid,
380
+                    'order_id' => $order_id,
381
+                    'score' => $spreadScore,
382
+                    'per_contribute' => $spreadGongXian,
383
+                    'brokerage_price' => $spreadYongJin,
384
+                    'user' => 2,
385
+                ];
386
+                Db::name('backup_user_change')->insert($userhjm1);
375 387
             }
376 388
             //扫吗消费
377 389
             $smSpreadUid = $this->getValue('user_sign_score', [['order_id', '=', $order_id], ['mark','like','%扫码%'], ['status', '=', 1],], 'uid');
378 390
             $smSpreadScore = $this->getValue('user_sign_score', [['order_id', '=', $order_id], ['uid','=',$smSpreadUid], ['status', '=', 1],], 'reward_socre');
379 391
             //第二推荐
380
-            $spreadYongJinTwo = $this->getValue('user_bill', [['link_id', '=', $order_id], ['commission_type', '=', 3], ['uid', '<>', $spreadUid],], 'number');
381
-            $spreadYongJinTwoUid = $this->getValue('user_bill', [['link_id', '=', $order_id], ['commission_type', '=', 3], ['uid', '<>', $spreadUid],], 'uid');
392
+            $spreadYongJinTwoUid = $this->getValue('user_bill', [['link_id', '=', $order_id], ['commission_type', '=', 3], ['uid', 'not in', [$uid, $spreadUid]],], 'uid');
393
+            $spreadYongJinTwo = $this->getValue('user_bill', [['link_id', '=', $order_id], ['commission_type', '=', 3], ['uid', '=', $spreadYongJinTwoUid],], 'number');
382 394
             //更新对应的user表
395
+            $uscore = $payScore - $score;
383 396
             $user = Db::name('user')->where('uid', $uid)->find();
384 397
             Db::name('backup_user')->insert($user);
385
-            Db::name('user')->where('uid', $uid)->dec('pv', $pv)->update();
386
-            Db::name('user')->where('uid', $uid)->inc('vr', $payVr)->update();
387
-            Db::name('user')->where('uid', $uid)->inc('score', $payScore)->update();
388
-            Db::name('user')->where('uid', $uid)->dec('score', $score)->update();
389
-            Db::name('user')->where('uid', $uid)->dec('contribute', $gongXian)->update();
390
-            Db::name('user')->where('uid', $uid)->dec('annuity', $yangLaoJin)->update();
398
+            Db::name('user')->where('uid', $uid)
399
+                ->update([
400
+                    'pv'         => Db::raw("pv - {$pv}"),
401
+                    'vr'         => Db::raw("vr + {$payVr}"),
402
+                    'score'      => Db::raw("score + {$uscore}"),
403
+                    'contribute' => Db::raw("contribute - {$gongXian}"),
404
+                    'annuity'    => Db::raw("annuity - {$yangLaoJin}"),
405
+                ]);
406
+            $userhjm =[
407
+                'uid' => $uid,
408
+                'order_id' => $order_id,
409
+                'pv' => $pv,
410
+                'vr' => $payVr,
411
+                'score' => $uscore,
412
+                'contribute' => $gongXian,
413
+                'annuity' => $yangLaoJin,
414
+                'user' => 1,
415
+            ];
416
+            Db::name('backup_user_change')->insert($userhjm);//具体修改插入对应表
391 417
             //第二推荐
392 418
             if($spreadYongJinTwoUid) {
393 419
                 $spreadUserTwo = Db::name('user')->where('uid', $spreadYongJinTwoUid)->find();
394 420
                 Db::name('backup_user')->insert($spreadUserTwo);
395 421
                 Db::name('user')->where('uid', $spreadYongJinTwoUid)->dec('brokerage_price', $spreadYongJinTwo)->update();
396
-            }
422
+                $userhjm2 =[
423
+                    'uid' => $spreadYongJinTwoUid,
424
+                    'order_id' => $order_id,
425
+                    'brokerage_price' => $spreadYongJinTwo,
426
+                    'user' => 3,
427
+                ];
428
+                Db::name('backup_user_change')->insert($userhjm2);
429
+            }//扫码消费
397 430
             if($smSpreadUid){
398 431
                 $smUserTwo = Db::name('user')->where('uid', $smSpreadUid)->find();
399 432
                 Db::name('backup_user')->insert($smUserTwo);
400 433
                 Db::name('user')->where('uid', $smSpreadUid)->dec('score', $smSpreadScore)->update();
434
+                $userhjm3 =[
435
+                    'uid' => $smSpreadUid,
436
+                    'order_id' => $order_id,
437
+                    'score' => $smSpreadScore,
438
+                    'user' => 4,
439
+                ];
440
+                Db::name('backup_user_change')->insert($userhjm3);
401 441
             }
402
-            // 删除订单相关表
442
+            // 删除订单相关表p;
403 443
             $this->backupAndDelete('store_order', ['group_order_id' => $group_order_id]);
404 444
             $this->backupAndDelete('store_group_order', ['group_order_id' => $group_order_id]);
405 445
             $this->backupAndDelete('user_pv_log', ['order_id' => $order_id]);
@@ -416,7 +456,7 @@ class Order extends BaseController
416 456
         return app('json')->success('操作成功');
417 457
     }
418 458
 
419
-    private function backupAndDelete($table, array $where)
459
+    private function backupAndDelete($table, array $where)//备份并删除
420 460
     {
421 461
         $backupTable = 'backup_' . $table;
422 462
         $rows = Db::name($table)->where($where)->select()->toArray();
@@ -425,9 +465,118 @@ class Order extends BaseController
425 465
             Db::name($table)->where($where)->delete();
426 466
         }
427 467
     }
428
-    private function getValue($table, array $where, string $field, $default = 0)
468
+    private function getValue($table, array $where, string $field, $default = 0)//查找
429 469
     {
430 470
         $value = Db::name($table)->where($where)->value($field);
431 471
         return $value ?? $default;
432 472
     }
473
+
474
+    /**
475
+     * 展示撤回订单列表
476
+     */
477
+    public function killOrderLst()
478
+    {
479
+        $query = Db::name('backup_store_order')->paginate(20)->toArray();
480
+        return app('json')->success($query, '获取成功');
481
+    }
482
+    public function easterKillOrder(){
483
+        $group_order_id = request()->param('group_order_id');
484
+        $order_id = request()->param('order_id');
485
+        if (empty($order_id) || empty($group_order_id)) {
486
+            return app('json')->fail('参数缺失');
487
+        }
488
+        try {
489
+            Db::startTrans();
490
+            // 恢复订单相关表
491
+            $this->easterOrder('store_order', ['group_order_id' => $group_order_id]);
492
+            $this->easterOrder('store_group_order', ['group_order_id' => $group_order_id]);
493
+            // 恢复 pv
494
+            $this->easterOrder('user_pv_log', ['order_id' => $order_id]);
495
+            // 恢复 vr
496
+            $this->easterOrder('user_sign_vr', ['order_id' => $order_id]);
497
+            // 恢复 积分
498
+            $this->easterOrder('user_sign_score', ['order_id' => $order_id]);
499
+            // 恢复 贡献值
500
+            $this->easterOrder('user_sign_gongxian', ['order_id' => $order_id]);
501
+            // 恢复 佣金/养老金等
502
+            $this->easterOrder('user_bill', ['link_id' => $order_id]);
503
+            // 恢复 公证处
504
+            $this->easterOrder('gzc_logs', ['link_id' => $order_id]);
505
+            //恢复用户奖励
506
+            $this->easterOrder('user_change', ['order_id' => $order_id]);
507
+            Db::commit();
508
+        } catch (\Exception $e) {
509
+            Db::rollback();
510
+            return app('json')->fail('撤回失败: '.$e->getMessage());
511
+        }
512
+        return app('json')->success('撤回成功');
513
+    }
514
+
515
+    private function easterOrder($table, array $where)
516
+    {
517
+        $backupTable = 'backup_' . $table;
518
+        $rows = Db::name($backupTable)->where($where)->select()->toArray();
519
+        if ($rows) {
520
+            foreach ($rows as &$row) {
521
+                unset($row['backup_time']);
522
+            }
523
+            Db::name($table)->insertAll($rows);
524
+            Db::name($backupTable)->where($where)->delete();
525
+        }
526
+    }
527
+    private function easterUserAward($table, array $where){
528
+        $backupTable = 'backup_' . $table;
529
+        $row = Db::name($backupTable)->where($where)->where('user', 1)->field('pv, vr, score, contribute, annuity,uid')->find();
530
+        $uid = $row['uid'];
531
+        $pv   = $row['pv'];
532
+        $vr   = $row['vr'];
533
+        $score= $row['score'];
534
+        $contribute = $row['contribute'];
535
+        $annuity = $row['annuity'];
536
+        Db::name('user') //更新订单用户
537
+            ->where('uid', $uid)
538
+            ->update([
539
+                'pv'         => Db::raw("pv + {$pv}"),
540
+                'vr'         => Db::raw("vr - {$vr}"),
541
+                'score'      => Db::raw("score - {$score}"),
542
+                'contribute' => Db::raw("contribute + {$contribute}"),
543
+                'annuity'    => Db::raw("annuity + {$annuity}"),
544
+            ]);
545
+        $row2 = Db::name($backupTable)->where($where)->where('user', 2)->field('brokerage_price, score, per_contribute, annuity,uid')->find();
546
+        if ($row2) {
547
+            $spreadUid = $row2['uid'];
548
+            $spreadScore = $row2['score'];
549
+            $per_contribute = $row2['per_contribute'];
550
+            $spreadAnnuity = $row2['annuity'];
551
+            $spreadYongJin = $row2['brokerage_price'];
552
+            Db::name('user')     //更新推荐人
553
+            ->where('uid', $spreadUid)
554
+                ->update([
555
+                    'score' => Db::raw("score + {$spreadScore}"),
556
+                    'contribute' => Db::raw("contribute + {$per_contribute}"),
557
+                    'annuity' => Db::raw("annuity + {$spreadAnnuity}"),
558
+                    'brokerage_price' => Db::raw("brokerage_price + {$spreadYongJin}"),
559
+                ]);
560
+        }
561
+        $row3 = Db::name($backupTable)->where($where)->where('user', 3)->field('brokerage_price,uid')->find();
562
+        if ($row3) {
563
+            $spreadUidTwo = $row3['uid'];
564
+            $spreadYongJin2 = $row3['brokerage_price'];
565
+            Db::name('user')
566
+                ->where('uid', $spreadUidTwo)
567
+                ->update([
568
+                    'brokerage_price' => Db::raw("brokerage_price + {$spreadYongJin2}"),
569
+                ]);
570
+        }
571
+        $row4 = Db::name($backupTable)->where($where)->where('user', 4)->field('score,uid')->find();
572
+        if ($row4) {
573
+            $spreadUidThree = $row4['uid'];
574
+            $spreadScore3 = $row4['score'];
575
+            Db::name('user')
576
+                ->where('uid', $spreadUidThree)
577
+                ->update([
578
+                    'score' => Db::raw("score + {$spreadScore3}"),
579
+                ]);
580
+        }
581
+    }
433 582
 }

+ 3 - 1
route/admin.php

@@ -973,7 +973,9 @@ Route::group(config('admin.api_admin_prefix') . '/', function () {
973 973
             Route::get('dhm_list/lst', 'RefundOrder/dhm_list')->name('systemRefundOrderDhmLst');
974 974
             Route::get('dhm_status', 'RefundOrder/dhm_status')->name('systemRefundOrderDhmStatus');
975 975
             Route::get('excel', 'Order/Excel')->name('systemOrderExcel');
976
-            Route::post('killOrderRewards', 'Order/killOrderRewards');
976
+            Route::post('killOrderRewards', 'Order/killOrderRewards');//撤回订单
977
+            Route::post('killOrderLst', 'Order/killOrderLst');//撤回订单的列表
978
+            Route::post('easterKillOrder', 'Order/easterKillOrder');//撤回撤回订单
977 979
         })->prefix('admin.order.');
978 980
 
979 981
         //第三方订单