add trustie_user_id to session; set session to 60 minutes; change log to database
This commit is contained in:
parent
3631f4178b
commit
bf80c073a9
|
@ -7,7 +7,7 @@ class UserTracesController < ApplicationController
|
|||
keyword = params[:keyword]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["keyword" => keyword]
|
||||
writeLog(logger_search,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_search,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -18,7 +18,7 @@ class UserTracesController < ApplicationController
|
|||
keyword = params[:keyword]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["keyword" => keyword]
|
||||
writeLog(logger_search,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_search,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -32,7 +32,7 @@ class UserTracesController < ApplicationController
|
|||
keyword = params[:keyword]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["keyword" => keyword, "page" => page, "rank" => rank, "osp_id" => id]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -45,7 +45,7 @@ class UserTracesController < ApplicationController
|
|||
id = params[:id]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["page" => page, "rank" => rank, "osp_id" => id]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -56,8 +56,7 @@ class UserTracesController < ApplicationController
|
|||
osp_id = params[:osp_id]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => osp_id]
|
||||
session_id = request.session_options[:id] #由于onclick事件在前段js页面 因此无法获取session_id
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -71,7 +70,7 @@ class UserTracesController < ApplicationController
|
|||
osp_id = params[:osp_id]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => osp_id, "source" => source, "url" => url, "rank" => rank]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -84,7 +83,7 @@ class UserTracesController < ApplicationController
|
|||
rank = params[:rank]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -111,7 +110,7 @@ class UserTracesController < ApplicationController
|
|||
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -138,7 +137,7 @@ class UserTracesController < ApplicationController
|
|||
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_similar" => osp_id_similar]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -151,7 +150,7 @@ class UserTracesController < ApplicationController
|
|||
rank = params[:rank]
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id_former" => osp_id_former,"rank" => rank, "osp_id_related" => osp_id_related]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -161,7 +160,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_project_list"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash.new
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -171,7 +170,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_more_tags"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => params[:osp_id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -181,7 +180,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_tag" #还可能是帖子的标签
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => params[:osp_id], "rank" => params[:rank], "tag_name" => params[:tag_name]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -191,7 +190,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_knowledge_after_search"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["keyword" => params[:keyword], "sort" => params[:sort], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -201,7 +200,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_knowledge_in_project_detail"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -211,7 +210,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_more_knowledge_in_project_detail"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:type]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -221,7 +220,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_knowledge_in_project_detail_after_click_more"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["osp_id" => params[:osp_id], "memo_type" => params[:memo_type], "page" => params[:page], "rank" => params[:rank], "knowledge_id" => params[:memo_id], "sort_by" => params[:sort]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -235,7 +234,7 @@ class UserTracesController < ApplicationController
|
|||
keyword = 'nil'
|
||||
end
|
||||
parameter = Hash["keyword" => keyword, "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -245,7 +244,7 @@ class UserTracesController < ApplicationController
|
|||
type = "click_project_img_after_search"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["keyword" => params[:keyword], "page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
|
@ -255,22 +254,54 @@ class UserTracesController < ApplicationController
|
|||
type = "click_project_img_in_project_list"
|
||||
logger_search,logger_click,session_id,ip,host,time = generateHead
|
||||
parameter = Hash["page" => params[:page], "rank" => params[:rank], "osp_id" => params[:osp_id]]
|
||||
writeLog(logger_click,type,session_id,ip,host,time,parameter)
|
||||
writeDatabase(logger_click,type,session_id,ip,host,time,parameter)
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
end
|
||||
|
||||
# 定义函数 将trustie_user_id存储到session中
|
||||
def add_trustie_user_id
|
||||
# 获取参数
|
||||
trustie_user_id = params[:trustie_user_id]
|
||||
if trustie_user_id != nil
|
||||
# 判断长度是否合乎规范
|
||||
if trustie_user_id.length <= 11
|
||||
# 表示可能是int型数据
|
||||
# 看一下id是否符合规范 是否是真正跳转过来的
|
||||
pattern = /\D+/ # 表示字符串中有非数字的字符
|
||||
index = (trustie_user_id =~ pattern)
|
||||
if index == nil
|
||||
# 表示合法的trustie_user_id
|
||||
session[:trustie_user_id] = trustie_user_id.to_i
|
||||
else
|
||||
session[:trustie_user_id] = nil # 表示trustie_user_id中有除了数字之外的字符
|
||||
end
|
||||
else
|
||||
session[:trustie_user_id] = nil # 表示长度不合法
|
||||
end
|
||||
else
|
||||
session[:trustie_user_id] = nil # 表示为空
|
||||
end
|
||||
respond_to do |format|
|
||||
format.json {render :json => {}}
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def generateHead
|
||||
#创建一个新的日志
|
||||
filename = File.join(Rails.root, 'log', 'user_trace_search.log')
|
||||
logger_search = Logger.new(filename)
|
||||
# #创建一个新的日志
|
||||
# filename = File.join(Rails.root, 'log', 'user_trace_search.log')
|
||||
# logger_search = Logger.new(filename)
|
||||
#
|
||||
# #创建用户click的日志
|
||||
# filename = File.join(Rails.root, 'log', 'user_trace_click.log')
|
||||
# logger_click = Logger.new(filename)
|
||||
|
||||
#创建用户click的日志
|
||||
filename = File.join(Rails.root, 'log', 'user_trace_click.log')
|
||||
logger_click = Logger.new(filename)
|
||||
logger_search = nil
|
||||
logger_click = nil
|
||||
|
||||
session[:session_id]
|
||||
session_id = request.session_options[:id]
|
||||
|
||||
if session_id == nil
|
||||
|
@ -308,6 +339,34 @@ class UserTracesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
# 张迅晖 将用户行为监控存储到数据库中
|
||||
def writeDatabase(logger,type,session_id,ip,host,time,parameter) # logger为了和writeLog保持一致的参数 在该函数中没有实际作用
|
||||
# puts "~~~~session_id"
|
||||
if type != nil && session_id != nil && ip != nil && host != nil && session_id != 'null' && session_id != ""
|
||||
# 读取session中trustie_user_id
|
||||
trustie_user_id = session[:trustie_user_id]
|
||||
# 判断trustie_user_id是否为nil 如果为nil表示不是trustie跳转过来的用户 如果不是nil表示是trustie链接跳转过来的用户
|
||||
params = "" # 用于存储参数
|
||||
keys_in_parameter = parameter.keys
|
||||
keys_in_parameter.each do |k|
|
||||
value = parameter[k]
|
||||
params = params + "[" + k + "=>" + value.to_s + "]"
|
||||
end
|
||||
params = params.strip # 获取到了存储的参数
|
||||
|
||||
# 将结果存储到数据库中
|
||||
userAction = UserAction.new
|
||||
userAction.trustie_user_id = trustie_user_id
|
||||
userAction.session_id = session_id
|
||||
userAction.type = type
|
||||
userAction.ip = ip
|
||||
userAction.host = host
|
||||
userAction.time = time
|
||||
userAction.params = params
|
||||
userAction.save
|
||||
end
|
||||
end
|
||||
|
||||
def getCurrentTime
|
||||
time = Time.new.localtime
|
||||
year = time.year.to_s
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class HotWord < ActiveRecord::Base
|
||||
attr_accessible :name, :osp_id, :weight
|
||||
belongs_to :open_source_project, :foreign_key => "osp_id"
|
||||
end
|
||||
end
|
|
@ -0,0 +1,3 @@
|
|||
class UserAction < ActiveRecord::Base
|
||||
attr_accessible :id, :trustie_user_id, :session_id, :type, :ip, :host, :time, :params
|
||||
end
|
|
@ -93,6 +93,22 @@
|
|||
<div style="border-top:solid 1px #C6E9F1;width:940px;margin-left:auto;margin-right:auto;margin-bottom: 0px;margin-top: -10px;"></div>
|
||||
<div style="clear:left;"></div>
|
||||
|
||||
|
||||
<!-- ajax user trace zhangxunhui begin -->
|
||||
<script type="text/javascript">
|
||||
function user_trace_search_project_in_welcome(session_id){
|
||||
content = $('.projects-search-text-field').val(); //获取搜索的内容
|
||||
content = encodeURIComponent(content);
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: '/user_traces/search_project?keyword=' + content + "&session_id=" + session_id,
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<!-- ajax user trace zhangxunhui end -->
|
||||
|
||||
<script type="text/javascript">
|
||||
function addSlipMenu() {
|
||||
var loggedas = $('#loggedas ul li:first')
|
||||
|
@ -113,32 +129,4 @@
|
|||
$('.sub_menu').find("a").attr('target', '_blank');
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<!-- ajax user trace zhangxunhui begin -->
|
||||
<script type="text/javascript">
|
||||
function user_trace_search_project_in_welcome(session_id){
|
||||
content = $('.projects-search-text-field').val(); //获取搜索的内容
|
||||
content = encodeURIComponent(content);
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: '/user_traces/search_project?keyword=' + content + "&session_id=" + session_id,
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<!-- ajax user trace zhangxunhui end -->
|
||||
|
||||
<!-- ajax user trace zhangxunhui begin -->
|
||||
<script type="text/javascript">
|
||||
function user_trace_click_project_list(session_id){
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: '/user_traces/click_project_list?session_id=' + session_id,
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<!-- ajax user trace zhangxunhui end -->
|
||||
</script>
|
|
@ -40,5 +40,59 @@
|
|||
</div>
|
||||
</div>
|
||||
<%= call_hook :view_layouts_base_body_bottom %>
|
||||
|
||||
<!-- ajax user trace zhangxunhui begin -->
|
||||
<script type="text/javascript">
|
||||
function user_trace_click_project_list(session_id){
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: '/user_traces/click_project_list?session_id=' + session_id,
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<!-- ajax user trace zhangxunhui end -->
|
||||
|
||||
<!--update-- get trustie user id 页面加载的时候运行该函数 -->
|
||||
<script type="text/javascript">
|
||||
function getTrustieUserId(){
|
||||
/* 获取url中的参数 */
|
||||
var Request = new Object();
|
||||
Request = GetRequest();
|
||||
var trustie_user_id;
|
||||
trustie_user_id = Request["trustie_user_id"];
|
||||
if (trustie_user_id == null){
|
||||
/* 表示不是trustie页面跳转 不进行任何操作 */
|
||||
}else{
|
||||
/* 将trustie_user_id存入session 要用ajax写入session信息 */
|
||||
$.ajax({
|
||||
type: "post",
|
||||
contentType: "application/json; charset=utf-8",
|
||||
url: '/user_traces/add_trustie_user_id?trustie_user_id=' + trustie_user_id,
|
||||
dataType: "json"
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
window.onload = getTrustieUserId;//页面加载的时候运行该函数
|
||||
</script>
|
||||
<!--update-- get trustie user id -->
|
||||
<Script language="javascript">
|
||||
function GetRequest() {
|
||||
var url = location.search; //获取url中"?"符后的字串
|
||||
var theRequest = new Object();
|
||||
if (url.indexOf("?") != -1) {
|
||||
var str = url.substr(1);
|
||||
strs = str.split("&");
|
||||
for(var i = 0; i < strs.length; i ++) {
|
||||
theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
|
||||
}
|
||||
}
|
||||
return theRequest;
|
||||
}
|
||||
</script>
|
||||
<!--update-- get trustie user id -->
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -52,7 +52,7 @@ module RedmineApp
|
|||
# Do not include all helpers
|
||||
config.action_controller.include_all_helpers = false
|
||||
|
||||
config.session_store :cookie_store, :key => '_redmine_session', :expire_after => 24.hours
|
||||
config.session_store :cookie_store, :key => '_redmine_session', :expire_after => 60.minutes
|
||||
|
||||
if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||
instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb'))
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
class CreateUserActions < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :user_actions do |t|
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html
|
||||
|
||||
# This model initially had no columns defined. If you add columns to the
|
||||
# model remove the '{}' from the fixture names and add the columns immediately
|
||||
# below each fixture, per the syntax in the comments below
|
||||
#
|
||||
one: {}
|
||||
# column: value
|
||||
#
|
||||
two: {}
|
||||
# column: value
|
|
@ -0,0 +1,7 @@
|
|||
require 'test_helper'
|
||||
|
||||
class UserActionTest < ActiveSupport::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
Loading…
Reference in New Issue