nt.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package api
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "gogs.daxia.dev/huanan/pkg.daxia.dev/validate_utils"
  5. "gogs.daxia.dev/huanan/pkg.daxia.dev/webutils"
  6. "nn.daxia.dev/nxd"
  7. "nn.daxia.dev/online"
  8. )
  9. type RecvInfo struct {
  10. RecvUserID uint32 `json:"recv_user_id" validate:"required"`
  11. NotifyType uint32 `json:"notify_type" validate:"required"`
  12. Content string `json:"content" validate:"required"`
  13. }
  14. type NotifyReq struct {
  15. RoomID uint32 `json:"room_id" validate:"required"`
  16. TableID uint32 `json:"table_id" validate:"required"`
  17. SenderID uint `json:"sender_id" validate:"required"`
  18. RecvList []RecvInfo `json:"recv_list" validate:"required"`
  19. }
  20. func Notify(ctx *gin.Context) {
  21. req := NotifyReq{}
  22. if err := ctx.ShouldBindJSON(&req); err != nil {
  23. errStr := validate_utils.SetErrorStr(err, func(tag string) string {
  24. switch tag {
  25. case "RoomID.required":
  26. return "房间ID不能为空"
  27. case "TableID.required":
  28. return "TableID不能为空"
  29. case "SenderID.required":
  30. return "发送者ID不能为空"
  31. case "RecvList.required":
  32. return "接收者不能为空"
  33. }
  34. return "内部错误"
  35. })
  36. webutils.FailedResponse(ctx, errStr(0))
  37. return
  38. }
  39. for _, item := range req.RecvList {
  40. nxd.SendMsgToUser(item.RecvUserID, online.Msg{
  41. RoomID: req.RoomID,
  42. Offset: 0,
  43. NotifyType: item.NotifyType,
  44. Data: item.Content,
  45. })
  46. }
  47. webutils.SuccessResponse(ctx, nil)
  48. }