package controller // //import ( // "encoding/json" // "fmt" // "github.com/gin-gonic/gin" // "kefu/models" // "kefu/tools" // "kefu/types" // "kefu/ws" // "math/rand" // "time" //) // //func PostRoomLogin(c *gin.Context) { // avator := c.PostForm("avator") // if avator == "" { // avator = fmt.Sprintf("/static/images/%d.jpg", rand.Intn(14)) // } // toId := c.PostForm("to_id") // entId := c.PostForm("ent_id") // visitorName := c.PostForm("visitor_name") // id := c.PostForm("visitor_id") // // if id == "" { // id = tools.Uuid() // } // var city string // ipCity, _ := tools.ParseIpNew(c.ClientIP()) // if ipCity != nil { // city = ipCity.CountryName + ipCity.RegionName + ipCity.CityName // } else { // city = "未识别地区" // } // client_ip := c.ClientIP() // if avator == "" || toId == "" || id == "" || entId == "" { // c.JSON(200, gin.H{ // "code": 400, // "msg": "error", // }) // return // } // // entUsers := models.FindUsersByEntId(entId) // var flag = false // for _, user := range entUsers { // if user.Name == toId { // flag = true // break // } // } // if !flag { // c.JSON(200, gin.H{ // "code": 400, // "msg": "room_id不存在", // }) // return // } // visitor := models.FindVisitorByVistorId(id) // if visitor.Name != "" { // //更新状态上线 // models.UpdateVisitor(entId, visitorName, avator, id, toId, visitor.Status, c.ClientIP(), c.ClientIP(), "", "", "", visitor.VisitNum+1) // } else { // visitor = *models.CreateVisitor(visitorName, avator, client_ip, toId, id, "", city, client_ip, entId, "") // } // result := &Visitor{ // City: city, // Name: visitorName, // Avator: avator, // ToId: toId, // ClientIp: client_ip, // VisitorId: id, // EntId: entId, // CreatedAt: time.Now().Format("2006-01-02 15:04:05"), // UpdatedAt: time.Now().Format("2006-01-02 15:04:05"), // } // // userInfo := make(map[string]string) // userInfo["username"] = visitorName // userInfo["avator"] = avator // msg := ws.TypeMessage{ // Type: "userOnline", // Data: userInfo, // } // str, _ := json.Marshal(msg) // go func() { // time.Sleep(3 * time.Second) // ws.Room.SendMessageToRoom(toId, str) // }() // c.JSON(200, gin.H{ // "code": 200, // "msg": "ok", // "result": result, // }) //} //func PostRoomMessage(c *gin.Context) { // fromId := c.PostForm("from_id") // toId := c.PostForm("to_id") // content := c.PostForm("content") // if content == "" { // c.JSON(200, gin.H{ // "code": 400, // "msg": "内容不能为空", // }) // return // } // //限流 // if !tools.LimitFreqSingle("sendmessage:"+c.ClientIP(), 1, 2) { // c.JSON(200, gin.H{ // "code": 400, // "msg": c.ClientIP() + "发送频率过快", // }) // return // } // //验证访客黑名单 // if !CheckVisitorBlack(fromId) { // c.JSON(200, gin.H{ // "code": types.ApiCode.VISITOR_BAN, // "msg": types.ApiCode.GetMessage(types.ApiCode.VISITOR_BAN), // }) // return // } // // vistorInfo := models.FindVisitorByVistorId(fromId) // kefuInfo := models.FindUser(toId) // if kefuInfo.ID == 0 || vistorInfo.ID == 0 { // c.JSON(200, gin.H{ // "code": 400, // "msg": "room不存在", // }) // return // } // models.CreateMessage(kefuInfo.Name, vistorInfo.VisitorId, content, "visitor", vistorInfo.EntId, "unread") // msg := ws.TypeMessage{ // Type: "message", // Data: ws.ClientMessage{ // Avator: vistorInfo.Avator, // Id: vistorInfo.VisitorId, // Name: fmt.Sprintf("#%d%s", vistorInfo.ID, vistorInfo.Name), // ToId: kefuInfo.Name, // Content: content, // Time: time.Now().Format("2006-01-02 15:04:05"), // IsKefu: "no", // }, // } // guest, ok := ws.ClientList[vistorInfo.VisitorId] // if ok && guest != nil { // guest.UpdateTime = time.Now() // } // str, _ := json.Marshal(msg) // go ws.OneKefuMessage(kefuInfo.Name, str) // go ws.Room.SendMessageToRoom(toId, str) // c.JSON(200, gin.H{ // "code": 200, // "msg": "ok", // }) //}