@@ -19,16 +19,6 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
1919
2020 @ report_threshold_for_fold ArticleComment . report_threshold_for_fold ( )
2121
22- # filter = %{
23- # contentType: account | post | job | repo | article_comment | community
24- # contentId: ...
25- # operate_user_id,
26- # min_case_count,
27- # max_case_count,
28- # page
29- # size
30- # }
31-
3222 @ article_threads [ :post , :job , :repo ]
3323 @ export_author_keys [ :id , :login , :nickname , :avatar ]
3424 @ export_article_keys [ :id , :title , :digest , :upvotes_count , :views ]
@@ -45,30 +35,22 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
4535 @ doc """
4636 list paged reports for article comemnts
4737 """
48- def list_reports ( % { content_type: :user , content_id: content_id } = filter ) do
49- % { page: page , size: size } = filter
50-
51- with { :ok , info } <- match ( :account_user ) do
38+ def list_reports ( % { content_type: :account , content_id: content_id } = filter ) do
39+ with { :ok , info } <- match ( :account ) do
5240 query =
5341 from ( r in AbuseReport ,
5442 where: field ( r , ^ info . foreign_key ) == ^ content_id ,
5543 preload: :account
5644 )
5745
58- query
59- |> QueryBuilder . filter_pack ( filter )
60- |> ORM . paginater ( ~m( page size) a )
61- |> reports_formater ( :account_user )
62- |> done ( )
46+ do_list_reports ( query , :account , filter )
6347 end
6448 end
6549
6650 @ doc """
6751 list paged reports for article comemnts
6852 """
6953 def list_reports ( % { content_type: :article_comment , content_id: content_id } = filter ) do
70- % { page: page , size: size } = filter
71-
7254 with { :ok , info } <- match ( :article_comment ) do
7355 query =
7456 from ( r in AbuseReport ,
@@ -77,11 +59,7 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
7759 preload: [ article_comment: :author ]
7860 )
7961
80- query
81- |> QueryBuilder . filter_pack ( filter )
82- |> ORM . paginater ( ~m( page size) a )
83- |> reports_formater ( :article_comment )
84- |> done ( )
62+ do_list_reports ( query , :article_comment , filter )
8563 end
8664 end
8765
@@ -90,32 +68,62 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
9068 """
9169 def list_reports ( % { content_type: thread , content_id: content_id } = filter )
9270 when thread in @ article_threads do
93- % { page: page , size: size } = filter
94-
9571 with { :ok , info } <- match ( thread ) do
9672 query =
9773 from ( r in AbuseReport ,
9874 where: field ( r , ^ info . foreign_key ) == ^ content_id ,
9975 preload: [ ^ thread , :operate_user ]
10076 )
10177
102- query
103- |> QueryBuilder . filter_pack ( filter )
104- |> ORM . paginater ( ~m( page size) a )
105- |> reports_formater ( thread )
106- |> done ( )
78+ do_list_reports ( query , thread , filter )
79+ end
80+ end
81+
82+ # def list_reports(%{content_type: thread} = filter) when thread in @article_threads do
83+ def list_reports ( % { content_type: thread } = filter ) do
84+ IO . inspect ( filter , label: "list filter 1-" )
85+
86+ with { :ok , info } <- match ( thread ) do
87+ query =
88+ from ( r in AbuseReport ,
89+ where: not is_nil ( field ( r , ^ info . foreign_key ) ) ,
90+ preload: [ ^ thread , :operate_user ] ,
91+ preload: [ article_comment: :author ]
92+ )
93+
94+ do_list_reports ( query , thread , filter )
10795 end
10896 end
10997
98+ def list_reports ( filter ) do
99+ query = from ( r in AbuseReport , preload: [ :operate_user ] )
100+
101+ do_list_reports ( query , filter )
102+ end
103+
104+ defp do_list_reports ( query , thread , filter ) do
105+ % { page: page , size: size } = filter
106+
107+ query
108+ |> QueryBuilder . filter_pack ( filter )
109+ |> ORM . paginater ( ~m( page size) a )
110+ |> reports_formater ( thread )
111+ |> done ( )
112+ end
113+
114+ defp do_list_reports ( query , % { page: page , size: size } ) do
115+ query |> ORM . paginater ( ~m( page size) a ) |> done ( )
116+ end
117+
110118 @ doc """
111119 report an account
112120 """
113121 def report_account ( account_id , reason , attr , user ) do
114- with { :ok , info } <- match ( :account_user ) ,
122+ with { :ok , info } <- match ( :account ) ,
115123 { :ok , account } <- ORM . find ( info . model , account_id ) do
116124 Multi . new ( )
117125 |> Multi . run ( :create_abuse_report , fn _ , _ ->
118- create_report ( :account_user , account . id , reason , attr , user )
126+ create_report ( :account , account . id , reason , attr , user )
119127 end )
120128 |> Multi . run ( :update_report_meta , fn _ , _ ->
121129 update_report_meta ( info , account )
@@ -129,11 +137,11 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
129137 undo report article content
130138 """
131139 def undo_report_account ( account_id , % User { } = user ) do
132- with { :ok , info } <- match ( :account_user ) ,
140+ with { :ok , info } <- match ( :account ) ,
133141 { :ok , account } <- ORM . find ( info . model , account_id ) do
134142 Multi . new ( )
135143 |> Multi . run ( :delete_abuse_report , fn _ , _ ->
136- delete_report ( :account_user , account . id , user )
144+ delete_report ( :account , account . id , user )
137145 end )
138146 |> Multi . run ( :update_report_meta , fn _ , _ ->
139147 update_report_meta ( info , account )
@@ -270,16 +278,14 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
270278 safe_meta = if is_nil ( content . meta ) , do: info . default_meta , else: content . meta
271279 reported_user_ids = report_cases |> Enum . map ( & & 1 . user . user_id )
272280
273- meta =
274- safe_meta
275- |> Map . merge ( % { reported_count: reported_count , reported_user_ids: reported_user_ids } )
276- |> strip_struct
281+ safe_meta
282+ |> Map . merge ( % { reported_count: reported_count , reported_user_ids: reported_user_ids } )
283+ |> strip_struct
277284
278285 { :error , _ } ->
279286 safe_meta = if is_nil ( content . meta ) , do: info . default_meta , else: content . meta
280287
281- meta =
282- safe_meta |> Map . merge ( % { reported_count: 0 , reported_user_ids: [ ] } ) |> strip_struct
288+ safe_meta |> Map . merge ( % { reported_count: 0 , reported_user_ids: [ ] } ) |> strip_struct
283289 end
284290
285291 content |> ORM . update_meta ( meta )
@@ -305,7 +311,7 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
305311 end
306312 end
307313
308- defp reports_formater ( % { entries: entries } = paged_reports , :account_user ) do
314+ defp reports_formater ( % { entries: entries } = paged_reports , :account ) do
309315 paged_reports
310316 |> Map . put (
311317 :entries ,
@@ -340,7 +346,7 @@ defmodule GroupherServer.CMS.Delegate.AbuseReport do
340346 end
341347
342348 defp extract_account_info ( % AbuseReport { } = report ) do
343- account = report |> Map . get ( :account ) |> Map . take ( @ export_author_keys )
349+ report |> Map . get ( :account ) |> Map . take ( @ export_author_keys )
344350 end
345351
346352 # TODO: original community and communities info
0 commit comments