diff --git a/controller/visitor.go b/controller/visitor.go index 944cde7..959dc4c 100644 --- a/controller/visitor.go +++ b/controller/visitor.go @@ -285,9 +285,12 @@ func GetKefusVisitorOnlines(c *gin.Context) { kefuName, _ := c.Get("kefu_name") users := make([]*VisitorOnline, 0) visitorIds := make([]string, 0) + isAdmin := models.IsAdmin(kefuName.(string)) for uid, visitor := range ws.ClientList { if visitor.To_id != kefuName { - continue + if !isAdmin { + continue + } } userInfo := new(VisitorOnline) userInfo.Uid = uid diff --git a/models/visitors.go b/models/visitors.go index 600c2d9..58bd33d 100644 --- a/models/visitors.go +++ b/models/visitors.go @@ -53,6 +53,12 @@ func FindVisitors(page uint, pagesize uint) []Visitor { DB.Offset(offset).Limit(pagesize).Order("status desc, updated_at desc").Find(&visitors) return visitors } + +func IsAdmin(kefuName string) bool { + kefuInfo := FindUser(kefuName) + return kefuInfo.Role == 1 +} + func FindVisitorsByKefuId(page uint, pagesize uint, kefuId string) []Visitor { offset := (page - 1) * pagesize if offset <= 0 { @@ -61,7 +67,11 @@ func FindVisitorsByKefuId(page uint, pagesize uint, kefuId string) []Visitor { var visitors []Visitor //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) + db := DB + if !IsAdmin(kefuId) { + db = db.Where("to_id=?", kefuId) + } + db.Offset(offset).Limit(pagesize).Order("status desc,updated_at desc").Find(&visitors) return visitors } func FindVisitorsOnline() []Visitor { @@ -101,7 +111,11 @@ func CountVisitors() uint { // 查询条数 func CountVisitorsByKefuId(kefuId string) uint { var count uint - DB.Model(&Visitor{}).Where("to_id=?", kefuId).Count(&count) + db := DB + if !IsAdmin(kefuId) { + db = db.Where("to_id=?", kefuId) + } + db.Count(&count) return count } diff --git a/static/templates/chat_main.html b/static/templates/chat_main.html index a3d5bfe..9d14dfb 100644 --- a/static/templates/chat_main.html +++ b/static/templates/chat_main.html @@ -74,6 +74,27 @@ :total="visitorCount"> + + +
+ + + + + <{item.name}> + +
+
+ + +
@@ -350,6 +371,10 @@ visitorCount:0, visitorCurrentPage:1, visitorPageSize:10, + allVisitors:[], + allVisitorCount:0, + allVisitorCurrentPage:1, + allVisitorPageSize:10, face:[], transKefuDialog:false, otherKefus:[], @@ -576,6 +601,13 @@ break; } } + // 更新所有访客列表的在线状态 + for(let i=0;i