|
|
@@ -740,27 +740,58 @@ class UserController extends BaseController {
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
- // 实际推荐人是否是推荐人的推荐网上级
|
|
|
- $periodNum = Period::instance()->getNowPeriodNum();
|
|
|
-
|
|
|
- $relation = new Relation();
|
|
|
- $allowable = $relation->loopRelationParentDo($userId, function ($parent) use ($actualId, $periodNum) {
|
|
|
- $parentUser = CalcCache::getUserInfo($parent['PARENT_UID'], $periodNum);
|
|
|
- if ($parentUser['USER_ID'] == $actualId) {
|
|
|
- return self::LOOP_FINISH;
|
|
|
- }
|
|
|
-
|
|
|
- unset($parent);
|
|
|
- });
|
|
|
-
|
|
|
- if ($allowable) {
|
|
|
+ // 实际推荐人必须是推荐人的推荐网上级
|
|
|
+ $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' , $recommenderName)
|
|
|
+ ->queryAll();
|
|
|
+
|
|
|
+ $relationNodeUp = array_column($relationNodeUp, 'USER_NAME');
|
|
|
+ unset($relationNodeUp[$recommenderName]);
|
|
|
+
|
|
|
+ if (in_array($recommenderActualName, $relationNodeUp)) {
|
|
|
return static::notice([
|
|
|
'REAL_NAME' => $recommenderActual['REAL_NAME'],
|
|
|
'userId' => $recommenderActual['ID'],
|
|
|
]);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
return static::notice(Yii::t('ctx', 'fillSponsorUpline'), 400);
|
|
|
}
|
|
|
|