Files
DeviceManagement/main.go
yyboo e1e2984cd9 [chore] 设备管理服务
1 产品分类管理
2 产品管理
3 设备元数据管理
2025-08-13 19:15:53 +08:00

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()
}