Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
V
vest
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rank
vest
Commits
e0c66b0d
Commit
e0c66b0d
authored
Jan 03, 2020
by
lixiaofang
Browse files
Options
Browse Files
Download
Plain Diff
新增类型
parents
a8a64ccf
ce87a5c4
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
156 additions
and
46 deletions
+156
-46
click_fun.py
click/views/click_fun.py
+13
-8
comment_fun.py
comment/views/comment_fun.py
+81
-7
follow_fun.py
follow/views/follow_fun.py
+9
-8
consum.py
moment/views/consum.py
+4
-4
irrigation.py
moment/views/irrigation.py
+14
-0
process_time.py
moment/views/process_time.py
+29
-19
settings_local.py
vest/settings_local.py
+6
-0
No files found.
click/views/click_fun.py
View file @
e0c66b0d
...
...
@@ -5,23 +5,31 @@ import logging
from
libs.cache
import
redis_client
import
json
from
moment.views.send_email
import
send_email_tome
import
datetime
def
click
(
card_info
):
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
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
click_num
=
int
(
redis_data
.
get
(
"click"
))
+
1
redis_data
[
'click'
]
=
click_num
redis_client
.
set
(
ke
y
,
json
.
dumps
(
redis_data
))
redis_client
.
hset
(
key
,
str_toda
y
,
json
.
dumps
(
redis_data
))
else
:
##代表还没有存储或者是已经过去一天了 需要清掉数据 从新的一天开始
redis_client
.
delete
(
key
)
redis_data
=
{
"click"
:
1
,
"follow"
:
0
,
"comment"
:
0
}
redis_client
.
set
(
ke
y
,
json
.
dumps
(
redis_data
))
redis_client
.
expire
(
key
,
time
=
24
*
60
*
60
)
redis_client
.
hset
(
key
,
str_toda
y
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:click,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
click_num
=
redis_data
[
"click"
]
if
click_num
>
10
:
return
True
# send_email_tome(str(redis_data) + str(card_info))
...
...
@@ -29,9 +37,6 @@ def click(card_info):
rpc_invoker
=
get_rpc_invoker
()
rpc_invoker
[
'qa/irrigation/create_answer_vote'
](
user_id
=
card_info
[
'current_user_id'
],
answer_id
=
card_info
[
'card_id'
])
.
unwrap
()
# values = list(redis_data.values())
# s = [True for i in values if i > 10]
return
True
except
:
logging_exception
()
...
...
comment/views/comment_fun.py
View file @
e0c66b0d
...
...
@@ -5,25 +5,38 @@ import logging
from
libs.cache
import
redis_client
import
json
from
moment.views.send_email
import
send_email_tome
import
datetime
def
comment
(
card_info
):
"""
在这里需要判断是帖子下发评论还是问答还是日记下发
:param card_info:
:return:
"""
try
:
key
=
"auto_vest_one_user_action:"
+
str
(
card_info
[
'card_id'
])
redis_data
=
redis_client
.
get
(
key
)
if
card_info
[
'card_status'
]
==
'tractate'
:
today
=
datetime
.
datetime
.
now
()
str_today
=
str
(
today
.
year
)
+
str
(
today
.
month
)
+
str
(
today
.
day
)
key
=
"auto_vest_one_user_action_tractate:"
+
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
.
set
(
ke
y
,
json
.
dumps
(
redis_data
))
redis_client
.
hset
(
key
,
str_toda
y
,
json
.
dumps
(
redis_data
))
else
:
redis_data
=
{
"click"
:
0
,
"follow"
:
0
,
"comment"
:
1
}
redis_client
.
set
(
key
,
json
.
dumps
(
redis_data
))
redis_client
.
expire
(
key
,
time
=
24
*
60
*
60
)
##代表还没有存储或者是已经过去一天了 需要清掉数据 从新的一天开始
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
>
20
:
if
comment_num
>
12
:
return
True
# send_email_tome(str(redis_data) + str(card_info))
else
:
...
...
@@ -31,6 +44,67 @@ def comment(card_info):
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
:
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
:
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
except
:
logging_exception
()
...
...
follow/views/follow_fun.py
View file @
e0c66b0d
...
...
@@ -5,23 +5,26 @@ import logging
from
libs.cache
import
redis_client
import
json
from
moment.views.send_email
import
send_email_tome
import
datetime
def
follow
(
card_info
):
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
:
redis_data
=
json
.
loads
(
str
(
redis_data
,
encoding
=
"utf8"
))
click_num
=
int
(
redis_data
.
get
(
"follow"
))
+
1
redis_data
[
'follow'
]
=
click_num
redis_client
.
set
(
ke
y
,
json
.
dumps
(
redis_data
))
redis_client
.
hset
(
key
,
str_toda
y
,
json
.
dumps
(
redis_data
))
else
:
redis_client
.
delete
(
key
)
redis_data
=
{
"click"
:
0
,
"follow"
:
1
,
"comment"
:
0
}
redis_client
.
set
(
key
,
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
))
redis_client
.
hset
(
key
,
str_today
,
json
.
dumps
(
redis_data
))
logging
.
info
(
"get action:follow,card_id:
%
s,redis_data:
%
s"
%
(
card_info
[
'card_id'
],
redis_data
))
follow_num
=
redis_data
[
"follow"
]
if
follow_num
>
10
:
...
...
@@ -31,8 +34,6 @@ def follow(card_info):
rpc_invoker
=
get_rpc_invoker
()
rpc_invoker
[
'api/irrigation/user_add_follow'
](
follow_user_id
=
card_info
[
'current_user_id'
],
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
except
:
...
...
moment/views/consum.py
View file @
e0c66b0d
...
...
@@ -25,7 +25,7 @@ from moment.views.process_time import judge_offset_partition_have_consum
def
kafka_consum
(
topic_name
=
None
):
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
,
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
,
])
try
:
# redis_topic_partition_name = "vest:topic_name:" + str(topic_name)
...
...
@@ -42,12 +42,12 @@ def kafka_consum(topic_name=None):
if
card_info
[
'card_type'
]
==
"auto_vest"
:
###在这里去判断一下当前的partition和offset是否已经消费过了 如果已经消费了需要直接去掉数据
bol_consum
=
judge_offset_partition_have_consum
(
offset
=
msg
.
offset
,
partition
=
msg
.
partition
)
if
bol_consum
:
logging
.
info
(
"消费到新数据了[
%
s,
%
s,
%
s,
%
s],get card_info:
%
s"
%
(
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'
]
create_time
=
card_info
[
'create_time'
]
nowtime
=
datetime
.
datetime
.
now
()
...
...
moment/views/irrigation.py
View file @
e0c66b0d
...
...
@@ -14,6 +14,16 @@ from libs.error import logging_exception
@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
=
[]):
"""
在这里把后端传的数据存进卡夫卡 日记和帖子只需要发评论不需要点赞和关注
:param card_id:
:param card_type:
:param card_user_id:
:param create_time:
:param content_level:
:param tag_names:
:return:
"""
try
:
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=""
comment_msg_dict
=
{
"card_id"
:
card_id
,
"card_type"
:
"auto_vest"
,
'card_status'
:
card_type
,
"create_time"
:
create_time
,
"content_level"
:
content_level
,
"tag_names"
:
tag_names
,
...
...
@@ -43,9 +54,11 @@ 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
)
producer
.
send
(
topic
,
json
.
dumps
(
comment_msg_dict
)
.
encode
())
if
card_type
==
'answer'
:
follow_msg_dict
=
{
"card_id"
:
card_id
,
"card_type"
:
"auto_vest"
,
'card_status'
:
card_type
,
"create_time"
:
create_time
,
"content_level"
:
content_level
,
"tag_names"
:
tag_names
,
...
...
@@ -60,6 +73,7 @@ def vest_irrigation(card_id=0, card_type=None, card_user_id=None, create_time=""
click_msg_dict
=
{
"card_id"
:
card_id
,
"card_type"
:
"auto_vest"
,
'card_status'
:
card_type
,
"create_time"
:
create_time
,
"content_level"
:
content_level
,
"tag_names"
:
tag_names
,
...
...
moment/views/process_time.py
View file @
e0c66b0d
...
...
@@ -17,10 +17,16 @@ from bs4 import BeautifulSoup
logger
=
logging
.
getLogger
(
__name__
)
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
,
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
()
...
...
@@ -154,7 +160,7 @@ def get_content_time_by_create_time(create_time="", content_level=0, action_type
repeat_time
=
0
):
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
[
'have_comment_number'
]
=
0
...
...
@@ -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
,
card_info
=
None
,
repeat_time
=
0
):
try
:
######在这个地方需要重新判断一下星级
card_info
[
'content_level'
]
=
get_current_card_content_level
(
card_info
)
####
card_info
[
'have_click_number'
]
=
0
card_info
[
'have_follow_number'
]
=
0
now
=
datetime
.
datetime
.
now
()
...
...
@@ -346,23 +355,24 @@ def judge_offset_partition_have_consum(offset=0, partition=0):
def
get_current_card_content_level
(
card_info
=
[]):
try
:
# 先根据card_id回去内容提取关键字
sql
=
'select content from api_answer where id =
%
s '
%
(
card_info
[
'card_id'
])
# zhengxing_cursor.execute(sql)
# data = list(zhengxing_cursor.fetchall())
# logging.info("get data:%s" % data)
# zhengxing_cursor.close()
# if len(data) > 0:
# soup = BeautifulSoup(data[0][0], 'html.parser')
# contents = soup.text
#
# ck = GetContentKeyWords()
# keywords = ck.get_keywords(contents, len(ck.tag_list))
# if keywords:
# tag_names.append(keywords)
#
# return tag_names
# 判断当前卡片的等级
if
card_info
[
'card_status'
]
==
'answer'
:
sql
=
'select level from api_answer where id =
%
s '
%
(
card_info
[
'card_id'
])
mimas_cursor
.
execute
(
sql
)
data
=
list
(
mimas_cursor
.
fetchall
())
if
card_info
[
'card_status'
]
==
'tractate'
:
sql
=
'select content_level from api_tractate where id =
%
s '
%
(
card_info
[
'card_id'
])
mimas_cursor
.
execute
(
sql
)
data
=
list
(
mimas_cursor
.
fetchall
())
if
card_info
[
'card_status'
]
==
'diary'
:
sql
=
'select content_level from api_diary where id =
%
s '
%
(
card_info
[
'card_id'
])
zhengxing_cursor
.
execute
(
sql
)
data
=
list
(
zhengxing_cursor
.
fetchall
())
logging
.
info
(
"get_content_level_card_info:
%
s"
%
card_info
)
if
len
(
data
)
>
0
:
return
int
(
data
[
0
][
0
])
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
...
...
vest/settings_local.py
View file @
e0c66b0d
...
...
@@ -20,6 +20,12 @@ PASSWORD = 'Gengmei1'
HOST
=
'bj-cdb-6slgqwlc.sql.tencentcdb.com'
PORT
=
62120
ENGINE1
=
'django.db.backends.mysql'
,
# 设置为mysql数据库
NAME1
=
'zhengxing_test'
USER1
=
'work'
PASSWORD1
=
'Gengmei1'
HOST1
=
'bj-cdb-6slgqwlc.sql.tencentcdb.com'
OPTIONS
=
{
"init_command"
:
"SET foreign_key_checks = 0;"
,
"charset"
:
"utf8mb4"
,
# 为了支持emoji表情
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment