diff --git a/config/go-fly.sql b/config/go-fly.sql index eed45fc..3d87dbe 100644 --- a/config/go-fly.sql +++ b/config/go-fly.sql @@ -34,7 +34,8 @@ CREATE TABLE `visitor` ( `extra` varchar(2048) NOT NULL DEFAULT '', PRIMARY KEY (`id`), UNIQUE KEY `visitor_id` (`visitor_id`), - KEY `to_id` (`to_id`) + KEY `to_id` (`to_id`), + KEY `idx_update` (`updated_at`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8| DROP TABLE IF EXISTS `message`| diff --git a/models/visitors.go b/models/visitors.go index e001d1a..8288510 100644 --- a/models/visitors.go +++ b/models/visitors.go @@ -1,6 +1,8 @@ package models -import "time" +import ( + "time" +) type Visitor struct { Model @@ -54,11 +56,13 @@ func FindVisitors(page uint, pagesize uint) []Visitor { } func FindVisitorsByKefuId(page uint, pagesize uint, kefuId string) []Visitor { offset := (page - 1) * pagesize - if offset < 0 { + 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) + //sql := fmt.Sprintf("select * from visitor where id>=(select id from visitor where to_id='%s' order by updated_at desc limit %d,1) and to_id='%s' order by updated_at desc limit %d ", kefuId, offset, kefuId, pagesize) + //DB.Raw(sql).Scan(&visitors) + DB.Where("to_id=?", kefuId).Offset(offset).Limit(pagesize).Order("updated_at desc").Find(&visitors) return visitors } func FindVisitorsOnline() []Visitor {