first commit

This commit is contained in:
2022-03-17 15:59:24 +08:00
commit 2b0debb847
592 changed files with 73946 additions and 0 deletions

View File

@@ -0,0 +1,285 @@
package http
import (
"github.com/gin-gonic/gin"
"gitlab.33.cn/chat/dtalk/pkg/api"
xerror "gitlab.33.cn/chat/dtalk/pkg/error"
"gitlab.33.cn/chat/dtalk/service/backend/model/types"
)
//userId, ok := c.Get(api.Address)
// if !ok {
// c.Set(api.ReqError, xerror.NewError(xerror.SignatureInvalid))
// return
// }
// @Summary 创建 CdkType
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param FZM-SIGNATURE header string true "MOCK"
// @Param data body types.CreateGroupRequest false "body"
// @Success 200 {object} types.GeneralResponse{data=types.CreateGroupResponse}
// @Router /app/create-group [post]
// CreateCdkTypeHandler
// @Summary 创建 CdkType
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.CreateCdkTypeReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.CreateCdkTypeResp}
// @Router /backend/cdk/create-cdk-type [post]
func CreateCdkTypeHandler(c *gin.Context) {
req := &types.CreateCdkTypeReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.CreateCdkTypeSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// CreateCdksHandler
// @Summary 创建 Cdks
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.CreateCdksReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.CreateCdksResp}
// @Router /backend/cdk/create-cdks [post]
func CreateCdksHandler(c *gin.Context) {
req := &types.CreateCdksReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.CreateCdksSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// GetCdkTypesHandler
// @Summary 分页获得 cdkType
// @Author chy@33.cn
// @Tags Cdk 查询
// @Param data body types.GetCdkTypesReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.GetCdkTypesResp}
// @Router /backend/cdk/get-cdk-types [post]
func GetCdkTypesHandler(c *gin.Context) {
req := &types.GetCdkTypesReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.GetCdkTypesSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// GetCdksHandler
// @Summary 分页获得 cdks
// @Author chy@33.cn
// @Tags Cdk 查询
// @Param data body types.GetCdksReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.GetCdksResp}
// @Router /backend/cdk/get-cdks [post]
func GetCdksHandler(c *gin.Context) {
req := &types.GetCdksReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.GetCdksSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// DeleteCdksHandler
// @Summary 删除 cdks
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.DeleteCdksReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.DeleteCdksResp}
// @Router /backend/cdk/delete-cdks [post]
func DeleteCdksHandler(c *gin.Context) {
req := &types.DeleteCdksReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.DeleteCdksSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// DeleteCdkTypesHandler
// @Summary 删除 cdkTypes
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.DeleteCdkTypesReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.DeleteCdkTypesResp}
// @Router /backend/cdk/delete-cdk-types [post]
func DeleteCdkTypesHandler(c *gin.Context) {
req := &types.DeleteCdkTypesReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.DeleteCdkTypesSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// ExchangeCdksHandler
// @Summary 兑换 cdks
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.ExchangeCdksReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.ExchangeCdksResp}
// @Router /backend/cdk/exchange-cdks [post]
func ExchangeCdksHandler(c *gin.Context) {
req := &types.ExchangeCdksReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.ExchangeCdksSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// UpdateCdkTypeHandler
// @Summary 更新 cdkType
// @Author chy@33.cn
// @Tags Cdk 后台
// @Param data body types.UpdateCdkTypeReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.UpdateCdkTypeResp}
// @Router /backend/cdk/update-cdk-type [post]
func UpdateCdkTypeHandler(c *gin.Context) {
req := &types.UpdateCdkTypeReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.UpdateCdkTypeSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// GetCdksByUserIdHandler
// @Summary 分页获得一个人拥有的 cdks
// @Author chy@33.cn
// @Tags Cdk App
// @Param FZM-SIGNATURE header string true "MOCK"
// @Param data body types.GetCdksByUserIdReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.GetCdksByUserIdResp}
// @Router /app/cdk/get-cdks-by-user-id [post]
func GetCdksByUserIdHandler(c *gin.Context) {
req := &types.GetCdksByUserIdReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
userId, ok := c.Get(api.Address)
if !ok {
c.Set(api.ReqError, xerror.NewError(xerror.SignatureInvalid))
return
}
req.PersonId = userId.(string)
res, err := svc.CdkService.GetCdksByUserIdSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// GetCdkTypeByCoinNameHandler
// @Summary 查询一个票券对应的 cdkType
// @Author chy@33.cn
// @Tags Cdk App
// @Param data body types.GetCdkTypeByCoinNameReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.GetCdkTypeByCoinNameResp}
// @Router /app/cdk/get-cdk-type-by-coin-name [post]
func GetCdkTypeByCoinNameHandler(c *gin.Context) {
req := &types.GetCdkTypeByCoinNameReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
res, err := svc.CdkService.GetCdkTypeByCoinNameSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// CreateCdkOrderHandler
// @Summary 创建兑换订单
// @Author chy@33.cn
// @Tags Cdk App
// @Param FZM-SIGNATURE header string true "MOCK"
// @Param data body types.CreateCdkOrderReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.CreateCdkOrderResp}
// @Router /app/cdk/create-cdk-order [post]
func CreateCdkOrderHandler(c *gin.Context) {
req := &types.CreateCdkOrderReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
userId, ok := c.Get(api.Address)
if !ok {
c.Set(api.ReqError, xerror.NewError(xerror.SignatureInvalid))
return
}
req.PersonId = userId.(string)
res, err := svc.CdkService.CreateCdkOrderSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}
// DealCdkOrderHandler
// @Summary 处理兑换订单
// @Author chy@33.cn
// @Tags Cdk App
// @Param FZM-SIGNATURE header string true "MOCK"
// @Param data body types.DealCdkOrderReq false "body"
// @Success 200 {object} types.GeneralResponse{data=types.DealCdkOrderResp}
// @Router /app/cdk/deal-cdk-order [post]
func DealCdkOrderHandler(c *gin.Context) {
req := &types.DealCdkOrderReq{}
err := c.ShouldBind(req)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage(err.Error()))
return
}
userId, ok := c.Get(api.Address)
if !ok {
c.Set(api.ReqError, xerror.NewError(xerror.SignatureInvalid))
return
}
req.PersonId = userId.(string)
res, err := svc.CdkService.DealCdkOrderSvc(req)
c.Set(api.ReqResult, res)
c.Set(api.ReqError, err)
}

View File

@@ -0,0 +1,125 @@
package http
import (
"github.com/gin-gonic/gin"
"github.com/inconshreveable/log15"
swaggerFiles "github.com/swaggo/files"
ginSwagger "github.com/swaggo/gin-swagger"
"gitlab.33.cn/chat/dtalk/pkg/api"
"gitlab.33.cn/chat/dtalk/service/backend/config"
_ "gitlab.33.cn/chat/dtalk/service/backend/docs"
"gitlab.33.cn/chat/dtalk/service/backend/midware"
"gitlab.33.cn/chat/dtalk/service/backend/service"
"net/http"
)
var (
svc *service.Service
log = log15.New("module", "backend/http")
)
func Init(s *service.Service) *http.Server {
addr := s.Config().Server.Addr
if s.Config().Env != "debug" {
gin.SetMode(gin.ReleaseMode)
}
engine := Default()
InitService(s)
SetupEngine(engine)
if s.Config().CdkMod {
setCdkRoute(engine)
}
srv := &http.Server{
Addr: addr,
Handler: engine,
}
go func() {
// service connections
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Error("engineInner.Start() error(%v)", err)
panic(err)
}
}()
return srv
}
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *gin.Engine {
router := gin.New()
// LoggerWithFormatter middleware will write the logs to gin.DefaultWriter
// By default gin.DefaultWriter = os.Stdout
router.Use(gin.LoggerWithFormatter(api.Chat33GinLogFormatter))
router.Use(gin.Recovery())
return router
}
func InitService(s *service.Service) {
svc = s
}
func SetupEngine(e *gin.Engine) *gin.Engine {
{
app := e.Group("/app", api.RespMiddleWare())
version := app.Group("/version")
//获取服务器列表
version.Use(api.HeaderMiddleWare())
{
version.POST("/check", CheckAndUpdateVersion)
}
}
{
backend := e.Group("/backend", api.RespMiddleWare())
token := backend.Group("/user")
{
token.POST("/login", GetToken)
}
version := backend.Group("/version")
version.Use(midware.JWTAuthMiddleWare(config.Conf.Debug.Flag, config.Conf.Release.Key))
{
version.POST("/create", CreateVersion)
version.PUT("/update", UpdateVersion)
version.PUT("/change-status", ChangeVersionStatus)
version.GET("/list", GetVersionList)
}
}
// swagger 文档接口
e.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
return e
}
func setCdkRoute(e *gin.Engine) *gin.Engine {
{
app := e.Group("/app", api.RespMiddleWare())
// cdk app
appCkd := app.Group("/cdk")
appCkd.Use(api.AuthMiddleWare())
{
appCkd.POST("get-cdks-by-user-id", GetCdksByUserIdHandler)
appCkd.POST("get-cdk-type-by-coin-name", GetCdkTypeByCoinNameHandler)
appCkd.POST("create-cdk-order", CreateCdkOrderHandler)
appCkd.POST("deal-cdk-order", DealCdkOrderHandler)
}
}
{
backend := e.Group("/backend", api.RespMiddleWare())
// cdk backend
bakCdk := backend.Group("/cdk")
bakCdk.POST("get-cdk-types", GetCdkTypesHandler)
bakCdk.POST("get-cdks", GetCdksHandler)
bakCdk.Use(midware.JWTAuthMiddleWare(config.Conf.Debug.Flag, config.Conf.Release.Key))
{
bakCdk.POST("create-cdk-type", CreateCdkTypeHandler)
bakCdk.POST("create-cdks", CreateCdksHandler)
bakCdk.POST("delete-cdks", DeleteCdksHandler)
bakCdk.POST("delete-cdk-types", DeleteCdkTypesHandler)
bakCdk.POST("update-cdk-type", UpdateCdkTypeHandler)
bakCdk.POST("exchange-cdks", ExchangeCdksHandler)
}
}
return e
}

View File

@@ -0,0 +1,103 @@
package http
import (
"github.com/gin-gonic/gin"
"gitlab.33.cn/chat/dtalk/pkg/api"
xerror "gitlab.33.cn/chat/dtalk/pkg/error"
"gitlab.33.cn/chat/dtalk/pkg/util"
"gitlab.33.cn/chat/dtalk/service/backend/model"
)
//get all nodes
//func CheckVersion(c *gin.Context) {
// ret := svc.CheckVersion(c.MustGet(api.DeviceType).(string))
// c.Set(api.ReqResult, ret)
// c.Set(api.ReqError, nil)
//}
func CreateVersion(c *gin.Context) {
request := model.VersionCreateRequest{}
err := c.ShouldBind(&request)
request.OpeUser = c.GetString("userName")
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage("ShouldBind"+err.Error()))
return
}
ret, err := svc.CreateVersion(&request)
c.Set(api.ReqResult, ret)
c.Set(api.ReqError, err)
}
func UpdateVersion(c *gin.Context) {
request := model.VersionUpdateRequest{}
err := c.ShouldBind(&request)
request.OpeUser = c.GetString("userName")
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage("ShouldBind"+err.Error()))
return
}
ret, err := svc.UpdateVersion(&request)
c.Set(api.ReqResult, ret)
c.Set(api.ReqError, err)
}
func ChangeVersionStatus(c *gin.Context) {
request := model.VersionChangeStatusRequest{}
err := c.ShouldBind(&request)
request.OpeUser = c.GetString("userName")
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage("ShouldBind"+err.Error()))
return
}
err = svc.ChangeVersionStatus(&request)
c.Set(api.ReqResult, nil)
c.Set(api.ReqError, err)
}
func GetVersionList(c *gin.Context) {
request := model.GetVersionListRequest{}
request.Platform = c.DefaultQuery("platform", "%")
request.DeviceType = c.DefaultQuery("deviceType", "%")
request.Page = util.ToInt64(c.DefaultQuery("page", "0"))
ret, err := svc.GetVersionList(&request)
c.Set(api.ReqResult, ret)
c.Set(api.ReqError, err)
}
func CheckAndUpdateVersion(c *gin.Context) {
request := model.VersionCheckAndUpdateRequest{}
err := c.ShouldBind(&request)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage("ShouldBind"+err.Error()))
return
}
deviceType, ok := c.Get(api.DeviceType)
if !ok {
c.Set(api.ReqError, xerror.NewError(xerror.DeviceTypeError))
return
}
request.DeviceType = deviceType.(string)
ret, err := svc.CheckAndUpdateVersion(&request)
c.Set(api.ReqResult, ret)
c.Set(api.ReqError, err)
}
func GetToken(c *gin.Context) {
request := model.GetTokenRequest{}
err := c.ShouldBind(&request)
if err != nil {
c.Set(api.ReqError, xerror.NewError(xerror.ParamsError).SetExtMessage("ShouldBind"+err.Error()))
return
}
ret, err := svc.GetToken(&request)
c.Set(api.ReqResult, ret)
c.Set(api.ReqError, err)
}