Files
assets/main.go
qhd 829dc07747 refactor: 重构资产实体和DTO结构类型
将gjson.Json类型替换为具体的结构体和map类型,修正DAO层链式调用,启用SKU元数据校验逻辑
2026-03-22 20:08:32 +08:00

112 lines
3.5 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"
"syscall"
"gitea.com/red-future/common/http"
"gitea.com/red-future/common/jaeger"
_ "gitea.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("/*", 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,
// })
//}
gmq.Init("config.yml")
err := gmq.GetGmq("primary").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, "收到退出信号,正在关闭服务...")
}