feature(1.2.8): 优化代码

- cron 相关
- socket 相关
This commit is contained in:
新亮
2021-11-20 16:46:13 +08:00
parent 8ed27cdce1
commit b05ed0b59d
21 changed files with 64 additions and 84 deletions

View File

@@ -6,7 +6,7 @@ import (
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/validation"
cron2 "github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/pkg/errno"
)
@@ -67,7 +67,7 @@ func (h *handler) Create() core.HandlerFunc {
return
}
createData := new(cron2.CreateCronTaskData)
createData := new(cron.CreateCronTaskData)
createData.Name = req.Name
createData.Spec = req.Spec
createData.Command = req.Command

View File

@@ -6,7 +6,7 @@ import (
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/validation"
cron2 "github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/pkg/errno"
"github.com/spf13/cast"
@@ -66,7 +66,7 @@ func (h *handler) Detail() core.HandlerFunc {
return
}
searchOneData := new(cron2.SearchOneData)
searchOneData := new(cron.SearchOneData)
searchOneData.Id = cast.ToInt32(ids[0])
info, err := h.cronService.Detail(ctx, searchOneData)

View File

@@ -7,7 +7,7 @@ import (
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/validation"
cron2 "github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/pkg/errno"
"github.com/xinliangnote/go-gin-api/pkg/timeutil"
@@ -91,7 +91,7 @@ func (h *handler) List() core.HandlerFunc {
pageSize = 10
}
searchData := new(cron2.SearchData)
searchData := new(cron.SearchData)
searchData.Page = req.Page
searchData.PageSize = req.PageSize
searchData.Name = req.Name

View File

@@ -6,7 +6,7 @@ import (
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/validation"
cron2 "github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/internal/services/cron"
"github.com/xinliangnote/go-gin-api/pkg/errno"
)
@@ -81,7 +81,7 @@ func (h *handler) Modify() core.HandlerFunc {
id := int32(ids[0])
modifyData := new(cron2.ModifyCronTaskData)
modifyData := new(cron.ModifyCronTaskData)
modifyData.Name = req.Name
modifyData.Spec = req.Spec
modifyData.Command = req.Command

View File

@@ -2,8 +2,8 @@ package cron_handler
import (
"github.com/xinliangnote/go-gin-api/configs"
cronServer "github.com/xinliangnote/go-gin-api/internal/api/repository/cron"
"github.com/xinliangnote/go-gin-api/internal/api/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/cron/cron_server"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
"github.com/xinliangnote/go-gin-api/internal/services/cron"
@@ -55,7 +55,7 @@ type handler struct {
cronService cron.Service
}
func New(logger *zap.Logger, db db.Repo, cache redis.Repo, cronServer cron_server.Server) Handler {
func New(logger *zap.Logger, db db.Repo, cache redis.Repo, cronServer cronServer.Server) Handler {
return &handler{
logger: logger,
cache: cache,

View File

@@ -7,7 +7,7 @@ import (
"github.com/xinliangnote/go-gin-api/internal/code"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/validation"
"github.com/xinliangnote/go-gin-api/internal/websocket/socket_conn/system_message"
"github.com/xinliangnote/go-gin-api/internal/websocket/sysmessage"
"github.com/xinliangnote/go-gin-api/pkg/errno"
"github.com/xinliangnote/go-gin-api/pkg/timeutil"
)
@@ -49,7 +49,7 @@ func (h *handler) SendMessage() core.HandlerFunc {
return
}
conn, err := system_message.GetConn()
conn, err := sysmessage.GetConn()
if err != nil {
ctx.AbortWithError(errno.NewError(
http.StatusBadRequest,

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
import (
"sync"

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
import (
"fmt"

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
import (
"strings"

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
import "github.com/spf13/cast"

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
import (
"fmt"

View File

@@ -1,4 +1,4 @@
package cron_server
package cron
func (s *server) Stop() {
s.cron.Stop()

View File

@@ -1,6 +1,9 @@
package socket_server
package socket
import (
"net/http"
"time"
"github.com/xinliangnote/go-gin-api/internal/api/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
"github.com/xinliangnote/go-gin-api/pkg/errors"
@@ -31,7 +34,14 @@ type Server interface {
OnClose()
}
func New(logger *zap.Logger, db db.Repo, cache redis.Repo, conn *websocket.Conn) (Server, error) {
var upGrader = websocket.Upgrader{
HandshakeTimeout: 5 * time.Second,
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func New(logger *zap.Logger, db db.Repo, cache redis.Repo, w http.ResponseWriter, r *http.Request, responseHeader http.Header) (Server, error) {
if logger == nil {
return nil, errors.New("logger required")
}
@@ -44,15 +54,16 @@ func New(logger *zap.Logger, db db.Repo, cache redis.Repo, conn *websocket.Conn)
return nil, errors.New("cache required")
}
if conn == nil {
return nil, errors.New("conn required")
ws, err := upGrader.Upgrade(w, r, responseHeader)
if err != nil {
return nil, errors.Wrap(err, "ws error")
}
return &server{
logger: logger,
db: db,
cache: cache,
socket: conn,
socket: ws,
}, nil
}

View File

@@ -1,4 +1,4 @@
package socket_server
package socket
import "go.uber.org/zap"

View File

@@ -1,4 +1,4 @@
package socket_server
package socket
import "go.uber.org/zap"

View File

@@ -1,4 +1,4 @@
package socket_server
package socket
import (
"github.com/gorilla/websocket"

View File

@@ -2,8 +2,8 @@ package router
import (
"github.com/xinliangnote/go-gin-api/configs"
"github.com/xinliangnote/go-gin-api/internal/api/repository/cron"
"github.com/xinliangnote/go-gin-api/internal/api/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/cron/cron_server"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
"github.com/xinliangnote/go-gin-api/internal/pkg/metrics"
@@ -21,14 +21,14 @@ type resource struct {
db db.Repo
cache redis.Repo
middles middleware.Middleware
cronServer cron_server.Server
cronServer cron.Server
}
type Server struct {
Mux core.Mux
Db db.Repo
Cache redis.Repo
CronServer cron_server.Server
CronServer cron.Server
}
func NewHTTPServer(logger *zap.Logger, cronLogger *zap.Logger) (*Server, error) {
@@ -61,7 +61,7 @@ func NewHTTPServer(logger *zap.Logger, cronLogger *zap.Logger) (*Server, error)
r.cache = cacheRepo
// 初始化 CRON Server
cronServer, err := cron_server.New(cronLogger, dbRepo, cacheRepo)
cronServer, err := cron.New(cronLogger, dbRepo, cacheRepo)
if err != nil {
logger.Fatal("new cron err", zap.Error(err))
}

View File

@@ -1,11 +1,11 @@
package router
import (
"github.com/xinliangnote/go-gin-api/internal/websocket/socket_conn/system_message"
"github.com/xinliangnote/go-gin-api/internal/websocket/sysmessage"
)
func setSocketRouter(r *resource) {
systemMessage := system_message.New(r.logger, r.db, r.cache)
systemMessage := sysmessage.New(r.logger, r.db, r.cache)
// 无需记录日志
socket := r.mux.Group("/socket", r.middles.DisableLog())

View File

@@ -1,9 +1,9 @@
package cron
import (
"github.com/xinliangnote/go-gin-api/internal/api/repository/cron"
"github.com/xinliangnote/go-gin-api/internal/api/repository/db_repo/cron_task_repo"
"github.com/xinliangnote/go-gin-api/internal/api/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/cron/cron_server"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
)
@@ -25,10 +25,10 @@ type Service interface {
type service struct {
db db.Repo
cache redis.Repo
cronServer cron_server.Server
cronServer cron.Server
}
func New(db db.Repo, cache redis.Repo, cron cron_server.Server) Service {
func New(db db.Repo, cache redis.Repo, cron cron.Server) Service {
return &service{
db: db,
cache: cache,

View File

@@ -1,34 +0,0 @@
package system_message
import (
"net/http"
"time"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/websocket/socket_server"
"github.com/gorilla/websocket"
)
func (h *handler) Connect() core.HandlerFunc {
var upGrader = websocket.Upgrader{
HandshakeTimeout: 5 * time.Second,
CheckOrigin: func(r *http.Request) bool {
return true
},
}
return func(ctx core.Context) {
ws, err := upGrader.Upgrade(ctx.ResponseWriter(), ctx.Request(), nil)
if err != nil {
return
}
server, err = socket_server.New(h.logger, h.db, h.cache, ws)
if err != nil {
return
}
go server.OnMessage()
}
}

View File

@@ -1,25 +1,19 @@
package system_message
package sysmessage
import (
"github.com/xinliangnote/go-gin-api/internal/api/repository/redis"
"github.com/xinliangnote/go-gin-api/internal/api/repository/socket"
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
"github.com/xinliangnote/go-gin-api/internal/websocket/socket_server"
"github.com/xinliangnote/go-gin-api/pkg/errors"
"go.uber.org/zap"
)
var _ Handler = (*handler)(nil)
var server socket_server.Server
type Handler interface {
i()
// Connect 建立 Socket 连接
Connect() core.HandlerFunc
}
var (
err error
server socket.Server
)
type handler struct {
logger *zap.Logger
@@ -27,7 +21,7 @@ type handler struct {
db db.Repo
}
func New(logger *zap.Logger, db db.Repo, cache redis.Repo) Handler {
func New(logger *zap.Logger, db db.Repo, cache redis.Repo) *handler {
return &handler{
logger: logger,
cache: cache,
@@ -35,7 +29,7 @@ func New(logger *zap.Logger, db db.Repo, cache redis.Repo) Handler {
}
}
func GetConn() (socket_server.Server, error) {
func GetConn() (socket.Server, error) {
if server != nil {
return server, nil
}
@@ -43,4 +37,13 @@ func GetConn() (socket_server.Server, error) {
return nil, errors.New("conn is nil")
}
func (h *handler) i() {}
func (h *handler) Connect() core.HandlerFunc {
return func(ctx core.Context) {
server, err = socket.New(h.logger, h.db, h.cache, ctx.ResponseWriter(), ctx.Request(), nil)
if err != nil {
return
}
go server.OnMessage()
}
}