Files
open-im-server/internal/api/office/work_moments.go
T

672 lines
28 KiB
Go
Raw Normal View History

2022-04-15 12:03:23 +08:00
package office
import (
2022-06-28 10:29:14 +08:00
api "Open_IM/pkg/base_info"
2022-04-15 12:03:23 +08:00
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/common/token_verify"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
pbOffice "Open_IM/pkg/proto/office"
pbCommon "Open_IM/pkg/proto/sdk_ws"
"Open_IM/pkg/utils"
"context"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
2022-06-28 10:29:14 +08:00
// @Summary 创建一条工作圈
// @Description 用户创建一条工作圈
// @Tags 工作圈
// @ID CreateOneWorkMoment
// @Accept json
// @Param token header string true "im token"
// @Param req body api.CreateOneWorkMomentReq true "请求 atUserList likeUserList permissionGroupList permissionUserList 字段中userName可以不填"
// @Produce json
// @Success 0 {object} api.CreateOneWorkMomentResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/create_one_work_moment [post]
2022-04-15 12:03:23 +08:00
func CreateOneWorkMoment(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.CreateOneWorkMomentReq
resp api.CreateOneWorkMomentResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.CreateOneWorkMomentReq
respPb *pbOffice.CreateOneWorkMomentResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
2022-06-28 10:29:14 +08:00
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
2022-04-19 13:05:54 +08:00
reqPb.WorkMoment.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.CreateOneWorkMoment(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "CreateOneWorkMoment rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CreateOneWorkMoment rpc server failed" + err.Error()})
return
}
2022-06-28 10:29:14 +08:00
resp.CommResp = api.CommResp{
2022-04-19 13:05:54 +08:00
ErrCode: respPb.CommonResp.ErrCode,
ErrMsg: respPb.CommonResp.ErrMsg,
2022-04-15 12:03:23 +08:00
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 删除一条工作圈
// @Description 根据用户工作圈ID删除一条工作圈
// @Tags 工作圈
// @ID DeleteOneWorkMoment
// @Accept json
// @Param token header string true "im token"
// @Param req body api.DeleteOneWorkMomentReq true "请求"
// @Produce json
// @Success 0 {object} api.DeleteOneWorkMomentResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/delete_one_work_moment [post]
2022-04-15 12:03:23 +08:00
func DeleteOneWorkMoment(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.DeleteOneWorkMomentReq
resp api.DeleteOneWorkMomentResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.DeleteOneWorkMomentReq
respPb *pbOffice.DeleteOneWorkMomentResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
2022-06-28 10:29:14 +08:00
c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
reqPb.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.DeleteOneWorkMoment(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteOneWorkMoment rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "DeleteOneWorkMoment rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 点赞一条工作圈
// @Description 工作圈ID点赞一条工作圈
// @Tags 工作圈
// @ID LikeOneWorkMoment
// @Accept json
// @Param token header string true "im token"
// @Param req body api.LikeOneWorkMomentReq true "请求"
// @Produce json
// @Success 0 {object} api.LikeOneWorkMomentResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/like_one_work_moment [post]
2022-04-15 12:03:23 +08:00
func LikeOneWorkMoment(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.LikeOneWorkMomentReq
resp api.LikeOneWorkMomentResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.LikeOneWorkMomentReq
respPb *pbOffice.LikeOneWorkMomentResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
reqPb.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.LikeOneWorkMoment(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "LikeOneWorkMoment rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "LikeOneWorkMoment rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 评论一条工作圈
// @Description 评论一条工作圈
// @Tags 工作圈
// @ID CommentOneWorkMoment
// @Accept json
// @Param token header string true "im token"
// @Param req body api.CommentOneWorkMomentReq true "请求"
// @Produce json
// @Success 0 {object} api.CommentOneWorkMomentResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/comment_one_work_moment [post]
2022-04-15 12:03:23 +08:00
func CommentOneWorkMoment(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.CommentOneWorkMomentReq
resp api.CommentOneWorkMomentResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.CommentOneWorkMomentReq
respPb *pbOffice.CommentOneWorkMomentResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
reqPb.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.CommentOneWorkMoment(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "CommentOneWorkMoment rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "CommentOneWorkMoment rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 删除一条评论
// @Description 删除一条评论
// @Tags 工作圈
// @ID DeleteComment
// @Accept json
// @Param token header string true "im token"
// @Param req body api.DeleteCommentReq true "请求"
// @Produce json
// @Success 0 {object} api.DeleteCommentResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/delete_comment [post]
2022-05-05 11:58:48 +08:00
func DeleteComment(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.DeleteCommentReq
resp api.DeleteCommentResp
2022-05-05 11:58:48 +08:00
reqPb pbOffice.DeleteCommentReq
respPb *pbOffice.DeleteCommentResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), err.Error())
}
2022-05-07 11:55:19 +08:00
2022-05-05 11:58:48 +08:00
var ok bool
2022-05-07 11:55:19 +08:00
var errInfo string
ok, reqPb.OpUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-05-05 11:58:48 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-05-05 11:58:48 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-05-05 11:58:48 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.DeleteComment(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "DeleteComment rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "DeleteComment rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 通过ID获取工作圈
// @Description 通过ID获取工作圈
// @Tags 工作圈
// @ID GetWorkMomentByID
// @Accept json
// @Param token header string true "im token"
// @Param req body api.GetWorkMomentByIDReq true "请求"
// @Produce json
// @Success 0 {object} api.GetWorkMomentByIDResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/get_work_moment_by_id [post]
2022-04-18 19:24:36 +08:00
func GetWorkMomentByID(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.GetWorkMomentByIDReq
resp api.GetWorkMomentByIDResp
2022-04-18 19:24:36 +08:00
reqPb pbOffice.GetWorkMomentByIDReq
respPb *pbOffice.GetWorkMomentByIDResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-18 19:24:36 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-18 19:24:36 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-18 19:24:36 +08:00
reqPb.OperationID = req.OperationID
reqPb.OpUserID = userID
reqPb.WorkMomentID = req.WorkMomentID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-18 19:24:36 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.GetWorkMomentByID(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMoments rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMoments rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
2022-06-28 10:29:14 +08:00
resp.Data.WorkMoment = &api.WorkMoment{LikeUserList: []*api.WorkMomentUser{}, Comments: []*api.Comment{},
AtUserList: []*api.WorkMomentUser{}, PermissionUserList: []*api.WorkMomentUser{}}
2022-04-20 16:32:22 +08:00
if err := utils.CopyStructFields(&resp.Data.WorkMoment, respPb.WorkMoment); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
2022-04-18 19:24:36 +08:00
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 查询用户工作圈
// @Description 查询用户工作圈
// @Tags 工作圈
// @ID GetUserWorkMoments
// @Accept json
// @Param token header string true "im token"
// @Param req body api.GetUserWorkMomentsReq true "请求"
// @Produce json
// @Success 0 {object} api.GetUserWorkMomentsResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/get_user_work_moments [post]
2022-04-15 12:03:23 +08:00
func GetUserWorkMoments(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.GetUserWorkMomentsReq
resp api.GetUserWorkMomentsResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.GetUserWorkMomentsReq
respPb *pbOffice.GetUserWorkMomentsResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var opUserID string
ok, opUserID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
reqPb.OperationID = req.OperationID
reqPb.Pagination = &pbCommon.RequestPagination{
PageNumber: req.PageNumber,
ShowNumber: req.ShowNumber,
}
2022-04-24 18:00:04 +08:00
reqPb.OpUserID = opUserID
reqPb.UserID = req.UserID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.GetUserWorkMoments(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserWorkMoments rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserWorkMoments rpc server failed" + err.Error()})
return
}
2022-06-28 10:29:14 +08:00
resp.Data.WorkMoments = []*api.WorkMoment{}
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
2022-04-25 10:35:20 +08:00
for _, v := range respPb.WorkMoments {
2022-06-28 10:29:14 +08:00
workMoment := api.WorkMoment{
2022-05-06 15:58:50 +08:00
WorkMomentID: v.WorkMomentID,
UserID: v.UserID,
Content: v.Content,
FaceURL: v.FaceURL,
UserName: v.UserName,
CreateTime: v.CreateTime,
2022-06-28 10:29:14 +08:00
Comments: make([]*api.Comment, len(v.Comments)),
LikeUserList: make([]*api.WorkMomentUser, len(v.LikeUserList)),
AtUserList: make([]*api.WorkMomentUser, len(v.AtUserList)),
PermissionUserList: make([]*api.WorkMomentUser, len(v.PermissionUserList)),
2022-05-06 15:58:50 +08:00
Permission: v.Permission,
2022-04-25 10:35:20 +08:00
}
for i, comment := range v.Comments {
2022-06-28 10:29:14 +08:00
workMoment.Comments[i] = &api.Comment{
2022-04-25 10:35:20 +08:00
UserID: comment.UserID,
UserName: comment.UserName,
ReplyUserID: comment.ReplyUserID,
2022-04-27 14:35:02 +08:00
ReplyUserName: comment.ReplyUserName,
2022-04-25 10:35:20 +08:00
ContentID: comment.ContentID,
Content: comment.Content,
CreateTime: comment.CreateTime,
}
}
for i, likeUser := range v.LikeUserList {
2022-06-28 10:29:14 +08:00
workMoment.LikeUserList[i] = &api.WorkMomentUser{
2022-04-25 10:35:20 +08:00
UserID: likeUser.UserID,
UserName: likeUser.UserName,
}
}
for i, atUser := range v.AtUserList {
2022-06-28 10:29:14 +08:00
workMoment.AtUserList[i] = &api.WorkMomentUser{
2022-04-25 10:35:20 +08:00
UserID: atUser.UserID,
UserName: atUser.UserName,
}
}
2022-05-06 15:58:50 +08:00
for i, permissionUser := range v.PermissionUserList {
2022-06-28 10:29:14 +08:00
workMoment.PermissionUserList[i] = &api.WorkMomentUser{
2022-05-06 15:58:50 +08:00
UserID: permissionUser.UserID,
UserName: permissionUser.UserName,
}
}
2022-04-25 10:40:31 +08:00
resp.Data.WorkMoments = append(resp.Data.WorkMoments, &workMoment)
2022-04-20 16:32:22 +08:00
}
2022-04-15 12:03:23 +08:00
resp.Data.ShowNumber = respPb.Pagination.ShowNumber
resp.Data.CurrentPage = respPb.Pagination.CurrentPage
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
2022-06-28 10:29:14 +08:00
// @Summary 查询自己大工作圈页面
// @Description 查询用户工作圈页面
// @Tags 工作圈
// @ID GetUserFriendWorkMoments
// @Accept json
// @Param token header string true "im token"
// @Param req body api.GetUserFriendWorkMomentsReq true "请求"
// @Produce json
// @Success 0 {object} api.GetUserFriendWorkMomentsResp
2022-07-01 15:36:44 +08:00
// @Failure 500 {object} api.Swagger500Resp "errCode为500 一般为服务器内部错误"
// @Failure 400 {object} api.Swagger400Resp "errCode为400 一般为参数输入错误, token未带上等"
2022-06-28 10:29:14 +08:00
// @Router /office/get_user_friend_work_moments [post]
2022-04-15 12:03:23 +08:00
func GetUserFriendWorkMoments(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.GetUserFriendWorkMomentsReq
resp api.GetUserFriendWorkMomentsResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.GetUserFriendWorkMomentsReq
respPb *pbOffice.GetUserFriendWorkMomentsResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
reqPb.OperationID = req.OperationID
reqPb.Pagination = &pbCommon.RequestPagination{
PageNumber: req.PageNumber,
ShowNumber: req.ShowNumber,
}
reqPb.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.GetUserFriendWorkMoments(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserFriendWorkMoments rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "GetUserFriendWorkMoments rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
2022-04-25 10:35:20 +08:00
//if err := utils.CopyStructFields(&resp.Data.WorkMoments, respPb.WorkMoments); err != nil {
// log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
//}
2022-06-28 10:29:14 +08:00
resp.Data.WorkMoments = []*api.WorkMoment{}
2022-04-25 10:35:20 +08:00
for _, v := range respPb.WorkMoments {
2022-06-28 10:29:14 +08:00
workMoment := api.WorkMoment{
2022-05-06 15:58:50 +08:00
WorkMomentID: v.WorkMomentID,
UserID: v.UserID,
Content: v.Content,
FaceURL: v.FaceURL,
UserName: v.UserName,
CreateTime: v.CreateTime,
2022-06-28 10:29:14 +08:00
Comments: make([]*api.Comment, len(v.Comments)),
LikeUserList: make([]*api.WorkMomentUser, len(v.LikeUserList)),
AtUserList: make([]*api.WorkMomentUser, len(v.AtUserList)),
PermissionUserList: make([]*api.WorkMomentUser, len(v.PermissionUserList)),
2022-05-06 15:58:50 +08:00
Permission: v.Permission,
2022-04-25 10:35:20 +08:00
}
for i, comment := range v.Comments {
2022-06-28 10:29:14 +08:00
workMoment.Comments[i] = &api.Comment{
2022-04-25 10:35:20 +08:00
UserID: comment.UserID,
UserName: comment.UserName,
ReplyUserID: comment.ReplyUserID,
2022-04-27 14:35:02 +08:00
ReplyUserName: comment.ReplyUserName,
2022-04-25 10:35:20 +08:00
ContentID: comment.ContentID,
Content: comment.Content,
CreateTime: comment.CreateTime,
}
}
for i, likeUser := range v.LikeUserList {
2022-06-28 10:29:14 +08:00
workMoment.LikeUserList[i] = &api.WorkMomentUser{
2022-04-25 10:35:20 +08:00
UserID: likeUser.UserID,
UserName: likeUser.UserName,
}
}
for i, atUser := range v.AtUserList {
2022-06-28 10:29:14 +08:00
workMoment.AtUserList[i] = &api.WorkMomentUser{
2022-04-25 10:35:20 +08:00
UserID: atUser.UserID,
UserName: atUser.UserName,
}
}
2022-05-06 15:58:50 +08:00
for i, permissionUser := range v.PermissionUserList {
2022-06-28 10:29:14 +08:00
workMoment.PermissionUserList[i] = &api.WorkMomentUser{
2022-05-06 15:58:50 +08:00
UserID: permissionUser.UserID,
UserName: permissionUser.UserName,
}
}
2022-04-25 10:40:31 +08:00
resp.Data.WorkMoments = append(resp.Data.WorkMoments, &workMoment)
2022-04-20 16:32:22 +08:00
}
2022-04-15 12:03:23 +08:00
resp.Data.ShowNumber = respPb.Pagination.ShowNumber
resp.Data.CurrentPage = respPb.Pagination.CurrentPage
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}
func SetUserWorkMomentsLevel(c *gin.Context) {
var (
2022-06-28 10:29:14 +08:00
req api.SetUserWorkMomentsLevelReq
resp api.SetUserWorkMomentsLevelResp
2022-04-15 12:03:23 +08:00
reqPb pbOffice.SetUserWorkMomentsLevelReq
respPb *pbOffice.SetUserWorkMomentsLevelResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": "bind json failed " + err.Error()})
return
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
2022-05-07 11:55:19 +08:00
var ok bool
var errInfo string
var userID string
ok, userID, errInfo = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
2022-04-15 12:03:23 +08:00
if !ok {
2022-05-07 11:55:19 +08:00
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
2022-04-15 12:03:23 +08:00
return
}
2022-05-07 11:55:19 +08:00
2022-04-15 12:03:23 +08:00
if err := utils.CopyStructFields(&reqPb, req); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
reqPb.UserID = userID
2022-08-17 12:12:54 +08:00
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImOfficeName, req.OperationID)
2022-06-16 14:33:52 +08:00
if etcdConn == nil {
2022-08-17 12:12:54 +08:00
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
2022-06-16 14:33:52 +08:00
log.NewError(req.OperationID, errMsg)
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
return
}
2022-04-15 12:03:23 +08:00
client := pbOffice.NewOfficeServiceClient(etcdConn)
respPb, err := client.SetUserWorkMomentsLevel(context.Background(), &reqPb)
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetUserWorkMomentsLevel rpc failed", err.Error())
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "SetUserWorkMomentsLevel rpc server failed" + err.Error()})
return
}
if err := utils.CopyStructFields(&resp, respPb.CommonResp); err != nil {
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "CopyStructFields failed", err.Error())
}
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp)
c.JSON(http.StatusOK, resp)
}