Esempio n. 1
0
    def follow(user, followee, is_user=True):
        if not user or not followee:
            log.err( "FollowHelper-->follow userId:%s, followeeId %s", user, followee)
            return
        if is_user:
            fieldname = "followee"
        else:
            fieldname = "backupFollowee"

        # 查找followee是否关注user, 如果关注则需要添加双向关注关系
        followHelper = ClassHelper(FollowHelper.classame)
        effect=1
        if is_user:
            result = followHelper.find_one({'user': followee, fieldname: user, 'effect': {'$gte': 1}})
            if not result:
                effect = 1
            else:
                effect = 2
        # 添加feed记录,第一次关注才添加
        # followRecord = followHelper.find_one({'user': user, fieldname: followee, 'effect': {'$ne': 0}})
        # if not followRecord:
        #     addFeedRecord(user, 'follow', followRecord['_id'])
        #TODO: 这里事务的管理不太严格,应该关注和粉丝统一起来
		# 添加我的关注
        followee_action = {'destClass':'StatCount', 'query': {'name': 'followees_'+user}, 'action':{'@inc':{'count':1}}}
        follower_action = {'destClass':'StatCount', 'query': {'name': 'followers_'+followee}, 'action':{'@inc':{'count': 1}} }
        actions = [follower_action, followee_action]
        followHelper.updateOne({'user': user, fieldname: followee}, {'$set': {'effect': effect}}, transactions=actions, upsert=True)

        # 添加followee也是user的粉丝,则需要处理followee的双向关注,否则只添加粉丝数量
        if effect==2:
            followHelper.updateOne({'user': followee, fieldname: user}, {"$set": {'effect': effect,'updateAt':result['updateAt']}})
Esempio n. 2
0
    def unfollow(user, followee, is_user=True):
        if not user or not followee:
            log.err( "FollowHelper-->unfollow userId:%s, followeeId %s", user, followee)
            return;
        if is_user:
            fieldname = "followee"
        else:
            fieldname = "backupFollowee"

        followHelper = ClassHelper(FollowHelper.classame)
        result = followHelper.find_one({'user': followee, 'followee': user, 'effect': {'$gte': 2}})
        if result:
            #双向关注,需要处理followee的双向关注effect和粉丝数量
            followHelper.updateOne( {'user': followee, fieldname: user}, {"$set": {'effect': 1,'updateAt':result['updateAt']}} )

        # 取消我的关注
        followee_action = {'destClass': 'StatCount', 'query': {'name': 'followees_' + user},
                           'action': {'@inc': {'count': -1}}}
        follower_action = {'destClass': 'StatCount', 'query': {'name': 'followers_' + followee},
                           'action': {'@inc': {'count': -1}}}
        actions = [follower_action, followee_action]
        followHelper.updateOne( {'user': user, fieldname: followee}, {"$set": {'effect': 0}},
                                transactions=actions, upsert=True )