Просмотр исходного кода

feat: NC-55: 会员转账新规则.

zhangl 1 год назад
Родитель
Сommit
940ebb800b
1 измененных файлов с 53 добавлено и 56 удалено
  1. 53 56
      common/models/forms/TransferForm.php

+ 53 - 56
common/models/forms/TransferForm.php

@@ -205,9 +205,9 @@ class TransferForm extends Model {
             return true;
         }
 
-        // 2. 如果发起人是普通会员,则只能转给自己推荐网的上级某个节点
-        if (!$initiatorIsDec) {
-            $sql =<<<SQL
+        // 2. 如果发起人是报单中心, 则可以转账给自己的推荐网下级
+        if ($initiatorIsDec == 1) {
+            $sql = <<<SQL
                 WITH recursive t_rec AS 
                 (
                     SELECT
@@ -243,71 +243,68 @@ class TransferForm extends Model {
                 FROM
                     t_rec
 SQL;
-            $relationNodes = \Yii::$app->db->createCommand($sql)
-                ->bindValue(':USER_NAME' , $fromUser['USER_NAME'])
+            // 查询接受者的所有上级,如果没有发起人,则不能转账
+            $relationNode = \Yii::$app->db->createCommand($sql)
+                ->bindValue(':USER_NAME', $this->toUserName)
                 ->queryAll();
 
-            $relationNodes = array_column($relationNodes, 'USER_NAME');
-            unset($relationNodes[$fromUser['USER_NAME']]);
-
-            if (!in_array($this->toUserName, $relationNodes)) {
-                $this->addError($attribute, '转账失败:转入会员不是您的上级');
+            $relationNode = array_column($relationNode, 'USER_NAME');
+            if (!in_array($fromUser['USER_NAME'], $relationNode)) {
+                $this->addError($attribute, '转账失败:转入会员不是您的下级');
                 return null;
             }
-
             return true;
         }
 
-        // 3. 如果发起人是报单中心或者普通会员, 则可以转账给自己的推荐网下级
-        // 判断接受者是否是自己的推荐网上级某个节点
-            $sql =<<<SQL
-                WITH recursive t_rec AS 
-                (
-                    SELECT
-                        m.USER_ID,
-                        U.USER_NAME,
-                        m.PARENT_UID,
-                        U2.USER_NAME AS PARENT_NAME,
-                        1 AS node_level 
-                    FROM
-                        AR_USER_RELATION_NEW m 
-                        LEFT JOIN AR_USER U ON U.ID = m.USER_ID
-                        LEFT JOIN AR_USER U2 ON U2.ID = m.PARENT_UID
-                    WHERE
-                        U.USER_NAME = :USER_NAME 
-                        
-                    UNION ALL
+        // 3. 如果发起人是普通会员,则只能转给自己推荐网的某个节点
+        $sqlT =<<<SQL
+            WITH recursive t_rec AS 
+            (
+                SELECT
+                    m.USER_ID,
+                    U.USER_NAME,
+                    m.PARENT_UID,
+                    U2.USER_NAME AS PARENT_NAME,
+                    1 AS node_level 
+                FROM
+                    AR_USER_RELATION_NEW m 
+                    LEFT JOIN AR_USER U ON U.ID = m.USER_ID
+                    LEFT JOIN AR_USER U2 ON U2.ID = m.PARENT_UID
+                WHERE
+                    U.USER_NAME = :USER_NAME 
                     
-                    SELECT
-                        t1.USER_ID,
-                        U.USER_NAME,
-                        t1.PARENT_UID,
-                        U2.USER_NAME AS PARENT_NAME,
-                        t2.node_level + 1 -- 结点层级
-                        
-                    FROM
-                        AR_USER_RELATION_NEW t1
-                        JOIN t_rec t2 ON t2.PARENT_UID = t1.USER_ID
-                        LEFT JOIN AR_USER U ON U.ID = t1.USER_ID
-                        LEFT JOIN AR_USER U2 ON U2.ID = t1.PARENT_UID
-                    ) 
+                UNION ALL
+                
                 SELECT
-                    * 
+                    t1.USER_ID,
+                    U.USER_NAME,
+                    t1.PARENT_UID,
+                    U2.USER_NAME AS PARENT_NAME,
+                    t2.node_level + 1 -- 结点层级
+                    
                 FROM
-                    t_rec
+                    AR_USER_RELATION_NEW t1
+                    JOIN t_rec t2 ON t2.PARENT_UID = t1.USER_ID
+                    LEFT JOIN AR_USER U ON U.ID = t1.USER_ID
+                    LEFT JOIN AR_USER U2 ON U2.ID = t1.PARENT_UID
+                ) 
+            SELECT
+                * 
+            FROM
+                t_rec
 SQL;
-            // 查询接受者的所有上级,如果没有发起人,则不能转账
-            $relationNode = \Yii::$app->db->createCommand($sql)
-                ->bindValue(':USER_NAME' , $this->toUserName)
-                ->queryAll();
-
-        $relationNode = array_column($relationNode, 'USER_NAME');
+        // 上级
+        $relationNodeAll = \Yii::$app->db->createCommand($sqlT)
+            ->bindValue(':USER_NAME' , $this->toUserName)
+            ->queryAll();
+
+        $relationNodeAll = array_column($relationNodeAll, 'USER_NAME');
+        if (!in_array($fromUser['USER_NAME'], $relationNodeAll)) {
+            $this->addError($attribute, '转账失败:转入会员不是您的上级');
+            return null;
+        }
 
-            LoggerTool::debug(json_encode(['$relationNode', $relationNode]));
-            if (!in_array($fromUser['USER_NAME'], $relationNode)) {
-                $this->addError($attribute, '转账失败:转入会员不是您的下级');
-                return null;
-            }
+        return true;
     }
 
     /**