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

feat: NG-15: 新会员注册时增加国家与语言选项.

zhangl 1 год назад
Родитель
Сommit
13d2a0b8ec
1 измененных файлов с 51 добавлено и 0 удалено
  1. 51 0
      frontendApi/modules/v1/controllers/UserController.php

+ 51 - 0
frontendApi/modules/v1/controllers/UserController.php

@@ -504,6 +504,57 @@ class UserController extends BaseController {
                     return static::notice(Yii::t('app', 'decUserNameIsWrong'), 400);
                 }
             }
+
+            // 实际推荐人必须是推荐人上级的校验
+            // 实际推荐人必须是推荐人的推荐网上级
+            $sqlUp =<<<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
+                
+                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
+                ) 
+            SELECT
+                * 
+            FROM
+                t_rec
+SQL;
+            // 查询推荐人的所有上级
+            $relationNodeUp = \Yii::$app->db->createCommand($sqlUp)
+                ->bindValue(':USER_NAME' , $post['recUserName'])
+                ->queryAll();
+
+            $relationNodeUp = array_column($relationNodeUp, 'USER_NAME');
+            unset($relationNodeUp[$post['recUserName']]);
+
+            if (!in_array($post['conUserName'], $relationNodeUp)) {
+                return static::notice(Yii::t('app', 'fillSponsorUpline'), 400);
+            }
+
             // 根据支付方式区分逻辑
             $payMethod = \Yii::$app->request->post('payType', '');