|
|
|
package models
|
|
|
|
|
|
|
|
type Visitor struct {
|
|
|
|
Model
|
|
|
|
Name string `json:"name"`
|
|
|
|
Avator string `json:"avator"`
|
|
|
|
SourceIp string `json:"source_ip"`
|
|
|
|
ToId string `json:"to_id"`
|
|
|
|
VisitorId string `json:"visitor_id"`
|
|
|
|
Status uint `json:"status"`
|
|
|
|
Refer string `json:"refer"`
|
|
|
|
City string `json:"city"`
|
|
|
|
ClientIp string `json:"client_ip"`
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateVisitor(name string, avator string, sourceIp string, toId string, visitorId string, refer string, city string, clientIp string) {
|
|
|
|
old := FindVisitorByVistorId(visitorId)
|
|
|
|
if old.Name != "" {
|
|
|
|
//更新状态上线
|
|
|
|
UpdateVisitor(visitorId, 1, clientIp, sourceIp, refer)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
v := &Visitor{
|
|
|
|
Name: name,
|
|
|
|
Avator: avator,
|
|
|
|
SourceIp: sourceIp,
|
|
|
|
ToId: toId,
|
|
|
|
VisitorId: visitorId,
|
|
|
|
Status: 1,
|
|
|
|
Refer: refer,
|
|
|
|
City: city,
|
|
|
|
ClientIp: clientIp,
|
|
|
|
}
|
|
|
|
DB.Create(v)
|
|
|
|
}
|
|
|
|
func FindVisitorByVistorId(visitorId string) Visitor {
|
|
|
|
var v Visitor
|
|
|
|
DB.Where("visitor_id = ?", visitorId).First(&v)
|
|
|
|
return v
|
|
|
|
}
|
|
|
|
func FindVisitors(page uint, pagesize uint) []Visitor {
|
|
|
|
offset := (page - 1) * pagesize
|
|
|
|
if offset < 0 {
|
|
|
|
offset = 0
|
|
|
|
}
|
|
|
|
var visitors []Visitor
|
|
|
|
DB.Offset(offset).Limit(pagesize).Order("status desc, updated_at desc").Find(&visitors)
|
|
|
|
return visitors
|
|
|
|
}
|
|
|
|
func FindVisitorsByKefuId(page uint, pagesize uint, kefuId string) []Visitor {
|
|
|
|
offset := (page - 1) * pagesize
|
|
|
|
if offset < 0 {
|
|
|
|
offset = 0
|
|
|
|
}
|
|
|
|
var visitors []Visitor
|
|
|
|
DB.Where("to_id=?", kefuId).Offset(offset).Limit(pagesize).Order("status desc, updated_at desc").Find(&visitors)
|
|
|
|
return visitors
|
|
|
|
}
|
|
|
|
func FindVisitorsOnline() []Visitor {
|
|
|
|
var visitors []Visitor
|
|
|
|
DB.Where("status = ?", 1).Find(&visitors)
|
|
|
|
return visitors
|
|
|
|
}
|
|
|
|
func UpdateVisitorStatus(visitorId string, status uint) {
|
|
|
|
visitor := Visitor{}
|
|
|
|
DB.Model(&visitor).Where("visitor_id = ?", visitorId).Update("status", status)
|
|
|
|
}
|
|
|
|
func UpdateVisitor(visitorId string, status uint, clientIp string, sourceIp string, refer string) {
|
|
|
|
visitor := &Visitor{
|
|
|
|
Status: status,
|
|
|
|
ClientIp: clientIp,
|
|
|
|
SourceIp: sourceIp,
|
|
|
|
Refer: refer,
|
|
|
|
}
|
|
|
|
DB.Model(visitor).Where("visitor_id = ?", visitorId).Update(visitor)
|
|
|
|
}
|
|
|
|
|
|
|
|
//查询条数
|
|
|
|
func CountVisitors() uint {
|
|
|
|
var count uint
|
|
|
|
DB.Model(&Visitor{}).Count(&count)
|
|
|
|
return count
|
|
|
|
}
|
|
|
|
|
|
|
|
//查询条数
|
|
|
|
func CountVisitorsByKefuId(kefuId string) uint {
|
|
|
|
var count uint
|
|
|
|
DB.Model(&Visitor{}).Where("to_id=?", kefuId).Count(&count)
|
|
|
|
return count
|
|
|
|
}
|