114 lines
3.2 KiB
Go
114 lines
3.2 KiB
Go
package main
|
|
|
|
import (
|
|
"DeviceManagement/internal/common"
|
|
"DeviceManagement/internal/controller"
|
|
"DeviceManagement/internal/logics"
|
|
"DeviceManagement/internal/model"
|
|
"DeviceManagement/internal/service"
|
|
"context"
|
|
"net/http"
|
|
"strings"
|
|
|
|
_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
|
|
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/net/ghttp"
|
|
"github.com/gogf/gf/v2/os/glog"
|
|
)
|
|
|
|
func main() {
|
|
g.Log().SetFlags(glog.F_ASYNC | glog.F_TIME_DATE | glog.F_TIME_TIME | glog.F_FILE_LONG)
|
|
s := g.Server()
|
|
s.SetOpenApiPath("/api.json")
|
|
s.SetSwaggerPath("/swagger")
|
|
|
|
_ = logics.NewMailer()
|
|
logicsProductCategory := logics.NewProductCategory()
|
|
logicsProduct := logics.NewProduct()
|
|
logicsDevice := logics.NewDevice()
|
|
logicsDeviceLog := logics.NewDeviceLog()
|
|
logicsDeviceConfig := logics.NewDeviceConfig()
|
|
logicsDevicePermission := logics.NewDevicePermission()
|
|
logicsCronJob := logics.NewCronJob()
|
|
logicsCronJobLog := logics.NewCronJobLog()
|
|
logicsCronJobTemplate := logics.NewCronJobTemplate()
|
|
logicsScheduler := logics.NewScheduler()
|
|
logicsThirdService := logics.NewThirdService()
|
|
|
|
service.RegisterProductCategory(logicsProductCategory)
|
|
service.RegisterProduct(logicsProduct)
|
|
service.RegisterDevice(logicsDevice)
|
|
service.RegisterDeviceLog(logicsDeviceLog)
|
|
service.RegisterDeviceConfig(logicsDeviceConfig)
|
|
service.RegisterDevicePermission(logicsDevicePermission)
|
|
service.RegisterCronJob(logicsCronJob)
|
|
service.RegisterCronJobLog(logicsCronJobLog)
|
|
service.RegisterCronJobTemplate(logicsCronJobTemplate)
|
|
service.RegisterScheduler(logicsScheduler)
|
|
service.RegisterThirdService(logicsThirdService)
|
|
service.RegisterMQService()
|
|
|
|
logicsCronJobTemplate.RegisterDefaultCronJobTemplate()
|
|
|
|
logicsScheduler.RegisterHandler(model.DeviceCountJobName, logicsDevice.DeviceCountHandler)
|
|
|
|
if err := service.Scheduler().Start(); err != nil {
|
|
g.Log().Fatalf(context.Background(), "failed to start scheduler: %v", err)
|
|
}
|
|
|
|
s.Group("/api/v1/device-management", func(group *ghttp.RouterGroup) {
|
|
group.Middleware(CORS)
|
|
group.Middleware(ghttp.MiddlewareHandlerResponse)
|
|
group.Middleware(Auth)
|
|
group.Bind(
|
|
controller.ProductController,
|
|
controller.ProductCategoryController,
|
|
|
|
controller.DeviceController,
|
|
controller.DeviceLogController,
|
|
controller.DeviceConfigController,
|
|
controller.DevicePermissionController,
|
|
|
|
controller.CronJobController,
|
|
controller.CronJobLogController,
|
|
controller.CronJobTemplateController,
|
|
)
|
|
})
|
|
|
|
s.Run()
|
|
}
|
|
|
|
func CORS(r *ghttp.Request) {
|
|
corsOptions := r.Response.DefaultCORSOptions()
|
|
r.Response.CORS(corsOptions)
|
|
r.Middleware.Next()
|
|
}
|
|
|
|
func Auth(r *ghttp.Request) {
|
|
token := r.Header.Get("Authorization")
|
|
token = strings.TrimPrefix(token, "Bearer ")
|
|
if token == "" {
|
|
r.Response.Status = http.StatusOK
|
|
r.Response.WriteJson(g.Map{
|
|
"code": http.StatusUnauthorized,
|
|
"message": "Unauthorized",
|
|
})
|
|
r.Exit()
|
|
}
|
|
|
|
out, err := service.ThirdService().Introspect(r.Context(), token)
|
|
if err != nil {
|
|
r.Response.Status = http.StatusOK
|
|
r.Response.WriteJson(g.Map{
|
|
"code": http.StatusUnauthorized,
|
|
"message": "Unauthorized",
|
|
})
|
|
r.Exit()
|
|
}
|
|
|
|
r.SetCtxVar(common.BearerToken, token)
|
|
r.SetCtxVar(common.TokenInspectRes, out)
|
|
r.Middleware.Next()
|
|
}
|