1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from celery import shared_task
from django.conf import settings
from gm_types.mimas.enum import ATTENTION_NOTIFY_TYPE
from social.models import _FollowInfoCacheStore, UserFollow
from talos.models.follow_msg_notify import FollowMsgNotification
follow_cache = _FollowInfoCacheStore(uid=None)
@shared_task
def create_information_db(user_id, source_type, business_id):
"""
关注用户的动态变更 入库(发布帖子、直播、日记本、问题)
:param user_id:
:param source_type: 帖子、直播、日记本、问题
:param business_id: 帖子、直播、日记本、问题id
:return:
"""
if source_type not in ATTENTION_NOTIFY_TYPE:
return
fans_ids = follow_cache.get_all_fans(follow_id=user_id)
if not fans_ids and settings.DEBUG: # 测试环境gaia关注缓存和mimas关注缓存不一样 所以需要读库 但是线上一致
fans_ids = list(UserFollow.objects.filter(
follow_id=user_id, bond=True
).values_list('user_id', flat=True))
if not fans_ids:
return
msg_obj_list = []
for fans_id in fans_ids:
msg_obj = FollowMsgNotification(
user_id=user_id,
fans_id=fans_id,
source_type=source_type,
business_id=business_id,
is_read=False,
is_online=True,
)
msg_obj_list.append(msg_obj)
while msg_obj_list:
FollowMsgNotification.objects.bulk_create(msg_obj_list[:100])
msg_obj_list = msg_obj_list[100:]