initial commit

This commit is contained in:
2025-05-22 19:39:08 +08:00
commit 531bb42d01
103 changed files with 10291 additions and 0 deletions

12
gallery/etc/gallery.yaml Normal file
View File

@ -0,0 +1,12 @@
Name: gallery.rpc
ListenOn: 0.0.0.0:50000
Etcd:
Hosts:
- 127.0.0.1:2379
Key: gallery.rpc
FileRpc:
Etcd:
Hosts:
- 127.0.0.1:2379
Key: file.rpc

39
gallery/gallery.go Normal file
View File

@ -0,0 +1,39 @@
package main
import (
"flag"
"fmt"
"godemo/gallery/gallery"
"godemo/gallery/internal/config"
"godemo/gallery/internal/server"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/core/service"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
var configFile = flag.String("f", "etc/gallery.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
gallery.RegisterGalleryServer(grpcServer, server.NewGalleryServer(ctx))
if c.Mode == service.DevMode || c.Mode == service.TestMode {
reflection.Register(grpcServer)
}
})
defer s.Stop()
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
s.Start()
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,435 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.5.1
// - protoc v3.19.4
// source: rpc/gallery.proto
package gallery
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.64.0 or later.
const _ = grpc.SupportPackageIsVersion9
const (
Gallery_Ping_FullMethodName = "/gallery.Gallery/Ping"
Gallery_GetImageList_FullMethodName = "/gallery.Gallery/GetImageList"
Gallery_GetImageDetail_FullMethodName = "/gallery.Gallery/GetImageDetail"
Gallery_UpdateImage_FullMethodName = "/gallery.Gallery/UpdateImage"
Gallery_DeleteImage_FullMethodName = "/gallery.Gallery/DeleteImage"
Gallery_UploadImage_FullMethodName = "/gallery.Gallery/UploadImage"
Gallery_GetCategoryTree_FullMethodName = "/gallery.Gallery/GetCategoryTree"
Gallery_CreateCategory_FullMethodName = "/gallery.Gallery/CreateCategory"
Gallery_GenerateUrl_FullMethodName = "/gallery.Gallery/GenerateUrl"
)
// GalleryClient is the client API for Gallery 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 GalleryClient interface {
// 健康检查
Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error)
// 图片元数据操作
GetImageList(ctx context.Context, in *ImageListRequest, opts ...grpc.CallOption) (*ImageListResponse, error)
GetImageDetail(ctx context.Context, in *ImageDetailRequest, opts ...grpc.CallOption) (*ImageDetailResponse, error)
UpdateImage(ctx context.Context, in *UpdateImageRequest, opts ...grpc.CallOption) (*UpdateImageResponse, error)
DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error)
// 图片上传
UploadImage(ctx context.Context, in *UploadImageRequest, opts ...grpc.CallOption) (*UploadImageResponse, error)
// 分类管理
GetCategoryTree(ctx context.Context, in *CategoryTreeRequest, opts ...grpc.CallOption) (*CategoryTreeResponse, error)
CreateCategory(ctx context.Context, in *CreateCategoryRequest, opts ...grpc.CallOption) (*CreateCategoryResponse, error)
// 访问控制
GenerateUrl(ctx context.Context, in *GenerateUrlRequest, opts ...grpc.CallOption) (*GenerateUrlResponse, error)
}
type galleryClient struct {
cc grpc.ClientConnInterface
}
func NewGalleryClient(cc grpc.ClientConnInterface) GalleryClient {
return &galleryClient{cc}
}
func (c *galleryClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(PingResponse)
err := c.cc.Invoke(ctx, Gallery_Ping_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) GetImageList(ctx context.Context, in *ImageListRequest, opts ...grpc.CallOption) (*ImageListResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(ImageListResponse)
err := c.cc.Invoke(ctx, Gallery_GetImageList_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) GetImageDetail(ctx context.Context, in *ImageDetailRequest, opts ...grpc.CallOption) (*ImageDetailResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(ImageDetailResponse)
err := c.cc.Invoke(ctx, Gallery_GetImageDetail_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) UpdateImage(ctx context.Context, in *UpdateImageRequest, opts ...grpc.CallOption) (*UpdateImageResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(UpdateImageResponse)
err := c.cc.Invoke(ctx, Gallery_UpdateImage_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(DeleteImageResponse)
err := c.cc.Invoke(ctx, Gallery_DeleteImage_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) UploadImage(ctx context.Context, in *UploadImageRequest, opts ...grpc.CallOption) (*UploadImageResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(UploadImageResponse)
err := c.cc.Invoke(ctx, Gallery_UploadImage_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) GetCategoryTree(ctx context.Context, in *CategoryTreeRequest, opts ...grpc.CallOption) (*CategoryTreeResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CategoryTreeResponse)
err := c.cc.Invoke(ctx, Gallery_GetCategoryTree_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) CreateCategory(ctx context.Context, in *CreateCategoryRequest, opts ...grpc.CallOption) (*CreateCategoryResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(CreateCategoryResponse)
err := c.cc.Invoke(ctx, Gallery_CreateCategory_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *galleryClient) GenerateUrl(ctx context.Context, in *GenerateUrlRequest, opts ...grpc.CallOption) (*GenerateUrlResponse, error) {
cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
out := new(GenerateUrlResponse)
err := c.cc.Invoke(ctx, Gallery_GenerateUrl_FullMethodName, in, out, cOpts...)
if err != nil {
return nil, err
}
return out, nil
}
// GalleryServer is the server API for Gallery service.
// All implementations must embed UnimplementedGalleryServer
// for forward compatibility.
type GalleryServer interface {
// 健康检查
Ping(context.Context, *PingRequest) (*PingResponse, error)
// 图片元数据操作
GetImageList(context.Context, *ImageListRequest) (*ImageListResponse, error)
GetImageDetail(context.Context, *ImageDetailRequest) (*ImageDetailResponse, error)
UpdateImage(context.Context, *UpdateImageRequest) (*UpdateImageResponse, error)
DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error)
// 图片上传
UploadImage(context.Context, *UploadImageRequest) (*UploadImageResponse, error)
// 分类管理
GetCategoryTree(context.Context, *CategoryTreeRequest) (*CategoryTreeResponse, error)
CreateCategory(context.Context, *CreateCategoryRequest) (*CreateCategoryResponse, error)
// 访问控制
GenerateUrl(context.Context, *GenerateUrlRequest) (*GenerateUrlResponse, error)
mustEmbedUnimplementedGalleryServer()
}
// UnimplementedGalleryServer must be embedded to have
// forward compatible implementations.
//
// NOTE: this should be embedded by value instead of pointer to avoid a nil
// pointer dereference when methods are called.
type UnimplementedGalleryServer struct{}
func (UnimplementedGalleryServer) Ping(context.Context, *PingRequest) (*PingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented")
}
func (UnimplementedGalleryServer) GetImageList(context.Context, *ImageListRequest) (*ImageListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetImageList not implemented")
}
func (UnimplementedGalleryServer) GetImageDetail(context.Context, *ImageDetailRequest) (*ImageDetailResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetImageDetail not implemented")
}
func (UnimplementedGalleryServer) UpdateImage(context.Context, *UpdateImageRequest) (*UpdateImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateImage not implemented")
}
func (UnimplementedGalleryServer) DeleteImage(context.Context, *DeleteImageRequest) (*DeleteImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DeleteImage not implemented")
}
func (UnimplementedGalleryServer) UploadImage(context.Context, *UploadImageRequest) (*UploadImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UploadImage not implemented")
}
func (UnimplementedGalleryServer) GetCategoryTree(context.Context, *CategoryTreeRequest) (*CategoryTreeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetCategoryTree not implemented")
}
func (UnimplementedGalleryServer) CreateCategory(context.Context, *CreateCategoryRequest) (*CreateCategoryResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method CreateCategory not implemented")
}
func (UnimplementedGalleryServer) GenerateUrl(context.Context, *GenerateUrlRequest) (*GenerateUrlResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GenerateUrl not implemented")
}
func (UnimplementedGalleryServer) mustEmbedUnimplementedGalleryServer() {}
func (UnimplementedGalleryServer) testEmbeddedByValue() {}
// UnsafeGalleryServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to GalleryServer will
// result in compilation errors.
type UnsafeGalleryServer interface {
mustEmbedUnimplementedGalleryServer()
}
func RegisterGalleryServer(s grpc.ServiceRegistrar, srv GalleryServer) {
// If the following call pancis, it indicates UnimplementedGalleryServer was
// embedded by pointer and is nil. This will cause panics if an
// unimplemented method is ever invoked, so we test this at initialization
// time to prevent it from happening at runtime later due to I/O.
if t, ok := srv.(interface{ testEmbeddedByValue() }); ok {
t.testEmbeddedByValue()
}
s.RegisterService(&Gallery_ServiceDesc, srv)
}
func _Gallery_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).Ping(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_Ping_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).Ping(ctx, req.(*PingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_GetImageList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ImageListRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).GetImageList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_GetImageList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).GetImageList(ctx, req.(*ImageListRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_GetImageDetail_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ImageDetailRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).GetImageDetail(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_GetImageDetail_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).GetImageDetail(ctx, req.(*ImageDetailRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_UpdateImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateImageRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).UpdateImage(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_UpdateImage_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).UpdateImage(ctx, req.(*UpdateImageRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_DeleteImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DeleteImageRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).DeleteImage(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_DeleteImage_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).DeleteImage(ctx, req.(*DeleteImageRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_UploadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UploadImageRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).UploadImage(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_UploadImage_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).UploadImage(ctx, req.(*UploadImageRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_GetCategoryTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CategoryTreeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).GetCategoryTree(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_GetCategoryTree_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).GetCategoryTree(ctx, req.(*CategoryTreeRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_CreateCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateCategoryRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).CreateCategory(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_CreateCategory_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).CreateCategory(ctx, req.(*CreateCategoryRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Gallery_GenerateUrl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GenerateUrlRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(GalleryServer).GenerateUrl(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Gallery_GenerateUrl_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(GalleryServer).GenerateUrl(ctx, req.(*GenerateUrlRequest))
}
return interceptor(ctx, in, info, handler)
}
// Gallery_ServiceDesc is the grpc.ServiceDesc for Gallery service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var Gallery_ServiceDesc = grpc.ServiceDesc{
ServiceName: "gallery.Gallery",
HandlerType: (*GalleryServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Ping",
Handler: _Gallery_Ping_Handler,
},
{
MethodName: "GetImageList",
Handler: _Gallery_GetImageList_Handler,
},
{
MethodName: "GetImageDetail",
Handler: _Gallery_GetImageDetail_Handler,
},
{
MethodName: "UpdateImage",
Handler: _Gallery_UpdateImage_Handler,
},
{
MethodName: "DeleteImage",
Handler: _Gallery_DeleteImage_Handler,
},
{
MethodName: "UploadImage",
Handler: _Gallery_UploadImage_Handler,
},
{
MethodName: "GetCategoryTree",
Handler: _Gallery_GetCategoryTree_Handler,
},
{
MethodName: "CreateCategory",
Handler: _Gallery_CreateCategory_Handler,
},
{
MethodName: "GenerateUrl",
Handler: _Gallery_GenerateUrl_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "rpc/gallery.proto",
}

View File

@ -0,0 +1,114 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.8.3
// Source: gallery.proto
package galleryclient
import (
"context"
"godemo/gallery/gallery"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
)
type (
CategoryNode = gallery.CategoryNode
CategoryTreeRequest = gallery.CategoryTreeRequest
CategoryTreeResponse = gallery.CategoryTreeResponse
CreateCategoryRequest = gallery.CreateCategoryRequest
CreateCategoryResponse = gallery.CreateCategoryResponse
DeleteImageRequest = gallery.DeleteImageRequest
DeleteImageResponse = gallery.DeleteImageResponse
GenerateUrlRequest = gallery.GenerateUrlRequest
GenerateUrlResponse = gallery.GenerateUrlResponse
ImageDetailRequest = gallery.ImageDetailRequest
ImageDetailResponse = gallery.ImageDetailResponse
ImageListRequest = gallery.ImageListRequest
ImageListResponse = gallery.ImageListResponse
ImageMeta = gallery.ImageMeta
PingRequest = gallery.PingRequest
PingResponse = gallery.PingResponse
UpdateImageRequest = gallery.UpdateImageRequest
UpdateImageResponse = gallery.UpdateImageResponse
UploadImageRequest = gallery.UploadImageRequest
UploadImageResponse = gallery.UploadImageResponse
Gallery interface {
// 健康检查
Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error)
// 图片元数据操作
GetImageList(ctx context.Context, in *ImageListRequest, opts ...grpc.CallOption) (*ImageListResponse, error)
GetImageDetail(ctx context.Context, in *ImageDetailRequest, opts ...grpc.CallOption) (*ImageDetailResponse, error)
UpdateImage(ctx context.Context, in *UpdateImageRequest, opts ...grpc.CallOption) (*UpdateImageResponse, error)
DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error)
// 图片上传
UploadImage(ctx context.Context, in *UploadImageRequest, opts ...grpc.CallOption) (*UploadImageResponse, error)
// 分类管理
GetCategoryTree(ctx context.Context, in *CategoryTreeRequest, opts ...grpc.CallOption) (*CategoryTreeResponse, error)
CreateCategory(ctx context.Context, in *CreateCategoryRequest, opts ...grpc.CallOption) (*CreateCategoryResponse, error)
// 访问控制
GenerateUrl(ctx context.Context, in *GenerateUrlRequest, opts ...grpc.CallOption) (*GenerateUrlResponse, error)
}
defaultGallery struct {
cli zrpc.Client
}
)
func NewGallery(cli zrpc.Client) Gallery {
return &defaultGallery{
cli: cli,
}
}
// 健康检查
func (m *defaultGallery) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PingResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.Ping(ctx, in, opts...)
}
// 图片元数据操作
func (m *defaultGallery) GetImageList(ctx context.Context, in *ImageListRequest, opts ...grpc.CallOption) (*ImageListResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.GetImageList(ctx, in, opts...)
}
func (m *defaultGallery) GetImageDetail(ctx context.Context, in *ImageDetailRequest, opts ...grpc.CallOption) (*ImageDetailResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.GetImageDetail(ctx, in, opts...)
}
func (m *defaultGallery) UpdateImage(ctx context.Context, in *UpdateImageRequest, opts ...grpc.CallOption) (*UpdateImageResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.UpdateImage(ctx, in, opts...)
}
func (m *defaultGallery) DeleteImage(ctx context.Context, in *DeleteImageRequest, opts ...grpc.CallOption) (*DeleteImageResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.DeleteImage(ctx, in, opts...)
}
// 图片上传
func (m *defaultGallery) UploadImage(ctx context.Context, in *UploadImageRequest, opts ...grpc.CallOption) (*UploadImageResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.UploadImage(ctx, in, opts...)
}
// 分类管理
func (m *defaultGallery) GetCategoryTree(ctx context.Context, in *CategoryTreeRequest, opts ...grpc.CallOption) (*CategoryTreeResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.GetCategoryTree(ctx, in, opts...)
}
func (m *defaultGallery) CreateCategory(ctx context.Context, in *CreateCategoryRequest, opts ...grpc.CallOption) (*CreateCategoryResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.CreateCategory(ctx, in, opts...)
}
// 访问控制
func (m *defaultGallery) GenerateUrl(ctx context.Context, in *GenerateUrlRequest, opts ...grpc.CallOption) (*GenerateUrlResponse, error) {
client := gallery.NewGalleryClient(m.cli.Conn())
return client.GenerateUrl(ctx, in, opts...)
}

View File

@ -0,0 +1,8 @@
package config
import "github.com/zeromicro/go-zero/zrpc"
type Config struct {
zrpc.RpcServerConf
FileRpc zrpc.RpcClientConf
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type CreateCategoryLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCreateCategoryLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateCategoryLogic {
return &CreateCategoryLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *CreateCategoryLogic) CreateCategory(in *gallery.CreateCategoryRequest) (*gallery.CreateCategoryResponse, error) {
// todo: add your logic here and delete this line
return &gallery.CreateCategoryResponse{}, nil
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type DeleteImageLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewDeleteImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DeleteImageLogic {
return &DeleteImageLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *DeleteImageLogic) DeleteImage(in *gallery.DeleteImageRequest) (*gallery.DeleteImageResponse, error) {
// todo: add your logic here and delete this line
return &gallery.DeleteImageResponse{}, nil
}

View File

@ -0,0 +1,31 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type GenerateUrlLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGenerateUrlLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GenerateUrlLogic {
return &GenerateUrlLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 访问控制
func (l *GenerateUrlLogic) GenerateUrl(in *gallery.GenerateUrlRequest) (*gallery.GenerateUrlResponse, error) {
// todo: add your logic here and delete this line
return &gallery.GenerateUrlResponse{}, nil
}

View File

@ -0,0 +1,31 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type GetCategoryTreeLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetCategoryTreeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCategoryTreeLogic {
return &GetCategoryTreeLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 分类管理
func (l *GetCategoryTreeLogic) GetCategoryTree(in *gallery.CategoryTreeRequest) (*gallery.CategoryTreeResponse, error) {
// todo: add your logic here and delete this line
return &gallery.CategoryTreeResponse{}, nil
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type GetImageDetailLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetImageDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetImageDetailLogic {
return &GetImageDetailLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GetImageDetailLogic) GetImageDetail(in *gallery.ImageDetailRequest) (*gallery.ImageDetailResponse, error) {
// todo: add your logic here and delete this line
return &gallery.ImageDetailResponse{}, nil
}

View File

@ -0,0 +1,31 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type GetImageListLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetImageListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetImageListLogic {
return &GetImageListLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 图片元数据操作
func (l *GetImageListLogic) GetImageList(in *gallery.ImageListRequest) (*gallery.ImageListResponse, error) {
// todo: add your logic here and delete this line
return &gallery.ImageListResponse{}, nil
}

View File

@ -0,0 +1,31 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type PingLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewPingLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PingLogic {
return &PingLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 健康检查
func (l *PingLogic) Ping(in *gallery.PingRequest) (*gallery.PingResponse, error) {
// todo: add your logic here and delete this line
return &gallery.PingResponse{}, nil
}

View File

@ -0,0 +1,30 @@
package logic
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type UpdateImageLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUpdateImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateImageLogic {
return &UpdateImageLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *UpdateImageLogic) UpdateImage(in *gallery.UpdateImageRequest) (*gallery.UpdateImageResponse, error) {
// todo: add your logic here and delete this line
return &gallery.UpdateImageResponse{}, nil
}

View File

@ -0,0 +1,43 @@
package logic
import (
"context"
"godemo/file/file"
"godemo/gallery/gallery"
"godemo/gallery/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type UploadImageLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUploadImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UploadImageLogic {
return &UploadImageLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// 图片上传
func (l *UploadImageLogic) UploadImage(in *gallery.UploadImageRequest) (*gallery.UploadImageResponse, error) {
// 1. 根据 in.CategoryId 查询分类信息,获取分类名称
var categoryName string
// 2. 调用 file rpc Upload 接口上传文件到MinIO
l.svcCtx.FileRpc.Upload(l.ctx, &file.UploadRequest{
Filename: in.FileName,
Content: in.FileContent,
Folder: categoryName,
})
// 3. 图片信息存入数据库
// 4. 返回接口执行结果
return &gallery.UploadImageResponse{}, nil
}

View File

@ -0,0 +1,74 @@
// Code generated by goctl. DO NOT EDIT.
// goctl 1.8.3
// Source: gallery.proto
package server
import (
"context"
"godemo/gallery/gallery"
"godemo/gallery/internal/logic"
"godemo/gallery/internal/svc"
)
type GalleryServer struct {
svcCtx *svc.ServiceContext
gallery.UnimplementedGalleryServer
}
func NewGalleryServer(svcCtx *svc.ServiceContext) *GalleryServer {
return &GalleryServer{
svcCtx: svcCtx,
}
}
// 健康检查
func (s *GalleryServer) Ping(ctx context.Context, in *gallery.PingRequest) (*gallery.PingResponse, error) {
l := logic.NewPingLogic(ctx, s.svcCtx)
return l.Ping(in)
}
// 图片元数据操作
func (s *GalleryServer) GetImageList(ctx context.Context, in *gallery.ImageListRequest) (*gallery.ImageListResponse, error) {
l := logic.NewGetImageListLogic(ctx, s.svcCtx)
return l.GetImageList(in)
}
func (s *GalleryServer) GetImageDetail(ctx context.Context, in *gallery.ImageDetailRequest) (*gallery.ImageDetailResponse, error) {
l := logic.NewGetImageDetailLogic(ctx, s.svcCtx)
return l.GetImageDetail(in)
}
func (s *GalleryServer) UpdateImage(ctx context.Context, in *gallery.UpdateImageRequest) (*gallery.UpdateImageResponse, error) {
l := logic.NewUpdateImageLogic(ctx, s.svcCtx)
return l.UpdateImage(in)
}
func (s *GalleryServer) DeleteImage(ctx context.Context, in *gallery.DeleteImageRequest) (*gallery.DeleteImageResponse, error) {
l := logic.NewDeleteImageLogic(ctx, s.svcCtx)
return l.DeleteImage(in)
}
// 图片上传
func (s *GalleryServer) UploadImage(ctx context.Context, in *gallery.UploadImageRequest) (*gallery.UploadImageResponse, error) {
l := logic.NewUploadImageLogic(ctx, s.svcCtx)
return l.UploadImage(in)
}
// 分类管理
func (s *GalleryServer) GetCategoryTree(ctx context.Context, in *gallery.CategoryTreeRequest) (*gallery.CategoryTreeResponse, error) {
l := logic.NewGetCategoryTreeLogic(ctx, s.svcCtx)
return l.GetCategoryTree(in)
}
func (s *GalleryServer) CreateCategory(ctx context.Context, in *gallery.CreateCategoryRequest) (*gallery.CreateCategoryResponse, error) {
l := logic.NewCreateCategoryLogic(ctx, s.svcCtx)
return l.CreateCategory(in)
}
// 访问控制
func (s *GalleryServer) GenerateUrl(ctx context.Context, in *gallery.GenerateUrlRequest) (*gallery.GenerateUrlResponse, error) {
l := logic.NewGenerateUrlLogic(ctx, s.svcCtx)
return l.GenerateUrl(in)
}

View File

@ -0,0 +1,21 @@
package svc
import (
"godemo/file/file"
"godemo/gallery/internal/config"
"github.com/zeromicro/go-zero/zrpc"
)
type ServiceContext struct {
Config config.Config
FileRpc file.FileClient
}
func NewServiceContext(c config.Config) *ServiceContext {
conn := zrpc.MustNewClient(c.FileRpc).Conn()
return &ServiceContext{
Config: c,
FileRpc: file.NewFileClient(conn),
}
}