159 lines
3.8 KiB
Go
159 lines
3.8 KiB
Go
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",
|
|
// })
|
|
//}
|