From f87771e3eef3a6b9701bb596a79f5aa28ba77c14 Mon Sep 17 00:00:00 2001 From: ronger <1207296860@qq.com> Date: Fri, 26 May 2017 17:48:47 +0800 Subject: [PATCH] update --- trustie2/Gemfile | 8 +- trustie2/app/.DS_Store | Bin 6148 -> 8196 bytes .../open_source_projects_controller.rb | 266 +++++++++--------- .../controllers/relative_memos_controller.rb | 102 +++++-- trustie2/app/views/.DS_Store | Bin 0 -> 6148 bytes .../open_source_projects/search.html.erb | 1 + 6 files changed, 221 insertions(+), 156 deletions(-) create mode 100644 trustie2/app/views/.DS_Store diff --git a/trustie2/Gemfile b/trustie2/Gemfile index 8eaac7dcb..eab64e04d 100644 --- a/trustie2/Gemfile +++ b/trustie2/Gemfile @@ -22,9 +22,15 @@ gem "builder", "3.0.0" gem 'acts-as-taggable-on', '2.4.1' gem 'sunspot_rails', '2.2.0' gem 'sunspot_solr', '2.2.0' -gem 'will_paginate' +gem 'will_paginate', '~> 3.0' gem 'progress_bar' gem 'nokogiri', "~> 1.6.0" + +gem 'ox' # For faster XML Parsing, use Ox or Nokogiri. Ox has highest priority if available. +#gem 'nokogiri' # For faster XML Parsing. If neither Ox nor Nokogiri available, we'll fall back to REXML. +gem 'httpclient' # Absolutely necessary for soap4r-ng. Net::HTTP Fallback is quite broken, so don't let that happen. +gem 'soap4r-ng' + # Gems used only for assets and not required # in production environments by default. group :assets do diff --git a/trustie2/app/.DS_Store b/trustie2/app/.DS_Store index 41c28ab4a4dd4bece7589efe441e1f914a41064a..9d17f8cfc5b5590c131eedfe4423121901fe3fa1 100644 GIT binary patch delta 751 zcmZWnOOFyk5bol!G>?^m<+W-eN=!_a7;uT4Hj5aexF+DTF%VYS8E9bQFpV<<$RfgF z&n9HzL5`YuCtOTCd+-;Sc<~Q-@T49**u%p$+DYg8QdM77byc6lPEsL+5Tx7HI6?-+ z>>9{9$4>&|s~5pB&Am6z!uXf@jSb`R$O4X;%hCfqYYj$(uG$hLDloxEp(Tl`7K?oX zli6Zjvthd(+t;y9Ef@5OC3#rNH)uDi4fD6VdQ?JT{1i`^jW18cu9q z9}F-KUXJf%j+(vW{u21Y z$GhS2dHjBVAm|TmZk{W18vTvupYuHK{)Rnk(M6vPUZ^WrfnXymD8kTU1}CvKlq zADxx@|{}d$!;rz$fdd>RdXyjbSkYDJ-vl%uMsiBv8gs%%ObjWjcI zjk1y*k#w^y!=*kTipuamO`*su3NH`qB;9)`@dA;ua++!yZ5p9QI`)*DLX1@N;`tU| z5#@Sh_uFECkyLI)t}Fh6~A7~vyAUt{ diff --git a/trustie2/app/controllers/open_source_projects_controller.rb b/trustie2/app/controllers/open_source_projects_controller.rb index ebc451004..8f3963511 100644 --- a/trustie2/app/controllers/open_source_projects_controller.rb +++ b/trustie2/app/controllers/open_source_projects_controller.rb @@ -144,6 +144,8 @@ class OpenSourceProjectsController < ApplicationController end end + + #将搜索关键词中的程序语言相关词分离出来 def getSearchWords(key_words) language_array = ["java","c++","ruby","php"," c ","c#","vb "," vb","delphi","asp "," asp"] @@ -169,6 +171,9 @@ class OpenSourceProjectsController < ApplicationController end def search + require 'logger' + logger = Logger.new(STDOUT) #输出到控制台 + if params[:name].nil? || params[:name] == "" respond_to do |format| format.html { redirect_to open_source_projects_url } @@ -188,33 +193,69 @@ class OpenSourceProjectsController < ApplicationController language = '' language << @language #search_words << ' ' + @language if @language - - # 请求starlee服务 - # require 'net/http' -# - # star_projects = [] - # parse_string = "http://172.16.128.35:5000/correlation_search?q=" + @name -# - # # parse_string = "http://172.20.10.3:5000/correlation_search?q=" + @name - # parse_string.gsub! " ","%20" + + + #access java webservice by zyr + oldverb = $VERBOSE; $VERBOSE = nil + require 'iconv' + $VERBOSE = oldverb + + require 'rubygems' + require 'soap/wsdlDriver' + + a_URL = "http://localhost:8083/testWebService_war/services/solrquery?wsdl" + soap_client = SOAP::WSDLDriverFactory.new(a_URL).create_rpc_driver + + #params = {:arg0 => "rails"} + result = soap_client.query(@name) + #logger.info(result) + return_projects = [] + #project_ids = [770839,3674257,139,15397,98681,209133,770319,770675,770684,770839,907638,988140,1032900,1032911,1116837,1185243,1185345] + + result.each do |id| + id = id.to_i + project = OpenSourceProject.find_by_id(id) + return_projects << project + end + + require 'will_paginate/array' + + per_page_option = 10 + @projects_count = return_projects.length.to_i + @projects_pages = Paginator.new @projects_count, per_page_option, params['page'] #custom paginator,to show the 10 records the default paginator of solr gets + + logger.info(@projects_pages.page) + current_page = @projects_pages.page + @open_source_projects = return_projects[(current_page-1)*per_page_option,per_page_option] + respond_to do |format| + format.html { render :layout => "base" } + end + + end + end + + + # 请求solr单机服务 + #require 'net/http' + + # parse_string = "http://localhost:8080/solr/production1/select?q=" + @name + # #parse_string.gsub! " ","%20" # url = URI.parse(parse_string) # req = Net::HTTP::Get.new(url.to_s) # res = Net::HTTP.start(url.host, url.port) {|http| - # http.request(req) + # http.request(req) # } - # star_items = res.body + # return_items = res.body + # #logger.info(return_items) # require 'json' - # star_items = JSON.parse(star_items)["items"] - # star_project_ids = star_items[0,5] - # star_projects = [] - # # 查询出id对应的项目 - # star_project_ids.each do |id| - # id = id.to_i - # project = OpenSourceProject.find_by_id(id) - # star_projects << project - # end - + # return_items = JSON.parse(star_items)["items"] + #_projects = [] + # 查询出id对应的项目 + + + #合成solr请求 +=begin search = OpenSourceProject.search do without(:filtration,0) # with(:created_time, Date.new(params[:created_time].to_i, 01, 01)..Date.new(params[:created_time].to_i+1, 01, 01)) if params[:created_time].present? && !('earlier'.eql? params[:created_time]) @@ -238,56 +279,27 @@ class OpenSourceProjectsController < ApplicationController boost_fields :description => 0.5 boost_fields :language => 1.0 #boost(function { log(sum(:composite_score, 1))^2000 }) - boost(function { log(:composite_score)^1000 }) - end + boost(function { log(:composite_score)^1000 }) + end end +=end #adjust_solr_params do |params| # params[:q] += " AND something_s:more" #end #order_by_function(:sum, :view_num_ossean, [:product, :composite_score, '0.01'], :desc) - if "".eql?(search_words) - order_by(:composite_score, :desc) - else - order_by(:score, :desc) - end - paginate :page => params[:page], :per_page => 10 # the default paginator of solr,10 records for each page - end - per_page_option = 10 - @hits = search.hits - @open_source_projects = search.results - @projects_count = search.total #get total count of search - - #合并 star_projects和solr_projects - open_source_projects_index = 0 - # while open_source_projects_index<@open_source_projects.length do - # project = @open_source_projects[open_source_projects_index] - # id = project.id - # star_projects.each do |star_project| - # if id.to_i == star_project.id - # @open_source_projects.delete(project) - # open_source_projects_index -= 1 - # break - # end - # end - # open_source_projects_index += 1 + # if "".eql?(search_words) + # order_by(:composite_score, :desc) + # else + # order_by(:score, :desc) + # end + # paginate :page => params[:page], :per_page => 10 # the default paginator of solr,10 records for each page # end - - # - # if params[:page]==nil || params[:page]==1 - # star_index = star_projects.length-1 - # while star_index >= 0 do - # star_project = star_projects[star_index] - # @open_source_projects.unshift(star_project) - # star_index -= 1 - # end - # end - @projects_pages = Paginator.new @projects_count, per_page_option, params['page'] #custom paginator,to show the 10 records the default paginator of solr gets - - respond_to do |format| - format.html { render :layout => "base" } - end - end - end + # per_page_option = 10 + # @hits = search.hits + # @open_source_projects = search.results + # @projects_count = search.total #get total count of search + + def showbug @open_source_project = OpenSourceProject.find(params[:id]) @@ -450,19 +462,19 @@ class OpenSourceProjectsController < ApplicationController redirect_to master_apply_open_source_project_path end - - + + #echarts表的ajax函数 def ajax name = params[:name] osp = OpenSourceProject.find(:first, :select => 'id', :conditions => ['name=?',name]) id = osp.id - + respond_to do |format| format.json {render :json => {:osp_id => id}} end end - + private def require_master @@ -475,7 +487,7 @@ class OpenSourceProjectsController < ApplicationController rescue ActiveRecord::RecordNotFound render_404 unless @open_source_project.present? end - + #分页查找项目关联的不同类型帖子 def find_relative_topics(memo_type, sort_by) #approach 1 @@ -491,36 +503,36 @@ class OpenSourceProjectsController < ApplicationController @topics_pages = Paginator.new @topics_count, per_page_option, params['page'] @relative_memo_ids=RelativeMemoToOpenSourceProject.where(osp_id: @open_source_project.id, memo_type: memo_type).order(sort_by).offset(@topics_pages.offset).limit(@topics_pages.per_page) end - + #get memos' info by memo_type def get_memos_info_by_type memo_type, osp_id, rmtosp_name, size - memos = RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.* FROM #{rmtosp_name} mt" + + memos = RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.* FROM #{rmtosp_name} mt" + " INNER JOIN relative_memos r ON mt.relative_memo_id = r.id" + " WHERE mt.osp_id = #{osp_id} AND r.memo_type = 'news' ORDER BY r.created_time DESC LIMIT #{size} "] end - + #get memos' count by memo_type def get_memos_count_by_type memo_type, osp_id, rmtosp_name, size - memos_count = (RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.id FROM #{rmtosp_name} mt" + + memos_count = (RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.id FROM #{rmtosp_name} mt" + " INNER JOIN relative_memos r ON mt.relative_memo_id = r.id" + " WHERE mt.osp_id = #{osp_id} AND r.memo_type = #{memo_type}"]).count - return memos_count + return memos_count end # find relative_topics of osp order by def find_osp_relative_topics size = 5 - #rmtosp_name = RelativeMemoToOpenSourceProject.getTableName @open_source_project.id + #rmtosp_name = RelativeMemoToOpenSourceProject.getTableName @open_source_project.id RelativeMemoToOpenSourceProject.set_table_name RelativeMemoToOpenSourceProject.getTableName @open_source_project.id #@relative_memo_ids=RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id).order('match_weight DESC').limit(10)#.pluck(:relative_memo_id) - + #@news = get_memos_info_by_type "'news'", @open_source_project.id, rmtosp_name, size #@news_count = get_memos_count_by_type "'news'", @open_source_project.id, rmtosp_name, size - # @news = RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.* FROM #{rmtosp_name} mt" + + # @news = RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.* FROM #{rmtosp_name} mt" + # " INNER JOIN relative_memos r ON mt.relative_memo_id = r.id" + # " WHERE mt.osp_id = #{@open_source_project.id} AND r.type = 'news' ORDER BY r.created_time DESC LIMIT #{size} "] - # @news_count = (RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.id FROM #{rmtosp_name} mt" + + # @news_count = (RelativeMemoToOpenSourceProject.find_by_sql ["SELECT r.id FROM #{rmtosp_name} mt" + # " INNER JOIN relative_memos r ON mt.relative_memo_id = r.id" + # " WHERE mt.osp_id = #{@open_source_project.id} AND r.type = 'news'"]).count @news = RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id, memo_type: 'news').order('created_time DESC').limit(size) @@ -528,12 +540,12 @@ class OpenSourceProjectsController < ApplicationController #@blogs = get_memos_info_by_type "'blog'", @open_source_project.id, rmtosp_name, size #@blogs_count = get_memos_count_by_type "'blog'", @open_source_project.id, rmtosp_name, size - + #@posts = get_memos_info_by_type "'topic'", @open_source_project.id, rmtosp_name, size #@posts_count = get_memos_count_by_type "'topic'", @open_source_project.id, rmtosp_name, size @blogs = RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id, memo_type: 'blog').order('created_time DESC').limit(size) @blogs_count = RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id, memo_type: 'blog').count -# +# @posts = RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id, memo_type: 'topic').order('created_time DESC').limit(size) @posts_count = RelativeMemoToOpenSourceProject.includes(:relative_memos).where(osp_id: @open_source_project.id, memo_type: 'topic').count @@ -541,10 +553,10 @@ class OpenSourceProjectsController < ApplicationController #@tech_trend_topics_ids=RelativeMemoToOpenSourceProject.where(osp_id: @open_source_project.id, memo_type: 'news').order('created_time DESC, match_weight DESC, review_num DESC').limit(7) #.pluck(:relative_memo_id) #@tech_trend_topics=RelativeMemo.where(id: @tech_trend_topics_ids).order('review_num DESC') end - + #用于在每个项目详情页面上显示对应职位工资信息表而定义的函数(查询数据库中的数据) def getHighcharts - + end @@ -557,26 +569,26 @@ class OpenSourceProjectsController < ApplicationController idArray = [] desArray=[] tmp_result = [] - + # 用于存储相似项目的id relativeIdList = [] unrelativeIdList = [] - + if flag == "simility" # 首先查看一下simility_recommend_up_down中有没有排名在前size位的 且up_down_value值大于0的数据 similityList = SimilityRecommendUpDown.select("relative_osp_id").where("osp_id=? and up_down_value > ?", id,0).order("up_down_value desc, last_up_time desc").limit(size) # 查看up_down_value值<0的记录 去除掉这些推荐记录 unsimilityList = SimilityRecommendUpDown.select("relative_osp_id").where("osp_id=? and up_down_value < ?", id,0) # 将similityList结果中relative_id存储到relativeIdList数组中 - + similityList.each do |s| relativeIdList << s.relative_osp_id.to_i end - + unsimilityList.each do |s| unrelativeIdList << s.relative_osp_id.to_i end - + # 表示推荐数量不够5个 应该再从simility_recommend表中取出size-similityList.length个相似推荐结果 size2 = size - similityList.length if size2 == 0 @@ -605,13 +617,13 @@ class OpenSourceProjectsController < ApplicationController end end #do结尾 end - + #根据relativeIdList构造tmp_result relativeIdList.each do |relative_id| result = SimilityRecommend.where("osp_id=? and relative_osp_id = ?", id, relative_id).limit(1) tmp_result << result[0] end - + elsif flag == "relation" tmp_result = RelationRecommend.select("relative_osp_id , weight").where("osp_id=? and weight != ?",id,1.0).limit(size) end @@ -671,7 +683,7 @@ class OpenSourceProjectsController < ApplicationController jobRequirement_count = JobRequirement.find_by_sql("select count(*) as num from job_requirements where id in (" + str_in + ") and year(created_time)=" + i.to_s + " and month(created_time)=" + j.to_s) count = jobRequirement_count[0].num.to_i countArray << count - + #薪资情况 highcharts_avg_min_max_salary = Highchart.find(:first, :select => 'avg(min_salary) as avg_min_salary, avg(max_salary) as avg_max_salary', :conditions => ['year(jr.created_time)=? and month(jr.created_time)=? and hi.osp_id=?',i.to_s,j.to_s,id.to_s], :joins => 'as hi inner join job_requirements as jr on hi.relative_memo_id=jr.id') @@ -713,17 +725,17 @@ class OpenSourceProjectsController < ApplicationController end return dataArray,data2Array,data3Array end - + #定义第二个图的函数(根据项目获取每个地区职位需求和薪资情况)参数为osp对应的id def chart2(id) dataArray = [] cityArray = [] countArray_city = [] countSum = 0 - - rangeArray = []#第二个图表的返回值 + + rangeArray = []#第二个图表的返回值 cityResultArray = [] - highcharts_city_count = Highchart.find(:all, :select => 'city,count(*) as num', :conditions => ['osp_id=? and city is not null',id], + highcharts_city_count = Highchart.find(:all, :select => 'city,count(*) as num', :conditions => ['osp_id=? and city is not null',id], :group => 'city', :order => 'num desc') if highcharts_city_count.length == 0 return nil @@ -735,7 +747,7 @@ class OpenSourceProjectsController < ApplicationController cityArray << city countArray_city << count end - + #计算所有百分比大于等于5%的 sumRate = 0.0 for i in (0..cityArray.length - 1) @@ -746,7 +758,7 @@ class OpenSourceProjectsController < ApplicationController sumRate = sumRate + rate data = [city,rate] dataArray << data - + #第二张图表 cityResultArray << city highchart_avg_min_max_salary = Highchart.find(:first,:select => 'avg(min_salary) as avg_min_salary, avg(max_salary) as avg_max_salary', :conditions => ['city=? and osp_id=?',city,id]) @@ -760,7 +772,7 @@ class OpenSourceProjectsController < ApplicationController otherRate = 100 - sumRate data = ['其他',otherRate] dataArray << data - + #第二张图表 str_in = changeStrArrayToStringSplitByComma(cityResultArray) if str_in == "" @@ -775,7 +787,7 @@ class OpenSourceProjectsController < ApplicationController end return dataArray,cityResultArray,rangeArray end - + #定义当前项目工作经验需求对比分析 饼图 def chart5(id) dataArray = [] @@ -783,7 +795,7 @@ class OpenSourceProjectsController < ApplicationController countArray = [] rangeArray = []#记录平均最小、最大工资范围 #查找experience字段 - highcharts_experience_count = Highchart.find(:all, :select => 'experience,count(*) as num', :conditions => ['osp_id=? and experience!=?',id,''], + highcharts_experience_count = Highchart.find(:all, :select => 'experience,count(*) as num', :conditions => ['osp_id=? and experience!=?',id,''], :group => 'experience', :order => 'num desc') if highcharts_experience_count.length == 0 dataArray = nil @@ -803,10 +815,10 @@ class OpenSourceProjectsController < ApplicationController data = [experience, rate] dataArray << data end - + #查找当前项目和experience对应的avg_salary_min/max experienceArray.each do |e| - + highchart_avg_min_max_salary = Highchart.find(:first, :select => 'avg(min_salary) as avg_min_salary, avg(max_salary) as avg_max_salary', :conditions => ['osp_id=? and experience=?',id,e]) avg_min_salary = highchart_avg_min_max_salary.avg_min_salary.to_i avg_max_salary = highchart_avg_min_max_salary.avg_max_salary.to_i @@ -816,15 +828,15 @@ class OpenSourceProjectsController < ApplicationController end return dataArray,experienceArray,rangeArray end - + #绘制当前开源软件与相似开源软件职位需求数量对比柱状图 def chart7(simility_osp_array,id) - + jobRequirements_osp = [] #记录用于显示的6个开源软件对象 jobRequirements_count = [] jobRequirements_drilldown_city = [] jobRequirements_drilldown_count = [] - + #查找当前id对应的项目 osp_current = OpenSourceProject.find(id) #找相似软件中最热的5个软件 @@ -838,7 +850,7 @@ class OpenSourceProjectsController < ApplicationController jobRequirements_count << countItems_simility #将相似软件的结果存储到结果数组中 jobRequirements_osp << osp end - + #查找每个软件对应6个城市的职位需求情况-drilldown hotOsps.each do |osp| #首先查找当前软件的热门城市和对应的职位需求数量 @@ -846,19 +858,19 @@ class OpenSourceProjectsController < ApplicationController jobRequirements_drilldown_city << jobRequirements_drilldown_city_tmp jobRequirements_drilldown_count << jobRequirements_drilldown_count_tmp end - + return jobRequirements_osp,jobRequirements_count,jobRequirements_drilldown_city,jobRequirements_drilldown_count - + end - + #绘制当前开源软件与相似开源软件薪资对比柱状图 def chart8(simility_osp_array,id) - + salary_osp = [] #记录用于显示的6个开源软件对象 salary_value = [] salary_drilldown_city = [] salary_drilldown_value = [] - + #查找当前id对应的项目 osp_current = OpenSourceProject.find(id) #找相似软件中最热的5个软件 @@ -874,7 +886,7 @@ class OpenSourceProjectsController < ApplicationController salary_value << avg_salary #将相似软件的结果存储到结果数组中 salary_osp << osp end - + #查找每个软件对应6个城市的职位需求情况-drilldown hotOsps.each do |osp| #首先查找当前软件的热门城市和对应的薪资情况 @@ -882,12 +894,12 @@ class OpenSourceProjectsController < ApplicationController salary_drilldown_city << salary_drilldown_city_tmp salary_drilldown_value << salary_drilldown_value_tmp end - + return salary_osp,salary_value,salary_drilldown_city,salary_drilldown_value - + end - - + + #将查询结果拼成(1,2,3)的形式 def changeResultsToStringSplitByComma(array) result = "" @@ -902,7 +914,7 @@ class OpenSourceProjectsController < ApplicationController end return result end - + #将字符串数组变成1,2,3的形式 def changeStrArrayToStringSplitByComma(array) result = '' @@ -917,14 +929,14 @@ class OpenSourceProjectsController < ApplicationController end return result end - + #对datetime类型日期分离 年、月、日 def splitDate(time) timeArray = time.to_s.split(' ') date = timeArray[0].split('-') return date[0],date[1],date[2] end - + #按年月时间将统计数据合并 def mergeByYearAndMonth(yearArray, monthArray, countArray) i = 0 @@ -942,10 +954,10 @@ class OpenSourceProjectsController < ApplicationController end i = i + 1 end - + return yearArray,monthArray,countArray end - + #计算数组中所有值的和 def sum(array) result = 0 @@ -954,7 +966,7 @@ class OpenSourceProjectsController < ApplicationController end return result end - + #找到软件数组中对应的n个热门软件 def hottestN_osp(array, n) result = [] #用来存储最热门的n个软件 @@ -985,7 +997,7 @@ class OpenSourceProjectsController < ApplicationController end return result end - + #查找开源软件对应的热门的N个城市 和对应的职位需求数量 def hottestN_cityAndCount_by_osp(osp,n) city = [] #记录排名靠前的n个 @@ -1018,8 +1030,8 @@ class OpenSourceProjectsController < ApplicationController end return city,count end # hottestN_cityAndCount_by_osp函数结尾 - - + + #查找开源软件对应的热门的N个城市 和对应的平均薪资 def hottestN_cityAndSalary_by_osp(osp,n) city = [] #记录排名靠前的n个 @@ -1051,7 +1063,7 @@ class OpenSourceProjectsController < ApplicationController city = city[0,n] count = count[0,n] end - + #根据city数组中的数据查找对应的avg_salary city.each do |c| highchart_avg_salary = Highchart.find(:first, :select => "avg(max_salary) as max, avg(min_salary) as min", :conditions => ['osp_id=? and city=?',osp.id,c]) @@ -1060,7 +1072,7 @@ class OpenSourceProjectsController < ApplicationController avg_salary_tmp = (avg_max_salary+avg_min_salary)/2 avg_salary << avg_salary_tmp end - + return city,avg_salary end # hottestN_cityAndSalary_by_osp函数结尾 diff --git a/trustie2/app/controllers/relative_memos_controller.rb b/trustie2/app/controllers/relative_memos_controller.rb index f569474bf..4ac2e2fce 100644 --- a/trustie2/app/controllers/relative_memos_controller.rb +++ b/trustie2/app/controllers/relative_memos_controller.rb @@ -153,25 +153,79 @@ class RelativeMemosController < ApplicationController if "".eql?(params[:name]) || params[:name].nil? params[:name] = " " end + + #请求服务 + require 'net/http' + require 'json' + require 'logger' + logger = Logger.new(STDOUT) #输出到控制台 per_page_option=10 @sort_tag = params[:sort_field].to_s - search = RelativeMemo.search do - fulltext params[:name].downcase do - fields(:title) - fields(:tags) - boost_fields :title => 3.0 - boost_fields :tags => 2.0 - #phrase_fields :title => 2.0 - end - if "review_num DESC".eql?(params[:sort_field].to_s) - order_by(:review_num, :desc) - elsif "review_num ASC".eql?(params[:sort_field].to_s) - order_by(:review_num, :asc) - elsif "created_time DESC".eql?(params[:sort_field].to_s) - order_by(:created_time, :desc) - elsif "created_time ASC".eql?(params[:sort_field].to_s) - order_by(:created_time, :asc) - end + @name = params[:name].downcase + + #access java webservice by zyr + oldverb = $VERBOSE; $VERBOSE = nil + require 'iconv' + $VERBOSE = oldverb + + require 'rubygems' + require 'soap/wsdlDriver' + + a_URL = "http://localhost:8083/testWebService_war/services/memoquery?wsdl" + soap_client = SOAP::WSDLDriverFactory.new(a_URL).create_rpc_driver + + result = soap_client.query(@name) + #memo_ids = [58,79,98,2207482,2207571,2207591,2207657,2207710,2208867,2209348,2209667,2209694,2210046] + #logger.info(result) + return_memos = []# + + result.each do |id| + id = id.to_i + memo = RelativeMemo.find_by_id(id) + return_memos << memo + end + + @topics_count = return_memos.length.to_i + @topics_pages = Paginator.new @topics_count, per_page_option, params[:page] + current_page = @topics_pages.page + @topics = return_memos[(current_page-1)*per_page_option,per_page_option] + + respond_to do |format| + format.html { render :layout => "base" + } + end + + + end + + # + # memo_ids = [58,79,98,2207482,2207571,2207591,2207657,2207710,2208867,2209348,2209667,2209694,2210046] + # relative_memos = [] + # # 查询出id对应的项目 + # memo_ids.each do |id| + # id = id.to_i + # memo = RelativeMemo.find_by_id(id) + # logger.info(memo.title) + # + # relative_memos << memo + # end + #search = RelativeMemo.search do + # fulltext params[:name].downcase do + # fields(:title) + # fields(:tags) + # boost_fields :title => 3.0 + # boost_fields :tags => 2.0 + # #phrase_fields :title => 2.0 + # end + # if "review_num DESC".eql?(params[:sort_field].to_s) + # order_by(:review_num, :desc) + # elsif "review_num ASC".eql?(params[:sort_field].to_s) + # order_by(:review_num, :asc) + # elsif "created_time DESC".eql?(params[:sort_field].to_s) + # order_by(:created_time, :desc) + # elsif "created_time ASC".eql?(params[:sort_field].to_s) + # order_by(:created_time, :asc) + # end #order_by(:created_time, :desc) #with(:created_time, Date.new(year,01,01)..Date.new(year+1,01,01)) @@ -180,17 +234,9 @@ class RelativeMemosController < ApplicationController # # with :parent_id, nil # with :source, params[:name].downcase # end - paginate :page => params[:page], :per_page => per_page_option - end - @topics = search.results - - @topics_count = search.total - @topics_pages = Paginator.new @topics_count, per_page_option, params[:page] - respond_to do |format| - format.html { render :layout => "base" - } - end - end + #paginate :page => params[:page], :per_page => per_page_option + #end + #@topics = search.results private diff --git a/trustie2/app/views/.DS_Store b/trustie2/app/views/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c5a2b78b0be9ed4fc88edd2542548a7af5f2ab0f GIT binary patch literal 6148 zcmeH~O$x$5422WzLU7Zi%h`AUZ!n0SpchaOx{(V0t>@^zWP)IIEg~9^=K zBBJZtVI|Uv$P8{OOA8}Y&JhRx4X|sK7L)2aQ(s zF~sWL4oz_`hnA|fT{MOdjVG&3F)*#|q6rC1vkLuHpsU4g1L!&>UK-q5|WOfMZ}Ffv*yH E0DY_y!T + <% html_title('项目搜索') -%>