ryan 1 هفته پیش
والد
کامیت
741c0ec704

+ 15 - 6
common/models/forms/OrderForm.php

@@ -56,6 +56,7 @@ class OrderForm extends Model
 
     public $userName;
     public $decUserName;
+    public $noLoginUserId;
     public $consignee;
     public $acceptMobile;
     public $province;
@@ -96,7 +97,8 @@ class OrderForm extends Model
     {
         return [
             [['sn', 'expressCompany', 'orderTrackNo', 'status', 'remark','type','addressId','payType','goodsId','goodsNum', 'payPassword','userName','consignee','acceptMobile','province'/*,'city','county'*/,'cityName','lgaName','detailaddress','email','decUserName'], 'trim'],
-            [['sn', 'expressCompany', 'orderTrackNo', 'status', 'remark','type','addressId','payType','goodsId','goodsNum', 'payPassword','consignee','acceptMobile','province','city','county','detailaddress'/*,'email'*/,'decUserName'], 'required'],
+            [['sn', 'expressCompany', 'orderTrackNo', 'status', 'remark','type','addressId','payType','goodsId','goodsNum','consignee','acceptMobile','province','city','county','detailaddress'/*,'email'*/,'decUserName'], 'required'],
+            [['payPassword'], 'required', 'when' => function ($model) { return $model->scenario !== 'noLoginReconsumeOrder'; }],
             [['status'], 'isStatus'],
             [['addressId'], 'isAddress'],
             [['payType'], 'isPayType'],
@@ -152,6 +154,7 @@ class OrderForm extends Model
             'userOrder' => ['type','addressId', 'payType','goodsId','goodsNum', 'remark', 'payPassword', 'period'],
             // 帮会员复消下单
             'reconsumeOrder' => ['type','userName', 'payType','goodsId','goodsNum', 'remark', 'payPassword','consignee','acceptMobile','province','cityName','lgaName','detailaddress','decUserName'],
+            'noLoginReconsumeOrder' => ['type','userName', 'payType','goodsId','goodsNum', 'remark','consignee','acceptMobile','province','cityName','lgaName','detailaddress','decUserName'],
             // 管理员退款
             'adminRefund' => ['sn'],
             // AMP
@@ -817,6 +820,11 @@ class OrderForm extends Model
      * @throws Exception
      * @throws \yii\db\Exception
      */
+    private function getReconsumeActorId()
+    {
+        return $this->scenario === 'noLoginReconsumeOrder' ? $this->noLoginUserId : \Yii::$app->user->id;
+    }
+
     public function reconsumeAdd(){
         if(!$this->validate()){
             return null;
@@ -839,16 +847,17 @@ class OrderForm extends Model
         }
 
         // 报单中心汇率
-        $decCountryId = User::getEnCodeInfo(\Yii::$app->user->id)['COUNTRY_ID'];
+        $reconsumeActorId = $this->getReconsumeActorId();
+        $decCountryId = User::getEnCodeInfo($reconsumeActorId)['COUNTRY_ID'];
         $decCountry = Countries::getById($decCountryId);
         $decUserCurrencyRate = CurrencyConversions::getToUSDRate($decCountry['LOCAL_CURRENCY_ID']);
         // 会员汇率
         $country = Countries::getById($user['COUNTRY_ID']);
         $currencyRate = CurrencyConversions::getToUSDRate($country['LOCAL_CURRENCY_ID']);
         //判断是否是报单中心
-        $loginUser = User::getEnCodeInfo(\Yii::$app->user->id);
+        $loginUser = User::getEnCodeInfo($reconsumeActorId);
         if($loginUser['IS_DEC'] == 1){
-            if($decUserID != \Yii::$app->user->id){
+            if($decUserID != $reconsumeActorId){
                 throw new Exception(Yii::t('app', 'decUserNameIsWrong'));
             }
         }
@@ -975,7 +984,7 @@ class OrderForm extends Model
         $db = \Yii::$app->db;
         $transaction = $db->beginTransaction();
         try {
-            $loginUserId = \Yii::$app->user->id;
+            $loginUserId = $reconsumeActorId;
 
             //是否开启伞下会员限制
             // $isResaleUmbrella = Cache::getSystemConfig()['isResaleUmbrella']['VALUE'];
@@ -1060,7 +1069,7 @@ class OrderForm extends Model
         $nowPeriodNum = $periodObj->getNowPeriodNum();
         $nowCalcMonth = $periodObj->getYearMonth($nowPeriodNum);
         //帮复消会员Id(登陆会员)
-        $loginUserId = \Yii::$app->user->id;
+        $loginUserId = $this->getReconsumeActorId();
         $loginUserName = Info::getUserNameByUserId($loginUserId);
         //订单会员Id
         $userId = Info::getUserIdByUserName($this->userName);

+ 1 - 0
frontendApi/config/params.php

@@ -20,6 +20,7 @@ return [
         'v1/shop/no-login-reconsume',
         'v1/shop/no-login-reconsume-sure-order',
         'v1/shop/no-login-show-cart',
+        'v1/shop/no-login-order-detail',
         'v1/config/no-login-region-list',
         'v1/user/guest-dec',
         'v1/user/guest-dec-debug-paid',

+ 1 - 0
frontendApi/config/urlManagerRules.php

@@ -77,6 +77,7 @@ return [
             'GET goods-detail/<id>' => 'goods-detail',
             'GET show-cart' => 'show-cart',
             'GET no-login-show-cart' => 'no-login-show-cart',
+            'GET no-login-order-detail' => 'no-login-order-detail',
             'GET reconsume-cart' => 'reconsume-cart',
             'POST sure-order' => 'sure-order',
             'POST reconsume-sure-order' => 'reconsume-sure-order',

+ 56 - 5
frontendApi/modules/v1/controllers/ShopController.php

@@ -609,6 +609,59 @@ class ShopController extends BaseController {
         return $data;
     }
 
+    /**
+     * 无需登录查看最小编号报单中心账号的订单详情
+     */
+    public function actionNoLoginOrderDetail()
+    {
+        $orderSn = Yii::$app->request->get('orderSn');
+        if (!is_scalar($orderSn) || trim((string)$orderSn) === '') {
+            return static::notice('orderSn is required', 400);
+        }
+        $orderSn = trim((string)$orderSn);
+
+        $order = Order::find()
+            ->alias('O')
+            ->select('O.ID,O.SN,O.USER_ID,O.USER_NAME,O.ORDER_TYPE,O.ORDER_AMOUNT,O.PV,O.PAY_AMOUNT,O.PAY_PV,O.STATUS,O.CREATED_AT,O.PAY_TYPE,O.PAY_AT,O.CONSIGNEE,O.MOBILE,O.TEL,O.ADDRESS,O.CITY_NAME,O.LGA_NAME,O.PROVINCE,O.COUNTRY_ID,O.CURRENCY_ID,O.FREIGHT,O.PAY_FREIGHT,O.DELIVERY_STATUS,O.DELIVERY_PERIOD,O.DELIVERY_AT,O.EXPRESS_COMPANY,O.ORDER_TRACK_NO,O.EXPRESS_TYPE,O.FRONT_REMARK,O.PERIOD_NUM,O.WAREHOUSE,O.EMAIL,O.AUTO_MAINTENANCE,O.INVOICE_REMARK,U.REAL_NAME,C.CODE AS CURRENCY')
+            ->leftJoin(User::tableName() . ' U', 'U.ID=O.USER_ID')
+            ->leftJoin(Currency::tableName() . ' C', 'C.ID=O.CURRENCY_ID')
+            ->where(['O.SN' => $orderSn, 'O.IS_DELETE' => 0])
+            ->asArray()
+            ->one();
+
+        if (!$order) {
+            return static::notice(Yii::t('ctx', 'orderNotExist'), 400);
+        }
+
+        $stockist = User::find()
+            ->select('ID')
+            ->where(['COUNTRY_ID' => $order['COUNTRY_ID'], 'IS_DEC' => 1])
+            ->orderBy(['USER_NAME' => SORT_ASC])
+            ->asArray()
+            ->one();
+        if (!$stockist || $order['USER_ID'] != $stockist['ID']) {
+            return static::notice(Yii::t('ctx', 'orderNotExist'), 400);
+        }
+
+        $goods = OrderGoods::find()
+            ->alias('OG')
+            ->select(['OG.SKU_CODE', 'OG.GOODS_TITLE', 'OG.BUY_NUMS', 'OG.TAX_RATE', 'OG.REAL_PV', 'OG.REAL_PRICE', 'SG.COVER'])
+            ->leftJoin(ShopGoods::tableName() . ' SG', 'SG.ID = OG.GOODS_ID')
+            ->where(['OG.ORDER_SN' => $orderSn])
+            ->asArray()
+            ->all();
+
+        $payType = $order['PAY_TYPE'];
+        $order['ORDER_TYPE'] = $order['ORDER_TYPE'] == 'ZC' ? 'Welcome Pack' : (in_array($payType, ['cash', 'pay_stack']) ? 'Repeat Purchase' : 'Points');
+        $order['PAY_TYPE'] = array_column(ShopGoods::SALE_TYPE, null, 'label')[$order['PAY_TYPE']]['name'] ?? '';
+        $order['STATUS'] = Yii::$app->params['orderStatus'][$order['STATUS']]['label'] ?? '';
+        $order['FULL_ADDRESS'] = trim(implode(', ', [$order['ADDRESS'], $order['CITY_NAME'], $order['LGA_NAME'], Region::getCnName($order['PROVINCE'])]), ', ');
+        $order['SHOW_BV'] = !in_array($payType, [5, 6]);
+        $order['COUNTRY'] = Countries::getById($order['COUNTRY_ID'])['NAME'] ?? '';
+
+        return static::notice(['order' => $order, 'goods' => $goods]);
+    }
+
     /**
      * 我的订单.(自己复消+自己加入时的首单)
      * 创建人是自己+USER_ID是自己的复消单、创建人不是自己+USER_ID是自己的报单
@@ -932,18 +985,16 @@ class ShopController extends BaseController {
             return static::notice(Yii::t('app', 'stockistDoesNotExist'), 400);
         }
 
-        $formModel = new ApproachReconsumeOrderForm();
+        $formModel = new OrderForm();
         $formModel->scenario = 'noLoginReconsumeOrder';
         $formModel->remark = Yii::t('app', 'reconsume');
         $formModel->noLoginUserId = $user['ID'];
         $post['type'] = DeclarationForm::TYPE_FX;
-        $post['payType'] = 'pay_stack';
         if ($formModel->load($post, '')) {
             $formModel->userName = $user['USER_NAME'];
             $formModel->decUserName = $user['USER_NAME'];
-            $order = $formModel->add();
-            if ($order) {
-                return static::notice($order);
+            if ($formModel->reconsumeAdd()) {
+                return static::notice(Yii::t('app', 'reconsumeSuccessfully'));
             }
         }