接口封装

dev
truthhun 11 months ago
parent 38d508d42e
commit 232c67c96d

File diff suppressed because it is too large Load Diff

@ -0,0 +1,499 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: api/v1/punishment.proto
/*
Package v1 is a reverse proxy.
It translates gRPC into RESTful JSON APIs.
*/
package v1
import (
"context"
"io"
"net/http"
"github.com/golang/protobuf/descriptor"
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/grpc-ecosystem/grpc-gateway/utilities"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/metadata"
"google.golang.org/grpc/status"
)
// Suppress "imported and not used" errors
var _ codes.Code
var _ io.Reader
var _ status.Status
var _ = runtime.String
var _ = utilities.NewDoubleArray
var _ = descriptor.ForMessage
var _ = metadata.Join
func request_PunishmentAPI_CreatePunishment_0(ctx context.Context, marshaler runtime.Marshaler, client PunishmentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq Punishment
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.CreatePunishment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PunishmentAPI_CreatePunishment_0(ctx context.Context, marshaler runtime.Marshaler, server PunishmentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq Punishment
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.CreatePunishment(ctx, &protoReq)
return msg, metadata, err
}
func request_PunishmentAPI_UpdatePunishment_0(ctx context.Context, marshaler runtime.Marshaler, client PunishmentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq Punishment
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UpdatePunishment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PunishmentAPI_UpdatePunishment_0(ctx context.Context, marshaler runtime.Marshaler, server PunishmentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq Punishment
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.UpdatePunishment(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_PunishmentAPI_GetPunishment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_PunishmentAPI_GetPunishment_0(ctx context.Context, marshaler runtime.Marshaler, client PunishmentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_GetPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GetPunishment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PunishmentAPI_GetPunishment_0(ctx context.Context, marshaler runtime.Marshaler, server PunishmentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GetPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_GetPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.GetPunishment(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_PunishmentAPI_ListPunishment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_PunishmentAPI_ListPunishment_0(ctx context.Context, marshaler runtime.Marshaler, client PunishmentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_ListPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.ListPunishment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PunishmentAPI_ListPunishment_0(ctx context.Context, marshaler runtime.Marshaler, server PunishmentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_ListPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.ListPunishment(ctx, &protoReq)
return msg, metadata, err
}
var (
filter_PunishmentAPI_CancelPunishment_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_PunishmentAPI_CancelPunishment_0(ctx context.Context, marshaler runtime.Marshaler, client PunishmentAPIClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq CancelPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_CancelPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.CancelPunishment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_PunishmentAPI_CancelPunishment_0(ctx context.Context, marshaler runtime.Marshaler, server PunishmentAPIServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq CancelPunishmentRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_PunishmentAPI_CancelPunishment_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.CancelPunishment(ctx, &protoReq)
return msg, metadata, err
}
// RegisterPunishmentAPIHandlerServer registers the http handlers for service PunishmentAPI to "mux".
// UnaryRPC :call PunishmentAPIServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterPunishmentAPIHandlerFromEndpoint instead.
func RegisterPunishmentAPIHandlerServer(ctx context.Context, mux *runtime.ServeMux, server PunishmentAPIServer) error {
mux.Handle("POST", pattern_PunishmentAPI_CreatePunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PunishmentAPI_CreatePunishment_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_CreatePunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("PUT", pattern_PunishmentAPI_UpdatePunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PunishmentAPI_UpdatePunishment_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_UpdatePunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_PunishmentAPI_GetPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PunishmentAPI_GetPunishment_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_GetPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_PunishmentAPI_ListPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PunishmentAPI_ListPunishment_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_ListPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("PUT", pattern_PunishmentAPI_CancelPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
var stream runtime.ServerTransportStream
ctx = grpc.NewContextWithServerTransportStream(ctx, &stream)
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_PunishmentAPI_CancelPunishment_0(rctx, inboundMarshaler, server, req, pathParams)
md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer())
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_CancelPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
// RegisterPunishmentAPIHandlerFromEndpoint is same as RegisterPunishmentAPIHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterPunishmentAPIHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
conn, err := grpc.Dial(endpoint, opts...)
if err != nil {
return err
}
defer func() {
if err != nil {
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
return
}
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
}()
}()
return RegisterPunishmentAPIHandler(ctx, mux, conn)
}
// RegisterPunishmentAPIHandler registers the http handlers for service PunishmentAPI to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterPunishmentAPIHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
return RegisterPunishmentAPIHandlerClient(ctx, mux, NewPunishmentAPIClient(conn))
}
// RegisterPunishmentAPIHandlerClient registers the http handlers for service PunishmentAPI
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "PunishmentAPIClient".
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "PunishmentAPIClient"
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
// "PunishmentAPIClient" to call the correct interceptors.
func RegisterPunishmentAPIHandlerClient(ctx context.Context, mux *runtime.ServeMux, client PunishmentAPIClient) error {
mux.Handle("POST", pattern_PunishmentAPI_CreatePunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PunishmentAPI_CreatePunishment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_CreatePunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("PUT", pattern_PunishmentAPI_UpdatePunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PunishmentAPI_UpdatePunishment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_UpdatePunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_PunishmentAPI_GetPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PunishmentAPI_GetPunishment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_GetPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_PunishmentAPI_ListPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PunishmentAPI_ListPunishment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_ListPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("PUT", pattern_PunishmentAPI_CancelPunishment_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_PunishmentAPI_CancelPunishment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_PunishmentAPI_CancelPunishment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
var (
pattern_PunishmentAPI_CreatePunishment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "punishment"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_PunishmentAPI_UpdatePunishment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "punishment"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_PunishmentAPI_GetPunishment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"api", "v1", "punishment"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_PunishmentAPI_ListPunishment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "punishment", "list"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_PunishmentAPI_CancelPunishment_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "punishment", "cancel"}, "", runtime.AssumeColonVerbOpt(true)))
)
var (
forward_PunishmentAPI_CreatePunishment_0 = runtime.ForwardResponseMessage
forward_PunishmentAPI_UpdatePunishment_0 = runtime.ForwardResponseMessage
forward_PunishmentAPI_GetPunishment_0 = runtime.ForwardResponseMessage
forward_PunishmentAPI_ListPunishment_0 = runtime.ForwardResponseMessage
forward_PunishmentAPI_CancelPunishment_0 = runtime.ForwardResponseMessage
)

@ -0,0 +1,84 @@
syntax = "proto3";
import "google/protobuf/timestamp.proto";
import "gogoproto/gogo.proto";
// import "validate/validate.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";
package api.v1;
option go_package = "moredoc/api/v1;v1";
option java_multiple_files = true;
option java_package = "api.v1";
// proto
message Punishment {
google.protobuf.Timestamp start_time = 6 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp end_time = 7 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp created_at = 8 [ (gogoproto.stdtime) = true ];
google.protobuf.Timestamp updated_at = 9 [ (gogoproto.stdtime) = true ];
int64 id = 1;
int64 user_id = 2;
int32 type = 3;
int32 enable = 4;
string operators = 5;
string remark = 10;
string reason = 11;
}
message CancelPunishmentRequest { repeated int64 id = 1; }
message GetPunishmentRequest { int64 id = 1; }
message ListPunishmentRequest {
int64 page = 1;
int64 size = 2;
string wd = 3;
repeated string field = 4;
string order = 5;
repeated int32 type = 6;
repeated int32 enable = 7;
repeated int64 user_id = 8;
}
message ListPunishmentReply {
int64 total = 1;
repeated Punishment punishment = 2;
}
service PunishmentAPI {
rpc CreatePunishment(Punishment) returns (Punishment) {
option (google.api.http) = {
post : '/api/v1/punishment',
body : '*',
};
}
rpc UpdatePunishment(Punishment) returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/punishment',
body : '*',
};
}
rpc GetPunishment(GetPunishmentRequest) returns (Punishment) {
option (google.api.http) = {
get : '/api/v1/punishment',
};
}
rpc ListPunishment(ListPunishmentRequest) returns (ListPunishmentReply) {
option (google.api.http) = {
get : '/api/v1/punishment/list',
};
}
//
rpc CancelPunishment(CancelPunishmentRequest)
returns (google.protobuf.Empty) {
option (google.api.http) = {
put : '/api/v1/punishment/cancel',
};
}
}

@ -0,0 +1,198 @@
package biz
import (
"context"
"strings"
pb "moredoc/api/v1"
"moredoc/middleware/auth"
"moredoc/model"
"moredoc/util"
"go.uber.org/zap"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"google.golang.org/protobuf/types/known/emptypb"
"gorm.io/gorm"
)
type PunishmentAPIService struct {
pb.UnimplementedPunishmentAPIServer
dbModel *model.DBModel
logger *zap.Logger
}
func NewPunishmentAPIService(dbModel *model.DBModel, logger *zap.Logger) (service *PunishmentAPIService) {
return &PunishmentAPIService{dbModel: dbModel, logger: logger.Named("PunishmentAPIService")}
}
func (s *PunishmentAPIService) checkPermission(ctx context.Context) (userClaims *auth.UserClaims, err error) {
return checkGRPCPermission(s.dbModel, ctx)
}
func (s *PunishmentAPIService) CreatePunishment(ctx context.Context, req *pb.Punishment) (*pb.Punishment, error) {
userClaims, err := s.checkPermission(ctx)
if err != nil {
return nil, err
}
punishment := &model.Punishment{}
err = util.CopyStruct(req, punishment)
if err != nil {
s.logger.Error("CopyStruct", zap.Error(err))
return nil, status.Errorf(codes.InvalidArgument, err.Error())
}
s.logger.Debug("CreatePunishment", zap.Any("punishment", punishment), zap.Any("req", req))
punishment.Operators = s.dbModel.MakePunishmentOperators(userClaims.UserId, req.Type)
err = s.dbModel.CreatePunishment(punishment)
if err != nil {
s.logger.Error("CreatePunishment", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
res := &pb.Punishment{}
err = util.CopyStruct(punishment, res)
if err != nil {
s.logger.Error("CopyStruct", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
return res, nil
}
func (s *PunishmentAPIService) UpdatePunishment(ctx context.Context, req *pb.Punishment) (*emptypb.Empty, error) {
userClaims, err := s.checkPermission(ctx)
if err != nil {
return nil, err
}
punishment := &model.Punishment{}
err = util.CopyStruct(req, punishment)
if err != nil {
s.logger.Error("CopyStruct", zap.Error(err))
return nil, status.Errorf(codes.InvalidArgument, err.Error())
}
s.logger.Debug("UpdatePunishment", zap.Any("punishment", punishment), zap.Any("req", req))
if existPunishment, _ := s.dbModel.GetPunishment(punishment.Id, "id", "operators"); existPunishment.Id > 0 {
punishment.Operators = s.dbModel.MakePunishmentOperators(userClaims.UserId, req.Type, existPunishment.Operators)
}
err = s.dbModel.UpdatePunishment(punishment)
if err != nil {
s.logger.Error("UpdatePunishment", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
return &emptypb.Empty{}, nil
}
func (s *PunishmentAPIService) GetPunishment(ctx context.Context, req *pb.GetPunishmentRequest) (*pb.Punishment, error) {
_, err := s.checkPermission(ctx)
if err != nil {
return nil, err
}
punishment, err := s.dbModel.GetPunishment(req.Id)
if err != nil {
s.logger.Error("GetPunishment", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
res := &pb.Punishment{}
err = util.CopyStruct(punishment, res)
if err != nil {
s.logger.Error("CopyStruct", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
return res, nil
}
func (s *PunishmentAPIService) ListPunishment(ctx context.Context, req *pb.ListPunishmentRequest) (*pb.ListPunishmentReply, error) {
_, err := s.checkPermission(ctx)
if err != nil {
return nil, err
}
opt := &model.OptionGetPunishmentList{
Page: int(req.Page),
Size: int(req.Size_),
WithCount: true,
SelectFields: req.Field,
QueryLike: make(map[string][]interface{}),
QueryIn: make(map[string][]interface{}),
}
if len(req.UserId) > 0 {
opt.QueryIn["user_id"] = util.Slice2Interface(req.UserId)
}
if len(req.Type) > 0 {
opt.QueryIn["type"] = util.Slice2Interface(req.Type)
}
if len(req.Enable) > 0 {
opt.QueryIn["enable"] = util.Slice2Interface(req.Enable)
}
if req.Order != "" {
opt.Sort = strings.Split(req.Order, ",")
}
if req.Wd != "" {
wd := strings.TrimSpace(req.Wd)
opt.QueryLike["reason"] = []interface{}{wd}
opt.QueryLike["remark"] = []interface{}{wd}
}
data, total, err := s.dbModel.GetPunishmentList(opt)
if err != nil && err != gorm.ErrRecordNotFound {
s.logger.Error("GetPunishmentList", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
res := &pb.ListPunishmentReply{
Total: total,
}
err = util.CopyStruct(data, &res.Punishment)
if err != nil {
s.logger.Error("CopyStruct", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
return res, nil
}
// 取消惩罚
func (s *PunishmentAPIService) CancelPunishment(ctx context.Context, req *pb.CancelPunishmentRequest) (*emptypb.Empty, error) {
userCliams, err := s.checkPermission(ctx)
if err != nil {
return nil, err
}
data, _, err := s.dbModel.GetPunishmentList(&model.OptionGetPunishmentList{
Ids: req.Id,
})
if err != nil && err != gorm.ErrRecordNotFound {
s.logger.Error("GetPunishmentList", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
for _, item := range data {
item.Enable = false
item.Operators = s.dbModel.MakePunishmentOperators(userCliams.UserId, 0, item.Operators)
err = s.dbModel.UpdatePunishment(&item, "enable", "operators")
if err != nil {
s.logger.Error("UpdatePunishment", zap.Error(err))
return nil, status.Errorf(codes.Internal, err.Error())
}
}
return &emptypb.Empty{}, nil
}

@ -250,17 +250,18 @@ func (s *UserAPIService) UpdateUserProfile(ctx context.Context, req *pb.User) (*
Mobile: req.Mobile, Email: req.Email, Address: req.Address,
Signature: req.Signature, Avatar: req.Avatar,
Realname: req.Realname, Identity: req.Identity,
Status: int8(req.Status), Id: req.Id,
// Status: int8(req.Status),
Id: req.Id,
}
// 更改用户自己的资料
if req.Id <= 0 || req.Id == userClaims.UserId {
user.Id = userClaims.UserId
exist, _ := s.dbModel.GetUser(user.Id, "status")
if exist.Status != model.UserStatusNormal {
// 非正常的用户状态,禁止修改个人信息,以避免用户修改成非法信息等
return nil, status.Errorf(codes.InvalidArgument, "您的用户状态异常,禁止修改个人信息")
}
// exist, _ := s.dbModel.GetUser(user.Id, "status")
// if exist.Status != model.UserStatusNormal {
// // 非正常的用户状态,禁止修改个人信息,以避免用户修改成非法信息等
// return nil, status.Errorf(codes.InvalidArgument, "您的用户状态异常,禁止修改个人信息")
// }
if err := s.dbModel.UpdateUser(user, fields...); err != nil {
return nil, status.Errorf(codes.Internal, err.Error())

@ -0,0 +1,168 @@
package model
import (
"time"
jsoniter "github.com/json-iterator/go"
"go.uber.org/zap"
"gorm.io/gorm"
)
const (
PunishmentTypeDisabled = 1 // 禁用账户:禁止登录、禁止评论、禁止上传、禁止下载、禁止收藏
PunishmentTypeCommentLimited = 2 // 禁止评论
PunishmentTypeUploadLimited = 3 // 禁止上传
PunishmentTypeDownloadLimited = 4 // 禁止下载
PunishmentTypeFavoriteLimited = 5 // 禁止收藏
)
type Punishment struct {
Id int64 `form:"id" json:"id,omitempty" gorm:"primaryKey;autoIncrement;column:id;comment:自增主键;"`
UserId int64 `form:"user_id" json:"user_id,omitempty" gorm:"column:user_id;type:bigint(20);size:20;default:0;index:idx_user_id;comment:用户ID;"`
Type int `form:"type" json:"type,omitempty" gorm:"column:type;type:int(11);size:11;default:0;comment:惩罚类型对应user表的status;"`
Enable bool `form:"enable" json:"enable,omitempty" gorm:"column:enable;type:tinyint(1);size:1;default:0;index:idx_enable;comment:0 关闭1启用;"`
Operators string `form:"operators" json:"operators,omitempty" gorm:"column:operators;type:text;comment:操作信息;"`
Reason string `form:"reason" json:"reason,omitempty" gorm:"column:reason;type:text;comment:惩罚原因;"`
Remark string `form:"remark" json:"remark,omitempty" gorm:"column:remark;type:text;comment:惩罚备注;"`
StartTime *time.Time `form:"start_time" json:"start_time,omitempty" gorm:"column:start_time;type:datetime;comment:惩罚开始时间;"`
EndTime *time.Time `form:"end_time" json:"end_time,omitempty" gorm:"column:end_time;type:datetime;comment:惩罚结束时间,没有结束时间,则表示永久;"`
CreatedAt *time.Time `form:"created_at" json:"created_at,omitempty" gorm:"column:created_at;type:datetime;comment:创建时间;"`
UpdatedAt *time.Time `form:"updated_at" json:"updated_at,omitempty" gorm:"column:updated_at;type:datetime;comment:更新时间;"`
}
type PunishmentOperator struct {
UserId int64 `json:"u"`
Type int32 `json:"t"`
CreatedAt time.Time `json:"c"`
}
func (Punishment) TableName() string {
return tablePrefix + "punishment"
}
func (m *DBModel) MakePunishmentOperators(userId int64, punishmentType int32, operaterStr ...string) string {
var operators []PunishmentOperator
if len(operaterStr) > 0 && operaterStr[0] != "" {
err := jsoniter.Unmarshal([]byte(operaterStr[0]), &operators)
if err != nil {
m.logger.Error("FormatPunishmentOperators", zap.Error(err))
return operaterStr[0]
}
}
operators = append(operators, PunishmentOperator{
UserId: userId,
Type: punishmentType,
CreatedAt: time.Now(),
})
operatersByte, err := jsoniter.Marshal(operators)
if err != nil {
m.logger.Error("FormatPunishmentOperators", zap.Error(err))
if len(operaterStr) > 0 {
return operaterStr[0]
}
return ""
}
return string(operatersByte)
}
// CreatePunishment 创建Punishment
func (m *DBModel) CreatePunishment(punishment *Punishment) (err error) {
err = m.db.Create(punishment).Error
if err != nil {
m.logger.Error("CreatePunishment", zap.Error(err))
return
}
return
}
// UpdatePunishment 更新Punishment如果需要更新指定字段则请指定updateFields参数
func (m *DBModel) UpdatePunishment(punishment *Punishment, updateFields ...string) (err error) {
db := m.db.Model(punishment)
tableName := Punishment{}.TableName()
updateFields = m.FilterValidFields(tableName, updateFields...)
if len(updateFields) > 0 { // 更新指定字段
db = db.Select(updateFields)
} else { // 更新全部字段,包括零值字段
db = db.Select(m.GetTableFields(tableName))
}
err = db.Where("id = ?", punishment.Id).Updates(punishment).Error
if err != nil {
m.logger.Error("UpdatePunishment", zap.Error(err))
}
return
}
// GetPunishment 根据id获取Punishment
func (m *DBModel) GetPunishment(id interface{}, fields ...string) (punishment Punishment, err error) {
db := m.db
fields = m.FilterValidFields(Punishment{}.TableName(), fields...)
if len(fields) > 0 {
db = db.Select(fields)
}
err = db.Where("id = ?", id).First(&punishment).Error
return
}
type OptionGetPunishmentList struct {
Page int
Size int
WithCount bool // 是否返回总数
Ids []int64 // id列表
SelectFields []string // 查询字段
QueryRange map[string][2]interface{} // map[field][]{min,max}
QueryIn map[string][]interface{} // map[field][]{value1,value2,...}
QueryLike map[string][]interface{} // map[field][]{value1,value2,...}
Sort []string
}
// GetPunishmentList 获取Punishment列表
func (m *DBModel) GetPunishmentList(opt *OptionGetPunishmentList) (punishmentList []Punishment, total int64, err error) {
tableName := Punishment{}.TableName()
db := m.db.Model(&Punishment{})
db = m.generateQueryRange(db, tableName, opt.QueryRange)
db = m.generateQueryIn(db, tableName, opt.QueryIn)
db = m.generateQueryLike(db, tableName, opt.QueryLike)
if len(opt.Ids) > 0 {
db = db.Where("id in (?)", opt.Ids)
}
if opt.WithCount {
err = db.Count(&total).Error
if err != nil {
m.logger.Error("GetPunishmentList", zap.Error(err))
return
}
}
opt.SelectFields = m.FilterValidFields(tableName, opt.SelectFields...)
if len(opt.SelectFields) > 0 {
db = db.Select(opt.SelectFields)
}
db = m.generateQuerySort(db, tableName, opt.Sort)
db = db.Offset((opt.Page - 1) * opt.Size).Limit(opt.Size)
err = db.Find(&punishmentList).Error
if err != nil && err != gorm.ErrRecordNotFound {
m.logger.Error("GetPunishmentList", zap.Error(err))
}
return
}
// DeletePunishment 删除数据
func (m *DBModel) DeletePunishment(ids []int64) (err error) {
err = m.db.Where("id in (?)", ids).Delete(&Punishment{}).Error
if err != nil {
m.logger.Error("DeletePunishment", zap.Error(err))
}
return
}

@ -12,11 +12,12 @@ import (
)
const (
UserStatusNormal = iota
UserStatusDisabled // 禁用
UserStatusPending // 审核中
UserStatusRejected // 拒绝
UserStatusIgnored // 忽略
UserStatusNormal = 0
UserStatusDisabled = 1 // 禁用账户:禁止登录、禁止评论、禁止上传、禁止下载、禁止收藏
UserStatusCommentLimited = 2 // 禁止评论
UserStatusUploadLimited = 3 // 禁止上传
UserStatusDownloadLimited = 4 // 禁止下载
UserStatusFavoriteLimited = 5 // 禁止收藏
)
// 用户的公开信息字段
@ -42,13 +43,13 @@ type User struct {
FavoriteCount int `form:"favorite_count" json:"favorite_count,omitempty" gorm:"column:favorite_count;type:int(10);default:0;comment:收藏数;"`
CommentCount int `form:"comment_count" json:"comment_count,omitempty" gorm:"column:comment_count;type:int(11);size:11;default:0;comment:评论数;"`
CreditCount int `form:"credit_count" json:"credit_count,omitempty" gorm:"column:credit_count;type:int(11);size:11;default:0;comment:积分数量;"`
Status int8 `form:"status" json:"status,omitempty" gorm:"column:status;type:tinyint(4);size:4;default:0;index:status;comment:用户状态0正常 1禁用 2审核中 3审核拒绝 4审核忽略;"`
Avatar string `form:"avatar" json:"avatar,omitempty" gorm:"column:avatar;type:varchar(255);size:255;comment:头像;"`
Identity string `form:"identity" json:"identity,omitempty" gorm:"column:identity;type:char(18);size:18;comment:身份证号码;"`
Realname string `form:"realname" json:"realname,omitempty" gorm:"column:realname;type:varchar(20);size:20;comment:身份证姓名;"`
LoginAt *time.Time `form:"login_at" json:"login_at,omitempty" gorm:"column:login_at;type:datetime;comment:最后登录时间;"`
CreatedAt *time.Time `form:"created_at" json:"created_at,omitempty" gorm:"column:created_at;type:datetime;comment:创建时间;"`
UpdatedAt *time.Time `form:"updated_at" json:"updated_at,omitempty" gorm:"column:updated_at;type:datetime;comment:更新时间;"`
// Status int8 `form:"status" json:"status,omitempty" gorm:"column:status;type:tinyint(4);size:4;default:0;index:status;comment:用户状态0表示正常其他状态表示被惩罚;"`
}
func (User) TableName() string {

@ -0,0 +1,42 @@
import service from '~/utils/request'
export const createPunishment = (data) => {
return service({
url: '/api/v1/punishment',
method: 'post',
data,
})
}
export const updatePunishment = (data) => {
return service({
url: '/api/v1/punishment',
method: 'put',
data,
})
}
export const getPunishment = (params) => {
return service({
url: '/api/v1/punishment',
method: 'get',
params,
})
}
export const listPunishment = (params) => {
return service({
url: '/api/v1/punishment/list',
method: 'get',
params,
})
}
// 取消惩罚
export const cancelPunishment = (data) => {
return service({
url: '/api/v1/punishment/cancel',
method: 'put',
data,
})
}

@ -302,15 +302,14 @@ export default {
}
}),
},
// 暂时屏蔽
// {
// type: 'select',
// label: '状态',
// name: 'status',
// placeholder: '请选择用户状态',
// multiple: true,
// options: this.userStatusOptions,
// },
{
type: 'select',
label: '',
name: 'status',
placeholder: '',
multiple: true,
options: this.userStatusOptions,
},
]
},
initTableListFields() {

Loading…
Cancel
Save