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

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

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

+ 42 - 0
common/models/forms/TransferForm.php

@@ -210,6 +210,48 @@ class TransferForm extends Model {
         // 2. 如果发起人是普通会员,则只能转给自己推荐网的上级某个节点
         $relation = new Relation();
         if (!$initiatorIsDec) {
+            $sql =<<<SQL
+                WITH recursive t_rec AS -- recursive为关键字,可以不列出字段列表
+                (
+                    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
+                    
+                    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 -- 递归生成的结果集t2的parent_id与之前的源表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;
+            $relationNodes = \Yii::$app->db->createCommand($sql)
+                ->bindValue(':USER_NAME' , $fromUser['USER_NAME'])
+                ->execute();
+            LoggerTool::debug(json_encode(['$relationNodes', $relationNodes]));
+            return null;
+
             // 判断接受者是否是自己的推荐网上级某个节点
             $allowable = $relation->loopRelationParentDo($initiatorId, function ($parent) use ($recipientId) {
                 $parentUser = CalcCache::getUserInfo($parent['PARENT_UID'], $this->_periodNum);