root 3 лет назад
Родитель
Сommit
3d6f41edc6
1 измененных файлов с 82 добавлено и 30 удалено
  1. 82 30
      common/models/forms/OrderDeleteForm.php

+ 82 - 30
common/models/forms/OrderDeleteForm.php

@@ -10,6 +10,7 @@ use common\helpers\user\Cash;
 use common\helpers\user\Info;
 use common\libs\logging\operate\AdminOperate;
 use common\models\DealType;
+use common\models\DecOrder;
 use common\models\Order;
 use common\models\OrderGoods;
 use common\models\Period;
@@ -75,38 +76,20 @@ class OrderDeleteForm extends Model
         return array_merge($parentScenarios, $customScenarios);
     }
 
-    // /**
-    //  * 校验之前
-    //  * @return bool
-    //  */
-    // public function beforeValidate()
-    // {
-    //     $parentValidate = parent::beforeValidate();
-    //     if ($this->sn) {
-    //         $this->_model = Order::findOne(['SN'=>$this->sn]);
-    //         if (!$this->_model){
-    //             $this->addError('sn', '订单不存在');
-    //             return false;
-    //         }
-    //     }
-    //     if ($this->scenario == 'adminDelivery'){
-    //         if($this->_model['STATUS'] == \Yii::$app->params['orderStatus']['cancel']) {
-    //             $this->addError('sn', '订单已取消不能发货');
-    //             return false;
-    //         }
-    //         if($this->_model['STATUS'] == \Yii::$app->params['orderStatus']['del']) {
-    //             $this->addError('sn', '订单已删除不能发货');
-    //             return false;
-    //         }
-    //     }
-
-    //     return $parentValidate;
-    // }
-
     public function returnOrder() {
         if(!$this->validate()){
             return null;
         }
+        $sn = $this->orderSn;
+        // 获取订单详情
+        $orderInfo = Order::findUseDbCalc()
+        ->select('ID,DEC_SN,USER_ID,ORDER_TYPE,IS_DELETE')
+        ->where("SN=:SN", [':SN' => $sn])
+        ->asArray()
+        ->one();
+        // 如果是注册订单,则删除订单并退还金额,然后再冻结用户
+
+        // 如果是复消单,则删除订单并退还金额
     }
 
 
@@ -126,9 +109,78 @@ class OrderDeleteForm extends Model
 
     // 判断订单类型
     public function checkOrderType($attribute) {
-        
-        $this->addError($attribute, $this->orderSn);
+        $sn = $this->orderSn;
+        $orderDetail = Order::findUseDbCalc()
+        ->select('ID,DEC_SN,USER_ID,ORDER_TYPE,IS_DELETE')
+        ->where("SN=:SN", [':SN' => $sn])
+        ->asArray()
+        ->one();
+        if (empty($orderDetail)) {
+            $this->addError($attribute, '未找到订单信息,订单编号为:'.$this->orderSn);
+            return ;
+        }
+        if ($orderDetail['IS_DELETE'] == 1) {
+            $this->addError($attribute, '订单已被删除,订单编号为'.$this->orderSn);
+            return ;
+        }
+        // 已挂网或者挂网中的业绩期订单,不能进行删除操作
+        $periodNum = $orderDetail['PERIOD_NUM'];
+        $periodObj = Period::findOneAsArray(['PERIOD_NUM'=>$periodNum]);
+        if (empty($periodObj)) {
+            $this->addError($attribute, '订单对应业绩期不存在,订单编号为'.$this->orderSn.' 业绩期为:'.$periodNum);
+            return ;
+        }
+        if ($periodObj['IS_SENT'] == 1) {
+            $this->addError($attribute, '订单对应业绩期已挂网,订单编号为'.$this->orderSn.' 业绩期为:'.$periodNum);
+            return ;
+        }
+        if ($periodObj['IS_SENDING'] == 1) {
+            $this->addError($attribute, '订单对应业绩期正在挂网,订单编号为'.$this->orderSn.' 业绩期为:'.$periodNum);
+            return ;
+        }
+
+        if ($orderDetail['ORDER_TYPE'] == 'ZC') {
+            $decDetail = DecOrder::findUseDbCalc()
+            ->select('TO_USER_ID,DETAIL_TYPE,UPGRADE_TYPE,IS_DEL')
+            ->where("ORDER_SN=:ORDER_SN", [':ORDER_SN' => $sn])
+            ->asArray()
+            ->one();
+            if (empty($decDetail)) {
+                $this->addError($attribute, '未获取到对应报单信息,订单编号为:'.$this->orderSn);
+                return ;
+            }
+            if ($decDetail['IS_DEL'] == 1) {
+                $this->addError($attribute, '对应报单信息已被删除,订单编号为:'.$this->orderSn);
+                return ;
+            }
+            // 如果是注册订单,则判断是否是升级单,如果是升级单,则不能进行删除
+            if ($decDetail['DETAIL_TYPE'] == 2) {
+                $this->addError($attribute, '升级单无法删除,订单编号为:'.$this->orderSn);
                 return ;
+            } else {
+                // 如果是注册单,但是这个用户存在升级单,则也不能进行删除
+                $hasUpgradeOrder = DecOrder::findUseDbCalc()
+                ->select('TO_USER_ID,DETAIL_TYPE,UPGRADE_TYPE,IS_DEL')
+                ->where("TO_USER_ID=:TO_USER_ID AND IS_DEL=0 AND DETAIL_TYPE=2", [':TO_USER_ID' => $decDetail['TO_USER_ID']])
+                ->asArray()
+                ->one();
+                if (!empty($hasUpgradeOrder)) {
+                    $this->addError($attribute, '此注册报单用户,存在升级单,无法删除,订单编号为:'.$this->orderSn);
+                    return ;
+                }
+                // 删除注册单,判断是否有复消单,如果存在复消单,需要先删除复消单
+                $hasFxOrder = Order::findUseDbCalc()
+                ->select('SN')
+                ->where("USER_ID=:USER_ID AND IS_DELETE=0 AND ORDER_TYPE='FX'", [':USER_ID' => $decDetail['TO_USER_ID']])
+                ->asArray()
+                ->one();
+                if (!empty($hasFxOrder)) {
+                    $this->addError($attribute, '此注册报单用户,存在复消单,无法删除,订单编号为:'.$this->orderSn);
+                    return ;
+                }
+            }   
+        }
+        return true; 
     } 
 
     /**