Ai
1 Star 0 Fork 0

鹏程/studygolang

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
view_source.go 1.79 KB
一键复制 编辑 原始数据 按行查看 历史
// Copyright 2017 The StudyGolang Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// http://studygolang.com
// Author:polaris polaris@studygolang.com
package logic
import (
"model"
"net/http"
"strings"
. "db"
"github.com/polaris1119/logger"
"golang.org/x/net/context"
)
type ViewSourceLogic struct{}
var DefaultViewSource = ViewSourceLogic{}
// Record 记录浏览来源
func (ViewSourceLogic) Record(req *http.Request, objtype, objid int) {
referer := req.Referer()
if referer == "" || strings.Contains(referer, WebsiteSetting.Domain) {
return
}
viewSource := &model.ViewSource{}
_, err := MasterDB.Where("objid=? AND objtype=?", objid, objtype).Get(viewSource)
if err != nil {
logger.Errorln("ViewSourceLogic Record find error:", err)
return
}
if viewSource.Id == 0 {
viewSource.Objid = objid
viewSource.Objtype = objtype
_, err = MasterDB.Insert(viewSource)
if err != nil {
logger.Errorln("ViewSourceLogic Record insert error:", err)
return
}
}
field := "other"
referer = strings.ToLower(referer)
ses := []string{"google", "baidu", "bing", "sogou", "so"}
for _, se := range ses {
if strings.Contains(referer, se+".") {
field = se
break
}
}
_, err = MasterDB.Id(viewSource.Id).Incr(field, 1).Update(new(model.ViewSource))
if err != nil {
logger.Errorln("ViewSourceLogic Record update error:", err)
return
}
}
// FindOne 获得浏览来源
func (ViewSourceLogic) FindOne(ctx context.Context, objid, objtype int) *model.ViewSource {
objLog := GetLogger(ctx)
viewSource := &model.ViewSource{}
_, err := MasterDB.Where("objid=? AND objtype=?", objid, objtype).Get(viewSource)
if err != nil {
objLog.Errorln("ViewSourceLogic FindOne error:", err)
}
return viewSource
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/barry_zpc/studygolang.git
git@gitee.com:barry_zpc/studygolang.git
barry_zpc
studygolang
studygolang
master

搜索帮助