FollowModel::eachDoFollow PHP Method

eachDoFollow() public method

双向关注用户操作
public eachDoFollow ( integer $uid, array $fids ) : boolean
$uid integer 用户ID
$fids array 需关注用户ID数组
return boolean 是否双向关注成功
    public function eachDoFollow($uid, $fids)
    {
        // 获取用户关组状态
        $followStates = $this->getFollowStateByFids($uid, $fids);
        $data = array();
        $_following = array();
        $_follower = array();
        foreach ($followStates as $key => $value) {
            if (0 == $value['following']) {
                $data[] = "({$uid}, {$key}, " . time() . ')';
                $_following[] = $key;
            }
            if (0 == $value['follower']) {
                $data[] = "({$key}, {$uid}, " . time() . ')';
                $_follower[] = $key;
            }
        }
        // 处理数据结果
        if (!empty($data)) {
            $sql = "INSERT INTO {$this->tablePrefix}{$this->tableName}(`uid`,`fid`,`ctime`) VALUES " . implode(',', $data);
            $res = $this->execute($sql);
            if ($res) {
                // 关注成功
                $this->error = L('PUBLIC_ADD_FOLLOW_SUCCESS');
                // 被关注人的关注人数+1
                foreach ($_follower as $fo) {
                    model('UserData')->setUid($fo)->updateKey('following_count', 1, true);
                }
                // 更新被关注人的粉丝数统计
                $this->_updateFollowCount($uid, $_following, true);
                // 更新关注人的粉丝数
                model('UserData')->setUid($uid)->updateKey('follower_count', count($_follower), true);
                return true;
            } else {
                $this->error = L('PUBLIC_ADD_FOLLOW_FAIL');
                return false;
            }
        } else {
            // 已经全部关注
            $this->error = L('PUBLIC_FOLLOW_ING');
            return false;
        }
    }