feat: rbac完善,file接入完成

This commit is contained in:
Blizzard
2026-05-01 12:56:08 +08:00
parent bbd3f834b9
commit a93477ea8e
81 changed files with 5470 additions and 371 deletions
File diff suppressed because it is too large Load Diff
+392 -2
View File
@@ -19,8 +19,18 @@ import (
const _ = grpc.SupportPackageIsVersion9
const (
FileService_GetFileById_FullMethodName = "/file.FileService/GetFileById"
FileService_GetFilesByIds_FullMethodName = "/file.FileService/GetFilesByIds"
FileService_GetFileById_FullMethodName = "/file.FileService/GetFileById"
FileService_GetFilesByIds_FullMethodName = "/file.FileService/GetFilesByIds"
FileService_CreateFile_FullMethodName = "/file.FileService/CreateFile"
FileService_CheckFileByMd5_FullMethodName = "/file.FileService/CheckFileByMd5"
FileService_DeleteFiles_FullMethodName = "/file.FileService/DeleteFiles"
FileService_GetFileList_FullMethodName = "/file.FileService/GetFileList"
FileService_CreateStorageConfig_FullMethodName = "/file.FileService/CreateStorageConfig"
FileService_UpdateStorageConfig_FullMethodName = "/file.FileService/UpdateStorageConfig"
FileService_DeleteStorageConfig_FullMethodName = "/file.FileService/DeleteStorageConfig"
FileService_SetDefaultStorageConfig_FullMethodName = "/file.FileService/SetDefaultStorageConfig"
FileService_GetStorageConfigList_FullMethodName = "/file.FileService/GetStorageConfigList"
FileService_GetDefaultStorageConfig_FullMethodName = "/file.FileService/GetDefaultStorageConfig"
)
// FileServiceClient is the client API for FileService service.
@@ -31,6 +41,21 @@ type FileServiceClient interface {
GetFileById(ctx context.Context, in *GetFileByIdReq, opts ...grpc.CallOption) (*GetFileByIdResp, error)
// 根据ID列表批量获取文件信息
GetFilesByIds(ctx context.Context, in *GetFilesByIdsReq, opts ...grpc.CallOption) (*GetFilesByIdsResp, error)
// 创建文件记录
CreateFile(ctx context.Context, in *CreateFileReq, opts ...grpc.CallOption) (*CreateFileResp, error)
// 通过MD5检查文件是否存在
CheckFileByMd5(ctx context.Context, in *CheckFileByMd5Req, opts ...grpc.CallOption) (*CheckFileByMd5Resp, error)
// 删除文件记录
DeleteFiles(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error)
// 获取文件列表
GetFileList(ctx context.Context, in *GetFileListReq, opts ...grpc.CallOption) (*GetFileListResp, error)
// ---------- 存储配置 ----------
CreateStorageConfig(ctx context.Context, in *CreateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
UpdateStorageConfig(ctx context.Context, in *UpdateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
DeleteStorageConfig(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error)
SetDefaultStorageConfig(ctx context.Context, in *SetDefaultStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
GetStorageConfigList(ctx context.Context, in *StorageConfigListReq, opts ...grpc.CallOption) (*StorageConfigListResp, error)
GetDefaultStorageConfig(ctx context.Context, in *GetDefaultStorageConfigReq, opts ...grpc.CallOption) (*GetDefaultStorageConfigResp, error)
}
type fileServiceClient struct {
@@ -61,6 +86,106 @@ func (c *fileServiceClient) GetFilesByIds(ctx context.Context, in *GetFilesByIds
return out, nil
}
func (c *fileServiceClient) CreateFile(ctx context.Context, in *CreateFileReq, opts ...grpc.CallOption) (*CreateFileResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CreateFileResp)
err := c.cc.Invoke(ctx, FileService_CreateFile_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) CheckFileByMd5(ctx context.Context, in *CheckFileByMd5Req, opts ...grpc.CallOption) (*CheckFileByMd5Resp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CheckFileByMd5Resp)
err := c.cc.Invoke(ctx, FileService_CheckFileByMd5_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) DeleteFiles(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CommonResp)
err := c.cc.Invoke(ctx, FileService_DeleteFiles_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) GetFileList(ctx context.Context, in *GetFileListReq, opts ...grpc.CallOption) (*GetFileListResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GetFileListResp)
err := c.cc.Invoke(ctx, FileService_GetFileList_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) CreateStorageConfig(ctx context.Context, in *CreateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CommonResp)
err := c.cc.Invoke(ctx, FileService_CreateStorageConfig_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) UpdateStorageConfig(ctx context.Context, in *UpdateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CommonResp)
err := c.cc.Invoke(ctx, FileService_UpdateStorageConfig_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) DeleteStorageConfig(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CommonResp)
err := c.cc.Invoke(ctx, FileService_DeleteStorageConfig_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) SetDefaultStorageConfig(ctx context.Context, in *SetDefaultStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CommonResp)
err := c.cc.Invoke(ctx, FileService_SetDefaultStorageConfig_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) GetStorageConfigList(ctx context.Context, in *StorageConfigListReq, opts ...grpc.CallOption) (*StorageConfigListResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(StorageConfigListResp)
err := c.cc.Invoke(ctx, FileService_GetStorageConfigList_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *fileServiceClient) GetDefaultStorageConfig(ctx context.Context, in *GetDefaultStorageConfigReq, opts ...grpc.CallOption) (*GetDefaultStorageConfigResp, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GetDefaultStorageConfigResp)
err := c.cc.Invoke(ctx, FileService_GetDefaultStorageConfig_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// FileServiceServer is the server API for FileService service.
// All implementations must embed UnimplementedFileServiceServer
// for forward compatibility.
@@ -69,6 +194,21 @@ type FileServiceServer interface {
GetFileById(context.Context, *GetFileByIdReq) (*GetFileByIdResp, error)
// 根据ID列表批量获取文件信息
GetFilesByIds(context.Context, *GetFilesByIdsReq) (*GetFilesByIdsResp, error)
// 创建文件记录
CreateFile(context.Context, *CreateFileReq) (*CreateFileResp, error)
// 通过MD5检查文件是否存在
CheckFileByMd5(context.Context, *CheckFileByMd5Req) (*CheckFileByMd5Resp, error)
// 删除文件记录
DeleteFiles(context.Context, *DeleteFilesReq) (*CommonResp, error)
// 获取文件列表
GetFileList(context.Context, *GetFileListReq) (*GetFileListResp, error)
// ---------- 存储配置 ----------
CreateStorageConfig(context.Context, *CreateStorageConfigReq) (*CommonResp, error)
UpdateStorageConfig(context.Context, *UpdateStorageConfigReq) (*CommonResp, error)
DeleteStorageConfig(context.Context, *DeleteFilesReq) (*CommonResp, error)
SetDefaultStorageConfig(context.Context, *SetDefaultStorageConfigReq) (*CommonResp, error)
GetStorageConfigList(context.Context, *StorageConfigListReq) (*StorageConfigListResp, error)
GetDefaultStorageConfig(context.Context, *GetDefaultStorageConfigReq) (*GetDefaultStorageConfigResp, error)
mustEmbedUnimplementedFileServiceServer()
}
@@ -85,6 +225,36 @@ func (UnimplementedFileServiceServer) GetFileById(context.Context, *GetFileByIdR
func (UnimplementedFileServiceServer) GetFilesByIds(context.Context, *GetFilesByIdsReq) (*GetFilesByIdsResp, error) {
return nil, status.Error(codes.Unimplemented, "method GetFilesByIds not implemented")
}
func (UnimplementedFileServiceServer) CreateFile(context.Context, *CreateFileReq) (*CreateFileResp, error) {
return nil, status.Error(codes.Unimplemented, "method CreateFile not implemented")
}
func (UnimplementedFileServiceServer) CheckFileByMd5(context.Context, *CheckFileByMd5Req) (*CheckFileByMd5Resp, error) {
return nil, status.Error(codes.Unimplemented, "method CheckFileByMd5 not implemented")
}
func (UnimplementedFileServiceServer) DeleteFiles(context.Context, *DeleteFilesReq) (*CommonResp, error) {
return nil, status.Error(codes.Unimplemented, "method DeleteFiles not implemented")
}
func (UnimplementedFileServiceServer) GetFileList(context.Context, *GetFileListReq) (*GetFileListResp, error) {
return nil, status.Error(codes.Unimplemented, "method GetFileList not implemented")
}
func (UnimplementedFileServiceServer) CreateStorageConfig(context.Context, *CreateStorageConfigReq) (*CommonResp, error) {
return nil, status.Error(codes.Unimplemented, "method CreateStorageConfig not implemented")
}
func (UnimplementedFileServiceServer) UpdateStorageConfig(context.Context, *UpdateStorageConfigReq) (*CommonResp, error) {
return nil, status.Error(codes.Unimplemented, "method UpdateStorageConfig not implemented")
}
func (UnimplementedFileServiceServer) DeleteStorageConfig(context.Context, *DeleteFilesReq) (*CommonResp, error) {
return nil, status.Error(codes.Unimplemented, "method DeleteStorageConfig not implemented")
}
func (UnimplementedFileServiceServer) SetDefaultStorageConfig(context.Context, *SetDefaultStorageConfigReq) (*CommonResp, error) {
return nil, status.Error(codes.Unimplemented, "method SetDefaultStorageConfig not implemented")
}
func (UnimplementedFileServiceServer) GetStorageConfigList(context.Context, *StorageConfigListReq) (*StorageConfigListResp, error) {
return nil, status.Error(codes.Unimplemented, "method GetStorageConfigList not implemented")
}
func (UnimplementedFileServiceServer) GetDefaultStorageConfig(context.Context, *GetDefaultStorageConfigReq) (*GetDefaultStorageConfigResp, error) {
return nil, status.Error(codes.Unimplemented, "method GetDefaultStorageConfig not implemented")
}
func (UnimplementedFileServiceServer) mustEmbedUnimplementedFileServiceServer() {}
func (UnimplementedFileServiceServer) testEmbeddedByValue() {}
@@ -142,6 +312,186 @@ func _FileService_GetFilesByIds_Handler(srv interface{}, ctx context.Context, de
return interceptor(ctx, in, info, handler)
}
func _FileService_CreateFile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateFileReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).CreateFile(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_CreateFile_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).CreateFile(ctx, req.(*CreateFileReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_CheckFileByMd5_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CheckFileByMd5Req)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).CheckFileByMd5(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_CheckFileByMd5_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).CheckFileByMd5(ctx, req.(*CheckFileByMd5Req))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_DeleteFiles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteFilesReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).DeleteFiles(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_DeleteFiles_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).DeleteFiles(ctx, req.(*DeleteFilesReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_GetFileList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetFileListReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).GetFileList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_GetFileList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).GetFileList(ctx, req.(*GetFileListReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_CreateStorageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateStorageConfigReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).CreateStorageConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_CreateStorageConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).CreateStorageConfig(ctx, req.(*CreateStorageConfigReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_UpdateStorageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateStorageConfigReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).UpdateStorageConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_UpdateStorageConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).UpdateStorageConfig(ctx, req.(*UpdateStorageConfigReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_DeleteStorageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteFilesReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).DeleteStorageConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_DeleteStorageConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).DeleteStorageConfig(ctx, req.(*DeleteFilesReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_SetDefaultStorageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SetDefaultStorageConfigReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).SetDefaultStorageConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_SetDefaultStorageConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).SetDefaultStorageConfig(ctx, req.(*SetDefaultStorageConfigReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_GetStorageConfigList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(StorageConfigListReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).GetStorageConfigList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_GetStorageConfigList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).GetStorageConfigList(ctx, req.(*StorageConfigListReq))
}
return interceptor(ctx, in, info, handler)
}
func _FileService_GetDefaultStorageConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetDefaultStorageConfigReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(FileServiceServer).GetDefaultStorageConfig(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: FileService_GetDefaultStorageConfig_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(FileServiceServer).GetDefaultStorageConfig(ctx, req.(*GetDefaultStorageConfigReq))
}
return interceptor(ctx, in, info, handler)
}
// FileService_ServiceDesc is the grpc.ServiceDesc for FileService service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
@@ -157,6 +507,46 @@ var FileService_ServiceDesc = grpc.ServiceDesc{
MethodName: "GetFilesByIds",
Handler: _FileService_GetFilesByIds_Handler,
},
{
MethodName: "CreateFile",
Handler: _FileService_CreateFile_Handler,
},
{
MethodName: "CheckFileByMd5",
Handler: _FileService_CheckFileByMd5_Handler,
},
{
MethodName: "DeleteFiles",
Handler: _FileService_DeleteFiles_Handler,
},
{
MethodName: "GetFileList",
Handler: _FileService_GetFileList_Handler,
},
{
MethodName: "CreateStorageConfig",
Handler: _FileService_CreateStorageConfig_Handler,
},
{
MethodName: "UpdateStorageConfig",
Handler: _FileService_UpdateStorageConfig_Handler,
},
{
MethodName: "DeleteStorageConfig",
Handler: _FileService_DeleteStorageConfig_Handler,
},
{
MethodName: "SetDefaultStorageConfig",
Handler: _FileService_SetDefaultStorageConfig_Handler,
},
{
MethodName: "GetStorageConfigList",
Handler: _FileService_GetStorageConfigList_Handler,
},
{
MethodName: "GetDefaultStorageConfig",
Handler: _FileService_GetDefaultStorageConfig_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "pb/file.proto",
+91 -6
View File
@@ -14,18 +14,48 @@ import (
)
type (
CommonResp = file.CommonResp
FileInfo = file.FileInfo
GetFileByIdReq = file.GetFileByIdReq
GetFileByIdResp = file.GetFileByIdResp
GetFilesByIdsReq = file.GetFilesByIdsReq
GetFilesByIdsResp = file.GetFilesByIdsResp
CheckFileByMd5Req = file.CheckFileByMd5Req
CheckFileByMd5Resp = file.CheckFileByMd5Resp
CommonResp = file.CommonResp
CreateFileReq = file.CreateFileReq
CreateFileResp = file.CreateFileResp
CreateStorageConfigReq = file.CreateStorageConfigReq
DeleteFilesReq = file.DeleteFilesReq
FileInfo = file.FileInfo
GetDefaultStorageConfigReq = file.GetDefaultStorageConfigReq
GetDefaultStorageConfigResp = file.GetDefaultStorageConfigResp
GetFileByIdReq = file.GetFileByIdReq
GetFileByIdResp = file.GetFileByIdResp
GetFileListReq = file.GetFileListReq
GetFileListResp = file.GetFileListResp
GetFilesByIdsReq = file.GetFilesByIdsReq
GetFilesByIdsResp = file.GetFilesByIdsResp
SetDefaultStorageConfigReq = file.SetDefaultStorageConfigReq
StorageConfigInfo = file.StorageConfigInfo
StorageConfigListReq = file.StorageConfigListReq
StorageConfigListResp = file.StorageConfigListResp
UpdateStorageConfigReq = file.UpdateStorageConfigReq
FileService interface {
// 根据ID获取文件信息
GetFileById(ctx context.Context, in *GetFileByIdReq, opts ...grpc.CallOption) (*GetFileByIdResp, error)
// 根据ID列表批量获取文件信息
GetFilesByIds(ctx context.Context, in *GetFilesByIdsReq, opts ...grpc.CallOption) (*GetFilesByIdsResp, error)
// 创建文件记录
CreateFile(ctx context.Context, in *CreateFileReq, opts ...grpc.CallOption) (*CreateFileResp, error)
// 通过MD5检查文件是否存在
CheckFileByMd5(ctx context.Context, in *CheckFileByMd5Req, opts ...grpc.CallOption) (*CheckFileByMd5Resp, error)
// 删除文件记录
DeleteFiles(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error)
// 获取文件列表
GetFileList(ctx context.Context, in *GetFileListReq, opts ...grpc.CallOption) (*GetFileListResp, error)
// ---------- 存储配置 ----------
CreateStorageConfig(ctx context.Context, in *CreateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
UpdateStorageConfig(ctx context.Context, in *UpdateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
DeleteStorageConfig(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error)
SetDefaultStorageConfig(ctx context.Context, in *SetDefaultStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error)
GetStorageConfigList(ctx context.Context, in *StorageConfigListReq, opts ...grpc.CallOption) (*StorageConfigListResp, error)
GetDefaultStorageConfig(ctx context.Context, in *GetDefaultStorageConfigReq, opts ...grpc.CallOption) (*GetDefaultStorageConfigResp, error)
}
defaultFileService struct {
@@ -50,3 +80,58 @@ func (m *defaultFileService) GetFilesByIds(ctx context.Context, in *GetFilesById
client := file.NewFileServiceClient(m.cli.Conn())
return client.GetFilesByIds(ctx, in, opts...)
}
// 创建文件记录
func (m *defaultFileService) CreateFile(ctx context.Context, in *CreateFileReq, opts ...grpc.CallOption) (*CreateFileResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.CreateFile(ctx, in, opts...)
}
// 通过MD5检查文件是否存在
func (m *defaultFileService) CheckFileByMd5(ctx context.Context, in *CheckFileByMd5Req, opts ...grpc.CallOption) (*CheckFileByMd5Resp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.CheckFileByMd5(ctx, in, opts...)
}
// 删除文件记录
func (m *defaultFileService) DeleteFiles(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.DeleteFiles(ctx, in, opts...)
}
// 获取文件列表
func (m *defaultFileService) GetFileList(ctx context.Context, in *GetFileListReq, opts ...grpc.CallOption) (*GetFileListResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.GetFileList(ctx, in, opts...)
}
// ---------- 存储配置 ----------
func (m *defaultFileService) CreateStorageConfig(ctx context.Context, in *CreateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.CreateStorageConfig(ctx, in, opts...)
}
func (m *defaultFileService) UpdateStorageConfig(ctx context.Context, in *UpdateStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.UpdateStorageConfig(ctx, in, opts...)
}
func (m *defaultFileService) DeleteStorageConfig(ctx context.Context, in *DeleteFilesReq, opts ...grpc.CallOption) (*CommonResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.DeleteStorageConfig(ctx, in, opts...)
}
func (m *defaultFileService) SetDefaultStorageConfig(ctx context.Context, in *SetDefaultStorageConfigReq, opts ...grpc.CallOption) (*CommonResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.SetDefaultStorageConfig(ctx, in, opts...)
}
func (m *defaultFileService) GetStorageConfigList(ctx context.Context, in *StorageConfigListReq, opts ...grpc.CallOption) (*StorageConfigListResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.GetStorageConfigList(ctx, in, opts...)
}
func (m *defaultFileService) GetDefaultStorageConfig(ctx context.Context, in *GetDefaultStorageConfigReq, opts ...grpc.CallOption) (*GetDefaultStorageConfigResp, error) {
client := file.NewFileServiceClient(m.cli.Conn())
return client.GetDefaultStorageConfig(ctx, in, opts...)
}
@@ -0,0 +1,57 @@
package logic
import (
"context"
"errors"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
"gorm.io/gorm"
)
type CheckFileByMd5Logic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCheckFileByMd5Logic(ctx context.Context, svcCtx *svc.ServiceContext) *CheckFileByMd5Logic {
return &CheckFileByMd5Logic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 通过MD5检查文件是否存在
func (l *CheckFileByMd5Logic) CheckFileByMd5(in *file.CheckFileByMd5Req) (*file.CheckFileByMd5Resp, error) {
if in.Md5 == "" {
return &file.CheckFileByMd5Resp{Exists: false}, nil
}
var ossRecord model.SundynixOss
err := l.svcCtx.DB.Where("md5 = ?", in.Md5).First(&ossRecord).Error
if err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return &file.CheckFileByMd5Resp{Exists: false}, nil
}
return nil, err
}
return &file.CheckFileByMd5Resp{
Exists: true,
File: &file.FileInfo{
Id: ossRecord.ID,
Name: ossRecord.Name,
Url: ossRecord.Url,
Tag: ossRecord.Tag,
Key: ossRecord.Key,
Suffix: ossRecord.Suffix,
Md5: ossRecord.MD5,
CreatedAt: ossRecord.CreatedAt.Unix(),
},
}, nil
}
@@ -0,0 +1,54 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type CreateFileLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCreateFileLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateFileLogic {
return &CreateFileLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 创建文件记录
func (l *CreateFileLogic) CreateFile(in *file.CreateFileReq) (*file.CreateFileResp, error) {
ossRecord := &model.SundynixOss{
Name: in.Name,
Url: in.Url,
Tag: in.Tag,
Key: in.Key,
Suffix: in.Suffix,
MD5: in.Md5,
}
err := l.svcCtx.DB.Create(ossRecord).Error
if err != nil {
return nil, err
}
return &file.CreateFileResp{
File: &file.FileInfo{
Id: ossRecord.ID,
Name: ossRecord.Name,
Url: ossRecord.Url,
Tag: ossRecord.Tag,
Key: ossRecord.Key,
Suffix: ossRecord.Suffix,
Md5: ossRecord.MD5,
CreatedAt: ossRecord.CreatedAt.Unix(),
},
}, nil
}
@@ -0,0 +1,48 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type CreateStorageConfigLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCreateStorageConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateStorageConfigLogic {
return &CreateStorageConfigLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// ---------- 存储配置 ----------
func (l *CreateStorageConfigLogic) CreateStorageConfig(in *file.CreateStorageConfigReq) (*file.CommonResp, error) {
conf := &model.StorageConfig{
Type: in.Type,
Name: in.Name,
Endpoint: in.Endpoint,
AccessKeyId: in.AccessKeyId,
AccessKeySecret: in.AccessKeySecret,
BucketName: in.BucketName,
BucketUrl: in.BucketUrl,
Region: in.Region,
IsDefault: 0, // 默认不激活,除非通过 setDefault
Status: int(in.Status),
Remark: in.Remark,
}
err := l.svcCtx.DB.Create(conf).Error
if err != nil {
return nil, err
}
return &file.CommonResp{Code: 0, Msg: "创建成功"}, nil
}
@@ -0,0 +1,39 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type DeleteFilesLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewDeleteFilesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteFilesLogic {
return &DeleteFilesLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 删除文件记录
func (l *DeleteFilesLogic) DeleteFiles(in *file.DeleteFilesReq) (*file.CommonResp, error) {
if len(in.Ids) == 0 {
return &file.CommonResp{Code: 400, Msg: "ids不能为空"}, nil
}
// 这里的删除只删数据库记录,真实文件的删除由 file-api 在调用这个 RPC 之前处理
err := l.svcCtx.DB.Where("id IN ?", in.Ids).Delete(&model.SundynixOss{}).Error
if err != nil {
return nil, err
}
return &file.CommonResp{Code: 0, Msg: "删除成功"}, nil
}
@@ -0,0 +1,36 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type DeleteStorageConfigLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewDeleteStorageConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteStorageConfigLogic {
return &DeleteStorageConfigLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *DeleteStorageConfigLogic) DeleteStorageConfig(in *file.DeleteFilesReq) (*file.CommonResp, error) {
if len(in.Ids) == 0 {
return &file.CommonResp{Code: 400, Msg: "ids不能为空"}, nil
}
err := l.svcCtx.DB.Where("id IN ?", in.Ids).Delete(&model.StorageConfig{}).Error
if err != nil {
return nil, err
}
return &file.CommonResp{Code: 0, Msg: "删除成功"}, nil
}
@@ -0,0 +1,49 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type GetDefaultStorageConfigLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetDefaultStorageConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetDefaultStorageConfigLogic {
return &GetDefaultStorageConfigLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetDefaultStorageConfigLogic) GetDefaultStorageConfig(in *file.GetDefaultStorageConfigReq) (*file.GetDefaultStorageConfigResp, error) {
conf := &model.StorageConfig{}
err := l.svcCtx.DB.Where("is_default = ?", 1).First(conf).Error
if err != nil {
return nil, err // let the factory handle the error
}
return &file.GetDefaultStorageConfigResp{
Config: &file.StorageConfigInfo{
Id: conf.ID,
Type: conf.Type,
Name: conf.Name,
Endpoint: conf.Endpoint,
AccessKeyId: conf.AccessKeyId,
AccessKeySecret: conf.AccessKeySecret,
BucketName: conf.BucketName,
BucketUrl: conf.BucketUrl,
Region: conf.Region,
IsDefault: int32(conf.IsDefault),
Status: int32(conf.Status),
Remark: conf.Remark,
},
}, nil
}
@@ -3,14 +3,13 @@ package logic
import (
"context"
fileModel "sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"gorm.io/gorm"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type GetFileByIdLogic struct {
@@ -29,7 +28,7 @@ func NewGetFileByIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetFi
// 根据ID获取文件信息
func (l *GetFileByIdLogic) GetFileById(in *file.GetFileByIdReq) (*file.GetFileByIdResp, error) {
var oss fileModel.SundynixOss
var oss model.SundynixOss
err := l.svcCtx.DB.Where("id = ?", in.Id).First(&oss).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
@@ -44,7 +43,7 @@ func (l *GetFileByIdLogic) GetFileById(in *file.GetFileByIdReq) (*file.GetFileBy
}, nil
}
func convertOssToProto(oss *fileModel.SundynixOss) *file.FileInfo {
func convertOssToProto(oss *model.SundynixOss) *file.FileInfo {
return &file.FileInfo{
Id: oss.ID,
Name: oss.Name,
@@ -0,0 +1,65 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type GetFileListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetFileListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetFileListLogic {
return &GetFileListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 获取文件列表
func (l *GetFileListLogic) GetFileList(in *file.GetFileListReq) (*file.GetFileListResp, error) {
var list []model.SundynixOss
var total int64
db := l.svcCtx.DB.Model(&model.SundynixOss{})
if in.Name != "" {
db = db.Where("name LIKE ?", "%"+in.Name+"%")
}
db.Count(&total)
if in.Current > 0 && in.PageSize > 0 {
offset := (in.Current - 1) * in.PageSize
db = db.Offset(int(offset)).Limit(int(in.PageSize))
}
if err := db.Find(&list).Error; err != nil {
return nil, err
}
var respList []*file.FileInfo
for _, item := range list {
respList = append(respList, &file.FileInfo{
Id: item.ID,
Name: item.Name,
Url: item.Url,
Tag: item.Tag,
Key: item.Key,
Suffix: item.Suffix,
Md5: item.MD5,
CreatedAt: item.CreatedAt.Unix(),
})
}
return &file.GetFileListResp{
List: respList,
Total: total,
}, nil
}
@@ -3,13 +3,12 @@ package logic
import (
"context"
fileModel "sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type GetFilesByIdsLogic struct {
@@ -32,7 +31,7 @@ func (l *GetFilesByIdsLogic) GetFilesByIds(in *file.GetFilesByIdsReq) (*file.Get
return &file.GetFilesByIdsResp{Files: []*file.FileInfo{}}, nil
}
var ossList []fileModel.SundynixOss
var ossList []model.SundynixOss
err := l.svcCtx.DB.Where("id IN ?", in.Ids).Find(&ossList).Error
if err != nil {
l.Errorf("批量查询文件失败: %v", err)
@@ -0,0 +1,71 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type GetStorageConfigListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetStorageConfigListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetStorageConfigListLogic {
return &GetStorageConfigListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetStorageConfigListLogic) GetStorageConfigList(in *file.StorageConfigListReq) (*file.StorageConfigListResp, error) {
var list []model.StorageConfig
var total int64
db := l.svcCtx.DB.Model(&model.StorageConfig{})
if in.Type != "" {
db = db.Where("type = ?", in.Type)
}
if in.Name != "" {
db = db.Where("name LIKE ?", "%"+in.Name+"%")
}
db.Count(&total)
if in.Current > 0 && in.PageSize > 0 {
offset := (in.Current - 1) * in.PageSize
db = db.Offset(int(offset)).Limit(int(in.PageSize))
}
if err := db.Find(&list).Error; err != nil {
return nil, err
}
var respList []*file.StorageConfigInfo
for _, item := range list {
respList = append(respList, &file.StorageConfigInfo{
Id: item.ID,
Type: item.Type,
Name: item.Name,
Endpoint: item.Endpoint,
AccessKeyId: item.AccessKeyId,
AccessKeySecret: item.AccessKeySecret,
BucketName: item.BucketName,
BucketUrl: item.BucketUrl,
Region: item.Region,
IsDefault: int32(item.IsDefault),
Status: int32(item.Status),
Remark: item.Remark,
})
}
return &file.StorageConfigListResp{
List: respList,
Total: total,
}, nil
}
@@ -0,0 +1,39 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type SetDefaultStorageConfigLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewSetDefaultStorageConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetDefaultStorageConfigLogic {
return &SetDefaultStorageConfigLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *SetDefaultStorageConfigLogic) SetDefaultStorageConfig(in *file.SetDefaultStorageConfigReq) (*file.CommonResp, error) {
tx := l.svcCtx.DB.Begin()
if err := tx.Model(&model.StorageConfig{}).Where("1 = 1").Update("is_default", 0).Error; err != nil {
tx.Rollback()
return nil, err
}
if err := tx.Model(&model.StorageConfig{}).Where("id = ?", in.Id).Update("is_default", 1).Error; err != nil {
tx.Rollback()
return nil, err
}
tx.Commit()
return &file.CommonResp{Code: 0, Msg: "设置成功"}, nil
}
@@ -0,0 +1,48 @@
package logic
import (
"context"
"github.com/zeromicro/go-zero/core/logx"
"sundynix-micro-go/app/file/model"
"sundynix-micro-go/app/file/rpc/file"
"sundynix-micro-go/app/file/rpc/internal/svc"
)
type UpdateStorageConfigLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUpdateStorageConfigLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateStorageConfigLogic {
return &UpdateStorageConfigLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *UpdateStorageConfigLogic) UpdateStorageConfig(in *file.UpdateStorageConfigReq) (*file.CommonResp, error) {
conf := &model.StorageConfig{}
if err := l.svcCtx.DB.Where("id = ?", in.Id).First(conf).Error; err != nil {
return nil, err
}
conf.Type = in.Type
conf.Name = in.Name
conf.Endpoint = in.Endpoint
conf.AccessKeyId = in.AccessKeyId
conf.AccessKeySecret = in.AccessKeySecret
conf.BucketName = in.BucketName
conf.BucketUrl = in.BucketUrl
conf.Region = in.Region
conf.Status = int(in.Status)
conf.Remark = in.Remark
if err := l.svcCtx.DB.Save(conf).Error; err != nil {
return nil, err
}
return &file.CommonResp{Code: 0, Msg: "更新成功"}, nil
}
@@ -34,3 +34,58 @@ func (s *FileServiceServer) GetFilesByIds(ctx context.Context, in *file.GetFiles
l := logic.NewGetFilesByIdsLogic(ctx, s.svcCtx)
return l.GetFilesByIds(in)
}
// 创建文件记录
func (s *FileServiceServer) CreateFile(ctx context.Context, in *file.CreateFileReq) (*file.CreateFileResp, error) {
l := logic.NewCreateFileLogic(ctx, s.svcCtx)
return l.CreateFile(in)
}
// 通过MD5检查文件是否存在
func (s *FileServiceServer) CheckFileByMd5(ctx context.Context, in *file.CheckFileByMd5Req) (*file.CheckFileByMd5Resp, error) {
l := logic.NewCheckFileByMd5Logic(ctx, s.svcCtx)
return l.CheckFileByMd5(in)
}
// 删除文件记录
func (s *FileServiceServer) DeleteFiles(ctx context.Context, in *file.DeleteFilesReq) (*file.CommonResp, error) {
l := logic.NewDeleteFilesLogic(ctx, s.svcCtx)
return l.DeleteFiles(in)
}
// 获取文件列表
func (s *FileServiceServer) GetFileList(ctx context.Context, in *file.GetFileListReq) (*file.GetFileListResp, error) {
l := logic.NewGetFileListLogic(ctx, s.svcCtx)
return l.GetFileList(in)
}
// ---------- 存储配置 ----------
func (s *FileServiceServer) CreateStorageConfig(ctx context.Context, in *file.CreateStorageConfigReq) (*file.CommonResp, error) {
l := logic.NewCreateStorageConfigLogic(ctx, s.svcCtx)
return l.CreateStorageConfig(in)
}
func (s *FileServiceServer) UpdateStorageConfig(ctx context.Context, in *file.UpdateStorageConfigReq) (*file.CommonResp, error) {
l := logic.NewUpdateStorageConfigLogic(ctx, s.svcCtx)
return l.UpdateStorageConfig(in)
}
func (s *FileServiceServer) DeleteStorageConfig(ctx context.Context, in *file.DeleteFilesReq) (*file.CommonResp, error) {
l := logic.NewDeleteStorageConfigLogic(ctx, s.svcCtx)
return l.DeleteStorageConfig(in)
}
func (s *FileServiceServer) SetDefaultStorageConfig(ctx context.Context, in *file.SetDefaultStorageConfigReq) (*file.CommonResp, error) {
l := logic.NewSetDefaultStorageConfigLogic(ctx, s.svcCtx)
return l.SetDefaultStorageConfig(in)
}
func (s *FileServiceServer) GetStorageConfigList(ctx context.Context, in *file.StorageConfigListReq) (*file.StorageConfigListResp, error) {
l := logic.NewGetStorageConfigListLogic(ctx, s.svcCtx)
return l.GetStorageConfigList(in)
}
func (s *FileServiceServer) GetDefaultStorageConfig(ctx context.Context, in *file.GetDefaultStorageConfigReq) (*file.GetDefaultStorageConfigResp, error) {
l := logic.NewGetDefaultStorageConfigLogic(ctx, s.svcCtx)
return l.GetDefaultStorageConfig(in)
}
+4 -1
View File
@@ -25,7 +25,10 @@ func NewServiceContext(c config.Config) *ServiceContext {
panic(err)
}
// 自动迁移
if err := db.AutoMigrate(&fileModel.SundynixOss{}); err != nil {
if err := db.AutoMigrate(
&fileModel.SundynixOss{},
&fileModel.StorageConfig{},
); err != nil {
logx.Errorf("数据库迁移失败: %v", err)
}
+118
View File
@@ -42,6 +42,108 @@ message GetFilesByIdsResp {
repeated FileInfo files = 1;
}
// ---------- 存储配置 ----------
message StorageConfigInfo {
string id = 1;
string type = 2;
string name = 3;
string endpoint = 4;
string accessKeyId = 5;
string accessKeySecret = 6;
string bucketName = 7;
string bucketUrl = 8;
string region = 9;
int32 isDefault = 10;
int32 status = 11;
string remark = 12;
}
message CreateStorageConfigReq {
string type = 1;
string name = 2;
string endpoint = 3;
string accessKeyId = 4;
string accessKeySecret = 5;
string bucketName = 6;
string bucketUrl = 7;
string region = 8;
int32 status = 9;
string remark = 10;
}
message UpdateStorageConfigReq {
string id = 1;
string type = 2;
string name = 3;
string endpoint = 4;
string accessKeyId = 5;
string accessKeySecret = 6;
string bucketName = 7;
string bucketUrl = 8;
string region = 9;
int32 status = 10;
string remark = 11;
}
message SetDefaultStorageConfigReq {
string id = 1;
}
message StorageConfigListReq {
int32 current = 1;
int32 pageSize = 2;
string type = 3;
string name = 4;
}
message StorageConfigListResp {
repeated StorageConfigInfo list = 1;
int64 total = 2;
}
message GetDefaultStorageConfigReq {}
message GetDefaultStorageConfigResp {
StorageConfigInfo config = 1;
}
message CreateFileReq {
string name = 1;
string url = 2;
string tag = 3;
string key = 4;
string suffix = 5;
string md5 = 6;
}
message CreateFileResp {
FileInfo file = 1;
}
message CheckFileByMd5Req {
string md5 = 1;
}
message CheckFileByMd5Resp {
bool exists = 1;
FileInfo file = 2;
}
message DeleteFilesReq {
repeated string ids = 1;
}
message GetFileListReq {
int32 current = 1;
int32 pageSize = 2;
string name = 3;
}
message GetFileListResp {
repeated FileInfo list = 1;
int64 total = 2;
}
// ---------- 服务定义 ----------
service FileService {
@@ -49,4 +151,20 @@ service FileService {
rpc GetFileById(GetFileByIdReq) returns (GetFileByIdResp);
// 根据ID列表批量获取文件信息
rpc GetFilesByIds(GetFilesByIdsReq) returns (GetFilesByIdsResp);
// 创建文件记录
rpc CreateFile(CreateFileReq) returns (CreateFileResp);
// 通过MD5检查文件是否存在
rpc CheckFileByMd5(CheckFileByMd5Req) returns (CheckFileByMd5Resp);
// 删除文件记录
rpc DeleteFiles(DeleteFilesReq) returns (CommonResp);
// 获取文件列表
rpc GetFileList(GetFileListReq) returns (GetFileListResp);
// ---------- 存储配置 ----------
rpc CreateStorageConfig(CreateStorageConfigReq) returns (CommonResp);
rpc UpdateStorageConfig(UpdateStorageConfigReq) returns (CommonResp);
rpc DeleteStorageConfig(DeleteFilesReq) returns (CommonResp); // 复用idsReq
rpc SetDefaultStorageConfig(SetDefaultStorageConfigReq) returns (CommonResp);
rpc GetStorageConfigList(StorageConfigListReq) returns (StorageConfigListResp);
rpc GetDefaultStorageConfig(GetDefaultStorageConfigReq) returns (GetDefaultStorageConfigResp);
}