From a2ae017eb89a65b102a2dc6814964dda3044f276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B1=E5=8D=9A=E4=BA=9E?= Date: Sat, 20 Jan 2024 10:24:14 +0800 Subject: [PATCH] fix journal paper member_profiles --- lib/tasks/sync_asia_personal_data_tasks.rake | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/tasks/sync_asia_personal_data_tasks.rake b/lib/tasks/sync_asia_personal_data_tasks.rake index 73ffec3..06b1751 100644 --- a/lib/tasks/sync_asia_personal_data_tasks.rake +++ b/lib/tasks/sync_asia_personal_data_tasks.rake @@ -53,8 +53,9 @@ module AsiaSyncPlugin def self.sync_journal_papers(query_result, member) puts "Journal Paper for user: #{self.user_id(member)}" journal_papers = query_result["journal"].to_a + jps = JournalPaper.where(member_profile_id: member.id,:rss2_id.ne=>nil).where(:rss2_id.nin=>journal_papers.map{|v| v["ukey"]}) if !query_result['emp'].blank? - JournalPaper.where(member_profile_id: member.id,:rss2_id.ne=>nil).where(:rss2_id.nin=>journal_papers.map{|v| v["ukey"]}).destroy + jps.update_all({"$pull" => {member_profile_id: member.id}}) end return if journal_papers.count == 0 journal_papers.each do |journal_paper| @@ -74,11 +75,18 @@ module AsiaSyncPlugin journal_paper_type = JournalPaperType.create(:title_translations=>localize_data(journal_paper["J_class"])) end jp.journal_paper_type = journal_paper_type - jp.member_profile_id = [member.id] + if (jp.member_profile_id.nil?) + jp.member_profile_id = [] + end + jp.member_profile_id << member.id puts "Journal Paper #{jp.id} saved" if jp.save end end + def self.clear_empty_journal_papers + JournalPaper.where(member_profile_id: [],:rss2_id.ne=>nil).delete + end + # 研討會論文 def self.sync_conference_papers(query_result, member) puts "Conference Paper for user: #{self.user_id(member)}" @@ -413,6 +421,7 @@ namespace :sync_asia_personal_plugins do AsiaSyncPlugin.sync_tec_transfers(query_result, member) AsiaSyncPlugin.sync_college_projects(query_result, member) end + AsiaSyncPlugin.clear_empty_journal_papers end def net_http_get_response(uri,headers={}) http = Net::HTTP.new(uri.host, uri.port)