美文网首页
代理层级的处理

代理层级的处理

作者: 云龙789 | 来源:发表于2021-05-04 14:05 被阅读0次
   /**
     * 获取某个代理下的所有用户
     * @param $agentInfo array
     * @param $topId
     * @return bool
     */
    public function updateAllMyUserAgentPath($agentInfo, $topId)
    {
        $userList = $db->select($this->fields)
            ->where('agentId=:agentId', array(':agentId' => $agentInfo['id']))
            ->from(self::TABLE)->queryAll();
        if (!$userList) {
            return true;
        }

        foreach ($userList as $user) {
            // 1. 更新自己的代理路径
            if ($agentInfo['agentPath']) {
                $path = $agentInfo['agentPath'];
            } else {
                $path = $agentInfo['username'];
            }
            $updatePath = $this->updateAgentPath($user, $topId, $path);
            if ($updatePath) {
                //如果代理线更新成功,则需要更新 $user  变量的 agentPath 值,$topId 不需要更新是因为 updateAgentPath()  方法没有改变这个值
                $user['agentPath'] = $updatePath;
            }
            // 2. 处理自己的下级代理层级
            $this->updateAllMyUserAgentPath($user, $topId);
        }
        return true;
    }

    /**
     * 更新用户的代理路径和顶级代理ID
     * @param $user User
     * @param $topId int
     * @param $agentPath string
     * @return bool|string
     */
    private function updateAgentPath($user, $topId, $agentPath)
    {
        if ($user['agentId'] == 0) {
            // 顶级和路径都是自己
            $this->update($user['id'], ['agentPath' => $user['username'], 'topAgentId' => $user['id']]);
            return false;
        }

        //  代理是自己的 表示有问题
        if ($user['agentId'] == $user['id']) {
            return false;
        }
        $newPath = $agentPath . '-' . $user['username'];
        $arr = explode('-', $newPath);
        $arr = array_unique($arr);
        $newPath = implode('-', $arr);
        $this->update($user['id'], ['agentPath' => $newPath, 'topAgentId' => $topId]);
        return $newPath;
    }

相关文章

  • 代理层级的处理

  • 3招学会优化界面信息层级

    为什么觉得界面总是太平,不能突出主体缺乏层级感? 多半是因为信息层级没有处理好。 信息层级的处理有三个方面: 组织...

  • 易创客微商管理系统,从人、货、钱三大模块,彻底根除微商“痛点“

    一、对人的管理: 1、 代理资料 1)代理商资料管理系统 痛点:代理商流失,代理商资料全部流失,传统代理商采取层级...

  • Flink文档 - 数据流编程模型

    抽象层级 Flink提供了几个不同的抽象层级来开发流处理/批处理应用程序。 最底层抽象简单的提供了状态流处理。该功...

  • 设计模式

    代理模式: 代理类中包含被代理类对象, 主要负责执行被代理对象的职责,此外可以加预处理,后处理进行包装。 中介者...

  • 怎么处理层级关系?

    前两天看小赖老师的文章,说他不喜欢处理层级关系。我在想,我是怎样的呢‘? 今天发生一个小插曲。领导问我去不去下面。...

  • Java中的静态代理和动态代理

    什么是代理 代理是设计模式的一种,代理类为委托类提供消息预处理,消息转发,事后消息处理等功能。Java中的代理分为...

  • 代理模式

    概念 中介,就是为一个实际业务对象提供控制处理的代理。 角色 抽象对象 业务处理对象 代理对象 分类 静态代理 动...

  • 代理收益详解

    代理收益图 积极的推广邀请,获得最直接的人民币收益 用户升级成为代理,按照层级获得15%-10%-5%的收益 举例...

  • 微商代理如何设置代理制度?

    第一点、代理层级级别的设置 就目前微商常见的代理级别来说,一般常见的是五个级别。最高代理级别进行隐藏,对公布常见四...

网友评论

      本文标题:代理层级的处理

      本文链接:https://www.haomeiwen.com/subject/xumcdltx.html