Files
assets/main.go
2026-06-10 15:40:17 +08:00

120 lines
3.9 KiB
Go

package main
import (
"assets/consts/public"
assetController "assets/controller/asset"
enumController "assets/controller/enum"
procurementController "assets/controller/procurement"
stockController "assets/controller/stock"
syncController "assets/controller/sync"
stockService "assets/service/stock"
"context"
"os"
"os/signal"
"strings"
"syscall"
"gitea.redpowerfuture.com/red-future/common/http"
"gitea.redpowerfuture.com/red-future/common/jaeger"
_ "gitea.redpowerfuture.com/red-future/common/swagger"
gmq "github.com/bjang03/gmq/core/gmq"
"github.com/bjang03/gmq/mq"
"github.com/bjang03/gmq/types"
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
"github.com/gogf/gf/v2/frame/g"
)
func main() {
ctx := context.Background()
defer jaeger.ShutDown(ctx)
// 注册路由
//http.Httpserver.BindMiddleware("/*", http.SkipMiddleware(middleware.ModuleTenantCheck, "/*"))
http.RouteRegister([]interface{}{
assetController.Asset,
assetController.AssetSku,
assetController.Category,
assetController.PrivateSku,
assetController.PrivateCategory,
enumController.Enum,
stockController.StockManage,
stockController.StockDetails,
stockController.StockBatch,
stockController.PrivateStock,
stockController.InventoryCount,
stockController.InventoryCountDetail,
stockController.InventoryWarning,
stockController.InventoryWarningHistory,
stockController.Location,
stockController.Warehouse,
stockController.Zone,
stockController.UnitConversion,
procurementController.Supplier,
procurementController.PurchaseOrder,
procurementController.PurchaseOrderItem,
syncController.Sync,
})
// 注册RPC服务
//if err := message.AutoRegisterServices(ctx, map[string]interface{}{
// "assetSkuService": assetService.AssetSku,
//}); err != nil {
// g.Log().Warningf(ctx, "RPC 服务注册失败,服务将无法通过 NATS 调用: %v", err)
//} else {
// g.Log().Info(ctx, "RPC 服务注册成功")
//}
// 注册消息队列消费者
//msgPlugin, err := message.GetMsgPlugin(context.TODO(), message.MessageNATS)
//if err != nil {
// g.Log().Warningf(ctx, "消息队列插件获取失败,服务将无法消费消息: %v", err)
//} else {
// msgPlugin.Subscribe(ctx, &message.NatsSubscribeMsgConfig{
// QueueName: public.StockDetailGroupName,
// Durable: true,
// DelayTime: 10,
// ConsumerName: public.StockDetailConsumerName,
// AutoAck: public.StockDetailAutoAck,
// PrefetchCount: public.StockDetailPrefetchCount,
// HandleFunc: stockService.StockManage.AddStock,
// })
//}
//plugin, err := message.GetMsgPlugin(message.MessageRedis)
//if err != nil {
// g.Log().Warningf(ctx, "消息队列插件获取失败,服务将无法消费消息: %v", err)
//} else {
// plugin.Subscribe(ctx, &message.RedisSubscribeMsgConfig{
// QueueName: public.StockDetailQueueName,
// ConsumerName: public.StockDetailConsumerName,
// PrefetchCount: public.StockDetailPrefetchCount,
// AutoAck: public.StockDetailAutoAck,
// HandleFunc: stockService.StockManage.AddStock,
// })
//}
redisAddress := g.Cfg().MustGet(ctx, "redis.default.address").String()
redisAddressList := strings.Split(redisAddress, ":")
gmq.GmqRegister(public.GmqMsgPluginsName, &mq.RedisConn{
RedisConfig: mq.RedisConfig{
Addr: redisAddressList[0],
Port: redisAddressList[1],
},
})
err := gmq.GetGmq(public.GmqMsgPluginsName).GmqSubscribe(ctx, &mq.RedisSubMessage{
SubMessage: types.SubMessage{
Topic: public.StockDetailQueueName,
ConsumerName: public.StockDetailConsumerName,
AutoAck: public.StockDetailAutoAck,
FetchCount: public.StockDetailPrefetchCount,
HandleFunc: stockService.StockManage.AddStock,
},
})
if err != nil {
return
}
// 监听退出信号
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
g.Log().Info(ctx, "收到退出信号,正在关闭服务...")
}