Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
P
physical
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
0
Merge Requests
0
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
吴升宇
physical
Commits
8085738e
Commit
8085738e
authored
Jul 23, 2019
by
lixiaofang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add
parent
ce8cb6ba
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
218 additions
and
12 deletions
+218
-12
group.py
search/views/group.py
+135
-1
pictorial.json
trans2es/mapping/pictorial.json
+4
-1
pictorial.py
trans2es/models/pictorial.py
+69
-3
topic.py
trans2es/models/topic.py
+1
-0
user_extra.py
trans2es/models/user_extra.py
+6
-6
pictorial_transfer.py
trans2es/utils/pictorial_transfer.py
+3
-1
No files found.
search/views/group.py
View file @
8085738e
...
...
@@ -88,7 +88,6 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
return
{
"pictorial_recommend_ids"
:
[]}
@bind
(
"physical/search/pictorial_topic"
)
def
pictorial_topic
(
topic_id
=-
1
,
offset
=
0
,
size
=
10
):
"""
:remark 入选画报
...
...
@@ -233,6 +232,141 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
return
{
"pictorial_ids_list"
:
[]}
@bind
(
"physical/search/pictorial_topic"
)
def
pictorial_topic_v1
(
topic_id
=-
1
,
offset
=
0
,
size
=
10
):
"""
:remark 入选画报
:param user_id:
:param sort_type:
:param offset:
:param size:
:return:
"""
try
:
# 获取es链接对象
es_cli_obj
=
ESPerform
.
get_cli
()
q
=
{}
# 获取帖子从属的画报
q
[
"query"
]
=
{
"bool"
:
{
"must"
:
[
{
"term"
:
{
"id"
:
topic_id
}
},
{
"term"
:
{
"is_online"
:
True
}
}
],
"must_not"
:
[
{
"term"
:
{
"is_history"
:
True
}
}
]
}
}
q
[
"_source"
]
=
{
"includes"
:
[
"id"
,
"pictorial_id"
,
"edit_tag_list"
]
}
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
"topic"
,
q
,
offset
=
0
,
size
=
1
)
edit_tag_list
=
[]
pictorial_id_list
=
[]
if
len
(
result_dict
[
"hits"
])
>
0
:
for
item
in
result_dict
[
"hits"
]:
edit_tag_list
=
item
[
"_source"
][
"edit_tag_list"
]
functions_list
=
[
{
"filter"
:
{
"bool"
:
{
"must"
:
{
"term"
:
{
"topic_id_list"
:
topic_id
}
}
}
},
"weight"
:
200
},
{
"filter"
:
{
"bool"
:
{
"must"
:
{
"term"
:
{
"is_recommend"
:
True
}
}
}
},
"weight"
:
100
}
]
query_function_score
=
{
"query"
:
{
"bool"
:
{
"must"
:
[{
"terms"
:
{
"edit_tag_list"
:
edit_tag_list
}
},
{
"term"
:
{
"is_online"
:
True
}
},
{
"term"
:
{
"is_deleted"
:
False
}
},
]
}
},
"score_mode"
:
"sum"
,
"boost_mode"
:
"replace"
,
"functions"
:
functions_list
}
q
[
"query"
]
=
{
"function_score"
:
query_function_score
}
q
[
"_source"
]
=
{
"includes"
:
[
"id"
,
"edit_tag_list"
,
"topic_id_list"
]
}
q
[
"sort"
]
=
[
{
"_script"
:
{
"type"
:
"number"
,
"script"
:
{
"lang"
:
"expression"
,
"source"
:
"_score+doc['reply_score']"
},
"order"
:
"desc"
}
}
]
result_dict
=
ESPerform
.
get_search_results
(
es_cli_obj
,
"pictorial"
,
q
,
offset
,
size
)
if
len
(
result_dict
[
"hits"
])
>
0
:
for
item
in
result_dict
[
"hits"
]:
pictorial_id
=
item
[
"_source"
][
"id"
]
pictorial_id_list
.
append
(
pictorial_id
)
return
{
"pictorial_ids_list"
:
pictorial_id_list
}
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
{
"pictorial_ids_list"
:
[]}
@bind
(
"physical/search/pictorial_topic_sort"
)
def
pictorial_topic_sort
(
pictorial_id
=-
1
,
offset
=
0
,
size
=
10
):
"""
...
...
trans2es/mapping/pictorial.json
View file @
8085738e
...
...
@@ -19,6 +19,8 @@
"effective"
:{
"type"
:
"boolean"
},
"offline_score"
:{
"type"
:
"long"
},
"is_default"
:{
"type"
:
"long"
},
"is_cover"
:{
"type"
:
"boolean"
}
"is_cover"
:{
"type"
:
"boolean"
},
"edit_tag_list"
:{
"type"
:
"long"
},
"reply_score"
:{
"type"
:
"long"
}
}
}
\ No newline at end of file
trans2es/models/pictorial.py
View file @
8085738e
...
...
@@ -2,9 +2,9 @@ import datetime
from
django.db
import
models
import
logging
import
traceback
from
.tag
import
Tag
from
.topic
import
Topic
from
.topic
import
Topic
,
Reply
from
.user
import
UserExtra
class
PictorialFollow
(
models
.
Model
):
...
...
@@ -60,6 +60,7 @@ class Pictorial(models.Model):
topic_num
=
models
.
IntegerField
(
verbose_name
=
u'次数'
)
add_score
=
models
.
IntegerField
(
verbose_name
=
u'人工权重'
)
is_default
=
models
.
IntegerField
(
verbose_name
=
u"是否是默认画报"
)
has_cover
=
models
.
IntegerField
(
verbose_name
=
"是否有封面"
)
def
get_topic_id
(
self
):
try
:
...
...
@@ -78,7 +79,8 @@ class Pictorial(models.Model):
for
topic_id
in
topic_id_list
:
topic_id_object
=
Topic
.
objects
.
filter
(
id
=
int
(
topic_id
))
.
first
()
if
topic_id_object
and
topic_id_object
.
is_online
and
int
(
topic_id_object
.
content_level
)
in
[
0
,
3
,
4
,
5
,
6
]:
if
topic_id_object
and
topic_id_object
.
is_online
and
int
(
topic_id_object
.
content_level
)
in
[
0
,
3
,
4
,
5
,
6
]:
effective_num
+=
1
if
effective_num
>=
5
:
ret
=
True
...
...
@@ -145,6 +147,69 @@ class Pictorial(models.Model):
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
False
def
get_edit_tag_list
(
self
):
try
:
edit_tag_list
=
list
(
set
(
PictorialTag
.
objects
.
filter
(
pictorial_id
=
self
.
id
,
is_online
=
True
,
is_collection
=
1
)
.
values_list
(
"tag_id"
,
flat
=
True
)))
return
edit_tag_list
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
[]
def
get_reply_score
(
self
):
try
:
yesterday
=
datetime
.
datetime
.
now
()
-
datetime
.
timedelta
(
days
=
1
)
threeday
=
datetime
.
datetime
.
now
()
-
datetime
.
timedelta
(
days
=
3
)
three_begin_time
=
"
%
s-
%
s-
%
s 00:00:00"
%
(
threeday
.
year
,
threeday
.
month
,
threeday
.
day
)
yesterday_end_time
=
"
%
s-
%
s-
%
s 23:59:59"
%
(
yesterday
.
year
,
yesterday
.
month
,
yesterday
.
day
)
topic_id
=
self
.
get_topic_id
()
logging
.
info
(
"get topic_id:
%
s"
%
topic_id
)
reply_user_id
=
(
Reply
.
objects
.
filter
(
topic_id__in
=
topic_id
,
is_online
=
True
,
is_deleted
=
False
,
create_time__gte
=
three_begin_time
,
create_time__lte
=
yesterday_end_time
)
.
values
(
"user_id"
,
"id"
))
logging
.
info
(
"get reply_user_id:
%
s"
%
reply_user_id
)
user_ids
=
[]
for
item
in
reply_user_id
:
user_ids
.
append
(
item
.
get
(
"user_id"
,
None
))
logging
.
info
(
"get user_ids:
%
s"
%
user_ids
)
user_id_sahdow
=
UserExtra
.
objects
.
filter
(
user_id__in
=
user_ids
,
is_shadow
=
False
)
.
values_list
(
"user_id"
,
flat
=
True
)
logging
.
info
(
"get user_id_sahdow:
%
s"
%
user_id_sahdow
)
reply_shadow
=
[]
for
item
in
reply_user_id
:
user_id
=
item
.
get
(
"user_id"
,
None
)
if
user_id
not
in
user_id_sahdow
:
reply_shadow
.
append
(
item
)
logging
.
info
(
"get reply_shadow:
%
s"
%
reply_shadow
)
if
len
(
reply_shadow
)
>=
1
and
len
(
reply_shadow
)
<=
4
:
return
20
elif
len
(
reply_shadow
)
>=
5
and
len
(
reply_shadow
)
<=
10
:
return
50
elif
len
(
reply_shadow
)
>=
10
:
return
100
else
:
return
0
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
0
class
PictorialTag
(
models
.
Model
):
"""画报关注标签"""
...
...
@@ -160,3 +225,4 @@ class PictorialTag(models.Model):
pictorial_id
=
models
.
BigIntegerField
(
verbose_name
=
u'画报ID'
,
max_length
=
20
)
tag_id
=
models
.
BigIntegerField
(
verbose_name
=
u'标签ID'
,
max_length
=
20
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u'是否上线'
,
max_length
=
1
)
is_collection
=
models
.
IntegerField
(
verbose_name
=
u'是否编辑'
,
max_length
=
10
)
trans2es/models/topic.py
View file @
8085738e
...
...
@@ -419,3 +419,4 @@ class Reply(models.Model):
is_deleted
=
models
.
BooleanField
(
verbose_name
=
u'是否删除'
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u'是否上线'
)
trans2es/models/user_extra.py
View file @
8085738e
...
...
@@ -9,18 +9,18 @@ from libs.es import ESPerform
from
django.db
import
models
import
datetime
class
UserExtra
(
models
.
Model
):
class
Meta
:
verbose_name
=
u"推荐用户表"
db_table
=
"user_extra"
id
=
models
.
IntegerField
(
verbose_name
=
"主键ID"
,
primary_key
=
True
)
user_id
=
models
.
CharField
(
verbose_name
=
u"用户ID"
,
max_length
=
100
)
verbose_name
=
u"推荐用户表"
db_table
=
"user_extra"
id
=
models
.
IntegerField
(
verbose_name
=
"主键ID"
,
primary_key
=
True
)
user_id
=
models
.
CharField
(
verbose_name
=
u"用户ID"
,
max_length
=
100
)
is_shadow
=
models
.
BooleanField
(
verbose_name
=
u"是否是马甲账户"
)
is_online
=
models
.
BooleanField
(
verbose_name
=
u"是否上线"
)
is_recommend
=
models
.
BooleanField
(
verbose_name
=
u"是否推荐"
)
has_answered
=
models
.
BooleanField
(
verbose_name
=
u""
)
is_deleted
=
models
.
BooleanField
(
verbose_name
=
u""
)
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
create_time
=
models
.
DateTimeField
(
verbose_name
=
u'创建时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
update_time
=
models
.
DateTimeField
(
verbose_name
=
u'更新时间'
,
default
=
datetime
.
datetime
.
fromtimestamp
(
0
))
trans2es/utils/pictorial_transfer.py
View file @
8085738e
...
...
@@ -67,7 +67,9 @@ class PictorialTransfer(object):
res
[
"effective"
]
=
instance
.
get_effective
(
res
[
"topic_id_list"
])
res
[
"offline_score"
]
=
cls
.
get_offline_score
(
instance
,
res
[
"topic_id_list"
])
res
[
"is_default"
]
=
instance
.
is_default
res
[
"is_cover"
]
=
instance
.
get_is_cover
(
res
[
"topic_id_list"
])
res
[
"is_cover"
]
=
True
if
instance
.
has_cover
else
False
res
[
"edit_tag_list"
]
=
instance
.
get_edit_tag_list
()
res
[
"reply_score"
]
=
instance
.
get_reply_score
()
return
res
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
...
...
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