添加表格布局存储
This commit is contained in:
parent
1ba0cce450
commit
78d1935065
@ -57,3 +57,10 @@ func (b *BundleProvider) BundleActivate(_ context.Context, req *bundle.BundleAct
|
|||||||
func (b *BundleProvider) BundleBalanceExport(_ context.Context, req *bundle.BundleBalanceExportReq) (*bundle.BundleBalanceExportResp, error) {
|
func (b *BundleProvider) BundleBalanceExport(_ context.Context, req *bundle.BundleBalanceExportReq) (*bundle.BundleBalanceExportResp, error) {
|
||||||
return logic.BundleBalanceExport(req)
|
return logic.BundleBalanceExport(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *BundleProvider) GetBundleBalanceLayout(_ context.Context, req *bundle.GetBundleBalanceLayoutReq) (*bundle.GetBundleBalanceLayoutResp, error) {
|
||||||
|
return logic.GetBundleBalanceLayout(req)
|
||||||
|
}
|
||||||
|
func (b *BundleProvider) SetBundleBalanceLayout(_ context.Context, req *bundle.SetBundleBalanceLayoutReq) (*bundle.SetBundleBalanceLayoutResp, error) {
|
||||||
|
return logic.SetBundleBalanceLayout(req)
|
||||||
|
}
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
"gorm.io/gorm/clause"
|
||||||
)
|
)
|
||||||
|
|
||||||
func AddBundleExtendRecord(data model.BundleExtensionRecords) error {
|
func AddBundleExtendRecord(data model.BundleExtensionRecords) error {
|
||||||
@ -619,3 +620,18 @@ left join (
|
|||||||
`).Scan(&data).Error
|
`).Scan(&data).Error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetBundleBalanceLayout(req *bundle.GetBundleBalanceLayoutReq) (string, error) {
|
||||||
|
data := &model.BundleBalanceLayout{}
|
||||||
|
if err := app.ModuleClients.BundleDB.Model(&model.BundleBalanceLayout{}).Where("user_id = ?", req.UserId).First(data).Error; err != nil {
|
||||||
|
return "nil", err
|
||||||
|
}
|
||||||
|
return data.Data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetBundleBalanceLayout(req *bundle.SetBundleBalanceLayoutReq) error {
|
||||||
|
return app.ModuleClients.BundleDB.Clauses(clause.OnConflict{
|
||||||
|
Columns: []clause.Column{{Name: "user_id"}},
|
||||||
|
DoUpdates: clause.AssignmentColumns([]string{"data"}),
|
||||||
|
}).Create(&model.BundleBalanceLayout{Data: req.Data, UserId: uint64(req.UserId)}).Error
|
||||||
|
}
|
||||||
|
@ -433,3 +433,14 @@ func BundleBalanceExport(req *bundle.BundleBalanceExportReq) (*bundle.BundleBala
|
|||||||
}
|
}
|
||||||
return &bundle.BundleBalanceExportResp{Total: int64(len(items)), Data: items}, nil
|
return &bundle.BundleBalanceExportResp{Total: int64(len(items)), Data: items}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetBundleBalanceLayout(req *bundle.GetBundleBalanceLayoutReq) (*bundle.GetBundleBalanceLayoutResp, error) {
|
||||||
|
data, err := dao.GetBundleBalanceLayout(req)
|
||||||
|
return &bundle.GetBundleBalanceLayoutResp{
|
||||||
|
Data: data,
|
||||||
|
}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetBundleBalanceLayout(req *bundle.SetBundleBalanceLayoutReq) (*bundle.SetBundleBalanceLayoutResp, error) {
|
||||||
|
return nil, dao.SetBundleBalanceLayout(req)
|
||||||
|
}
|
||||||
|
@ -342,3 +342,9 @@ type BundleExport struct {
|
|||||||
BundleExportDto
|
BundleExportDto
|
||||||
balance *BundleBalance
|
balance *BundleBalance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type BundleBalanceLayout struct {
|
||||||
|
gorm.Model
|
||||||
|
UserId uint64 `gorm:"column:user_id;not null;unique"`
|
||||||
|
Data string `gorm:"column:data;not null"`
|
||||||
|
}
|
||||||
|
@ -62,6 +62,8 @@ service Bundle {
|
|||||||
rpc AddBundleBalance(AddBundleBalanceReq) returns (AddBundleBalanceResp) {} // 修改余量信息
|
rpc AddBundleBalance(AddBundleBalanceReq) returns (AddBundleBalanceResp) {} // 修改余量信息
|
||||||
rpc BundleActivate(BundleActivateReq) returns (BundleActivateResp) {} // 用户套餐激活
|
rpc BundleActivate(BundleActivateReq) returns (BundleActivateResp) {} // 用户套餐激活
|
||||||
rpc BundleBalanceExport(BundleBalanceExportReq) returns (BundleBalanceExportResp) {} // 套餐余量导出
|
rpc BundleBalanceExport(BundleBalanceExportReq) returns (BundleBalanceExportResp) {} // 套餐余量导出
|
||||||
|
rpc GetBundleBalanceLayout(GetBundleBalanceLayoutReq) returns (GetBundleBalanceLayoutResp) {} // 余量布局
|
||||||
|
rpc SetBundleBalanceLayout(SetBundleBalanceLayoutReq) returns (SetBundleBalanceLayoutResp) {} // 余量布局
|
||||||
|
|
||||||
// 使用记录
|
// 使用记录
|
||||||
rpc GetUsedRecordList(GetUsedRecordListReq) returns (GetUsedRecordListResp) {} // 获取套餐使用记录列表
|
rpc GetUsedRecordList(GetUsedRecordListReq) returns (GetUsedRecordListResp) {} // 获取套餐使用记录列表
|
||||||
@ -1225,4 +1227,21 @@ message ArtistBundleBalanceResponse {
|
|||||||
int32 remainingVideoCount = 1 [json_name = "remainingVideoCount"]; // 剩余数据分析数量
|
int32 remainingVideoCount = 1 [json_name = "remainingVideoCount"]; // 剩余数据分析数量
|
||||||
int32 remainingImageCount = 2 [json_name = "remainingImageCount"]; // 剩余图片数量
|
int32 remainingImageCount = 2 [json_name = "remainingImageCount"]; // 剩余图片数量
|
||||||
int32 remainingDataAnalysisCount = 3 [json_name = "remainingDataAnalysisCount"]; // 剩余数据分析数量
|
int32 remainingDataAnalysisCount = 3 [json_name = "remainingDataAnalysisCount"]; // 剩余数据分析数量
|
||||||
|
}
|
||||||
|
|
||||||
|
message SetBundleBalanceLayoutReq{
|
||||||
|
uint32 userId = 1;
|
||||||
|
string data = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SetBundleBalanceLayoutResp{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetBundleBalanceLayoutReq{
|
||||||
|
uint32 userId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetBundleBalanceLayoutResp{
|
||||||
|
string data = 1;
|
||||||
}
|
}
|
File diff suppressed because it is too large
Load Diff
@ -577,3 +577,15 @@ func (this *ArtistBundleBalanceRequest) Validate() error {
|
|||||||
func (this *ArtistBundleBalanceResponse) Validate() error {
|
func (this *ArtistBundleBalanceResponse) Validate() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
func (this *SetBundleBalanceLayoutReq) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (this *SetBundleBalanceLayoutResp) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (this *GetBundleBalanceLayoutReq) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (this *GetBundleBalanceLayoutResp) Validate() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -71,6 +71,8 @@ type BundleClient interface {
|
|||||||
AddBundleBalance(ctx context.Context, in *AddBundleBalanceReq, opts ...grpc_go.CallOption) (*AddBundleBalanceResp, common.ErrorWithAttachment)
|
AddBundleBalance(ctx context.Context, in *AddBundleBalanceReq, opts ...grpc_go.CallOption) (*AddBundleBalanceResp, common.ErrorWithAttachment)
|
||||||
BundleActivate(ctx context.Context, in *BundleActivateReq, opts ...grpc_go.CallOption) (*BundleActivateResp, common.ErrorWithAttachment)
|
BundleActivate(ctx context.Context, in *BundleActivateReq, opts ...grpc_go.CallOption) (*BundleActivateResp, common.ErrorWithAttachment)
|
||||||
BundleBalanceExport(ctx context.Context, in *BundleBalanceExportReq, opts ...grpc_go.CallOption) (*BundleBalanceExportResp, common.ErrorWithAttachment)
|
BundleBalanceExport(ctx context.Context, in *BundleBalanceExportReq, opts ...grpc_go.CallOption) (*BundleBalanceExportResp, common.ErrorWithAttachment)
|
||||||
|
GetBundleBalanceLayout(ctx context.Context, in *GetBundleBalanceLayoutReq, opts ...grpc_go.CallOption) (*GetBundleBalanceLayoutResp, common.ErrorWithAttachment)
|
||||||
|
SetBundleBalanceLayout(ctx context.Context, in *SetBundleBalanceLayoutReq, opts ...grpc_go.CallOption) (*SetBundleBalanceLayoutResp, common.ErrorWithAttachment)
|
||||||
// 使用记录
|
// 使用记录
|
||||||
GetUsedRecordList(ctx context.Context, in *GetUsedRecordListReq, opts ...grpc_go.CallOption) (*GetUsedRecordListResp, common.ErrorWithAttachment)
|
GetUsedRecordList(ctx context.Context, in *GetUsedRecordListReq, opts ...grpc_go.CallOption) (*GetUsedRecordListResp, common.ErrorWithAttachment)
|
||||||
GetImageWorkDetail(ctx context.Context, in *GetImageWorkDetailReq, opts ...grpc_go.CallOption) (*GetImageWorkDetailResp, common.ErrorWithAttachment)
|
GetImageWorkDetail(ctx context.Context, in *GetImageWorkDetailReq, opts ...grpc_go.CallOption) (*GetImageWorkDetailResp, common.ErrorWithAttachment)
|
||||||
@ -142,6 +144,8 @@ type BundleClientImpl struct {
|
|||||||
AddBundleBalance func(ctx context.Context, in *AddBundleBalanceReq) (*AddBundleBalanceResp, error)
|
AddBundleBalance func(ctx context.Context, in *AddBundleBalanceReq) (*AddBundleBalanceResp, error)
|
||||||
BundleActivate func(ctx context.Context, in *BundleActivateReq) (*BundleActivateResp, error)
|
BundleActivate func(ctx context.Context, in *BundleActivateReq) (*BundleActivateResp, error)
|
||||||
BundleBalanceExport func(ctx context.Context, in *BundleBalanceExportReq) (*BundleBalanceExportResp, error)
|
BundleBalanceExport func(ctx context.Context, in *BundleBalanceExportReq) (*BundleBalanceExportResp, error)
|
||||||
|
GetBundleBalanceLayout func(ctx context.Context, in *GetBundleBalanceLayoutReq) (*GetBundleBalanceLayoutResp, error)
|
||||||
|
SetBundleBalanceLayout func(ctx context.Context, in *SetBundleBalanceLayoutReq) (*SetBundleBalanceLayoutResp, error)
|
||||||
GetUsedRecordList func(ctx context.Context, in *GetUsedRecordListReq) (*GetUsedRecordListResp, error)
|
GetUsedRecordList func(ctx context.Context, in *GetUsedRecordListReq) (*GetUsedRecordListResp, error)
|
||||||
GetImageWorkDetail func(ctx context.Context, in *GetImageWorkDetailReq) (*GetImageWorkDetailResp, error)
|
GetImageWorkDetail func(ctx context.Context, in *GetImageWorkDetailReq) (*GetImageWorkDetailResp, error)
|
||||||
GetVedioWorkDetail func(ctx context.Context, in *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error)
|
GetVedioWorkDetail func(ctx context.Context, in *GetVedioWorkDetailReq) (*GetVedioeWorkDetailResp, error)
|
||||||
@ -416,6 +420,18 @@ func (c *bundleClient) BundleBalanceExport(ctx context.Context, in *BundleBalanc
|
|||||||
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleBalanceExport", in, out)
|
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/BundleBalanceExport", in, out)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *bundleClient) GetBundleBalanceLayout(ctx context.Context, in *GetBundleBalanceLayoutReq, opts ...grpc_go.CallOption) (*GetBundleBalanceLayoutResp, common.ErrorWithAttachment) {
|
||||||
|
out := new(GetBundleBalanceLayoutResp)
|
||||||
|
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||||
|
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/GetBundleBalanceLayout", in, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *bundleClient) SetBundleBalanceLayout(ctx context.Context, in *SetBundleBalanceLayoutReq, opts ...grpc_go.CallOption) (*SetBundleBalanceLayoutResp, common.ErrorWithAttachment) {
|
||||||
|
out := new(SetBundleBalanceLayoutResp)
|
||||||
|
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||||
|
return out, c.cc.Invoke(ctx, "/"+interfaceKey+"/SetBundleBalanceLayout", in, out)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *bundleClient) GetUsedRecordList(ctx context.Context, in *GetUsedRecordListReq, opts ...grpc_go.CallOption) (*GetUsedRecordListResp, common.ErrorWithAttachment) {
|
func (c *bundleClient) GetUsedRecordList(ctx context.Context, in *GetUsedRecordListReq, opts ...grpc_go.CallOption) (*GetUsedRecordListResp, common.ErrorWithAttachment) {
|
||||||
out := new(GetUsedRecordListResp)
|
out := new(GetUsedRecordListResp)
|
||||||
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
interfaceKey := ctx.Value(constant.InterfaceKey).(string)
|
||||||
@ -583,6 +599,8 @@ type BundleServer interface {
|
|||||||
AddBundleBalance(context.Context, *AddBundleBalanceReq) (*AddBundleBalanceResp, error)
|
AddBundleBalance(context.Context, *AddBundleBalanceReq) (*AddBundleBalanceResp, error)
|
||||||
BundleActivate(context.Context, *BundleActivateReq) (*BundleActivateResp, error)
|
BundleActivate(context.Context, *BundleActivateReq) (*BundleActivateResp, error)
|
||||||
BundleBalanceExport(context.Context, *BundleBalanceExportReq) (*BundleBalanceExportResp, error)
|
BundleBalanceExport(context.Context, *BundleBalanceExportReq) (*BundleBalanceExportResp, error)
|
||||||
|
GetBundleBalanceLayout(context.Context, *GetBundleBalanceLayoutReq) (*GetBundleBalanceLayoutResp, error)
|
||||||
|
SetBundleBalanceLayout(context.Context, *SetBundleBalanceLayoutReq) (*SetBundleBalanceLayoutResp, error)
|
||||||
// 使用记录
|
// 使用记录
|
||||||
GetUsedRecordList(context.Context, *GetUsedRecordListReq) (*GetUsedRecordListResp, error)
|
GetUsedRecordList(context.Context, *GetUsedRecordListReq) (*GetUsedRecordListResp, error)
|
||||||
GetImageWorkDetail(context.Context, *GetImageWorkDetailReq) (*GetImageWorkDetailResp, error)
|
GetImageWorkDetail(context.Context, *GetImageWorkDetailReq) (*GetImageWorkDetailResp, error)
|
||||||
@ -735,6 +753,12 @@ func (UnimplementedBundleServer) BundleActivate(context.Context, *BundleActivate
|
|||||||
func (UnimplementedBundleServer) BundleBalanceExport(context.Context, *BundleBalanceExportReq) (*BundleBalanceExportResp, error) {
|
func (UnimplementedBundleServer) BundleBalanceExport(context.Context, *BundleBalanceExportReq) (*BundleBalanceExportResp, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method BundleBalanceExport not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method BundleBalanceExport not implemented")
|
||||||
}
|
}
|
||||||
|
func (UnimplementedBundleServer) GetBundleBalanceLayout(context.Context, *GetBundleBalanceLayoutReq) (*GetBundleBalanceLayoutResp, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method GetBundleBalanceLayout not implemented")
|
||||||
|
}
|
||||||
|
func (UnimplementedBundleServer) SetBundleBalanceLayout(context.Context, *SetBundleBalanceLayoutReq) (*SetBundleBalanceLayoutResp, error) {
|
||||||
|
return nil, status.Errorf(codes.Unimplemented, "method SetBundleBalanceLayout not implemented")
|
||||||
|
}
|
||||||
func (UnimplementedBundleServer) GetUsedRecordList(context.Context, *GetUsedRecordListReq) (*GetUsedRecordListResp, error) {
|
func (UnimplementedBundleServer) GetUsedRecordList(context.Context, *GetUsedRecordListReq) (*GetUsedRecordListResp, error) {
|
||||||
return nil, status.Errorf(codes.Unimplemented, "method GetUsedRecordList not implemented")
|
return nil, status.Errorf(codes.Unimplemented, "method GetUsedRecordList not implemented")
|
||||||
}
|
}
|
||||||
@ -1983,6 +2007,64 @@ func _Bundle_BundleBalanceExport_Handler(srv interface{}, ctx context.Context, d
|
|||||||
return interceptor(ctx, in, info, handler)
|
return interceptor(ctx, in, info, handler)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func _Bundle_GetBundleBalanceLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(GetBundleBalanceLayoutReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||||
|
args := []interface{}{}
|
||||||
|
args = append(args, in)
|
||||||
|
md, _ := metadata.FromIncomingContext(ctx)
|
||||||
|
invAttachment := make(map[string]interface{}, len(md))
|
||||||
|
for k, v := range md {
|
||||||
|
invAttachment[k] = v
|
||||||
|
}
|
||||||
|
invo := invocation.NewRPCInvocation("GetBundleBalanceLayout", args, invAttachment)
|
||||||
|
if interceptor == nil {
|
||||||
|
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||||
|
return result, result.Error()
|
||||||
|
}
|
||||||
|
info := &grpc_go.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||||
|
return result, result.Error()
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
|
func _Bundle_SetBundleBalanceLayout_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||||
|
in := new(SetBundleBalanceLayoutReq)
|
||||||
|
if err := dec(in); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
base := srv.(dubbo3.Dubbo3GrpcService)
|
||||||
|
args := []interface{}{}
|
||||||
|
args = append(args, in)
|
||||||
|
md, _ := metadata.FromIncomingContext(ctx)
|
||||||
|
invAttachment := make(map[string]interface{}, len(md))
|
||||||
|
for k, v := range md {
|
||||||
|
invAttachment[k] = v
|
||||||
|
}
|
||||||
|
invo := invocation.NewRPCInvocation("SetBundleBalanceLayout", args, invAttachment)
|
||||||
|
if interceptor == nil {
|
||||||
|
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||||
|
return result, result.Error()
|
||||||
|
}
|
||||||
|
info := &grpc_go.UnaryServerInfo{
|
||||||
|
Server: srv,
|
||||||
|
FullMethod: ctx.Value("XXX_TRIPLE_GO_INTERFACE_NAME").(string),
|
||||||
|
}
|
||||||
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
|
result := base.XXX_GetProxyImpl().Invoke(ctx, invo)
|
||||||
|
return result, result.Error()
|
||||||
|
}
|
||||||
|
return interceptor(ctx, in, info, handler)
|
||||||
|
}
|
||||||
|
|
||||||
func _Bundle_GetUsedRecordList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
func _Bundle_GetUsedRecordList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc_go.UnaryServerInterceptor) (interface{}, error) {
|
||||||
in := new(GetUsedRecordListReq)
|
in := new(GetUsedRecordListReq)
|
||||||
if err := dec(in); err != nil {
|
if err := dec(in); err != nil {
|
||||||
@ -2730,6 +2812,14 @@ var Bundle_ServiceDesc = grpc_go.ServiceDesc{
|
|||||||
MethodName: "BundleBalanceExport",
|
MethodName: "BundleBalanceExport",
|
||||||
Handler: _Bundle_BundleBalanceExport_Handler,
|
Handler: _Bundle_BundleBalanceExport_Handler,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
MethodName: "GetBundleBalanceLayout",
|
||||||
|
Handler: _Bundle_GetBundleBalanceLayout_Handler,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
MethodName: "SetBundleBalanceLayout",
|
||||||
|
Handler: _Bundle_SetBundleBalanceLayout_Handler,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
MethodName: "GetUsedRecordList",
|
MethodName: "GetUsedRecordList",
|
||||||
Handler: _Bundle_GetUsedRecordList_Handler,
|
Handler: _Bundle_GetUsedRecordList_Handler,
|
||||||
|
@ -61,6 +61,7 @@ func loadMysqlConn(conn string) *gorm.DB {
|
|||||||
&model.BundleBalance{},
|
&model.BundleBalance{},
|
||||||
&model.Reconciliation{},
|
&model.Reconciliation{},
|
||||||
&model.BundleActivate{},
|
&model.BundleActivate{},
|
||||||
|
&model.BundleBalanceLayout{},
|
||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user