This commit is contained in:
wangchuxiao
2022-01-21 18:39:57 +08:00
parent 1944b24fba
commit d58bcd136a
20 changed files with 696 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
package admin
import (
"net/http"
"github.com/gin-gonic/gin"
)
// register
func UserLogin(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "someJSON", "status": 200})
}
func UserRegister(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "someJSON", "status": 200})
}
func GetUserSettings(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "someJSON", "status": 200})
}
func AlterUserSettings(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"message": "someJSON", "status": 200})
}
+67
View File
@@ -0,0 +1,67 @@
package group
import (
_ "Open_IM_CMS/pkg/req_resp"
"Open_IM_CMS/test"
"net/http"
"github.com/gin-gonic/gin"
)
func SearchGroups(c *gin.Context) {
fake := test.GetSearchGroupsResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fake})
}
func SearchGroupsMember(c *gin.Context) {
fake := test.GetSearchMemberResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fake})
}
func CreateGroup(c *gin.Context) {
}
func AddUsers(c *gin.Context) {
}
func InquireMember(c *gin.Context) {
}
func InquireGroup(c *gin.Context) {
}
func AddGroupMember(c *gin.Context) {
}
func AddMembers(c *gin.Context) {
}
func SetMaster(c *gin.Context) {
}
func BlockUser(c *gin.Context) {
}
func RemoveUser(c *gin.Context) {
}
func BanPrivateChat(c *gin.Context) {
}
func Withdraw(c *gin.Context) {
}
func SearchMessage(g *gin.Context) {
}
+31
View File
@@ -0,0 +1,31 @@
package message
import (
"net/http"
"Open_IM_CMS/test"
"github.com/gin-gonic/gin"
)
func Broadcast(c *gin.Context) {
}
func SearchMessageByUser(c *gin.Context) {
fake := test.GetSearchUserMsgFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fake})
}
func SearchMessageByGroup(c *gin.Context) {
fake := test.GetSearchGroupMsgFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fake})
}
func MassSendMassage(c *gin.Context) {
}
func Withdraw(c *gin.Context) {
}
+23
View File
@@ -0,0 +1,23 @@
package middleware
import (
"github.com/gin-gonic/gin"
"net/http"
)
func CorsHandler() gin.HandlerFunc {
return func(context *gin.Context) {
context.Writer.Header().Set("Access-Control-Allow-Origin", "*")
context.Header("Access-Control-Allow-Methods", "*")
context.Header("Access-Control-Allow-Headers", "*")
context.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers,Cache-Control,Content-Language,Content-Type,Expires,Last-Modified,Pragma,FooBar") // 跨域关键设置 让浏览器可以解析
context.Header("Access-Control-Max-Age", "172800") // 缓存请求信息 单位为秒
context.Header("Access-Control-Allow-Credentials", "false") // 跨域请求是否需要带cookie信息 默认设置为true
context.Header("content-type", "application/json") // 设置返回格式是json
//Release all option pre-requests
if context.Request.Method == http.MethodOptions {
context.JSON(http.StatusOK, "Options Request!")
}
context.Next()
}
}
+11
View File
@@ -0,0 +1,11 @@
package middleware
import (
"github.com/gin-gonic/gin"
)
func JWTAuth() gin.HandlerFunc {
return func(c *gin.Context) {
}
}
@@ -0,0 +1,82 @@
package organization
import (
"Open_IM_CMS/pkg/common/config"
"Open_IM_CMS/pkg/errno"
"Open_IM_CMS/pkg/etcdv3"
commonProto "Open_IM_CMS/pkg/proto/common"
proto "Open_IM_CMS/pkg/proto/organization"
"Open_IM_CMS/pkg/req_resp"
"Open_IM_CMS/test"
"context"
"fmt"
"net/http"
"strings"
"github.com/gin-gonic/gin"
)
func GetStaffs(c *gin.Context) {
var (
req req_resp.GetStaffsResponse
resp req_resp.GetStaffsResponse
reqPb commonProto.Pagination
respPb *proto.GetStaffsResp
)
fmt.Println(resp, req)
fakeData := test.GetStaffsResponseFake()
etcdConn := etcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImCMSApiOrganizationName)
client := proto.NewOrganizationClient(etcdConn)
fmt.Println(client, reqPb)
respPb, err := client.GetStaffs(context.Background(), &reqPb)
fmt.Println(respPb, err)
fmt.Println(etcdConn)
req_resp.RespHttp200(c, errno.RespOK, fakeData)
}
func GetOrganizations(c *gin.Context) {
var (
req req_resp.GetOrganizationsResponse
resp req_resp.GetStaffsResponse
)
fmt.Println(resp, req)
fakeData := test.GetOrganizationsResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func GetSquads(c *gin.Context) {
fakeData := test.GetSquadResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func AlterStaff(c *gin.Context) {
}
func AddOrganization(c *gin.Context) {
}
func InquireOrganization(g *gin.Context) {
}
func AlterOrganization(c *gin.Context) {
}
func DeleteOrganization(g *gin.Context) {
}
func GetOrganizationSquads(c *gin.Context) {
}
func AlterStaffsInfo(c *gin.Context) {
}
func AddChildOrganization(c *gin.Context) {
}
+85
View File
@@ -0,0 +1,85 @@
package cms_api
import (
"Open_IM/internal/cms_api/admin"
"Open_IM/internal/cms_api/group"
"Open_IM/internal/cms_api/message"
"Open_IM/internal/cms_api/middleware"
"Open_IM/internal/cms_api/organization"
"Open_IM/internal/cms_api/statistics"
"Open_IM/internal/cms_api/user"
"github.com/gin-gonic/gin"
)
func NewGinRouter() *gin.Engine {
gin.SetMode(gin.ReleaseMode)
baseRouter := gin.Default()
router := baseRouter.Group("/api")
router.Use(middleware.JWTAuth())
router.Use(middleware.CorsHandler())
adminRouterGroup := router.Group("/admin")
{
adminRouterGroup.POST("/register", admin.UserRegister)
adminRouterGroup.POST("/login", admin.UserLogin)
adminRouterGroup.GET("/get_user_settings", admin.GetUserSettings)
adminRouterGroup.POST("/alter_user_settings", admin.AlterUserSettings)
}
statisticsRouterGroup := router.Group("/statistics")
{
statisticsRouterGroup.GET("/get_messages_statistics", statistics.MessagesStatistics)
statisticsRouterGroup.GET("/get_users_statistics", statistics.UsersStatistics)
statisticsRouterGroup.GET("/get_groups_statistics", statistics.GroupsStatistics)
statisticsRouterGroup.GET("/get_active_user", statistics.GetActiveUser)
statisticsRouterGroup.GET("/get_active_group", statistics.GetActiveGroup)
}
organizationRouterGroup := router.Group("/organization")
{
organizationRouterGroup.GET("/get_staffs", organization.GetStaffs)
organizationRouterGroup.GET("/get_organizations", organization.GetOrganizations)
organizationRouterGroup.GET("/get_squad", organization.GetSquads)
organizationRouterGroup.POST("/add_organization", organization.AddOrganization)
organizationRouterGroup.POST("/alter_staff", organization.AlterStaff)
organizationRouterGroup.GET("/inquire_organization", organization.InquireOrganization)
organizationRouterGroup.POST("/alter_organization", organization.AlterOrganization)
organizationRouterGroup.POST("/delete_organization", organization.DeleteOrganization)
organizationRouterGroup.POST("/get_organization_squad", organization.GetOrganizationSquads)
organizationRouterGroup.PATCH("/alter_corps_info", organization.AlterStaffsInfo)
organizationRouterGroup.POST("/add_child_org", organization.AddChildOrganization)
}
messageRouterGroup := router.Group("/message")
{
messageRouterGroup.POST("/broadcast", message.Broadcast)
messageRouterGroup.GET("/search_message_by_user", message.SearchMessageByUser)
messageRouterGroup.POST("/message_mass_send", message.MassSendMassage)
messageRouterGroup.GET("/search_message_by_group", message.SearchMessageByGroup)
messageRouterGroup.POST("/withdraw_message", message.Withdraw)
}
groupRouterGroup := router.Group("/groups")
{
groupRouterGroup.GET("/search_groups", group.SearchGroups)
groupRouterGroup.GET("/search_groups_member", group.SearchGroupsMember)
groupRouterGroup.POST("/create_group", group.CreateGroup)
groupRouterGroup.GET("/inquire_group", group.InquireGroup)
groupRouterGroup.GET("/inquireMember_by_group", group.InquireMember)
groupRouterGroup.POST("/add_members", group.AddMembers)
groupRouterGroup.POST("/set_master", group.SetMaster)
groupRouterGroup.POST("/block_user", group.BlockUser)
groupRouterGroup.POST("/remove_user", group.RemoveUser)
groupRouterGroup.POST("/ban_private_chat", group.BanPrivateChat)
groupRouterGroup.POST("/withdraw_message", group.Withdraw)
groupRouterGroup.POST("/search_group_message", group.SearchMessage)
}
userRouterGroup := router.Group("/users")
{
userRouterGroup.POST("/resign", user.ResignUser)
userRouterGroup.GET("/get_user", user.GetUser)
userRouterGroup.POST("/alter_user", user.AlterUser)
userRouterGroup.GET("/get_users", user.GetUsers)
userRouterGroup.POST("/add_user", user.AddUser)
userRouterGroup.POST("/unblock_user", user.UnblockUser)
userRouterGroup.POST("/block_user", user.BlockUser)
userRouterGroup.GET("/block_users", user.GetBlockUsers)
}
return baseRouter
}
+80
View File
@@ -0,0 +1,80 @@
package statistics
import (
"net/http"
"Open_IM/pkg/req_resp"
"Open_IM/test"
"github.com/gin-gonic/gin"
)
func MessagesStatistics(c *gin.Context) {
var (
req req_resp.StatisticsRequest
//resp req_resp.MessageStatisticsResponse
)
if err := c.ShouldBindUri(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{})
return
}
if _, err := test.RpcFake(); err != nil {
c.JSON(http.StatusOK, gin.H{})
return
}
fakeData := test.GetUserStatisticsResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func UsersStatistics(c *gin.Context) {
var (
req req_resp.StatisticsRequest
//resp req_resp.MessageStatisticsResponse
)
if err := c.ShouldBindUri(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{})
return
}
if _, err := test.RpcFake(); err != nil {
c.JSON(http.StatusOK, gin.H{})
return
}
fakeData := test.GetUserStatisticsResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func GroupsStatistics(c *gin.Context) {
var (
req req_resp.StatisticsRequest
//resp req_resp.MessageStatisticsResponse
)
if err := c.ShouldBindUri(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{})
return
}
if _, err := test.RpcFake(); err != nil {
c.JSON(http.StatusOK, gin.H{})
return
}
fakeData := test.GetUserStatisticsResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func GetActiveUser(c *gin.Context) {
if _, err := test.RpcFake(); err != nil {
c.JSON(http.StatusOK, gin.H{})
return
}
fakeData := test.GetActiveUserResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
func GetActiveGroup(c *gin.Context) {
if _, err := test.RpcFake(); err != nil {
c.JSON(http.StatusOK, gin.H{})
return
}
fakeData := test.GetActiveGroupResponseFake()
c.JSON(http.StatusOK, gin.H{"code": "0", "data": fakeData})
}
+76
View File
@@ -0,0 +1,76 @@
package user
import (
jsonData "Open_IM/internal/utils"
api "Open_IM/pkg/base_info"
"Open_IM/pkg/cms_api_struct"
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/grpc-etcdv3/getcdv3"
open_im_sdk "Open_IM/pkg/proto/sdk_ws"
rpc "Open_IM/pkg/proto/user"
"Open_IM/pkg/utils"
"context"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
func GetUser(c *gin.Context) {
var (
req cms_api_struct.RequestPagination
resp cms_api_struct.GetUsersResponse
reqPb rpc.GetUserInfoReq
respPb *rpc.GetUserInfoResp
)
if err := c.BindJSON(&req); err != nil {
log.NewError("0", "BindJSON failed ", err.Error())
c.JSON(http.StatusBadRequest, gin.H{"errCode": http.StatusBadRequest, "errMsg": err.Error()})
return
}
utils.CopyStructFields(req, &req)
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName)
client := rpc.NewUserClient(etcdConn)
respPb, err := client.GetUserInfo(context.Background(), &reqPb)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"})
return
}
//for _, v := range RpcResp.UserInfoList {
// publicUserInfoList = append(publicUserInfoList,
// &open_im_sdk.PublicUserInfo{UserID: v.UserID, Nickname: v.Nickname, FaceURL: v.FaceURL, Gender: v.Gender, AppMangerLevel: v.AppMangerLevel})
//}
//resp := api.GetUsersInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}, UserInfoList: publicUserInfoList}
//resp.Data = jsonData.JsonDataList(resp.UserInfoList)
//log.NewInfo(req.OperationID, "GetUserInfo api return ", resp)
c.JSON(http.StatusOK, resp)
}
func ResignUser(c *gin.Context) {
}
func AlterUser(c *gin.Context) {
}
func AddUser(c *gin.Context) {
}
func BlockUser(c *gin.Context) {
}
func UnblockUser(c *gin.Context) {
}
func GetBlockUsers(c *gin.Context) {
}