Exemple #1
0
def super_like_someone(uid, sid):
    '''超级喜欢(右划)某人'''
    # 1. 在数据库中添加滑动记录
    try:
        Swiped.objects.create(uid=uid, sid=sid, stype='superlike')
    except IntegrityError:
        # 重复滑动时, 直接返回当前用户是否已匹配成好友
        return Friend.is_friends(uid, sid)

    # 强制将对方从自己的优先推荐队列删除
    rds.lrem(keys.FIRST_RCMD_Q % uid, 0, sid)

    # 2. 检查对方是否右划或者上划过自己
    like_status = Swiped.is_liked(sid, uid)
    if like_status is True:
        # 3.如果双方互相喜欢的话, 匹配成好友
        Friend.make_friends(uid, sid)
        return True
    elif like_status is False:
        return False
    else:
        # 对方未滑动过自己时, 将自己的uid 添加到对方'优先推荐'列表
        key = keys.FIRST_RCMD_Q % sid
        # 从右边推进去
        rds.rpush(key, uid)
        return False
Exemple #2
0
def superlike_someone(uid, sid):
    '''超级喜欢某人'''
    # 添加滑动记录
    Swiped.swiper(uid, sid, 'superlike')

    # 将sid从自己的优先推荐队列中删除
    rds.lrem(keys.FIRST_CRMD_K % uid, 1, sid)

    # 积分
    score = config.HOT_RANK_SCORE['superlike']
    # 调整被滑动者的积分
    rds.zincrby(keys.HOT_RANK_K, score, sid)

    # 检查对方有没有喜欢自己(右滑或上滑过自己)
    liked_me = Swiped.is_liked(sid, uid)
    if liked_me:
        # 添加好友列表
        Friend.make_friends(int(uid), int(sid))
        return True
    elif liked_me == False:
        return False
    else:
        # 对方没有滑动过自己,需要将自己的uid添加到对方的“优先推荐队列”
        rds.rpush(keys.FIRST_CRMD_K % sid, uid)
        return False
Exemple #3
0
def super_like_someone(uid, sid):
    """超级喜欢"""
    # 添加滑动记录
    Swiped.swiped(uid, sid, 'superlike')

    # 将sid从优先队列中删除
    rds.lrem(keys.FIRST_RCMD_K % uid, 0, sid)

    liked_me = Swiped.is_liked(sid, uid)
    if liked_me:
        Friend.make_friend(uid, sid)
        return True
    elif not liked_me:
        return False
    else:
        # 对方没有滑动过自己,将自己的uid添加到对方的 “优先推荐队列”
        rds.rpush(keys.FIRST_RCMD_K % sid, uid)
        return False
Exemple #4
0
def superlike_someone(uid, sid):
    '''超级喜欢上滑了某人'''
    if not sid or uid == sid:
        raise err.SidErr('SID 错误')
    Swiper.swipe(uid, sid, 'superlike')

    record_swipe_to_rds(uid, sid, 'superlike')
    # 检查对方是否喜欢过自己,如果是则匹配成好友
    is_liked = Swiper.is_liked(sid, uid)
    if is_liked is True:
        Friend.make_friends(uid, sid)
        return True
    elif is_liked is None:
        other_first_q = keys.FIRST_RCMD_Q % sid
        rds.rpush(other_first_q, uid)  # 将 UID 添加到对方的优先推荐队列
        return False
    else:
        return False
Exemple #5
0
def superlike_someone(uid, sid):
    '''超级喜欢某人(上滑)'''
    # 添加滑动记录
    Swiped.swipe(uid, sid, 'superlike')

    # 强制删除优先推荐队列中的 sid
    rds.lrem(keys.FIRST_RCMD_Q % uid, count=0, value=sid)

    # 检查对方是否喜欢(右滑或上滑)过自己
    liked = Swiped.is_liked(sid, uid)
    if liked is True:
        # 将互相喜欢的两人添加成好友
        Friend.make_friends(uid, sid)
        return True
    elif liked is False:
        return False
    else:
        # 对方尚未滑到过自己,将自己优先推荐给对方
        rds.rpush(keys.FIRST_RCMD_Q % sid, uid)
        return False
Exemple #6
0
def superlike_someone(uid, sid):
    '''上滑:喜欢某人'''
    # 添加一条滑动记录
    Swiped.swipe(uid, sid, 'superlike')

    # 强制从自己优先队列删除 sid
    rds.lrem(keys.FIRST_RCMD_K % uid, 1, sid)

    # 为被滑动用户增加积分
    rds.zincrby('HotRank', conf.SWIPE_SCORE['superlike'], sid)

    # 检查是否对方是否右滑或上滑过自己
    if Swiped.has_liked(sid, uid):
        # 匹配成好友关系
        Friend.make_friends(uid, sid)
        return True
    else:
        # 将自己的 UID 添加到对方的优先推荐队列
        rds.rpush(keys.FIRST_RCMD_K % sid, uid)
        return False
Exemple #7
0
def superlike_someone(user_id, sid):
    '''超级喜欢某人'''
    '''添加滑动记录'''
    Swiped.swpied(user_id, sid, 'superlike')
    '''在自己的优先推荐列表里删除对方id'''
    rds.lrem(keys.PRIOR_RCMD_LIST % user_id, value=sid)
    '''超级喜欢对方,给对方的增加积分'''
    rds.zincrby(keys.HOT_RANK, sid, config.RANK_SCORE['superlike'])
    '''检查对方是否上滑(superlike)或右滑(like)过你'''
    liked = Swiped.is_liked(user_id, sid)
    if liked is True:  # 对方喜欢你
        '''如果对方也喜欢过你,将你们匹配为好友'''
        Friend.make_friends(user_id, sid)
        return True

    elif liked is False:  # 对方不喜欢你
        return False

    else:  # 对方没有滑过你,将你的id给到对方的优先推荐列表
        rds.rpush(keys.PRIOR_RCMD_LIST % sid, user_id)
        return False
Exemple #8
0
def superlike_someone(uid, sid):
    Swiped.swipe(uid, sid, stype='superlike')

    # 删除滑动过的推荐
    rds.lrem(keys.FIRST_RCMD_K % uid, 1, sid)

    liked_me = Swiped.is_liked(sid, uid)

    # 调整用户的积分
    score = config.HOT_RANK_SCORE['superlike']
    rds.zincrby(keys.HOT_RANK_K, score, sid)

    if liked_me:
        Friends.make_friends(uid, sid)
        return True
    elif liked_me == False:
        return False
    else:
        # 对方并没有滑动过uid,将uid添加到对方的“优先推荐队列”
        rds.rpush(keys.FIRST_RCMD_K % sid, uid)
        return False
Exemple #9
0
def superlike_someone(uid, sid):
    '''超级喜欢(上滑)'''
    # 添加滑动记录
    Slider.slide(uid, sid, 'superlike')

    # 删除优先从喜欢我的人队列里面的推荐 sid
    rds.lrem(keys.FIRST_RCMD_Q % uid, count=0, value=sid)

    # 检查对方是否喜欢(右滑或上滑)过自己
    liked = Slider.is_like(sid, uid)
    if liked is True:
        # 将互相喜欢的两人添加好友
        Friend.make_friends(uid, sid)
        return True
    elif liked is False:
        return False
    else:
        # 因为是临时存储,所以用redis做

        # 对方尚未滑倒过自己,将自己优先推荐给对方
        rds.rpush(keys.FIRST_RCMD_Q % sid, uid)
        return False
Exemple #10
0
def superlike_someone(uid, sid):
    '''超级喜欢某人'''
    # 添加滑动记录
    Swiped.swipe(uid, sid, 'superlike')

    # 将 sid 从自己的优先推荐队列中删除
    rds.lrem(keys.FIRST_RCMD_K % uid, 1, sid)
    # 调整对方的滑动积分
    score = config.HOT_RANK_SCORE['superlike']
    rds.zincrby(keys.HOT_RANK_K, score, sid)

    # 检查对方有没有右滑或者上滑过自己
    liked_me = Swiped.is_liked(sid, uid)
    if liked_me:
        # 如果对方喜欢过自己,匹配成好友
        Friend.make_friends(uid, sid)
        return True
    elif liked_me == False:
        return False
    else:
        # 对方没有滑动过自己,需要将将自己的 uid 添加到对方的 “优先推荐队列”
        rds.rpush(keys.FIRST_RCMD_K % sid, uid)
        return False
Exemple #11
0
def superlike_someone(uid, sid):
    '''超级喜欢某人(上滑)'''
    # 添加滑动记录
    Swiped.swiped(uid, sid, 'superlike')

    # 强制删除优先推荐队列中的 sid
    rds.lrem(keys.FIRST_RCMD_Q + str(f'{uid}'), count=0, value=sid)

    # 增加对方的滑动积分
    rds.zincrby(keys.HOT_RANK, config.SWIPE_SCORE['superlike'], sid)

    # 检查对方是否喜欢过自己
    is_liked = Swiped.is_liked(sid, uid)
    if is_liked is True:
        # 将互相喜欢的两个人添加为好友
        Friend.make_friends(uid, sid)
        return True
    elif is_liked is False:
        return False
    else:
        # 对方尚未滑动过自己,将自己优先推荐给对方
        rds.rpush(keys.FIRST_RCMD_Q + str(f'{sid}'), uid)
        return False
Exemple #12
0
def superlike_someone(uid, sid):
    '''超级喜欢某人 (上滑)'''

    # 添加滑动记录
    Swiped.swipe(uid, sid, 'superlike')

    # 强制删除优先推荐队列中的 sid
    rds.lrem(keys.FIRST_RCMD_Q % uid, count=0, value=sid)

    # 给被滑动者增加滑动积分
    rds.zincrby(keys.HOT_RANK, config.SWIPE_SCORE['superlike'], sid)

    # 检查对方是否喜欢(右滑或上滑)过自己
    liked = Swiped.is_liked(sid, uid)
    if liked is True:
        # 将互相喜欢的两人添加成好友
        Friend.make_friends(uid, sid)
        return True
    elif liked is False:
        return False
    else:
        # 对方尚未滑到过自己,把自己推荐给对方
        rds.rpush(keys.FIRST_RCMD_Q % sid, uid)
        return False