def get_message_list(user_id,endtime=None,skip=0,count=-1): field=["message_type","content_id","content","status","addtime","fuser_id"] items=[] if skip<40: if not timeline_client.exists(USER_MESSAGE_TIME_LINE_PREFIX+str(user_id)): messages=Message.objects.filter(to_user=user_id)[0:40] for message in messages: add_to_message_timeline(message.message_type,message.contentid,json.loads(message.content),message.from_user_id,user_id,message.addtime,\ status=message.status,only_all=True,lpush=False) message_id_list=timeline_client.lrange(USER_MESSAGE_TIME_LINE_PREFIX+str(user_id),skip,skip+count) for message_info_id in message_id_list: message_info_id="t:"+message_info_id.split("t:")[1] info=timeline_client.hmget(USER_MESSAGE_PREFIX+"u:"+str(user_id)+message_info_id,field) if info: item=get_message(info[0],info[3],info[2],info[5],get_datetime(info[4]),info[1]) if item: items.append(item) else: messages=Message.objects.filter(to_user=user_id,addtime__lt=endtime)[0:20] for message in messages: item=get_message(message.message_type,message.status,message.content,message.from_user_id,message.addtime,message.contentid) items.append(item) endtime=None if items: endtime=items[-1]["addtime"] return {"messages":items,"unread_count":get_unread_message_count(user_id),"endtime":endtime,"count":len(items)}
def insert_message(message_type,contentid,fuser_id,touser_id,content_dict): addtime=datetime.now() content={} content["addtime"]=addtime.strftime(TIME_STRF) content["user_id"]=fuser_id content["user_name"]=content_dict["user_name"] Message_list=[] fields=['message_type','contentid','content','from_user_id','to_user_id','addtime','status'] if message_type==6: Message_list=[(message_type,contentid,json.dumps(content),fuser_id,touser_id,addtime)] else: if message_type==1 or message_type==2: question_id=content_dict["question_id"] content["question_id"]=question_id content["question_title"]=content_dict["question_title"] if message_type==1: content["answer_id"]=contentid content["question_user_id"]=int(content_dict["question_user_id"]) #question_user_id=content_dict["question_user_id"] question_followers=QustionFollow.objects.filter(question_id=question_id).values("user_id") Message_list=[(message_type,contentid,json.dumps(content),fuser_id,touser_id,addtime,0)for follow in question_followers for userid in\ follow.values() if userid!=int(fuser_id) ] Message_list.append((message_type,contentid,json.dumps(content),fuser_id,int(content_dict["question_user_id"]),addtime,0)) else: Message_list=[(message_type,contentid,json.dumps(content),fuser_id,touser_id,addtime,0)] else: content["question_id"]=content_dict["question_id"] content["answer_id"]=content_dict["answer_id"] if message_type==3: content["evaluate_answer_id"]=contentid content["answer_content"]=content_dict["answer_content"] content["status"]=content_dict["status"] elif message_type==4: content["answer_id"]=content_dict["answer_id"] content["answer_content"]=content_dict["answer_content"] content["comment_id"]=contentid elif message_type==5: content["comment_id"]=contentid content["answer_content"]=content_dict["answer_content"] content["comment_content"]=content_dict["commnet_content"] Message_list=[(message_type,contentid,json.dumps(content),fuser_id,touser_id,addtime,0)] if Message_list: add_to_message_timeline(message_type,contentid,content,fuser_id,touser_id,addtime,status=0) Message.messageobjects.bulk_insert_ignore(fields,Message_list) return addtime
def get_message_list(user_id, endtime=None, skip=0, count=-1): field = [ "message_type", "content_id", "content", "status", "addtime", "fuser_id" ] items = [] if skip < 40: if not timeline_client.exists(USER_MESSAGE_TIME_LINE_PREFIX + str(user_id)): messages = Message.objects.filter(to_user=user_id)[0:40] for message in messages: add_to_message_timeline(message.message_type,message.contentid,json.loads(message.content),message.from_user_id,user_id,message.addtime,\ status=message.status,only_all=True,lpush=False) message_id_list = timeline_client.lrange( USER_MESSAGE_TIME_LINE_PREFIX + str(user_id), skip, skip + count) for message_info_id in message_id_list: message_info_id = "t:" + message_info_id.split("t:")[1] info = timeline_client.hmget( USER_MESSAGE_PREFIX + "u:" + str(user_id) + message_info_id, field) if info: item = get_message(info[0], info[3], info[2], info[5], get_datetime(info[4]), info[1]) if item: items.append(item) else: messages = Message.objects.filter(to_user=user_id, addtime__lt=endtime)[0:20] for message in messages: item = get_message(message.message_type, message.status, message.content, message.from_user_id, message.addtime, message.contentid) items.append(item) endtime = None if items: endtime = items[-1]["addtime"] return { "messages": items, "unread_count": get_unread_message_count(user_id), "endtime": endtime, "count": len(items) }
def insert_message(message_type, contentid, fuser_id, touser_id, content_dict): addtime = datetime.now() content = {} content["addtime"] = addtime.strftime(TIME_STRF) content["user_id"] = fuser_id content["user_name"] = content_dict["user_name"] Message_list = [] fields = [ 'message_type', 'contentid', 'content', 'from_user_id', 'to_user_id', 'addtime', 'status' ] if message_type == 6: Message_list = [(message_type, contentid, json.dumps(content), fuser_id, touser_id, addtime)] else: if message_type == 1 or message_type == 2: question_id = content_dict["question_id"] content["question_id"] = question_id content["question_title"] = content_dict["question_title"] if message_type == 1: content["answer_id"] = contentid content["question_user_id"] = int( content_dict["question_user_id"]) #question_user_id=content_dict["question_user_id"] question_followers = QustionFollow.objects.filter( question_id=question_id).values("user_id") Message_list=[(message_type,contentid,json.dumps(content),fuser_id,touser_id,addtime,0)for follow in question_followers for userid in\ follow.values() if userid!=int(fuser_id) ] Message_list.append( (message_type, contentid, json.dumps(content), fuser_id, int(content_dict["question_user_id"]), addtime, 0)) else: Message_list = [(message_type, contentid, json.dumps(content), fuser_id, touser_id, addtime, 0)] else: content["question_id"] = content_dict["question_id"] content["answer_id"] = content_dict["answer_id"] if message_type == 3: content["evaluate_answer_id"] = contentid content["answer_content"] = content_dict["answer_content"] content["status"] = content_dict["status"] elif message_type == 4: content["answer_id"] = content_dict["answer_id"] content["answer_content"] = content_dict["answer_content"] content["comment_id"] = contentid elif message_type == 5: content["comment_id"] = contentid content["answer_content"] = content_dict["answer_content"] content["comment_content"] = content_dict["commnet_content"] Message_list = [(message_type, contentid, json.dumps(content), fuser_id, touser_id, addtime, 0)] if Message_list: add_to_message_timeline(message_type, contentid, content, fuser_id, touser_id, addtime, status=0) Message.messageobjects.bulk_insert_ignore(fields, Message_list) return addtime