package controller import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/taoshihan1991/imaptool/models" "github.com/taoshihan1991/imaptool/tools" "log" "net/http" "time" ) func GetNotice(c *gin.Context) { kefuId:=c.Query("kefu_id") welcomes:=models.FindWelcomesByUserId(kefuId) user:=models.FindUser(kefuId) result:=make([]gin.H,0) for _,welcome:=range welcomes{ h:=gin.H{ "name":user.Nickname, "avator":user.Avator, "is_kefu":false, "content":welcome.Content, "time":time.Now().Format("2006-01-02 15:04:05"), } result=append(result,h) } c.JSON(200, gin.H{ "code": 200, "msg": "ok", "result":result, }) } func GetNotices(c *gin.Context) { kefuId,_:=c.Get("kefu_name") welcomes:=models.FindWelcomesByUserId(kefuId) c.JSON(200, gin.H{ "code": 200, "msg": "ok", "result":welcomes, }) } func PostNotice(c *gin.Context) { kefuId,_:=c.Get("kefu_name") content:=c.PostForm("content") models.CreateWelcome(fmt.Sprintf("%s",kefuId),content) c.JSON(200, gin.H{ "code": 200, "msg": "ok", "result":"", }) } func DelNotice(c *gin.Context) { kefuId,_:=c.Get("kefu_name") id:=c.Query("id") models.DeleteWelcome(kefuId,id) c.JSON(200, gin.H{ "code": 200, "msg": "ok", "result":"", }) } var upgrader = websocket.Upgrader{} var oldFolders map[string]int //推送新邮件到达 func PushMailServer(w http.ResponseWriter, r *http.Request) { c, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("upgrade:", err) return } defer c.Close() for { mt, message, err := c.ReadMessage() if err != nil { log.Println("read:", err) break } log.Printf("recv: %s", message) mailServer := tools.GetMailServerFromCookie(r) var msg []byte if mailServer == nil { msg, _ = json.Marshal(tools.JsonResult{Code: 400, Msg: "验证失败"}) err = c.WriteMessage(mt, msg) if err != nil { log.Println("write:", err) break } } else { folders := tools.GetMailNum(mailServer.Server, mailServer.Email, mailServer.Password) for name, num := range folders { if oldFolders[name] != num { result := make(map[string]interface{}) result["folder_name"] = name result["new_num"] = num - oldFolders[name] msg, _ := json.Marshal(tools.JsonListResult{ JsonResult: tools.JsonResult{Code: 200, Msg: "获取成功"}, Result: result, }) c.WriteMessage(mt, msg) } } oldFolders = folders } } }