feat: import services and standardize Go 1.26.5

This commit is contained in:
2026-08-09 10:43:45 +08:00
parent 689c74b28f
commit 86024fa81d
1456 changed files with 220765 additions and 2 deletions

View File

@@ -0,0 +1,7 @@
# Actions 编译部署配置文件,文件格式:YAML
#
# 微服务相关配置
service:
origin: bsm
image: golang:1.26.5-bookworm
describe: ec.delivery

View File

@@ -0,0 +1,3 @@
# delivery
配送微服务,团队或公司,车辆,配送人员。

View File

@@ -0,0 +1,43 @@
package service
import (
"git.apinb.com/bsm-service-ec/delivery/internal/impl"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
pb "git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
carServer "git.apinb.com/bsm-service-ec/delivery/internal/server/car"
memberServer "git.apinb.com/bsm-service-ec/delivery/internal/server/member"
teamServer "git.apinb.com/bsm-service-ec/delivery/internal/server/team"
)
var (
ServiceKey = "delivery"
)
func Run() {
impl.NewService(ServiceKey)
ctx := svc.NewServiceContext(impl.Configure)
service, err := zrpc.NewServer(impl.Configure.RpcServerConf, func(grpcServer *grpc.Server) {
//将服务注册到GRPC
pb.RegisterTeamServer(grpcServer, teamServer.NewTeamServer(ctx))
pb.RegisterMemberServer(grpcServer, memberServer.NewMemberServer(ctx))
pb.RegisterCarServer(grpcServer, carServer.NewCarServer(ctx))
reflection.Register(grpcServer)
})
logx.Must(err)
defer service.Stop()
service.Start()
}

View File

@@ -0,0 +1,46 @@
Name: {ServiceKey}
ListenOn: 0.0.0.0:12264
Dsn: postgres://postgres:CHANGE_ME@infra.test:5432/{Workspace}_test?sslmode=disable&TimeZone=Asia/Shanghai
# cache DB的选择请在后面直接带参数不带会自动HASH计算选择DB库。
Cache: redis://null:CHANGE_ME@infra.test:6379/
Etcd:
Hosts:
- infra.test:2379
Key: service.{Workspace}.{ServiceKey}.rpc
# 匿名访问清单,自动注入网关层
# Anonymous:
# Key: anonymous.{Workspace}
# Urls:
PayEffectiveTime: '30'
# 日志记录
Log:
ServiceName: {ServiceKey}
Mode: file
Path: logs/{ServiceKey}
Stat: false
# 性能监控, 注释将不启用此功能
#Prometheus:
# Host: 127.0.0.1
# Port: 22202
# Path: /metrics
# 链路追踪, 注释将不启用此功能
#Telemetry:
# Name: {Workspace}.{ServiceKey}.{RuntimeMode}
# Endpoint: http://127.0.0.1:14268/api/traces
# Sampler: 1.0
# Batcher: jaeger
# MQ Pulsar, 注释将不启用此功能
#Pulsar:
# Endpoints: 127.0.0.1
# Token: 9091
# Namespaces: {Workspace}

View File

@@ -0,0 +1,47 @@
Name: {ServiceKey}
ListenOn: 0.0.0.0:12264
Dsn: postgres://postgres:CHANGE_ME@infra.prod:5432/{Workspace}_prod?sslmode=disable&TimeZone=Asia/Shanghai
# cache DB的选择请在后面直接带参数不带会自动HASH计算选择DB库。
Cache: redis://null:CHANGE_ME@infra.prod:6379/
Etcd:
Hosts:
- infra.prod:2379
Key: service.{Workspace}.{ServiceKey}.rpc
# 匿名访问清单,自动注入网关层
# Anonymous:
# Key: anonymous.{Workspace}
# Urls:
# - order.Check.Hello
# 支付有效期时间
PayExpireTime: '30'
# 日志记录
Log:
ServiceName: {ServiceKey}
Mode: file
Path: logs/{ServiceKey}
Stat: false
# 性能监控, 注释将不启用此功能
#Prometheus:
# Host: 127.0.0.1
# Port: 22202
# Path: /metrics
# 链路追踪, 注释将不启用此功能
#Telemetry:
# Name: {Workspace}.{ServiceKey}.{RuntimeMode}
# Endpoint: http://127.0.0.1:14268/api/traces
# Sampler: 1.0
# Batcher: jaeger
# MQ Pulsar, 注释将不启用此功能
#Pulsar:
# Endpoints: 127.0.0.1
# Token: 9091
# Namespaces: {Workspace}

View File

@@ -0,0 +1,49 @@
Name: {ServiceKey}
ListenOn: 0.0.0.0:12264
Dsn: postgres://postgres:CHANGE_ME@infra.test:5432/{Workspace}_test?sslmode=disable&TimeZone=Asia/Shanghai
# cache DB的选择请在后面直接带参数不带会自动HASH计算选择DB库。
Cache: redis://null:CHANGE_ME@infra.test:6379/
Etcd:
Hosts:
- infra.test:2379
Key: service.{Workspace}.{ServiceKey}.rpc
# 匿名访问清单,自动注入网关层
# Anonymous:
# Key: anonymous.{Workspace}
# Urls:
# - order.Check.Hello
# 支付有效期时间
PayExpireTime: '30'
# 日志记录
Log:
ServiceName: {ServiceKey}
Mode: file
Path: logs/{ServiceKey}
Stat: false
# 性能监控, 注释将不启用此功能
#Prometheus:
# Host: 127.0.0.1
# Port: 22202
# Path: /metrics
# 链路追踪, 注释将不启用此功能
#Telemetry:
# Name: {Workspace}.{ServiceKey}.{RuntimeMode}
# Endpoint: http://127.0.0.1:14268/api/traces
# Sampler: 1.0
# Batcher: jaeger
# MQ Pulsar, 注释将不启用此功能
#Pulsar:
# Endpoints: 127.0.0.1
# Token: 9091
# Namespaces: {Workspace}

View File

@@ -0,0 +1,81 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package car
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
)
type (
CarItem = delivery.CarItem
CarListReply = delivery.CarListReply
Empty = delivery.Empty
FetchRequest = delivery.FetchRequest
IdentRequest = delivery.IdentRequest
MemberItem = delivery.MemberItem
MemberListReply = delivery.MemberListReply
SearchRequest = delivery.SearchRequest
StatusReply = delivery.StatusReply
TeamItem = delivery.TeamItem
TeamListReply = delivery.TeamListReply
VersionRequest = delivery.VersionRequest
Car interface {
// 配送车辆列表
CarList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*CarListReply, error)
// 添加配送车辆信息
CarAdd(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error)
// 获取配送车辆信息
CarGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*CarItem, error)
// 修改配送车辆信息
CarSet(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送车辆信息
CarDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
defaultCar struct {
cli zrpc.Client
}
)
func NewCar(cli zrpc.Client) Car {
return &defaultCar{
cli: cli,
}
}
// 配送车辆列表
func (m *defaultCar) CarList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*CarListReply, error) {
client := delivery.NewCarClient(m.cli.Conn())
return client.CarList(ctx, in, opts...)
}
// 添加配送车辆信息
func (m *defaultCar) CarAdd(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewCarClient(m.cli.Conn())
return client.CarAdd(ctx, in, opts...)
}
// 获取配送车辆信息
func (m *defaultCar) CarGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*CarItem, error) {
client := delivery.NewCarClient(m.cli.Conn())
return client.CarGet(ctx, in, opts...)
}
// 修改配送车辆信息
func (m *defaultCar) CarSet(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewCarClient(m.cli.Conn())
return client.CarSet(ctx, in, opts...)
}
// 删除配送车辆信息
func (m *defaultCar) CarDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewCarClient(m.cli.Conn())
return client.CarDel(ctx, in, opts...)
}

View File

@@ -0,0 +1,81 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package member
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
)
type (
CarItem = delivery.CarItem
CarListReply = delivery.CarListReply
Empty = delivery.Empty
FetchRequest = delivery.FetchRequest
IdentRequest = delivery.IdentRequest
MemberItem = delivery.MemberItem
MemberListReply = delivery.MemberListReply
SearchRequest = delivery.SearchRequest
StatusReply = delivery.StatusReply
TeamItem = delivery.TeamItem
TeamListReply = delivery.TeamListReply
VersionRequest = delivery.VersionRequest
Member interface {
// 获取配送员列表
MemberList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*MemberListReply, error)
// 添加配送员
MemberAdd(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error)
// 获取配送员数据
MemberGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*MemberItem, error)
// 修改配送员
MemberSet(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送员
MemberDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
defaultMember struct {
cli zrpc.Client
}
)
func NewMember(cli zrpc.Client) Member {
return &defaultMember{
cli: cli,
}
}
// 获取配送员列表
func (m *defaultMember) MemberList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*MemberListReply, error) {
client := delivery.NewMemberClient(m.cli.Conn())
return client.MemberList(ctx, in, opts...)
}
// 添加配送员
func (m *defaultMember) MemberAdd(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewMemberClient(m.cli.Conn())
return client.MemberAdd(ctx, in, opts...)
}
// 获取配送员数据
func (m *defaultMember) MemberGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*MemberItem, error) {
client := delivery.NewMemberClient(m.cli.Conn())
return client.MemberGet(ctx, in, opts...)
}
// 修改配送员
func (m *defaultMember) MemberSet(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewMemberClient(m.cli.Conn())
return client.MemberSet(ctx, in, opts...)
}
// 删除配送员
func (m *defaultMember) MemberDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewMemberClient(m.cli.Conn())
return client.MemberDel(ctx, in, opts...)
}

View File

@@ -0,0 +1,81 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package team
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
)
type (
CarItem = delivery.CarItem
CarListReply = delivery.CarListReply
Empty = delivery.Empty
FetchRequest = delivery.FetchRequest
IdentRequest = delivery.IdentRequest
MemberItem = delivery.MemberItem
MemberListReply = delivery.MemberListReply
SearchRequest = delivery.SearchRequest
StatusReply = delivery.StatusReply
TeamItem = delivery.TeamItem
TeamListReply = delivery.TeamListReply
VersionRequest = delivery.VersionRequest
Team interface {
// 配送团队列表
TeamList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*TeamListReply, error)
// 添加配送团队
TeamAdd(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error)
// 配送团队详情
TeamGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TeamItem, error)
// 修改配送团队信息
TeamSet(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送团队
TeamDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
defaultTeam struct {
cli zrpc.Client
}
)
func NewTeam(cli zrpc.Client) Team {
return &defaultTeam{
cli: cli,
}
}
// 配送团队列表
func (m *defaultTeam) TeamList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*TeamListReply, error) {
client := delivery.NewTeamClient(m.cli.Conn())
return client.TeamList(ctx, in, opts...)
}
// 添加配送团队
func (m *defaultTeam) TeamAdd(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewTeamClient(m.cli.Conn())
return client.TeamAdd(ctx, in, opts...)
}
// 配送团队详情
func (m *defaultTeam) TeamGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TeamItem, error) {
client := delivery.NewTeamClient(m.cli.Conn())
return client.TeamGet(ctx, in, opts...)
}
// 修改配送团队信息
func (m *defaultTeam) TeamSet(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewTeamClient(m.cli.Conn())
return client.TeamSet(ctx, in, opts...)
}
// 删除配送团队
func (m *defaultTeam) TeamDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
client := delivery.NewTeamClient(m.cli.Conn())
return client.TeamDel(ctx, in, opts...)
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,763 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: proto/delivery.proto
package delivery
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
Car_CarList_FullMethodName = "/delivery.Car/CarList"
Car_CarAdd_FullMethodName = "/delivery.Car/CarAdd"
Car_CarGet_FullMethodName = "/delivery.Car/CarGet"
Car_CarSet_FullMethodName = "/delivery.Car/CarSet"
Car_CarDel_FullMethodName = "/delivery.Car/CarDel"
)
// CarClient is the client API for Car service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type CarClient interface {
// 配送车辆列表
CarList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*CarListReply, error)
// 添加配送车辆信息
CarAdd(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error)
// 获取配送车辆信息
CarGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*CarItem, error)
// 修改配送车辆信息
CarSet(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送车辆信息
CarDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
type carClient struct {
cc grpc.ClientConnInterface
}
func NewCarClient(cc grpc.ClientConnInterface) CarClient {
return &carClient{cc}
}
func (c *carClient) CarList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*CarListReply, error) {
out := new(CarListReply)
err := c.cc.Invoke(ctx, Car_CarList_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *carClient) CarAdd(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Car_CarAdd_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *carClient) CarGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*CarItem, error) {
out := new(CarItem)
err := c.cc.Invoke(ctx, Car_CarGet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *carClient) CarSet(ctx context.Context, in *CarItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Car_CarSet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *carClient) CarDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Car_CarDel_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// CarServer is the server API for Car service.
// All implementations must embed UnimplementedCarServer
// for forward compatibility
type CarServer interface {
// 配送车辆列表
CarList(context.Context, *FetchRequest) (*CarListReply, error)
// 添加配送车辆信息
CarAdd(context.Context, *CarItem) (*StatusReply, error)
// 获取配送车辆信息
CarGet(context.Context, *IdentRequest) (*CarItem, error)
// 修改配送车辆信息
CarSet(context.Context, *CarItem) (*StatusReply, error)
// 删除配送车辆信息
CarDel(context.Context, *IdentRequest) (*StatusReply, error)
mustEmbedUnimplementedCarServer()
}
// UnimplementedCarServer must be embedded to have forward compatible implementations.
type UnimplementedCarServer struct {
}
func (UnimplementedCarServer) CarList(context.Context, *FetchRequest) (*CarListReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method CarList not implemented")
}
func (UnimplementedCarServer) CarAdd(context.Context, *CarItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method CarAdd not implemented")
}
func (UnimplementedCarServer) CarGet(context.Context, *IdentRequest) (*CarItem, error) {
return nil, status.Errorf(codes.Unimplemented, "method CarGet not implemented")
}
func (UnimplementedCarServer) CarSet(context.Context, *CarItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method CarSet not implemented")
}
func (UnimplementedCarServer) CarDel(context.Context, *IdentRequest) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method CarDel not implemented")
}
func (UnimplementedCarServer) mustEmbedUnimplementedCarServer() {}
// UnsafeCarServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to CarServer will
// result in compilation errors.
type UnsafeCarServer interface {
mustEmbedUnimplementedCarServer()
}
func RegisterCarServer(s grpc.ServiceRegistrar, srv CarServer) {
s.RegisterService(&Car_ServiceDesc, srv)
}
func _Car_CarList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FetchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CarServer).CarList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Car_CarList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CarServer).CarList(ctx, req.(*FetchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Car_CarAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CarItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CarServer).CarAdd(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Car_CarAdd_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CarServer).CarAdd(ctx, req.(*CarItem))
}
return interceptor(ctx, in, info, handler)
}
func _Car_CarGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CarServer).CarGet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Car_CarGet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CarServer).CarGet(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Car_CarSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CarItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CarServer).CarSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Car_CarSet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CarServer).CarSet(ctx, req.(*CarItem))
}
return interceptor(ctx, in, info, handler)
}
func _Car_CarDel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(CarServer).CarDel(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Car_CarDel_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(CarServer).CarDel(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
// Car_ServiceDesc is the grpc.ServiceDesc for Car service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Car_ServiceDesc = grpc.ServiceDesc{
ServiceName: "delivery.Car",
HandlerType: (*CarServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CarList",
Handler: _Car_CarList_Handler,
},
{
MethodName: "CarAdd",
Handler: _Car_CarAdd_Handler,
},
{
MethodName: "CarGet",
Handler: _Car_CarGet_Handler,
},
{
MethodName: "CarSet",
Handler: _Car_CarSet_Handler,
},
{
MethodName: "CarDel",
Handler: _Car_CarDel_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "proto/delivery.proto",
}
const (
Member_MemberList_FullMethodName = "/delivery.Member/MemberList"
Member_MemberAdd_FullMethodName = "/delivery.Member/MemberAdd"
Member_MemberGet_FullMethodName = "/delivery.Member/MemberGet"
Member_MemberSet_FullMethodName = "/delivery.Member/MemberSet"
Member_MemberDel_FullMethodName = "/delivery.Member/MemberDel"
)
// MemberClient is the client API for Member service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type MemberClient interface {
// 获取配送员列表
MemberList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*MemberListReply, error)
// 添加配送员
MemberAdd(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error)
// 获取配送员数据
MemberGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*MemberItem, error)
// 修改配送员
MemberSet(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送员
MemberDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
type memberClient struct {
cc grpc.ClientConnInterface
}
func NewMemberClient(cc grpc.ClientConnInterface) MemberClient {
return &memberClient{cc}
}
func (c *memberClient) MemberList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*MemberListReply, error) {
out := new(MemberListReply)
err := c.cc.Invoke(ctx, Member_MemberList_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *memberClient) MemberAdd(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Member_MemberAdd_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *memberClient) MemberGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*MemberItem, error) {
out := new(MemberItem)
err := c.cc.Invoke(ctx, Member_MemberGet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *memberClient) MemberSet(ctx context.Context, in *MemberItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Member_MemberSet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *memberClient) MemberDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Member_MemberDel_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// MemberServer is the server API for Member service.
// All implementations must embed UnimplementedMemberServer
// for forward compatibility
type MemberServer interface {
// 获取配送员列表
MemberList(context.Context, *FetchRequest) (*MemberListReply, error)
// 添加配送员
MemberAdd(context.Context, *MemberItem) (*StatusReply, error)
// 获取配送员数据
MemberGet(context.Context, *IdentRequest) (*MemberItem, error)
// 修改配送员
MemberSet(context.Context, *MemberItem) (*StatusReply, error)
// 删除配送员
MemberDel(context.Context, *IdentRequest) (*StatusReply, error)
mustEmbedUnimplementedMemberServer()
}
// UnimplementedMemberServer must be embedded to have forward compatible implementations.
type UnimplementedMemberServer struct {
}
func (UnimplementedMemberServer) MemberList(context.Context, *FetchRequest) (*MemberListReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method MemberList not implemented")
}
func (UnimplementedMemberServer) MemberAdd(context.Context, *MemberItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method MemberAdd not implemented")
}
func (UnimplementedMemberServer) MemberGet(context.Context, *IdentRequest) (*MemberItem, error) {
return nil, status.Errorf(codes.Unimplemented, "method MemberGet not implemented")
}
func (UnimplementedMemberServer) MemberSet(context.Context, *MemberItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method MemberSet not implemented")
}
func (UnimplementedMemberServer) MemberDel(context.Context, *IdentRequest) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method MemberDel not implemented")
}
func (UnimplementedMemberServer) mustEmbedUnimplementedMemberServer() {}
// UnsafeMemberServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to MemberServer will
// result in compilation errors.
type UnsafeMemberServer interface {
mustEmbedUnimplementedMemberServer()
}
func RegisterMemberServer(s grpc.ServiceRegistrar, srv MemberServer) {
s.RegisterService(&Member_ServiceDesc, srv)
}
func _Member_MemberList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FetchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MemberServer).MemberList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Member_MemberList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MemberServer).MemberList(ctx, req.(*FetchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Member_MemberAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MemberItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MemberServer).MemberAdd(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Member_MemberAdd_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MemberServer).MemberAdd(ctx, req.(*MemberItem))
}
return interceptor(ctx, in, info, handler)
}
func _Member_MemberGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MemberServer).MemberGet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Member_MemberGet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MemberServer).MemberGet(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Member_MemberSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MemberItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MemberServer).MemberSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Member_MemberSet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MemberServer).MemberSet(ctx, req.(*MemberItem))
}
return interceptor(ctx, in, info, handler)
}
func _Member_MemberDel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MemberServer).MemberDel(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Member_MemberDel_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MemberServer).MemberDel(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
// Member_ServiceDesc is the grpc.ServiceDesc for Member service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Member_ServiceDesc = grpc.ServiceDesc{
ServiceName: "delivery.Member",
HandlerType: (*MemberServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "MemberList",
Handler: _Member_MemberList_Handler,
},
{
MethodName: "MemberAdd",
Handler: _Member_MemberAdd_Handler,
},
{
MethodName: "MemberGet",
Handler: _Member_MemberGet_Handler,
},
{
MethodName: "MemberSet",
Handler: _Member_MemberSet_Handler,
},
{
MethodName: "MemberDel",
Handler: _Member_MemberDel_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "proto/delivery.proto",
}
const (
Team_TeamList_FullMethodName = "/delivery.Team/TeamList"
Team_TeamAdd_FullMethodName = "/delivery.Team/TeamAdd"
Team_TeamGet_FullMethodName = "/delivery.Team/TeamGet"
Team_TeamSet_FullMethodName = "/delivery.Team/TeamSet"
Team_TeamDel_FullMethodName = "/delivery.Team/TeamDel"
)
// TeamClient is the client API for Team service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type TeamClient interface {
// 配送团队列表
TeamList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*TeamListReply, error)
// 添加配送团队
TeamAdd(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error)
// 配送团队详情
TeamGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TeamItem, error)
// 修改配送团队信息
TeamSet(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error)
// 删除配送团队
TeamDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error)
}
type teamClient struct {
cc grpc.ClientConnInterface
}
func NewTeamClient(cc grpc.ClientConnInterface) TeamClient {
return &teamClient{cc}
}
func (c *teamClient) TeamList(ctx context.Context, in *FetchRequest, opts ...grpc.CallOption) (*TeamListReply, error) {
out := new(TeamListReply)
err := c.cc.Invoke(ctx, Team_TeamList_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *teamClient) TeamAdd(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Team_TeamAdd_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *teamClient) TeamGet(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*TeamItem, error) {
out := new(TeamItem)
err := c.cc.Invoke(ctx, Team_TeamGet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *teamClient) TeamSet(ctx context.Context, in *TeamItem, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Team_TeamSet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *teamClient) TeamDel(ctx context.Context, in *IdentRequest, opts ...grpc.CallOption) (*StatusReply, error) {
out := new(StatusReply)
err := c.cc.Invoke(ctx, Team_TeamDel_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TeamServer is the server API for Team service.
// All implementations must embed UnimplementedTeamServer
// for forward compatibility
type TeamServer interface {
// 配送团队列表
TeamList(context.Context, *FetchRequest) (*TeamListReply, error)
// 添加配送团队
TeamAdd(context.Context, *TeamItem) (*StatusReply, error)
// 配送团队详情
TeamGet(context.Context, *IdentRequest) (*TeamItem, error)
// 修改配送团队信息
TeamSet(context.Context, *TeamItem) (*StatusReply, error)
// 删除配送团队
TeamDel(context.Context, *IdentRequest) (*StatusReply, error)
mustEmbedUnimplementedTeamServer()
}
// UnimplementedTeamServer must be embedded to have forward compatible implementations.
type UnimplementedTeamServer struct {
}
func (UnimplementedTeamServer) TeamList(context.Context, *FetchRequest) (*TeamListReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method TeamList not implemented")
}
func (UnimplementedTeamServer) TeamAdd(context.Context, *TeamItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method TeamAdd not implemented")
}
func (UnimplementedTeamServer) TeamGet(context.Context, *IdentRequest) (*TeamItem, error) {
return nil, status.Errorf(codes.Unimplemented, "method TeamGet not implemented")
}
func (UnimplementedTeamServer) TeamSet(context.Context, *TeamItem) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method TeamSet not implemented")
}
func (UnimplementedTeamServer) TeamDel(context.Context, *IdentRequest) (*StatusReply, error) {
return nil, status.Errorf(codes.Unimplemented, "method TeamDel not implemented")
}
func (UnimplementedTeamServer) mustEmbedUnimplementedTeamServer() {}
// UnsafeTeamServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to TeamServer will
// result in compilation errors.
type UnsafeTeamServer interface {
mustEmbedUnimplementedTeamServer()
}
func RegisterTeamServer(s grpc.ServiceRegistrar, srv TeamServer) {
s.RegisterService(&Team_ServiceDesc, srv)
}
func _Team_TeamList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FetchRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TeamServer).TeamList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Team_TeamList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TeamServer).TeamList(ctx, req.(*FetchRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Team_TeamAdd_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TeamItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TeamServer).TeamAdd(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Team_TeamAdd_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TeamServer).TeamAdd(ctx, req.(*TeamItem))
}
return interceptor(ctx, in, info, handler)
}
func _Team_TeamGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TeamServer).TeamGet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Team_TeamGet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TeamServer).TeamGet(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Team_TeamSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(TeamItem)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TeamServer).TeamSet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Team_TeamSet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TeamServer).TeamSet(ctx, req.(*TeamItem))
}
return interceptor(ctx, in, info, handler)
}
func _Team_TeamDel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(IdentRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TeamServer).TeamDel(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Team_TeamDel_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TeamServer).TeamDel(ctx, req.(*IdentRequest))
}
return interceptor(ctx, in, info, handler)
}
// Team_ServiceDesc is the grpc.ServiceDesc for Team service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Team_ServiceDesc = grpc.ServiceDesc{
ServiceName: "delivery.Team",
HandlerType: (*TeamServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "TeamList",
Handler: _Team_TeamList_Handler,
},
{
MethodName: "TeamAdd",
Handler: _Team_TeamAdd_Handler,
},
{
MethodName: "TeamGet",
Handler: _Team_TeamGet_Handler,
},
{
MethodName: "TeamSet",
Handler: _Team_TeamSet_Handler,
},
{
MethodName: "TeamDel",
Handler: _Team_TeamDel_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "proto/delivery.proto",
}

133
apps/ec/delivery/go.mod Normal file
View File

@@ -0,0 +1,133 @@
module git.apinb.com/bsm-service-ec/delivery
go 1.26.5
require (
git.apinb.com/bsm-sdk/engine v1.3.2
github.com/FishGoddess/cachego v0.6.1
github.com/zeromicro/go-zero v1.7.2
google.golang.org/grpc v1.81.1
google.golang.org/protobuf v1.36.11
gorm.io/gorm v1.31.1
)
require (
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/AthenZ/athenz v1.11.66 // indirect
github.com/DataDog/zstd v1.5.6 // indirect
github.com/apache/pulsar-client-go v0.14.0 // indirect
github.com/ardielle/ardielle-go v1.5.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/bits-and-blooms/bitset v1.14.3 // indirect
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.7.0 // indirect
github.com/danieljoos/wincred v1.2.2 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/dvsekhvalnov/jose2go v1.7.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/frankban/quicktest v1.14.6 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.3.0 // indirect
github.com/go-openapi/jsonpointer v0.22.1 // indirect
github.com/go-openapi/jsonreference v0.21.2 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-openapi/swag/jsonname v0.25.1 // indirect
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/go-cmp v0.7.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
github.com/hamba/avro/v2 v2.26.0 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
github.com/hashicorp/go-multierror v1.1.1 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.10.0 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.18.5 // indirect
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.22 // indirect
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/mtibben/percent v0.2.1 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/oklog/ulid/v2 v2.1.1 // indirect
github.com/openzipkin/zipkin-go v0.4.3 // indirect
github.com/pelletier/go-toml/v2 v2.3.1 // indirect
github.com/pierrec/lz4 v2.6.1+incompatible // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.62.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/redis/go-redis/v9 v9.20.0 // indirect
github.com/sirupsen/logrus v1.9.3 // indirect
github.com/spaolacci/murmur3 v1.1.0 // indirect
github.com/tklauser/go-sysconf v0.4.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/yusufpapurcu/wmi v1.2.4 // indirect
go.etcd.io/etcd/api/v3 v3.6.12 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.6.12 // indirect
go.etcd.io/etcd/client/v3 v3.6.12 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
go.opentelemetry.io/otel v1.43.0 // indirect
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 // indirect
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0 // indirect
go.opentelemetry.io/otel/exporters/zipkin v1.30.0 // indirect
go.opentelemetry.io/otel/metric v1.43.0 // indirect
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
go.opentelemetry.io/otel/trace v1.43.0 // indirect
go.opentelemetry.io/proto/otlp v1.9.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.28.0 // indirect
golang.org/x/crypto v0.52.0 // indirect
golang.org/x/mod v0.36.0 // indirect
golang.org/x/net v0.55.0 // indirect
golang.org/x/oauth2 v0.36.0 // indirect
golang.org/x/sync v0.20.0 // indirect
golang.org/x/sys v0.45.0 // indirect
golang.org/x/term v0.43.0 // indirect
golang.org/x/text v0.37.0 // indirect
golang.org/x/time v0.7.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/postgres v1.6.0 // indirect
k8s.io/api v0.31.1 // indirect
k8s.io/apimachinery v0.31.1 // indirect
k8s.io/client-go v0.31.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 // indirect
k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 // indirect
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
sigs.k8s.io/yaml v1.4.0 // indirect
)

437
apps/ec/delivery/go.sum Normal file
View File

@@ -0,0 +1,437 @@
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
git.apinb.com/bsm-sdk/engine v1.3.2 h1:QJ20jveUIHcn3Tu0ktrkZI9zGRaPuJRZ+YTbSa1Zj1w=
git.apinb.com/bsm-sdk/engine v1.3.2/go.mod h1:OXRlO6Cdidqagw+LJjCngvpuuX1rwhxDwZlL/MhwiKQ=
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0=
github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk=
github.com/AthenZ/athenz v1.11.66 h1:ws1CGlIlxCzwzxmAImBBljDPVP8rda0ZvRRVqBukX5s=
github.com/AthenZ/athenz v1.11.66/go.mod h1:KiYVBbyVesOggJa8Ycghoc1RM2q+wgwEdc9zySrfevs=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY=
github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/FishGoddess/cachego v0.6.1 h1:mbytec3loqw5dcO177LyRGyStKG0AngP5g2GR3SzSh0=
github.com/FishGoddess/cachego v0.6.1/go.mod h1:VLSMwWRlRPazjGYer8pq+4aDrIe1Otj3Yy9HAb0eo3c=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/Microsoft/hcsshim v0.11.5 h1:haEcLNpj9Ka1gd3B3tAEs9CpE0c+1IhoL59w/exYU38=
github.com/Microsoft/hcsshim v0.11.5/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU=
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302 h1:uvdUDbHQHO85qeSydJtItA4T55Pw6BtAejd0APRJOCE=
github.com/alicebob/gopher-json v0.0.0-20230218143504-906a9b012302/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc=
github.com/alicebob/miniredis/v2 v2.33.0 h1:uvTF0EDeu9RLnUEG27Db5I68ESoIxTiXbNUiji6lZrA=
github.com/alicebob/miniredis/v2 v2.33.0/go.mod h1:MhP4a3EU7aENRi9aO+tHfTBZicLqQevyi/DJpoj6mi0=
github.com/apache/pulsar-client-go v0.14.0 h1:P7yfAQhQ52OCAu8yVmtdbNQ81vV8bF54S2MLmCPJC9w=
github.com/apache/pulsar-client-go v0.14.0/go.mod h1:PNUE29x9G1EHMvm41Bs2vcqwgv7N8AEjeej+nEVYbX8=
github.com/ardielle/ardielle-go v1.5.2 h1:TilHTpHIQJ27R1Tl/iITBzMwiUGSlVfiVhwDNGM3Zj4=
github.com/ardielle/ardielle-go v1.5.2/go.mod h1:I4hy1n795cUhaVt/ojz83SNVCYIGsAFAONtv2Dr7HUI=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bits-and-blooms/bitset v1.14.3 h1:Gd2c8lSNf9pKXom5JtD7AaKO8o7fGQ2LtFj1436qilA=
github.com/bits-and-blooms/bitset v1.14.3/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao=
github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4=
github.com/containerd/errdefs v0.1.0 h1:m0wCRBiu1WJT/Fr+iOoQHMQS/eP5myQ8lCv4Dz5ZURM=
github.com/containerd/errdefs v0.1.0/go.mod h1:YgWiiHtLmSeBrvpw+UfPijzbLaB77mEG1WwJTDETIV0=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/coreos/go-systemd/v22 v22.7.0 h1:LAEzFkke61DFROc7zNLX/WA2i5J8gYqe0rSj9KI28KA=
github.com/coreos/go-systemd/v22 v22.7.0/go.mod h1:xNUYtjHu2EDXbsxz1i41wouACIwT7Ybq9o0BQhMwD0w=
github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E=
github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0=
github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dimfeld/httptreemux v5.0.1+incompatible h1:Qj3gVcDNoOthBAqftuD596rm4wg/adLLz5xh5CmpiCA=
github.com/dimfeld/httptreemux v5.0.1+incompatible/go.mod h1:rbUlSV+CCpv/SuqUTP/8Bk2O3LyUV436/yaRGkhP6Z0=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY=
github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo=
github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU=
github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU=
github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08=
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
github.com/go-openapi/jsonpointer v0.22.1 h1:sHYI1He3b9NqJ4wXLoJDKmUmHkWy/L7rtEo92JUxBNk=
github.com/go-openapi/jsonpointer v0.22.1/go.mod h1:pQT9OsLkfz1yWoMgYFy4x3U5GY5nUlsOn1qSBH5MkCM=
github.com/go-openapi/jsonreference v0.21.2 h1:Wxjda4M/BBQllegefXrY/9aq1fxBA8sI5M/lFU6tSWU=
github.com/go-openapi/jsonreference v0.21.2/go.mod h1:pp3PEjIsJ9CZDGCNOyXIQxsNuroxm8FAJ/+quA0yKzQ=
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-openapi/swag/jsonname v0.25.1 h1:Sgx+qbwa4ej6AomWC6pEfXrA6uP2RkaNjA9BR8a1RJU=
github.com/go-openapi/swag/jsonname v0.25.1/go.mod h1:71Tekow6UOLBD3wS7XhdT98g5J5GR13NOTQ9/6Q11Zo=
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI=
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0=
github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v5 v5.3.1 h1:kYf81DTWFe7t+1VvL7eS+jKFVWaUnK9cB1qbwn63YCY=
github.com/golang-jwt/jwt/v5 v5.3.1/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I=
github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k=
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk=
github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU=
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0=
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
github.com/hamba/avro/v2 v2.26.0 h1:IaT5l6W3zh7K67sMrT2+RreJyDTllBGVJm4+Hedk9qE=
github.com/hamba/avro/v2 v2.26.0/go.mod h1:I8glyswHnpED3Nlx2ZdUe+4LJnCOOyiCzLMno9i/Uu0=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.10.0 h1:VhSvgU2jSli8o3AqIEOTJr7rZwAEUVo4E4XhR94Zfr0=
github.com/jackc/pgx/v5 v5.10.0/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4=
github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk=
github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg=
github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU=
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs=
github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA=
github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM=
github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg=
github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c=
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc=
github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM=
github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/redis/go-redis/v9 v9.20.0 h1:WnQYxLkgO2xiXTCJY0ldIiI8dNqCDlQAG+AtaH7a2a0=
github.com/redis/go-redis/v9 v9.20.0/go.mod h1:v/M13XI1PVCDcm01VtPFOADfZtHf8YW3baQf57KlIkA=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4=
github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM=
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
github.com/testcontainers/testcontainers-go v0.32.0 h1:ug1aK08L3gCHdhknlTTwWjPHPS+/alvLJU/DRxTD/ME=
github.com/testcontainers/testcontainers-go v0.32.0/go.mod h1:CRHrzHLQhlXUsa5gXjTOfqIEJcrK5+xMDmBr/WMI88E=
github.com/tklauser/go-sysconf v0.4.0 h1:7H0uAN+7RkwWRaxhYXDLqa5V3LPrJeV8wmD9dRUgPQU=
github.com/tklauser/go-sysconf v0.4.0/go.mod h1:8mTNWyog7H+MpKijp4VmKJAd2bbYQ2zuUwkYRbUArPI=
github.com/tklauser/numcpus v0.12.0 h1:NR85qdvHA9pFse3x3weVZ0r0ST8R6l5RHbZrlRaqob4=
github.com/tklauser/numcpus v0.12.0/go.mod h1:ABHeXzJnr/qqwguhClkZKT1/8VABcYrsyUiUGobwWJg=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
github.com/yuin/gopher-lua v1.1.1 h1:kYKnWBjvbNP4XLT3+bPEwAXJx262OhaHDWDVOPjL46M=
github.com/yuin/gopher-lua v1.1.1/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
github.com/zeromicro/go-zero v1.7.2 h1:a8lyVOG3KXG4LrAy6ZmtJTJtisX4Ostc4Pst4fE704I=
github.com/zeromicro/go-zero v1.7.2/go.mod h1:WFXfF92Exw0O7WECifS6r99JSzv4KEN49x9RhAfgkMc=
go.etcd.io/etcd/api/v3 v3.6.12 h1:OLOZUKEuAA36TR48F0cIaa8FdzrWygjyfrJxXg4iDgs=
go.etcd.io/etcd/api/v3 v3.6.12/go.mod h1:p14EIQXHbuOQbVvL/WEes5uqKnxP9AgKJgpjbMVvzvE=
go.etcd.io/etcd/client/pkg/v3 v3.6.12 h1:36zzB+pQOdHbhN+kH2iJz/K8bJn0ZLtLfPPO7jozTDo=
go.etcd.io/etcd/client/pkg/v3 v3.6.12/go.mod h1:hh2+ZXtfLzs3o6mn92ntgNPBrTJJOvXqICM5g3L3DMY=
go.etcd.io/etcd/client/v3 v3.6.12 h1:kMSP6JcPZMqSJiX+TXdUIBU/4eXEZWBAaui4VihMbIc=
go.etcd.io/etcd/client/v3 v3.6.12/go.mod h1:CMs6fJWYiZQk4ytFjd4lE1diOvvRMmtbbn/alZXd3dQ=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8=
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0 h1:D7UpUy2Xc2wsi1Ras6V40q806WM07rqoCWzXu7Sqy+4=
go.opentelemetry.io/otel/exporters/jaeger v1.17.0/go.mod h1:nPCqOnEH9rNLKqH/+rrUjiMzHJdV1BlpKcTwRTyKkKI=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0 h1:lsInsfvhVIfOI6qHVyysXMNDnjO9Npvl7tlDPJFBVd4=
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.30.0/go.mod h1:KQsVNh4OjgjTG0G6EiNi1jVpnaeeKsKMRwbLN+f1+8M=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0 h1:m0yTiGDLUvVYaTFbAvCkVYIYcvwKt3G7OLoN77NUs/8=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.30.0/go.mod h1:wBQbT4UekBfegL2nx0Xk1vBcnzyBPsIVm9hRG4fYcr4=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0 h1:umZgi92IyxfXd/l4kaDhnKgY8rnN/cZcF1LKc6I8OQ8=
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.30.0/go.mod h1:4lVs6obhSVRb1EW5FhOuBTyiQhtRtAnnva9vD3yRfq8=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0 h1:kn1BudCgwtE7PxLqcZkErpD8GKqLZ6BSzeW9QihQJeM=
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.30.0/go.mod h1:ljkUDtAMdleoi9tIG1R6dJUpVwDcYjw3J2Q6Q/SuiC0=
go.opentelemetry.io/otel/exporters/zipkin v1.30.0 h1:1uYaSfxiCLdJATlGEtYjQe4jZYfqCjVwxeSTMXe8VF4=
go.opentelemetry.io/otel/exporters/zipkin v1.30.0/go.mod h1:r/4BhMc3kiKxD61wGh9J3NVQ3/cZ45F2NHkQgVnql48=
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo=
go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8=
google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ=
google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/h2non/gock.v1 v1.1.2 h1:jBbHXgGBK/AoPVfJh5x4r/WxIrElvbLel8TCZkkZJoY=
gopkg.in/h2non/gock.v1 v1.1.2/go.mod h1:n7UGz/ckNChHiK05rDoiC4MYSunEC/lyaUm2WWaDva0=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/postgres v1.6.0 h1:2dxzU8xJ+ivvqTRph34QX+WrRaJlmfyPqXmoGVjMBa4=
gorm.io/driver/postgres v1.6.0/go.mod h1:vUw0mrGgrTK+uPHEhAdV4sfFELrByKVGnaVRkXDhtWo=
gorm.io/gorm v1.31.1 h1:7CA8FTFz/gRfgqgpeKIBcervUn3xSyPUmr6B2WXJ7kg=
gorm.io/gorm v1.31.1/go.mod h1:XyQVbO2k6YkOis7C2437jSit3SsDK72s7n7rsSHd+Gs=
k8s.io/api v0.31.1 h1:Xe1hX/fPW3PXYYv8BlozYqw63ytA92snr96zMW9gWTU=
k8s.io/api v0.31.1/go.mod h1:sbN1g6eY6XVLeqNsZGLnI5FwVseTrZX7Fv3O26rhAaI=
k8s.io/apimachinery v0.31.1 h1:mhcUBbj7KUjaVhyXILglcVjuS4nYXiwC+KKFBgIVy7U=
k8s.io/apimachinery v0.31.1/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo=
k8s.io/client-go v0.31.1 h1:f0ugtWSbWpxHR7sjVpQwuvw9a3ZKLXX0u0itkFXufb0=
k8s.io/client-go v0.31.1/go.mod h1:sKI8871MJN2OyeqRlmA4W4KM9KBdBUpDLu/43eGemCg=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38 h1:1dWzkmJrrprYvjGwh9kEUxmcUV/CtNU8QM7h1FLWQOo=
k8s.io/kube-openapi v0.0.0-20240903163716-9e1beecbcb38/go.mod h1:coRQXBK9NxO98XUv3ZD6AK3xzHCxV6+b7lrquKwaKzA=
k8s.io/utils v0.0.0-20240921022957-49e7df575cb6 h1:MDF6h2H/h4tbzmtIKTuctcwZmY0tY9mD9fNT47QO6HI=
k8s.io/utils v0.0.0-20240921022957-49e7df575cb6/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4=
sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08=
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

View File

@@ -0,0 +1,14 @@
package config
import (
"git.apinb.com/bsm-sdk/engine/types"
"github.com/zeromicro/go-zero/zrpc"
)
type Config struct {
zrpc.RpcServerConf
DSN string `json:",optional"`
Cache string `json:",optional"`
Anonymous types.AnonymousConf `json:",optional"`
Pulsar types.PulsarConf `json:",optional"`
}

View File

@@ -0,0 +1,34 @@
package errorcode
import "fmt"
type CError struct {
ErrorCode string
Msg string
Title string
}
var (
ErrTokenAuth = CError{ErrorCode: "3801", Msg: "Token Not Found", Title: "无效token"}
ErrInvalidArgument = CError{ErrorCode: "3801", Msg: "Invalid Argument", Title: "无效参数"}
ErrorJson = CError{ErrorCode: "3802", Msg: "Json Format Error", Title: "json格式错误"}
ErrIdentityArgument = CError{ErrorCode: "3803", Msg: "Invalid parameter:identity", Title: "identity参数无效"}
ErrPasswordArgument = CError{ErrorCode: "3804", Msg: " Invalid parameter:password", Title: "password参数无效"}
ErrAuthPasswd = CError{ErrorCode: "3805", Msg: " Auth Password", Title: "password验证失败"}
ErrDBFatal = CError{ErrorCode: "3806", Msg: "DB Fatal", Title: "数据错误"}
ErrBalance = CError{ErrorCode: "3807", Msg: "Err Balance", Title: "余额异常"}
ErrNotFound = CError{ErrorCode: "3809", Msg: "Err Not Found", Title: "数据未找到"}
ErrPermissionDenied = CError{ErrorCode: "3810", Msg: "No Access", Title: "无权访问"}
)
func (e *CError) Error() string {
return fmt.Sprintf("Error Code: %s, Message: %s", e.ErrorCode, e.Msg)
}
// 函数返回自定义错误
func ContentError(err CError) error {
return &CError{
ErrorCode: err.ErrorCode,
Msg: err.Msg,
}
}

View File

@@ -0,0 +1,32 @@
package impl
import (
"strconv"
"strings"
"git.apinb.com/bsm-sdk/engine/cache/mem"
"git.apinb.com/bsm-sdk/engine/cache/redis"
"git.apinb.com/bsm-sdk/engine/print"
"git.apinb.com/bsm-sdk/engine/vars"
"github.com/FishGoddess/cachego"
)
var (
MemCache *cachego.Cache
RedisCache *redis.RedisClient
)
func withMemCache() {
m := mem.New()
MemCache = &m
}
func withRedisCache() {
if Configure.Cache != "" {
addrs := strings.Split(Configure.ListenOn, ":")
port, _ := strconv.Atoi(addrs[1])
RedisCache = redis.New(Configure.Cache, port)
print.Info("[Blocks Service] %s Cache: %s, DB Index: %d", vars.ServiceKey, Configure.Cache, RedisCache.DB)
}
}

View File

@@ -0,0 +1,29 @@
package impl
import (
"git.apinb.com/bsm-service-ec/delivery/internal/config"
"git.apinb.com/bsm-sdk/engine/service"
)
var (
Configure config.Config
)
func NewService(srvKey string) {
// register service
service.Register(srvKey, &Configure)
service.RegisterAnonymous(&Configure.RpcServerConf, &Configure.Anonymous)
service.Start(Configure.ListenOn)
// with activating
withModel() // model
withMemCache() // mem cache
withRedisCache() // redis cache
withPulsar() // mq - pulsar
// service done.
service.Done(&Configure.Prometheus, &Configure.Telemetry)
}

View File

@@ -0,0 +1,21 @@
package impl
import (
"os"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-sdk/engine/print"
"git.apinb.com/bsm-sdk/engine/vars"
)
func withModel() {
if Configure.DSN != "" {
err := models.New(Configure.DSN, nil)
if err != nil {
print.Fail("[Blocks Service] %s Model Error: %d", vars.ServiceKey, err.Error())
os.Exit(0)
}
print.Info("[Blocks Service] %s Database Source: %s", vars.ServiceKey, Configure.DSN)
}
}

View File

@@ -0,0 +1,24 @@
package impl
import (
"os"
"git.apinb.com/bsm-sdk/engine/print"
"git.apinb.com/bsm-sdk/engine/queue/pulsar"
"git.apinb.com/bsm-sdk/engine/vars"
)
var MQ *pulsar.Pulsar
func withPulsar() {
if Configure.Pulsar.IsHas() {
mq, err := pulsar.NewPulsar(&Configure.Pulsar)
if err != nil {
print.Fail("[Blocks Service] %s Pulsar Error: %d", vars.ServiceKey, err.Error())
os.Exit(0)
} else {
MQ = mq
print.Info("[Blocks Service] %s Queue/Pulsar Endpoint: %s", vars.ServiceKey, Configure.Pulsar.Endpoints)
}
}
}

View File

@@ -0,0 +1,82 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-sdk/engine/utils"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type CarAddLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCarAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CarAddLogic {
return &CarAddLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 添加配送车辆信息
func (l *CarAddLogic) CarAdd(in *delivery.CarItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = carAddChick(in); err != nil {
return nil, err
}
data := models.DeliveryCar{
Identity: utils.ULID(),
Brand: in.Brand,
Version: in.Version,
TeamIdentity: in.TeamIdentity,
LicenseNumber: in.LicenseNumber,
Contacts: in.Contacts,
Phone: in.Phone,
Picture: in.Picture,
}
err = models.DBService.Create(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: data.Identity, Message: ""}, nil
}
func carAddChick(in *delivery.CarItem) error {
if in.GetBrand() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
// if in.GetTeamIdentity() == "" {
// return exception.ErrInvalidArgument
// }
if in.GetContacts() == "" {
return exception.ErrInvalidArgument
}
if in.GetVersion() == "" {
return exception.ErrInvalidArgument
}
if in.GetPicture() == "" {
return exception.ErrInvalidArgument
}
if in.GetLicenseNumber() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,46 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type CarDelLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCarDelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CarDelLogic {
return &CarDelLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 删除配送车辆信息
func (l *CarDelLogic) CarDel(in *delivery.IdentRequest) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
//Todo: 删除是是否判定有未完成订单不能删除
err = models.DBService.Where("identity = ?", in.Identity).Delete(&models.DeliveryCar{}).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}

View File

@@ -0,0 +1,51 @@
package deliverylogic
import (
"context"
"errors"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type CarGetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCarGetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CarGetLogic {
return &CarGetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 获取配送车辆信息
func (l *CarGetLogic) CarGet(in *delivery.IdentRequest) (*delivery.CarItem, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
var data = delivery.CarItem{}
err = models.DBService.Model(&models.DeliveryCar{}).Where("identity = ?", in.Identity).Find(&data).Error
if err != nil {
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
return &data, nil
}

View File

@@ -0,0 +1,82 @@
package deliverylogic
import (
"context"
"errors"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type CarListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCarListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CarListLogic {
return &CarListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 配送车辆列表
func (l *CarListLogic) CarList(in *delivery.FetchRequest) (*delivery.CarListReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
var (
teamIdentity string = ""
identity string = ""
licenseNumber string = ""
status int64 = 1
cnt int64 = 0
data = make([]*delivery.CarItem, 0)
)
if in.GetParams()["identity"] != "" {
identity = in.Params["identity"]
}
if in.GetParams()["team_identity"] != "" {
teamIdentity = in.Params["team_identity"]
}
if in.GetParams()["license_number"] != "" {
licenseNumber = in.Params["license_number"]
}
if in.GetParams()["status"] == "-1" {
status = -1
}
cnt, res, err := models.DeliverycarList(identity, teamIdentity, licenseNumber, status, int(in.PageSize), int(in.PageNo))
if err != nil {
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
for _, v := range res {
item := delivery.CarItem{
Identity: v.Identity,
Brand: v.Brand,
LicenseNumber: v.LicenseNumber,
TeamIdentity: v.TeamIdentity,
Contacts: v.Contacts,
Picture: v.Picture,
Phone: v.Phone,
Status: v.Status,
Version: v.Version,
}
data = append(data, &item)
}
return &delivery.CarListReply{Count: cnt, List: data}, nil
}

View File

@@ -0,0 +1,83 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type CarSetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCarSetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CarSetLogic {
return &CarSetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 修改配送车辆信息
func (l *CarSetLogic) CarSet(in *delivery.CarItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = carSetChick(in); err != nil {
return nil, err
}
data := models.DeliveryCar{
Brand: in.Brand,
Version: in.Version,
TeamIdentity: in.TeamIdentity,
LicenseNumber: in.LicenseNumber,
Contacts: in.Contacts,
Phone: in.Phone,
Picture: in.Picture,
}
err = models.DBService.Where("identity = ?", in.Identity).Updates(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}
func carSetChick(in *delivery.CarItem) error {
if in.GetIdentity() == "" {
return exception.ErrInvalidArgument
}
if in.GetBrand() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
// if in.GetTeamIdentity() == "" {
// return exception.ErrInvalidArgument
// }
if in.GetContacts() == "" {
return exception.ErrInvalidArgument
}
if in.GetVersion() == "" {
return exception.ErrInvalidArgument
}
if in.GetPicture() == "" {
return exception.ErrInvalidArgument
}
if in.GetLicenseNumber() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,73 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-sdk/engine/utils"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type MemberAddLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMemberAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberAddLogic {
return &MemberAddLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 添加配送员
func (l *MemberAddLogic) MemberAdd(in *delivery.MemberItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = memberAddChick(in); err != nil {
return nil, err
}
data := models.DeliveryMember{
Identity: utils.ULID(),
Name: in.Name,
TeamIdentity: in.TeamIdentity,
Phone: in.Phone,
Picture: in.Picture,
}
err = models.DBService.Create(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: data.Identity, Message: ""}, nil
}
func memberAddChick(in *delivery.MemberItem) error {
if in.GetName() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
// if in.GetTeamIdentity() == "" {
// return exception.ErrInvalidArgument
// }
if in.GetPicture() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,46 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type MemberDelLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMemberDelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberDelLogic {
return &MemberDelLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 删除配送员
func (l *MemberDelLogic) MemberDel(in *delivery.IdentRequest) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
//Todo: 删除是是否判定有未完成订单不能删除
err = models.DBService.Where("identity = ?", in.Identity).Delete(&models.DeliveryMember{}).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}

View File

@@ -0,0 +1,51 @@
package deliverylogic
import (
"context"
"errors"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type MemberGetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMemberGetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberGetLogic {
return &MemberGetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 获取配送员数据
func (l *MemberGetLogic) MemberGet(in *delivery.IdentRequest) (*delivery.MemberItem, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
var data = delivery.MemberItem{}
err = models.DBService.Model(&models.DeliveryMember{}).Where("identity = ?", in.Identity).Find(&data).Error
if err != nil {
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
return &data, nil
}

View File

@@ -0,0 +1,80 @@
package deliverylogic
import (
"context"
"errors"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type MemberListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMemberListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberListLogic {
return &MemberListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 获取配送员列表
func (l *MemberListLogic) MemberList(in *delivery.FetchRequest) (*delivery.MemberListReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
var (
teamIdentity string = ""
identity string = ""
name string = ""
status int64 = 1
cnt int64 = 0
data = make([]*delivery.MemberItem, 0)
)
if in.GetParams()["identity"] != "" {
identity = in.Params["identity"]
}
if in.GetParams()["team_identity"] != "" {
teamIdentity = in.Params["team_identity"]
}
if in.GetParams()["name"] != "" {
name = in.Params["name"]
}
if in.GetParams()["status"] == "-1" {
status = -1
}
cnt, res, err := models.DeliveryMemberList(identity, teamIdentity, name, status, int(in.PageSize), int(in.PageNo))
if err != nil {
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
for _, v := range res {
item := delivery.MemberItem{
Identity: v.Identity,
Name: v.Name,
TeamIdentity: v.TeamIdentity,
Picture: v.Picture,
Phone: v.Phone,
Status: v.Status,
Turnover: v.Turnover,
}
data = append(data, &item)
}
return &delivery.MemberListReply{Count: cnt, List: data}, nil
}

View File

@@ -0,0 +1,76 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type MemberSetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewMemberSetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberSetLogic {
return &MemberSetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 修改配送员
func (l *MemberSetLogic) MemberSet(in *delivery.MemberItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = memberSetChick(in); err != nil {
return nil, err
}
data := models.DeliveryMember{
Name: in.Name,
TeamIdentity: in.TeamIdentity,
Phone: in.Phone,
Picture: in.Picture,
Turnover: in.Turnover,
}
err = models.DBService.Where("identity = ?", in.Identity).Updates(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}
func memberSetChick(in *delivery.MemberItem) error {
if in.GetIdentity() == "" {
return exception.ErrInvalidArgument
}
if in.GetName() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
// if in.GetTeamIdentity() == "" {
// return exception.ErrInvalidArgument
// }
if in.GetPicture() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,75 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-sdk/engine/utils"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type TeamAddLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTeamAddLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TeamAddLogic {
return &TeamAddLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 添加配送团队
func (l *TeamAddLogic) TeamAdd(in *delivery.TeamItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = teamAddChick(in); err != nil {
return nil, err
}
data := models.DeliveryItem{
Identity: utils.ULID(),
Title: in.Title,
Owner: in.Owner,
Contacts: in.Contacts,
Phone: in.Phone,
Logo: in.Logo,
}
err = models.DBService.Create(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: data.Identity, Message: ""}, nil
}
func teamAddChick(in *delivery.TeamItem) error {
if in.GetOwner() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
if in.GetTitle() == "" {
return exception.ErrInvalidArgument
}
if in.GetContacts() == "" {
return exception.ErrInvalidArgument
}
if in.GetLogo() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,47 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type TeamDelLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTeamDelLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TeamDelLogic {
return &TeamDelLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 删除配送团队
func (l *TeamDelLogic) TeamDel(in *delivery.IdentRequest) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
//Todo: 删除是是否判定有成员不能删除
err = models.DBService.Where("identity = ?", in.Identity).Delete(&models.DeliveryItem{}).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}

View File

@@ -0,0 +1,51 @@
package deliverylogic
import (
"context"
"errors"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type TeamGetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTeamGetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TeamGetLogic {
return &TeamGetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 配送团队详情
func (l *TeamGetLogic) TeamGet(in *delivery.IdentRequest) (*delivery.TeamItem, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if in.GetIdentity() == "" {
return nil, exception.ErrInvalidArgument
}
var data = delivery.TeamItem{}
err = models.DBService.Model(&models.DeliveryItem{}).Where("identity = ?", in.Identity).Find(&data).Error
if err != nil {
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
return &data, nil
}

View File

@@ -0,0 +1,83 @@
package deliverylogic
import (
"context"
"errors"
"fmt"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/core/logx"
)
type TeamListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTeamListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TeamListLogic {
return &TeamListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 配送团队列表
func (l *TeamListLogic) TeamList(in *delivery.FetchRequest) (*delivery.TeamListReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
var (
title string = ""
identity string = ""
owner string = ""
status int64 = 1
cnt int64 = 0
data = make([]*delivery.TeamItem, 0)
)
if in.GetParams()["identity"] != "" {
identity = in.Params["identity"]
}
if in.GetParams()["title"] != "" {
title = in.Params["title"]
}
if in.GetParams()["owner"] != "" {
owner = in.Params["owner"]
}
if in.GetParams()["status"] == "-1" {
status = -1
}
cnt, res, err := models.DeliveryItemList(identity, title, owner, status, int(in.PageSize), int(in.PageNo))
if err != nil {
fmt.Println("err:", err.Error())
l.Logger.Error(err.Error())
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, exception.ErrNotFound
}
return nil, exception.ErrDBFatal
}
for _, v := range res {
item := delivery.TeamItem{
Identity: v.Identity,
Title: v.Title,
Owner: v.Owner,
Contacts: v.Contacts,
Phone: v.Phone,
Status: v.Status,
Logo: v.Logo,
}
data = append(data, &item)
}
return &delivery.TeamListReply{Count: cnt, List: data}, nil
}

View File

@@ -0,0 +1,76 @@
package deliverylogic
import (
"context"
"git.apinb.com/bsm-sdk/engine/exception"
"git.apinb.com/bsm-sdk/engine/service"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
"git.apinb.com/bsm-service-ec/delivery/internal/models"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type TeamSetLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTeamSetLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TeamSetLogic {
return &TeamSetLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 修改配送团队信息
func (l *TeamSetLogic) TeamSet(in *delivery.TeamItem) (*delivery.StatusReply, error) {
_, err := service.ParseMetaCtx(l.ctx, nil)
if err != nil {
return nil, err
}
if err = teamSetChick(in); err != nil {
return nil, err
}
data := models.DeliveryItem{
Title: in.Title,
Owner: in.Owner,
Contacts: in.Contacts,
Phone: in.Phone,
Logo: in.Logo,
Status: in.Status,
}
err = models.DBService.Where("identity = ?", in.Identity).Updates(&data).Error
if err != nil {
l.Logger.Error(err.Error())
return nil, exception.ErrDBFatal
}
return &delivery.StatusReply{Status: 200, Identity: in.Identity, Message: ""}, nil
}
func teamSetChick(in *delivery.TeamItem) error {
if in.GetIdentity() == "" {
return exception.ErrInvalidArgument
}
if in.GetOwner() == "" {
return exception.ErrInvalidArgument
}
if in.GetPhone() == "" {
return exception.ErrInvalidArgument
}
if in.GetTitle() == "" {
return exception.ErrInvalidArgument
}
if in.GetContacts() == "" {
return exception.ErrInvalidArgument
}
if in.GetLogo() == "" {
return exception.ErrInvalidArgument
}
return nil
}

View File

@@ -0,0 +1,50 @@
package models
import (
"gorm.io/gorm"
)
// Deliverycar 配送员表/*
type DeliveryCar struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);uniqueIndex;"` // 唯一标识24位NanoID,36位为UUID
Brand string `gorm:"column:brand;type:varchar(36);index;;" json:"brand"` // 品牌
TeamIdentity string `gorm:"column:team_identity;type:varchar(36);Index;" json:"team_identity"` // 团队唯一标识
Version string `gorm:"column:version;type:varchar(36);index;;" json:"version"` // 型号
LicenseNumber string `gorm:"column:license_number;type:varchar(36);index;;" json:"license_number"` // 车牌号
Contacts string `gorm:"column:contacts;type:varchar(36);Index;" json:"contacts"` // 联系人姓名
Phone string `gorm:"column:phone;type:varchar(36);Index;" json:"phone"` // 联系人电话
Picture string `gorm:"column:picture;type:varchar(255);Index;" json:"picture"` // 车辆图片
Status int64 `gorm:"column:status;default:1;" json:"status"` // 状态1正常;-1禁用
}
// TableName .
func (table *DeliveryCar) TableName() string {
return "delivery_car" //对应数据库表名
}
// DeliveryMemberList 获取配送团队
func DeliverycarList(identity, teamIdentity, licenseNumber string, status int64, size, page int) (int64, []DeliveryCar, error) {
var (
cnt int64 = 0
data = make([]DeliveryCar, 0)
)
tx := DBService
if identity != "" {
tx = tx.Where("identity = ?", identity)
}
if teamIdentity != "" {
tx = tx.Where("team_identity = ?", teamIdentity)
}
if licenseNumber != "" {
tx = tx.Where("license_number like ? or brand like ?", "%"+licenseNumber+"%", "%"+licenseNumber+"%")
}
if status != 0 {
tx = tx.Where("status = ?", status)
}
err := tx.Model(DeliveryCar{}).Order("created_at desc").Count(&cnt).Limit(size).Offset((page - 1) * size).Find(&data).Error
if err != nil {
return 0, nil, err
}
return cnt, data, nil
}

View File

@@ -0,0 +1,49 @@
package models
import (
"gorm.io/gorm"
)
// DeliveryItem 配送团队表/*
type DeliveryItem struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);uniqueIndex;"` // 唯一标识24位NanoID,36位为UUID
Title string `gorm:"column:title;type:varchar(36);index;" json:"title"` // 团队名称
Owner string `gorm:"column:owner;type:varchar(36);Index;" json:"owner"` // 归属者唯一标识
Contacts string `gorm:"column:contacts;type:varchar(36);Index;" json:"contacts"` // 联系人姓名
Phone string `gorm:"column:phone;type:varchar(36);Index;" json:"phone"` // 联系人电话
Logo string `gorm:"column:logo;type:varchar(255);Index;" json:"logo"` // 团队图标地址
Status int64 `gorm:"column:status;default:1;" json:"status"` // 状态1正常;-1禁用
}
// TableName .
func (table *DeliveryItem) TableName() string {
return "delivery_item" //对应数据库表名
}
// DeliveryItemList 获取配送团队
func DeliveryItemList(identity, title, owner string, status int64, size, page int) (int64, []DeliveryItem, error) {
var (
cnt int64 = 0
data = make([]DeliveryItem, 0)
)
tx := DBService
if identity != "" {
tx = tx.Where("identity = ?", identity)
}
if title != "" {
tx = tx.Where("title like ?", "%"+title+"%")
}
if owner != "" {
tx = tx.Where("owner = ?", owner)
}
if status != 0 {
tx = tx.Where("status = ?", status)
}
err := tx.Model(DeliveryItem{}).Order("created_at desc").Count(&cnt).Limit(size).Offset((page - 1) * size).Find(&data).Error
if err != nil {
return 0, nil, err
}
return cnt, data, nil
}

View File

@@ -0,0 +1,48 @@
package models
import (
"gorm.io/gorm"
)
// DeliveryMember 配送员表/*
type DeliveryMember struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);uniqueIndex;"` // 唯一标识24位NanoID,36位为UUID
Name string `gorm:"column:name;type:varchar(36);index;" json:"name"` // 姓名
TeamIdentity string `gorm:"column:team_identity;type:varchar(36);Index;" json:"team_identity"` // 团队唯一标识
Phone string `gorm:"column:phone;type:varchar(36);Index;" json:"phone"` // 电话
Picture string `gorm:"column:picture;type:varchar(255);Index;" json:"picture"` // 头像
Status int64 `gorm:"column:status;default:1;" json:"status"` // 状态1正常;-1禁用
Turnover int64 `gorm:"column:turnover;default:1;" json:"turnover"` // 总成交量
}
// TableName .
func (table *DeliveryMember) TableName() string {
return "delivery_member" //对应数据库表名
}
// DeliveryMemberList 获取配送团队成员
func DeliveryMemberList(identity, teamIdentity, name string, status int64, size, page int) (int64, []DeliveryMember, error) {
var (
cnt int64 = 0
data = make([]DeliveryMember, 0)
)
tx := DBService
if identity != "" {
tx = tx.Where("identity = ?", identity)
}
if name != "" {
tx = tx.Where("name like ?", "%"+name+"%")
}
if teamIdentity != "" {
tx = tx.Where("team_identity = ?", teamIdentity)
}
if status != 0 {
tx = tx.Where("status = ?", status)
}
err := tx.Model(DeliveryMember{}).Order("created_at desc").Count(&cnt).Limit(size).Offset((page - 1) * size).Find(&data).Error
if err != nil {
return 0, nil, err
}
return cnt, data, nil
}

View File

@@ -0,0 +1,28 @@
package models
import (
"git.apinb.com/bsm-sdk/engine/database/sql"
"git.apinb.com/bsm-sdk/engine/types"
"gorm.io/gorm"
)
var DBService *gorm.DB
var migrateTables = []any{
&DeliveryItem{},
&DeliveryMember{},
&DeliveryCar{},
}
func New(dsn string, options *types.SqlOptions) (err error) {
DBService, err = sql.NewPostgreSql(dsn, options)
if err != nil {
return err
}
err = DBService.AutoMigrate(migrateTables...)
if err != nil {
return err
}
return
}

View File

@@ -0,0 +1,53 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package server
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
carlogic "git.apinb.com/bsm-service-ec/delivery/internal/logic/car"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
)
type CarServer struct {
svcCtx *svc.ServiceContext
delivery.UnimplementedCarServer
}
func NewCarServer(svcCtx *svc.ServiceContext) *CarServer {
return &CarServer{
svcCtx: svcCtx,
}
}
// 配送车辆列表
func (s *CarServer) CarList(ctx context.Context, in *delivery.FetchRequest) (*delivery.CarListReply, error) {
l := carlogic.NewCarListLogic(ctx, s.svcCtx)
return l.CarList(in)
}
// 添加配送车辆信息
func (s *CarServer) CarAdd(ctx context.Context, in *delivery.CarItem) (*delivery.StatusReply, error) {
l := carlogic.NewCarAddLogic(ctx, s.svcCtx)
return l.CarAdd(in)
}
// 获取配送车辆信息
func (s *CarServer) CarGet(ctx context.Context, in *delivery.IdentRequest) (*delivery.CarItem, error) {
l := carlogic.NewCarGetLogic(ctx, s.svcCtx)
return l.CarGet(in)
}
// 修改配送车辆信息
func (s *CarServer) CarSet(ctx context.Context, in *delivery.CarItem) (*delivery.StatusReply, error) {
l := carlogic.NewCarSetLogic(ctx, s.svcCtx)
return l.CarSet(in)
}
// 删除配送车辆信息
func (s *CarServer) CarDel(ctx context.Context, in *delivery.IdentRequest) (*delivery.StatusReply, error) {
l := carlogic.NewCarDelLogic(ctx, s.svcCtx)
return l.CarDel(in)
}

View File

@@ -0,0 +1,53 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package server
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
memberlogic "git.apinb.com/bsm-service-ec/delivery/internal/logic/member"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
)
type MemberServer struct {
svcCtx *svc.ServiceContext
delivery.UnimplementedMemberServer
}
func NewMemberServer(svcCtx *svc.ServiceContext) *MemberServer {
return &MemberServer{
svcCtx: svcCtx,
}
}
// 获取配送员列表
func (s *MemberServer) MemberList(ctx context.Context, in *delivery.FetchRequest) (*delivery.MemberListReply, error) {
l := memberlogic.NewMemberListLogic(ctx, s.svcCtx)
return l.MemberList(in)
}
// 添加配送员
func (s *MemberServer) MemberAdd(ctx context.Context, in *delivery.MemberItem) (*delivery.StatusReply, error) {
l := memberlogic.NewMemberAddLogic(ctx, s.svcCtx)
return l.MemberAdd(in)
}
// 获取配送员数据
func (s *MemberServer) MemberGet(ctx context.Context, in *delivery.IdentRequest) (*delivery.MemberItem, error) {
l := memberlogic.NewMemberGetLogic(ctx, s.svcCtx)
return l.MemberGet(in)
}
// 修改配送员
func (s *MemberServer) MemberSet(ctx context.Context, in *delivery.MemberItem) (*delivery.StatusReply, error) {
l := memberlogic.NewMemberSetLogic(ctx, s.svcCtx)
return l.MemberSet(in)
}
// 删除配送员
func (s *MemberServer) MemberDel(ctx context.Context, in *delivery.IdentRequest) (*delivery.StatusReply, error) {
l := memberlogic.NewMemberDelLogic(ctx, s.svcCtx)
return l.MemberDel(in)
}

View File

@@ -0,0 +1,53 @@
// Code generated by goctl. DO NOT EDIT.
// Source: delivery.proto
package server
import (
"context"
"git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
teamlogic "git.apinb.com/bsm-service-ec/delivery/internal/logic/team"
"git.apinb.com/bsm-service-ec/delivery/internal/svc"
)
type TeamServer struct {
svcCtx *svc.ServiceContext
delivery.UnimplementedTeamServer
}
func NewTeamServer(svcCtx *svc.ServiceContext) *TeamServer {
return &TeamServer{
svcCtx: svcCtx,
}
}
// 配送团队列表
func (s *TeamServer) TeamList(ctx context.Context, in *delivery.FetchRequest) (*delivery.TeamListReply, error) {
l := teamlogic.NewTeamListLogic(ctx, s.svcCtx)
return l.TeamList(in)
}
// 添加配送团队
func (s *TeamServer) TeamAdd(ctx context.Context, in *delivery.TeamItem) (*delivery.StatusReply, error) {
l := teamlogic.NewTeamAddLogic(ctx, s.svcCtx)
return l.TeamAdd(in)
}
// 配送团队详情
func (s *TeamServer) TeamGet(ctx context.Context, in *delivery.IdentRequest) (*delivery.TeamItem, error) {
l := teamlogic.NewTeamGetLogic(ctx, s.svcCtx)
return l.TeamGet(in)
}
// 修改配送团队信息
func (s *TeamServer) TeamSet(ctx context.Context, in *delivery.TeamItem) (*delivery.StatusReply, error) {
l := teamlogic.NewTeamSetLogic(ctx, s.svcCtx)
return l.TeamSet(in)
}
// 删除配送团队
func (s *TeamServer) TeamDel(ctx context.Context, in *delivery.IdentRequest) (*delivery.StatusReply, error) {
l := teamlogic.NewTeamDelLogic(ctx, s.svcCtx)
return l.TeamDel(in)
}

View File

@@ -0,0 +1,13 @@
package svc
import "git.apinb.com/bsm-service-ec/delivery/internal/config"
type ServiceContext struct {
Config config.Config
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
}
}

View File

@@ -0,0 +1,35 @@
syntax = "proto3";
package feed;
option go_package = "./;feed";
message FetchRequest {
int64 page_no=1; // 页数
int64 page_size=2; // 每页记录数
map<string,string> params=3; // 条件参数,key=val,eg key:category_id=?,vlaue=11
}
message IdentRequest{
int64 id = 1; // 唯一ID
string identity = 2; // 唯一码
}
message VersionRequest {
int64 version=1; // 时序版本号
}
message SearchRequest {
string keyword=1; //关键词
}
message StatusReply{
int64 status = 1; // 状态码
string identity=2; // 标识码
string message=3; //状态说明
int64 timeseq=4; // 响应时间序列
}
message Empty{
}

View File

@@ -0,0 +1,41 @@
syntax = "proto3";
package delivery;
option go_package = "./delivery";
import "blocks.proto";
// Delivery(配送)微服务
service Car {
// 配送车辆列表
rpc CarList(FetchRequest) returns (CarListReply) {};
// 添加配送车辆信息
rpc CarAdd(CarItem) returns (StatusReply) {};
// 获取配送车辆信息
rpc CarGet(IdentRequest)returns (CarItem) {};
// 修改配送车辆信息
rpc CarSet(CarItem) returns (StatusReply) {};
// 删除配送车辆信息
rpc CarDel(IdentRequest) returns (StatusReply) {};
}
message CarListReply{
int64 count = 1;
repeated CarItem list = 2;
}
message CarItem{
string identity = 1; // 唯一标识
string brand = 2; // 品牌
string version = 3; // 型号
string license_number = 4; // 车牌号
string team_identity = 5; // 团队唯一标识
string contacts = 6; // 联系人姓名
string phone = 7; // 联系人电话
int64 status = 8; // 状态1正常;-1禁用
string picture = 9; // 车辆图片
}

View File

@@ -0,0 +1,35 @@
syntax = "proto3";
package delivery;
option go_package = "./delivery";
import "blocks.proto";
// Delivery(配送)微服务
service Member {
// 获取配送员列表
rpc MemberList(FetchRequest) returns (MemberListReply) {};
// 添加配送员
rpc MemberAdd(MemberItem) returns (StatusReply) {};
// 获取配送员数据
rpc MemberGet(IdentRequest)returns (MemberItem) {};
// 修改配送员
rpc MemberSet(MemberItem) returns (StatusReply) {};
// 删除配送员
rpc MemberDel(IdentRequest) returns (StatusReply) {};
}
message MemberItem{
string identity = 1; // 唯一标识
string name = 2; // 姓名
string team_identity = 3; // 团队唯一标识
string picture = 4; // 头像
string phone = 5; // 联系人电话
int64 status = 6; // 状态1正常;-1禁用
int64 turnover = 7; // 总成交量
}
message MemberListReply{
int64 count = 1;
repeated MemberItem list = 2;
}

View File

@@ -0,0 +1,37 @@
syntax = "proto3";
package delivery;
option go_package = "./delivery";
import "blocks.proto";
// Delivery(配送)微服务
service Team {
// 配送团队列表
rpc TeamList(FetchRequest) returns (TeamListReply) {};
// 添加配送团队
rpc TeamAdd(TeamItem) returns (StatusReply) {};
// 配送团队详情
rpc TeamGet(IdentRequest) returns (TeamItem) {};
// 修改配送团队信息
rpc TeamSet(TeamItem) returns (StatusReply) {};
// 删除配送团队
rpc TeamDel(IdentRequest) returns (StatusReply) {};
}
message TeamListReply{
int64 count = 1;
repeated TeamItem list = 2;
}
message TeamItem{
string identity = 1; // 唯一标识
string title = 2; // 团队名称
string owner = 3; // 归属者唯一标识
string contacts = 4; // 联系人姓名
string phone = 5; // 联系人电话
int64 status = 6; // 状态1正常;-1禁用
string logo = 7; // 团队图标地址
}

View File

@@ -0,0 +1,32 @@
filebeat.inputs:
- type: log
enabled: true
# 开启json解析
json.keys_under_root: true
json.add_error_key: true
# 日志文件路径
paths:
- ./logs/content/error.log
- ./logs/content/slow.log
setup.template.settings:
index.number_of_shards: 1
# 定义kafka topic field
fields:
log_topic: scf.pb.dev
# 输出到kafka
output.kafka:
hosts: ["127.0.0.1:9092"]
topic: '%{[fields.log_topic]}'
partition.round_robin:
reachable_only: false
required_acks: 1
keep_alive: 10s
# ================================= Processors =================================
processors:
- decode_json_fields:
fields: ['@timestamp','level','content','trace','span','duration']
target: ""

View File

@@ -0,0 +1,5 @@
#install
go install github.com/securego/gosec/v2/cmd/gosec@latest
#run
gosec -fmt=json -out=./test/lint/gosec.json ./...

View File

@@ -0,0 +1,14 @@
# 由于goctl 不能编译多个proto文件所以先要安装合并工具
# go install git.apinb.com/bsm-tools/proto-merge@v0.0.3
# 1. 先合并
proto-merge ./proto/*.proto ./proto/delivery.proto
# 2. goctl 生成代码至/gen
goctl rpc protoc ./proto/delivery.proto --go_out=./external/pb --go-grpc_out=./external/pb --zrpc_out=./ -m --style go_zero
# 3. 清理无用文件
rm ./proto/delivery.proto
mv ./client ./external/
rm delivery.go
rm ./etc/delivery.yaml

View File

@@ -0,0 +1,11 @@
{
"Golang errors": {},
"Issues": [],
"Stats": {
"files": 24,
"lines": 2377,
"nosec": 0,
"found": 0
},
"GosecVersion": "dev"
}

View File

@@ -0,0 +1,27 @@
package rpc
import (
"context"
"os"
"git.apinb.com/bsm-sdk/engine/utils"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
)
var url = "127.0.0.1:12264"
var token = os.Getenv("BSM_DELIVERY_TOKEN")
func GetCoon() (*grpc.ClientConn, context.Context) {
md := metadata.New(map[string]string{"request_id": utils.ULID(), "workspace": "scf"})
md.Append("authorization", token)
ctx := metadata.NewOutgoingContext(context.Background(), md)
// 建立GRPC连接
conn, err := grpc.Dial(url, grpc.WithInsecure())
if err != nil {
panic(err)
}
return conn, ctx
}

View File

@@ -0,0 +1,112 @@
//go:build integration
package rpc
import (
"encoding/json"
"fmt"
"testing"
pb "git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
)
func TestCarAdd(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewCarClient(conn)
defer conn.Close()
data := pb.CarItem{
Brand: "比亚迪",
Version: "A6",
LicenseNumber: "川G782672",
TeamIdentity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
Contacts: "小黑",
Phone: "18725312289",
Picture: "https://www.baidu.com/x.png",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.CarAdd(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestCarSet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewCarClient(conn)
defer conn.Close()
data := pb.CarItem{
Identity: "f747cf0a-5cb4-4969-a0fd-e7e5c73ee844",
Brand: "奥迪4",
Version: "A6",
LicenseNumber: "川G782671",
TeamIdentity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
Contacts: "小库",
Phone: "18725312289",
Picture: "https://www.baidu.com/x.png",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.CarSet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestCarGet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewCarClient(conn)
defer conn.Close()
data := pb.IdentRequest{
Identity: "e3a161fb-fdf1-481a-9c43-25020f5c271a",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.CarGet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestCarList(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewCarClient(conn)
defer conn.Close()
data := pb.FetchRequest{
PageNo: 1,
PageSize: 10,
Params: map[string]string{
"identity": "",
"team_identity": "",
"license_number": "川G",
"status": "",
},
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.CarList(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}

View File

@@ -0,0 +1,107 @@
//go:build integration
package rpc
import (
"encoding/json"
"fmt"
"testing"
pb "git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
)
func TestMemberAdd(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewMemberClient(conn)
defer conn.Close()
data := pb.MemberItem{
TeamIdentity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
Name: "小秦",
Phone: "18725312289",
Picture: "https://www.baidu.com/x.png",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.MemberAdd(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestMemberSet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewMemberClient(conn)
defer conn.Close()
data := pb.MemberItem{
Identity: "1e280531-8ffd-4cf8-b445-f37ce1807685",
TeamIdentity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
Name: "小秦",
Phone: "18725312289",
Picture: "https://www.baidu.com/xx.png",
Status: 1,
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.MemberSet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestMemberGet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewMemberClient(conn)
defer conn.Close()
data := pb.IdentRequest{
Identity: "1e280531-8ffd-4cf8-b445-f37ce1807685",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.MemberGet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestMemberList(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewMemberClient(conn)
defer conn.Close()
data := pb.FetchRequest{
PageNo: 1,
PageSize: 10,
Params: map[string]string{
"identity": "",
"team_identity": "",
"name": "秦",
"status": "",
},
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.MemberList(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}

View File

@@ -0,0 +1,109 @@
//go:build integration
package rpc
import (
"encoding/json"
"fmt"
"testing"
pb "git.apinb.com/bsm-service-ec/delivery/external/pb/delivery"
)
func TestTeamAdd(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewTeamClient(conn)
defer conn.Close()
data := pb.TeamItem{
Title: "XX专送团队",
Owner: "B9355263-4983-5BAA-631A-046B453480C8",
Contacts: "老王",
Phone: "13402984328",
Logo: "http://www.baidu.com/sad.jpg",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.TeamAdd(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestTeamSet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewTeamClient(conn)
defer conn.Close()
data := pb.TeamItem{
Title: "XX专送团队",
Owner: "B9355263-4983-5BAA-631A-046B453480C8",
Contacts: "老李",
Phone: "13402984328",
Logo: "http://www.baidu.com/sad.jpg",
Identity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
Status: 1,
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.TeamSet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestTeamGet(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewTeamClient(conn)
defer conn.Close()
data := pb.IdentRequest{
Identity: "f3b9bf81-c721-4d1e-9261-2b96d0fe0cc5",
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.TeamGet(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}
func TestTeamList(t *testing.T) {
conn, ctx := GetCoon()
client := pb.NewTeamClient(conn)
defer conn.Close()
data := pb.FetchRequest{
PageNo: 1,
PageSize: 10,
Params: map[string]string{
"identity": "",
"title": "",
"owner": "",
"status": "",
},
}
re, _ := json.Marshal(&data)
fmt.Printf("发送的测试消息: %s\n", re)
res, err := client.TeamList(ctx, &data)
if err != nil {
panic(err)
}
s, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Printf("返回的测试消息: %s", s)
}