# == Schema Information # # Table name: topics # # id :integer not null, primary key # type :string(255) # title :string(255) # uuid :integer # url :string(255) # order_index :integer # class Topic < ApplicationRecord default_scope { order(order_index: :desc)} scope :with_single_type, ->(type){where(type: trans_simpletype_to_classtype(type))} def image image_url('image') end def self.trans_simpletype_to_classtype(type) case type when 'activity_forum' 'Topic::ActivityForum' when 'banner' 'Topic::Banner' when 'card' 'Topic::Card' when 'cooperator' 'Topic::Cooperator' when 'excellent_project' 'Topic::ExcellentProject' when 'experience_forum' 'Topic::ExperienceForum' when "glcc_news" 'Topic::GlccNews' when 'pinned_forum' 'Topic::PinnedForum' end end def get_visitor_data data = { visits: 0, created_time: format_time(Time.now), from:"other" } if self.url.include?("gitlink.org.cn/forums/") || self.url.include?("trustie.net/forums/") request_memo = Forum::Memos::GetService.call(self.uuid) data[:visits] = request_memo.nil? ? 0 : request_memo["memo"]["viewed_count"] data[:created_time] = request_memo.nil? ? format_time(Time.now) : request_memo["memo"]["published_time"] data[:from] = "forums" end if self.url.include?("gitlink.org.cn/zone/") || self.url.include?("trustie.net/zone/") request_doc = Getway::Cms::GetService.call(self.uuid) data[:visits] = request_doc.nil? ? 0 : request_doc["data"]["visits"] data[:created_time] = request_doc.nil? ? format_time(Time.now) : request_doc["data"]["publishTime"] data[:from] = "zone" end data end private def image_url(type) return nil unless Util::FileManage.exists?(self, type) Util::FileManage.source_disk_file_url(self, type) end end