Commit e0c66b0d authored by lixiaofang's avatar lixiaofang

新增类型

parents a8a64ccf ce87a5c4
...@@ -5,23 +5,31 @@ import logging ...@@ -5,23 +5,31 @@ import logging
from libs.cache import redis_client from libs.cache import redis_client
import json import json
from moment.views.send_email import send_email_tome from moment.views.send_email import send_email_tome
import datetime
def click(card_info): def click(card_info):
try: try:
key = "auto_vest_one_user_action:" + str(card_info['card_id'])
redis_data = redis_client.get(key) today = datetime.datetime.now()
str_today = str(today.year) + str(today.month) + str(today.day)
key = "auto_vest_one_user_action_answer:" + str(card_info['card_id'])
redis_data = redis_client.hget(key, str_today)
if redis_data: if redis_data:
redis_data = json.loads(str(redis_data, encoding="utf8")) redis_data = json.loads(str(redis_data, encoding="utf8"))
click_num = int(redis_data.get("click")) + 1 click_num = int(redis_data.get("click")) + 1
redis_data['click'] = click_num redis_data['click'] = click_num
redis_client.set(key, json.dumps(redis_data)) redis_client.hset(key, str_today, json.dumps(redis_data))
else: else:
##代表还没有存储或者是已经过去一天了 需要清掉数据 从新的一天开始
redis_client.delete(key)
redis_data = {"click": 1, "follow": 0, "comment": 0} redis_data = {"click": 1, "follow": 0, "comment": 0}
redis_client.set(key, json.dumps(redis_data)) redis_client.hset(key, str_today, json.dumps(redis_data))
redis_client.expire(key, time=24 * 60 * 60)
logging.info("get action:click,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data)) logging.info("get action:click,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
click_num = redis_data["click"] click_num = redis_data["click"]
if click_num > 10: if click_num > 10:
return True return True
# send_email_tome(str(redis_data) + str(card_info)) # send_email_tome(str(redis_data) + str(card_info))
...@@ -29,9 +37,6 @@ def click(card_info): ...@@ -29,9 +37,6 @@ def click(card_info):
rpc_invoker = get_rpc_invoker() rpc_invoker = get_rpc_invoker()
rpc_invoker['qa/irrigation/create_answer_vote'](user_id=card_info['current_user_id'], rpc_invoker['qa/irrigation/create_answer_vote'](user_id=card_info['current_user_id'],
answer_id=card_info['card_id']).unwrap() answer_id=card_info['card_id']).unwrap()
# values = list(redis_data.values())
# s = [True for i in values if i > 10]
return True return True
except: except:
logging_exception() logging_exception()
......
...@@ -5,32 +5,106 @@ import logging ...@@ -5,32 +5,106 @@ import logging
from libs.cache import redis_client from libs.cache import redis_client
import json import json
from moment.views.send_email import send_email_tome from moment.views.send_email import send_email_tome
import datetime
def comment(card_info): def comment(card_info):
"""
在这里需要判断是帖子下发评论还是问答还是日记下发
:param card_info:
:return:
"""
try: try:
key = "auto_vest_one_user_action:" + str(card_info['card_id']) if card_info['card_status'] == 'tractate':
redis_data = redis_client.get(key) today = datetime.datetime.now()
if redis_data: str_today = str(today.year) + str(today.month) + str(today.day)
redis_data = json.loads(str(redis_data, encoding="utf8")) key = "auto_vest_one_user_action_tractate:" + str(card_info['card_id'])
click_num = int(redis_data.get("comment")) + 1 redis_data = redis_client.hget(key, str_today)
redis_data['comment'] = click_num
redis_client.set(key, json.dumps(redis_data)) if redis_data:
else: redis_data = json.loads(str(redis_data, encoding="utf8"))
redis_data = {"click": 0, "follow": 0, "comment": 1} click_num = int(redis_data.get("comment")) + 1
redis_client.set(key, json.dumps(redis_data)) redis_data['comment'] = click_num
redis_client.expire(key, time=24 * 60 * 60) redis_client.hset(key, str_today, json.dumps(redis_data))
logging.info("get action:comment,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data)) else:
comment_num = redis_data["comment"] ##代表还没有存储或者是已经过去一天了 需要清掉数据 从新的一天开始
####在这里做判断 一天不能超过20个 如果超过二十个不下发 不超过二十个下发对应的灌水功能 redis_client.delete(key)
if comment_num > 20: redis_data = {"comment": 1}
return True redis_client.hset(key, str_today, json.dumps(redis_data))
# send_email_tome(str(redis_data) + str(card_info))
logging.info("get action:comment,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
comment_num = redis_data["comment"]
####在这里做判断 一天不能超过20个 如果超过二十个不下发 不超过二十个下发对应的灌水功能
if comment_num > 12:
return True
# send_email_tome(str(redis_data) + str(card_info))
else:
rpc_invoker = get_rpc_invoker()
rpc_invoker['qa/irrigation/create_answer_reply'](user_id=card_info['current_user_id'],
answer_id=card_info['card_id'],
content=card_info['comment_content']).unwrap()
elif card_info['card_status'] == 'diary':
today = datetime.datetime.now()
str_today = str(today.year) + str(today.month) + str(today.day)
key = "auto_vest_one_user_action_diary:" + str(card_info['card_id'])
redis_data = redis_client.hget(key, str_today)
if redis_data:
redis_data = json.loads(str(redis_data, encoding="utf8"))
click_num = int(redis_data.get("comment")) + 1
redis_data['comment'] = click_num
redis_client.hset(key, str_today, json.dumps(redis_data))
else:
redis_client.delete(key)
redis_data = {"comment": 1}
redis_client.hset(key, str_today, json.dumps(redis_data))
logging.info("get action:comment,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
comment_num = redis_data["comment"]
####在这里做判断 一天不能超过20个 如果超过二十个不下发 不超过二十个下发对应的灌水功能
if comment_num > 12:
return True
# send_email_tome(str(redis_data) + str(card_info))
else:
print("diary")
rpc_invoker = get_rpc_invoker()
rpc_invoker['qa/irrigation/create_answer_reply'](user_id=card_info['current_user_id'],
answer_id=card_info['card_id'],
content=card_info['comment_content']).unwrap()
else: else:
rpc_invoker = get_rpc_invoker() today = datetime.datetime.now()
rpc_invoker['qa/irrigation/create_answer_reply'](user_id=card_info['current_user_id'], str_today = str(today.year) + str(today.month) + str(today.day)
answer_id=card_info['card_id'], key = "auto_vest_one_user_action_answer:" + str(card_info['card_id'])
content=card_info['comment_content']).unwrap() redis_data = redis_client.hget(key, str_today)
if redis_data:
redis_data = json.loads(str(redis_data, encoding="utf8"))
click_num = int(redis_data.get("comment")) + 1
redis_data['comment'] = click_num
redis_client.hset(key, str_today, json.dumps(redis_data))
else:
redis_client.delete(key)
redis_data = {"click": 0, "follow": 0, "comment": 1}
redis_client.hset(key, str_today, json.dumps(redis_data))
logging.info("get action:comment,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
comment_num = redis_data["comment"]
####在这里做判断 一天不能超过20个 如果超过二十个不下发 不超过二十个下发对应的灌水功能
if comment_num > 12:
return True
# send_email_tome(str(redis_data) + str(card_info))
else:
print("answer")
# rpc_invoker = get_rpc_invoker()
# rpc_invoker['qa/irrigation/create_answer_reply'](user_id=card_info['current_user_id'],
# answer_id=card_info['card_id'],
# content=card_info['comment_content']).unwrap()
return True return True
except: except:
logging_exception() logging_exception()
......
...@@ -5,23 +5,26 @@ import logging ...@@ -5,23 +5,26 @@ import logging
from libs.cache import redis_client from libs.cache import redis_client
import json import json
from moment.views.send_email import send_email_tome from moment.views.send_email import send_email_tome
import datetime
def follow(card_info): def follow(card_info):
try: try:
key = "auto_vest_one_user_action:" + str(card_info['card_id']) today = datetime.datetime.now()
redis_data = redis_client.get(key) str_today = str(today.year) + str(today.month) + str(today.day)
key = "auto_vest_one_user_action_answer:" + str(card_info['card_id'])
redis_data = redis_client.hget(key, str_today)
if redis_data: if redis_data:
redis_data = json.loads(str(redis_data, encoding="utf8")) redis_data = json.loads(str(redis_data, encoding="utf8"))
click_num = int(redis_data.get("follow")) + 1 click_num = int(redis_data.get("follow")) + 1
redis_data['follow'] = click_num redis_data['follow'] = click_num
redis_client.set(key, json.dumps(redis_data)) redis_client.hset(key, str_today, json.dumps(redis_data))
else: else:
redis_client.delete(key)
redis_data = {"click": 0, "follow": 1, "comment": 0} redis_data = {"click": 0, "follow": 1, "comment": 0}
redis_client.set(key, json.dumps(redis_data)) redis_client.hset(key, str_today, json.dumps(redis_data))
redis_client.expire(key, time=24 * 60 * 60)
logging.info("get action:follow,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
logging.info("get action:follow,card_id:%s,redis_data:%s" % (card_info['card_id'], redis_data))
follow_num = redis_data["follow"] follow_num = redis_data["follow"]
if follow_num > 10: if follow_num > 10:
...@@ -31,8 +34,6 @@ def follow(card_info): ...@@ -31,8 +34,6 @@ def follow(card_info):
rpc_invoker = get_rpc_invoker() rpc_invoker = get_rpc_invoker()
rpc_invoker['api/irrigation/user_add_follow'](follow_user_id=card_info['current_user_id'], rpc_invoker['api/irrigation/user_add_follow'](follow_user_id=card_info['current_user_id'],
followed_user_id=card_info['card_user_id']).unwrap() followed_user_id=card_info['card_user_id']).unwrap()
# values = list(redis_data.values())
# s = [True for i in values if i > 10]
return True return True
except: except:
......
...@@ -25,7 +25,7 @@ from moment.views.process_time import judge_offset_partition_have_consum ...@@ -25,7 +25,7 @@ from moment.views.process_time import judge_offset_partition_have_consum
def kafka_consum(topic_name=None): def kafka_consum(topic_name=None):
topic_name = settings.KAFKA_TOPIC_NAME if not topic_name else topic_name topic_name = settings.KAFKA_TOPIC_NAME if not topic_name else topic_name
consumser_obj = KafkaConsumer(topic_name, bootstrap_servers=settings.KAFKA_BROKER_LIST, enable_auto_commit=True, consumser_obj = KafkaConsumer(topic_name, bootstrap_servers=settings.KAFKA_BROKER_LIST, enable_auto_commit=True,
auto_commit_interval_ms=1, group_id="vest") auto_commit_interval_ms=1, group_id="vest", auto_offset_reset='earliest')
consumser_obj.subscribe([topic_name, ]) consumser_obj.subscribe([topic_name, ])
try: try:
# redis_topic_partition_name = "vest:topic_name:" + str(topic_name) # redis_topic_partition_name = "vest:topic_name:" + str(topic_name)
...@@ -42,12 +42,12 @@ def kafka_consum(topic_name=None): ...@@ -42,12 +42,12 @@ def kafka_consum(topic_name=None):
if card_info['card_type'] == "auto_vest": if card_info['card_type'] == "auto_vest":
###在这里去判断一下当前的partition和offset是否已经消费过了 如果已经消费了需要直接去掉数据 ###在这里去判断一下当前的partition和offset是否已经消费过了 如果已经消费了需要直接去掉数据
bol_consum = judge_offset_partition_have_consum(offset=msg.offset, partition=msg.partition) bol_consum = judge_offset_partition_have_consum(offset=msg.offset, partition=msg.partition)
if bol_consum: if bol_consum:
logging.info("消费到新数据了[%s,%s,%s,%s],get card_info:%s" % ( logging.info("消费到新数据了[%s,%s,%s,%s],get card_info:%s" % (
str(msg.topic), str(msg.partition), str(msg.offset), str(msg.key), card_info)) str(msg.topic), str(msg.partition), str(msg.offset), str(msg.key), card_info))
# redis_client.hset(redis_topic_partition_name, msg.partition, msg.offset) # 如果没有代表是之前的老的数据
# 代表当天数据 if 'card_status' not in card_info:
card_info['card_status'] = 'answer'
current_push_time = card_info['current_push_time'] current_push_time = card_info['current_push_time']
create_time = card_info['create_time'] create_time = card_info['create_time']
nowtime = datetime.datetime.now() nowtime = datetime.datetime.now()
......
...@@ -14,6 +14,16 @@ from libs.error import logging_exception ...@@ -14,6 +14,16 @@ from libs.error import logging_exception
@bind('vest/moment/vest_irrigation') @bind('vest/moment/vest_irrigation')
def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time="", content_level=0, tag_names=[]): def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time="", content_level=0, tag_names=[]):
"""
在这里把后端传的数据存进卡夫卡 日记和帖子只需要发评论不需要点赞和关注
:param card_id:
:param card_type:
:param card_user_id:
:param create_time:
:param content_level:
:param tag_names:
:return:
"""
try: try:
producer = KafkaProducer(bootstrap_servers=settings.KAFKA_BROKER_LIST) producer = KafkaProducer(bootstrap_servers=settings.KAFKA_BROKER_LIST)
...@@ -32,6 +42,7 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time="" ...@@ -32,6 +42,7 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
comment_msg_dict = { comment_msg_dict = {
"card_id": card_id, "card_id": card_id,
"card_type": "auto_vest", "card_type": "auto_vest",
'card_status': card_type,
"create_time": create_time, "create_time": create_time,
"content_level": content_level, "content_level": content_level,
"tag_names": tag_names, "tag_names": tag_names,
...@@ -43,32 +54,35 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time="" ...@@ -43,32 +54,35 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
logging.info("get comment_msg_dict:%s" % comment_msg_dict) logging.info("get comment_msg_dict:%s" % comment_msg_dict)
producer.send(topic, json.dumps(comment_msg_dict).encode()) producer.send(topic, json.dumps(comment_msg_dict).encode())
follow_msg_dict = { if card_type == 'answer':
"card_id": card_id, follow_msg_dict = {
"card_type": "auto_vest", "card_id": card_id,
"create_time": create_time, "card_type": "auto_vest",
"content_level": content_level, 'card_status': card_type,
"tag_names": tag_names, "create_time": create_time,
"type": "get_write_answer_userinfo", "content_level": content_level,
"current_push_time": create_time, "tag_names": tag_names,
'action_type': 'follow', "type": "get_write_answer_userinfo",
'card_user_id': card_user_id "current_push_time": create_time,
'action_type': 'follow',
'card_user_id': card_user_id
} }
producer.send(topic, json.dumps(follow_msg_dict).encode()) producer.send(topic, json.dumps(follow_msg_dict).encode())
click_msg_dict = { click_msg_dict = {
"card_id": card_id, "card_id": card_id,
"card_type": "auto_vest", "card_type": "auto_vest",
"create_time": create_time, 'card_status': card_type,
"content_level": content_level, "create_time": create_time,
"tag_names": tag_names, "content_level": content_level,
"type": "get_write_answer_userinfo", "tag_names": tag_names,
"current_push_time": create_time, "type": "get_write_answer_userinfo",
'action_type': 'click' "current_push_time": create_time,
'action_type': 'click'
} }
producer.send(topic, json.dumps(click_msg_dict).encode()) producer.send(topic, json.dumps(click_msg_dict).encode())
producer.close() producer.close()
......
...@@ -17,9 +17,15 @@ from bs4 import BeautifulSoup ...@@ -17,9 +17,15 @@ from bs4 import BeautifulSoup
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
producer = KafkaProducer(bootstrap_servers=settings.KAFKA_BROKER_LIST) producer = KafkaProducer(bootstrap_servers=settings.KAFKA_BROKER_LIST)
db_zhengxing_eagle = pymysql.connect(host=settings.HOST, port=settings.PORT, user=settings.USER, db_mimas_eagle = pymysql.connect(host=settings.HOST, port=settings.PORT, user=settings.USER,
password=settings.PASSWORD, password=settings.PASSWORD,
db=settings.NAME) db=settings.NAME)
mimas_cursor = db_mimas_eagle.cursor()
db_zhengxing_eagle = pymysql.connect(host=settings.HOST1, port=settings.PORT, user=settings.USER1,
password=settings.PASSWORD1,
db=settings.NAME1)
zhengxing_cursor = db_zhengxing_eagle.cursor() zhengxing_cursor = db_zhengxing_eagle.cursor()
...@@ -154,7 +160,7 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type ...@@ -154,7 +160,7 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type
repeat_time=0): repeat_time=0):
try: try:
###在这个地方需要重新判断一下星级 ###在这个地方需要重新判断一下星级
# content_level = get_current_card_content_level(card_info) card_info['content_level'] = get_current_card_content_level(card_info)
## ##
card_info['type'] = 'have_get_push_time' card_info['type'] = 'have_get_push_time'
card_info['have_comment_number'] = 0 card_info['have_comment_number'] = 0
...@@ -201,6 +207,9 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type ...@@ -201,6 +207,9 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type
def get_click_follow_time_by_create_time(create_time="", content_level=0, action_type=None, after_day=False, def get_click_follow_time_by_create_time(create_time="", content_level=0, action_type=None, after_day=False,
card_info=None, repeat_time=0): card_info=None, repeat_time=0):
try: try:
######在这个地方需要重新判断一下星级
card_info['content_level'] = get_current_card_content_level(card_info)
####
card_info['have_click_number'] = 0 card_info['have_click_number'] = 0
card_info['have_follow_number'] = 0 card_info['have_follow_number'] = 0
now = datetime.datetime.now() now = datetime.datetime.now()
...@@ -346,23 +355,24 @@ def judge_offset_partition_have_consum(offset=0, partition=0): ...@@ -346,23 +355,24 @@ def judge_offset_partition_have_consum(offset=0, partition=0):
def get_current_card_content_level(card_info=[]): def get_current_card_content_level(card_info=[]):
try: try:
# 先根据card_id回去内容提取关键字 # 判断当前卡片的等级
if card_info['card_status'] == 'answer':
sql = 'select content from api_answer where id = %s ' % (card_info['card_id']) sql = 'select level from api_answer where id = %s ' % (card_info['card_id'])
# zhengxing_cursor.execute(sql) mimas_cursor.execute(sql)
# data = list(zhengxing_cursor.fetchall()) data = list(mimas_cursor.fetchall())
# logging.info("get data:%s" % data)
# zhengxing_cursor.close() if card_info['card_status'] == 'tractate':
# if len(data) > 0: sql = 'select content_level from api_tractate where id = %s ' % (card_info['card_id'])
# soup = BeautifulSoup(data[0][0], 'html.parser') mimas_cursor.execute(sql)
# contents = soup.text data = list(mimas_cursor.fetchall())
#
# ck = GetContentKeyWords() if card_info['card_status'] == 'diary':
# keywords = ck.get_keywords(contents, len(ck.tag_list)) sql = 'select content_level from api_diary where id = %s ' % (card_info['card_id'])
# if keywords: zhengxing_cursor.execute(sql)
# tag_names.append(keywords) data = list(zhengxing_cursor.fetchall())
# logging.info("get_content_level_card_info:%s" % card_info)
# return tag_names if len(data) > 0:
return int(data[0][0])
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......
...@@ -20,6 +20,12 @@ PASSWORD = 'Gengmei1' ...@@ -20,6 +20,12 @@ PASSWORD = 'Gengmei1'
HOST = 'bj-cdb-6slgqwlc.sql.tencentcdb.com' HOST = 'bj-cdb-6slgqwlc.sql.tencentcdb.com'
PORT = 62120 PORT = 62120
ENGINE1 = 'django.db.backends.mysql', # 设置为mysql数据库
NAME1 = 'zhengxing_test'
USER1 = 'work'
PASSWORD1 = 'Gengmei1'
HOST1 = 'bj-cdb-6slgqwlc.sql.tencentcdb.com'
OPTIONS = { OPTIONS = {
"init_command": "SET foreign_key_checks = 0;", "init_command": "SET foreign_key_checks = 0;",
"charset": "utf8mb4", # 为了支持emoji表情 "charset": "utf8mb4", # 为了支持emoji表情
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment