فهرست منبع

feat: NG-15: 增加订单期数批量调整接口.

kevin 1 سال پیش
والد
کامیت
a02fa294c9
3فایلهای تغییر یافته به همراه69 افزوده شده و 2 حذف شده
  1. 4 2
      backendApi/config/params.php
  2. 1 0
      backendApi/config/urlManagerRules.php
  3. 64 0
      backendApi/modules/v1/controllers/ShopController.php

+ 4 - 2
backendApi/config/params.php

@@ -24,7 +24,8 @@ return [
         'v1/bonus/calc-period',
         'v1/calc/record-list',
         'v1/calc/auto-calc',
-        'v1/shop/order-detail'
+        'v1/shop/order-detail',
+        'v1/shop/order-period-adjust-batch',
     ],
     'noCheckPermissionActions' => [
         'oauth/login',
@@ -95,6 +96,7 @@ return [
         'bonus/calc-period',
         'calc/record-list',
         'calc/auto-calc',
-        'shop/order-detail'
+        'shop/order-detail',
+        'shop/order-period-adjust-batch',
     ],
 ];

+ 1 - 0
backendApi/config/urlManagerRules.php

@@ -80,6 +80,7 @@ return [
             'GET,POST order-period-adjust' => 'order-period-adjust',
             'GET order-detail' => 'order-detail',
             'GET period-inspect' => 'period-inspect',
+            'GET,POST order-period-adjust-batch' => 'order-period-adjust-batch',
         ],
     ],
     [

+ 64 - 0
backendApi/modules/v1/controllers/ShopController.php

@@ -22,10 +22,12 @@ use backendApi\modules\v1\models\lists\shop\PackageList;
 use backendApi\modules\v1\models\lists\shop\RemainPvList;
 use backendApi\modules\v1\models\lists\shop\FlowRemainPvList;
 use common\helpers\Cache;
+use common\helpers\Date;
 use common\helpers\Form;
 use common\models\CurrencyConversions;
 use common\models\DeclarationPackage;
 use common\models\DecOrder;
+use common\models\FlowWallet;
 use common\models\forms\DecPackageForm;
 use common\models\forms\ExcelOrderDecForm;
 use common\models\forms\ExcelOrderShopForm;
@@ -36,9 +38,12 @@ use common\models\forms\OrderPeriodAdjustForm;
 use common\models\forms\ShopGoodsForm;
 use common\models\forms\UploadForm;
 use common\models\Order;
+use common\models\OrderPeriodAdjust;
 use common\models\Period;
 use common\models\ShopGoods;
 use common\models\ShopGoodsNature;
+use common\models\User;
+use common\models\UserInfo;
 use Yii;
 use yii\web\HttpException;
 use yii\web\UploadedFile;
@@ -947,4 +952,63 @@ class ShopController extends BaseController {
 
         return static::notice(['order' => $order, 'availablePeriod' => $availablePeriod]);
     }
+
+    public function actionOrderPeriodAdjustBatch()
+    {
+        $db = \Yii::$app->db;
+        $transaction = $db->beginTransaction();
+
+        $orderList = [];
+        $orderErr = [];
+        try {
+            $modernPeriod = 150; // todo: 修改后期数
+            $oldPeriod = 151; // todo: 修改前期数
+            foreach ($orderList as $orderSn) {
+                $orderObj = Order::findOneAsArray('SN=:SN', [':SN' => $orderSn]);
+                if (!$orderObj) {
+                    $orderErr[] = $orderSn;
+                    continue;
+                }
+
+                // 调整订单期数
+                Order::updateAll(['PERIOD_NUM' => $modernPeriod], 'SN = :SN', [':SN' => $orderSn]);
+
+                if ($orderObj['ORDER_TYPE'] === 'ZC') {
+                    // 调整报单期数
+                    DecOrder::updateAll(['PERIOD_NUM' => $modernPeriod], 'ORDER_SN = :ORDER_SN', ['ORDER_SN' => $orderSn]);
+                    // 调整会员的期数
+                    User::updateAll(['PERIOD_AT' => $modernPeriod], 'ID = :USER_ID', ['USER_ID' => $orderObj['USER_ID']]);
+                    UserInfo::updateAll(['HIGHEST_EMP_LV_PERIOD' => $modernPeriod], 'USER_ID = :USER_ID', ['USER_ID' => $orderObj['USER_ID']]);
+                }
+
+                // 调整流水的期数
+                switch ($orderObj['PAY_TYPE']){
+                    case 'cash':
+                        FlowWallet::updateAll(['PERIOD_NUM' => $modernPeriod], 'ORDER_SN = :ORDER_SN', ['ORDER_SN' => $orderSn]);
+                        break;
+                    default:
+                        break;
+                }
+
+                // 写入调整记录
+                $orderModel = new OrderPeriodAdjust();
+                $orderModel->ORDER_SN = $orderSn;
+                $orderModel->ORIGIN_PERIOD = $oldPeriod;
+                $orderModel->MODERN_PERIOD = $modernPeriod;
+                $orderModel->ADMIN_ID = 'admin';
+                $orderModel->CREATED_AT = Date::nowTime();
+                if (!$orderModel->save()) {
+                    return static::notice($orderModel->getErrors(), 400);
+                }
+            }
+
+            $transaction->commit();
+        } catch(\Exception $e) {
+            $transaction->rollBack();
+
+            return static::notice($e->getMessage(), 400);
+        }
+
+        return static::notice('成功. ' . json_encode($orderErr));
+    }
 }