diff --git a/rpc/equipment/equipment.proto b/rpc/equipment/equipment.proto index 4c4cb93..498c81b 100644 --- a/rpc/equipment/equipment.proto +++ b/rpc/equipment/equipment.proto @@ -144,6 +144,16 @@ message BindExpiryRequest { string reason = 3; } +message SetExpiryRequest { + int64 id =1; + string expiry =2; + string reason = 3; +} + +message UserBindRequest { + int64 id =1; +} + message ApiVersionRequest { int32 type = 1; string version = 2; @@ -201,6 +211,21 @@ service Equipment { }; }; + rpc SetExpiry(SetExpiryRequest) returns(Response){ + option (google.api.http) = { + post: "/admin/v3/set/expiry" + body: "*" + }; + }; + + rpc UserBind(UserBindRequest) returns(Response){ + option (google.api.http) = { + get: "/admin/v3/user/bind" + body: "*" + }; + }; + + /*******************API*************************/ rpc ApiMaskAdd(ApiMaskAddRequest) returns(Response){ option (google.api.http) = { diff --git a/rpc/percutaneous/pb/percutaneous.pb.go b/rpc/percutaneous/pb/percutaneous.pb.go index de9da7b..6b4517e 100644 --- a/rpc/percutaneous/pb/percutaneous.pb.go +++ b/rpc/percutaneous/pb/percutaneous.pb.go @@ -190,6 +190,7 @@ type UsedLogRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Page int32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` Size int32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` + Stamp string `protobuf:"bytes,3,opt,name=stamp,proto3" json:"stamp,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -238,6 +239,13 @@ func (x *UsedLogRequest) GetSize() int32 { return 0 } +func (x *UsedLogRequest) GetStamp() string { + if x != nil { + return x.Stamp + } + return "" +} + type Response struct { state protoimpl.MessageState `protogen:"open.v1"` Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` @@ -298,6 +306,154 @@ func (x *Response) GetData() string { return "" } +type AddUserRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + HostCode string `protobuf:"bytes,1,opt,name=host_code,json=hostCode,proto3" json:"host_code,omitempty"` + UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AddUserRequest) Reset() { + *x = AddUserRequest{} + mi := &file_percutaneous_percutaneous_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AddUserRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddUserRequest) ProtoMessage() {} + +func (x *AddUserRequest) ProtoReflect() protoreflect.Message { + mi := &file_percutaneous_percutaneous_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddUserRequest.ProtoReflect.Descriptor instead. +func (*AddUserRequest) Descriptor() ([]byte, []int) { + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{5} +} + +func (x *AddUserRequest) GetHostCode() string { + if x != nil { + return x.HostCode + } + return "" +} + +func (x *AddUserRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +type UserItemsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + HostCode string `protobuf:"bytes,1,opt,name=host_code,json=hostCode,proto3" json:"host_code,omitempty"` + Page int32 `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"` + Size int32 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UserItemsRequest) Reset() { + *x = UserItemsRequest{} + mi := &file_percutaneous_percutaneous_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UserItemsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserItemsRequest) ProtoMessage() {} + +func (x *UserItemsRequest) ProtoReflect() protoreflect.Message { + mi := &file_percutaneous_percutaneous_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserItemsRequest.ProtoReflect.Descriptor instead. +func (*UserItemsRequest) Descriptor() ([]byte, []int) { + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{6} +} + +func (x *UserItemsRequest) GetHostCode() string { + if x != nil { + return x.HostCode + } + return "" +} + +func (x *UserItemsRequest) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *UserItemsRequest) GetSize() int32 { + if x != nil { + return x.Size + } + return 0 +} + +type EmptyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *EmptyRequest) Reset() { + *x = EmptyRequest{} + mi := &file_percutaneous_percutaneous_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *EmptyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmptyRequest) ProtoMessage() {} + +func (x *EmptyRequest) ProtoReflect() protoreflect.Message { + mi := &file_percutaneous_percutaneous_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EmptyRequest.ProtoReflect.Descriptor instead. +func (*EmptyRequest) Descriptor() ([]byte, []int) { + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{7} +} + var File_percutaneous_percutaneous_proto protoreflect.FileDescriptor const file_percutaneous_percutaneous_proto_rawDesc = "" + @@ -313,19 +469,31 @@ const file_percutaneous_percutaneous_proto_rawDesc = "" + "\auser_id\x18\x02 \x01(\x03R\x06userId\x12\x12\n" + "\x04data\x18\x03 \x01(\tR\x04data\x12\x14\n" + "\x05stamp\x18\x04 \x01(\tR\x05stamp\x12\x1a\n" + - "\bposition\x18\x05 \x01(\x05R\bposition\"8\n" + + "\bposition\x18\x05 \x01(\x05R\bposition\"N\n" + "\x0eUsedLogRequest\x12\x12\n" + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x12\n" + - "\x04size\x18\x02 \x01(\x05R\x04size\"D\n" + + "\x04size\x18\x02 \x01(\x05R\x04size\x12\x14\n" + + "\x05stamp\x18\x03 \x01(\tR\x05stamp\"D\n" + "\bResponse\x12\x12\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x10\n" + "\x03msg\x18\x02 \x01(\tR\x03msg\x12\x12\n" + - "\x04data\x18\x03 \x01(\tR\x04data2\xb3\x03\n" + + "\x04data\x18\x03 \x01(\tR\x04data\"F\n" + + "\x0eAddUserRequest\x12\x1b\n" + + "\thost_code\x18\x01 \x01(\tR\bhostCode\x12\x17\n" + + "\auser_id\x18\x02 \x01(\x03R\x06userId\"W\n" + + "\x10UserItemsRequest\x12\x1b\n" + + "\thost_code\x18\x01 \x01(\tR\bhostCode\x12\x12\n" + + "\x04page\x18\x02 \x01(\x05R\x04page\x12\x12\n" + + "\x04size\x18\x03 \x01(\x05R\x04size\"\x0e\n" + + "\fEmptyRequest2\xf7\x05\n" + "\fPercutaneous\x12o\n" + "\tWifiCheck\x12\x1e.percutaneous.WifiCheckRequest\x1a\x16.percutaneous.Response\"*\x82\xd3\xe4\x93\x02$:\x01*\x12\x1f/api/v3/percutaneous/wifi/check\x12i\n" + "\aWifiSet\x12\x1c.percutaneous.WifiSetRequest\x1a\x16.percutaneous.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\"\x1d/api/v3/percutaneous/wifi/set\x12\\\n" + "\x03Use\x12\x18.percutaneous.UseRequest\x1a\x16.percutaneous.Response\"#\x82\xd3\xe4\x93\x02\x1d:\x01*\"\x18/api/v3/percutaneous/use\x12i\n" + - "\aUsedLog\x12\x1c.percutaneous.UsedLogRequest\x1a\x16.percutaneous.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\x12\x1d/api/v3/percutaneous/used/logB\x10Z\x0e./percutaneousb\x06proto3" + "\aUsedLog\x12\x1c.percutaneous.UsedLogRequest\x1a\x16.percutaneous.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\x12\x1d/api/v3/percutaneous/used/log\x12i\n" + + "\aAddUser\x12\x1c.percutaneous.AddUserRequest\x1a\x16.percutaneous.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\x12\x1d/api/v3/percutaneous/add/user\x12o\n" + + "\tUserItems\x12\x1e.percutaneous.UserItemsRequest\x1a\x16.percutaneous.Response\"*\x82\xd3\xe4\x93\x02$:\x01*\x12\x1f/api/v3/percutaneous/user/items\x12f\n" + + "\aWeather\x12\x1a.percutaneous.EmptyRequest\x1a\x16.percutaneous.Response\"'\x82\xd3\xe4\x93\x02!:\x01*\x12\x1c/api/v3/percutaneous/weatherB\x10Z\x0e./percutaneousb\x06proto3" var ( file_percutaneous_percutaneous_proto_rawDescOnce sync.Once @@ -339,25 +507,34 @@ func file_percutaneous_percutaneous_proto_rawDescGZIP() []byte { return file_percutaneous_percutaneous_proto_rawDescData } -var file_percutaneous_percutaneous_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_percutaneous_percutaneous_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_percutaneous_percutaneous_proto_goTypes = []any{ (*WifiCheckRequest)(nil), // 0: percutaneous.WifiCheckRequest (*WifiSetRequest)(nil), // 1: percutaneous.WifiSetRequest (*UseRequest)(nil), // 2: percutaneous.UseRequest (*UsedLogRequest)(nil), // 3: percutaneous.UsedLogRequest (*Response)(nil), // 4: percutaneous.Response + (*AddUserRequest)(nil), // 5: percutaneous.AddUserRequest + (*UserItemsRequest)(nil), // 6: percutaneous.UserItemsRequest + (*EmptyRequest)(nil), // 7: percutaneous.EmptyRequest } var file_percutaneous_percutaneous_proto_depIdxs = []int32{ 0, // 0: percutaneous.Percutaneous.WifiCheck:input_type -> percutaneous.WifiCheckRequest 1, // 1: percutaneous.Percutaneous.WifiSet:input_type -> percutaneous.WifiSetRequest 2, // 2: percutaneous.Percutaneous.Use:input_type -> percutaneous.UseRequest 3, // 3: percutaneous.Percutaneous.UsedLog:input_type -> percutaneous.UsedLogRequest - 4, // 4: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response - 4, // 5: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response - 4, // 6: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response - 4, // 7: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response - 4, // [4:8] is the sub-list for method output_type - 0, // [0:4] is the sub-list for method input_type + 5, // 4: percutaneous.Percutaneous.AddUser:input_type -> percutaneous.AddUserRequest + 6, // 5: percutaneous.Percutaneous.UserItems:input_type -> percutaneous.UserItemsRequest + 7, // 6: percutaneous.Percutaneous.Weather:input_type -> percutaneous.EmptyRequest + 4, // 7: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response + 4, // 8: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response + 4, // 9: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response + 4, // 10: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response + 4, // 11: percutaneous.Percutaneous.AddUser:output_type -> percutaneous.Response + 4, // 12: percutaneous.Percutaneous.UserItems:output_type -> percutaneous.Response + 4, // 13: percutaneous.Percutaneous.Weather:output_type -> percutaneous.Response + 7, // [7:14] is the sub-list for method output_type + 0, // [0:7] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -374,7 +551,7 @@ func file_percutaneous_percutaneous_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_percutaneous_percutaneous_proto_rawDesc), len(file_percutaneous_percutaneous_proto_rawDesc)), NumEnums: 0, - NumMessages: 5, + NumMessages: 8, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/percutaneous/pb/percutaneous_grpc.pb.go b/rpc/percutaneous/pb/percutaneous_grpc.pb.go index 3204c5a..b420a66 100644 --- a/rpc/percutaneous/pb/percutaneous_grpc.pb.go +++ b/rpc/percutaneous/pb/percutaneous_grpc.pb.go @@ -23,6 +23,9 @@ const ( Percutaneous_WifiSet_FullMethodName = "/percutaneous.Percutaneous/WifiSet" Percutaneous_Use_FullMethodName = "/percutaneous.Percutaneous/Use" Percutaneous_UsedLog_FullMethodName = "/percutaneous.Percutaneous/UsedLog" + Percutaneous_AddUser_FullMethodName = "/percutaneous.Percutaneous/AddUser" + Percutaneous_UserItems_FullMethodName = "/percutaneous.Percutaneous/UserItems" + Percutaneous_Weather_FullMethodName = "/percutaneous.Percutaneous/Weather" ) // PercutaneousClient is the client API for Percutaneous service. @@ -33,6 +36,9 @@ type PercutaneousClient interface { WifiSet(ctx context.Context, in *WifiSetRequest, opts ...grpc.CallOption) (*Response, error) Use(ctx context.Context, in *UseRequest, opts ...grpc.CallOption) (*Response, error) UsedLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) + AddUser(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UserItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) + Weather(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) } type percutaneousClient struct { @@ -83,6 +89,36 @@ func (c *percutaneousClient) UsedLog(ctx context.Context, in *UsedLogRequest, op return out, nil } +func (c *percutaneousClient) AddUser(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Percutaneous_AddUser_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *percutaneousClient) UserItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Percutaneous_UserItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *percutaneousClient) Weather(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Percutaneous_Weather_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // PercutaneousServer is the server API for Percutaneous service. // All implementations must embed UnimplementedPercutaneousServer // for forward compatibility. @@ -91,6 +127,9 @@ type PercutaneousServer interface { WifiSet(context.Context, *WifiSetRequest) (*Response, error) Use(context.Context, *UseRequest) (*Response, error) UsedLog(context.Context, *UsedLogRequest) (*Response, error) + AddUser(context.Context, *AddUserRequest) (*Response, error) + UserItems(context.Context, *UserItemsRequest) (*Response, error) + Weather(context.Context, *EmptyRequest) (*Response, error) mustEmbedUnimplementedPercutaneousServer() } @@ -113,6 +152,15 @@ func (UnimplementedPercutaneousServer) Use(context.Context, *UseRequest) (*Respo func (UnimplementedPercutaneousServer) UsedLog(context.Context, *UsedLogRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method UsedLog not implemented") } +func (UnimplementedPercutaneousServer) AddUser(context.Context, *AddUserRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AddUser not implemented") +} +func (UnimplementedPercutaneousServer) UserItems(context.Context, *UserItemsRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method UserItems not implemented") +} +func (UnimplementedPercutaneousServer) Weather(context.Context, *EmptyRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method Weather not implemented") +} func (UnimplementedPercutaneousServer) mustEmbedUnimplementedPercutaneousServer() {} func (UnimplementedPercutaneousServer) testEmbeddedByValue() {} @@ -206,6 +254,60 @@ func _Percutaneous_UsedLog_Handler(srv interface{}, ctx context.Context, dec fun return interceptor(ctx, in, info, handler) } +func _Percutaneous_AddUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).AddUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_AddUser_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).AddUser(ctx, req.(*AddUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Percutaneous_UserItems_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserItemsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).UserItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_UserItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).UserItems(ctx, req.(*UserItemsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Percutaneous_Weather_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EmptyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).Weather(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_Weather_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).Weather(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Percutaneous_ServiceDesc is the grpc.ServiceDesc for Percutaneous service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -229,6 +331,18 @@ var Percutaneous_ServiceDesc = grpc.ServiceDesc{ MethodName: "UsedLog", Handler: _Percutaneous_UsedLog_Handler, }, + { + MethodName: "AddUser", + Handler: _Percutaneous_AddUser_Handler, + }, + { + MethodName: "UserItems", + Handler: _Percutaneous_UserItems_Handler, + }, + { + MethodName: "Weather", + Handler: _Percutaneous_Weather_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "percutaneous/percutaneous.proto", diff --git a/rpc/percutaneous/percutaneous.pb b/rpc/percutaneous/percutaneous.pb index fea715a..d074a09 100644 Binary files a/rpc/percutaneous/percutaneous.pb and b/rpc/percutaneous/percutaneous.pb differ diff --git a/rpc/percutaneous/percutaneous.proto b/rpc/percutaneous/percutaneous.proto index e631ec0..7c474f5 100644 --- a/rpc/percutaneous/percutaneous.proto +++ b/rpc/percutaneous/percutaneous.proto @@ -24,6 +24,7 @@ message UseRequest { message UsedLogRequest { int32 page = 1; int32 size = 2; + string stamp = 3; } message Response { @@ -32,10 +33,25 @@ message Response { string data = 3; } -message WsStreamFrame { - bytes data = 1; +message AddUserRequest { + string host_code = 1; + int64 user_id = 2; } +message UserItemsRequest { + string host_code = 1; + int32 page = 2; + int32 size = 3; +} + +message EmptyRequest { + +} + +//message WsStreamFrame { +// bytes data = 1; +//} + service Percutaneous { rpc WifiCheck(WifiCheckRequest) returns (Response) { option (google.api.http) = { @@ -61,5 +77,26 @@ service Percutaneous { body: "*" }; } - rpc WsTunnelStream(stream WsStreamFrame) returns (stream Response); + + rpc AddUser(AddUserRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/add/user" + body: "*" + }; + } + + rpc UserItems(UserItemsRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/user/items" + body: "*" + }; + } + + rpc Weather(EmptyRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/weather" + body: "*" + }; + } +// rpc WsTunnelStream(stream WsStreamFrame) returns (stream Response); } diff --git a/services/percutaneous/internal/dao/group.go b/services/percutaneous/internal/dao/group.go new file mode 100644 index 0000000..bf37edf --- /dev/null +++ b/services/percutaneous/internal/dao/group.go @@ -0,0 +1,25 @@ +package dao + +import ( + "lone-services/pkg/utils" +) + +type Group struct { + Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"` + HostUserId int64 `gorm:"column:host_user_id;type:int;default:NULL" json:"host_user_id"` // 设备所有者ID + HostCode string `gorm:"column:host_code;type:varchar(255);default:NULL" json:"host_code"` // 设备号 + UserId int64 `gorm:"column:user_id;type:int;default:NULL" json:"user_id"` // 用户ID + Status int32 `gorm:"column:status;type:tinyint(1);not null;default:1" json:"status"` // 状态,1为正常,2为禁用 +} + +type GroupInfo struct { + Id int64 `gorm:"column:id;type:int;not null;autoIncrement" json:"id"` + HostUserId int64 `gorm:"column:host_user_id;type:int;default:NULL" json:"host_user_id"` // 设备所有者ID + HostCode string `gorm:"column:host_code;type:varchar(255);default:NULL" json:"host_code"` // 设备号 + UserId int64 `gorm:"column:user_id;type:int;default:NULL" json:"user_id"` // 用户ID + Status int32 `gorm:"column:status;type:tinyint(1);not null;default:1" json:"status"` // 状态,1为正常,2为禁用 + UpdateTime utils.CustomTime `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP;onUpdate:CURRENT_TIMESTAMP" json:"update_time"` + CreateTime utils.CustomTime `json:"create_time" gorm:"create_time"` // 时间 + UserName string `json:"user_name" gorm:"-"` + UserAvatar string `json:"user_avatar" gorm:"-"` +} diff --git a/services/percutaneous/internal/dao/wifi.go b/services/percutaneous/internal/dao/wifi.go index 3b2cc9a..015f545 100644 --- a/services/percutaneous/internal/dao/wifi.go +++ b/services/percutaneous/internal/dao/wifi.go @@ -11,16 +11,18 @@ const ( ) type Wifi struct { - Id int64 `json:"id" gorm:"id"` - UserId int64 `json:"user_id" gorm:"user_id"` // 用户ID - UserType int32 `json:"user_type" gorm:"user_type"` // 用户类型,1为用户,2为门店 - Done int32 `json:"done" gorm:"done"` // 是否配置了wifi,2为没有配置,1为配置了 + Id int64 `json:"id" gorm:"id"` + UserId int64 `json:"user_id" gorm:"user_id"` // 用户ID + UserType int32 `json:"user_type" gorm:"user_type"` // 用户类型,1为用户,2为门店 + HostCode string `json:"host_code" gorm:"host_code"` // 设备 + Done int32 `json:"done" gorm:"done"` // 是否配置了wifi,2为没有配置,1为配置了 } type WifiInfo struct { Id int64 `json:"id" gorm:"id"` UserId int64 `json:"user_id" gorm:"user_id"` // 用户ID UserType int32 `json:"user_type" gorm:"user_type"` // 用户类型,1为用户,2为门店 + HostCode string `json:"host_code" gorm:"host_code"` // 设备 Done int32 `json:"done" gorm:"done"` // 是否配置了wifi,2为没有配置,1为配置了 UpdateTime utils.CustomTime `json:"update_time" gorm:"update_time"` CarteTime utils.CustomTime `json:"carte_time" gorm:"carte_time"` diff --git a/services/percutaneous/internal/logic/addUserLogic.go b/services/percutaneous/internal/logic/addUserLogic.go new file mode 100644 index 0000000..c7938d6 --- /dev/null +++ b/services/percutaneous/internal/logic/addUserLogic.go @@ -0,0 +1,65 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" + "lone-services/services/percutaneous/validator" + "strconv" + + "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AddUserLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAddUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddUserLogic { + return &AddUserLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *AddUserLogic) AddUser(in *percutaneous.AddUserRequest) (*percutaneous.Response, error) { + var v validator.GroupValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + w := modelbase.Params{Eq: map[string]string{ + "host_code": in.HostCode, + "host_user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + "user_id": strconv.FormatInt(in.UserId, utils.NumberTen), + }} + var info dao.Group + err := model.GroupModel{}.Init().GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + info.HostCode = in.HostCode + info.HostUserId = adminInfo.ID + info.UserId = in.UserId + err = model.GroupModel{}.Init().Create(&info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + } + + return l.ok(utils.NumberOne) +} diff --git a/services/percutaneous/internal/logic/useLogic.go b/services/percutaneous/internal/logic/useLogic.go index 7266d7b..6cb5656 100644 --- a/services/percutaneous/internal/logic/useLogic.go +++ b/services/percutaneous/internal/logic/useLogic.go @@ -3,6 +3,8 @@ package logic import ( "context" "lone-services/pkg/utils" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" "lone-services/services/percutaneous/validator" "lone-services/rpc/percutaneous/pb" @@ -36,5 +38,21 @@ func (l *UseLogic) Use(in *percutaneous.UseRequest) (*percutaneous.Response, err return l.fail(utils.ErrorNoLoginInfo) } - return l.ok(nil) + stamp, err := utils.ParseCustomTime(in.Stamp) + if err != nil { + return l.fail(utils.Fail) + } + info := dao.UsedLog{ + HostUserId: adminInfo.ID, + HostCode: in.HostCode, + UserId: in.UserId, + Data: in.Data, + Stamp: stamp, + Position: in.Position, + } + err = model.UsedLogModel{}.Init().Create(&info) + if err != nil { + return l.fail(utils.Fail) + } + return l.ok(utils.NumberOne) } diff --git a/services/percutaneous/internal/logic/usedLogLogic.go b/services/percutaneous/internal/logic/usedLogLogic.go index 8cbc889..2c35b7a 100644 --- a/services/percutaneous/internal/logic/usedLogLogic.go +++ b/services/percutaneous/internal/logic/usedLogLogic.go @@ -2,9 +2,13 @@ package logic import ( "context" + "lone-services/pkg/modelbase" "lone-services/pkg/utils" "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" "lone-services/services/percutaneous/internal/svc" + "strconv" "github.com/zeromicro/go-zero/core/logx" ) @@ -30,7 +34,33 @@ func (l *UsedLogLogic) UsedLog(in *percutaneous.UsedLogRequest) (*percutaneous.R return l.fail(utils.ErrorNoLoginInfo) } - //items.Items = info - //return l.ok(items) - return l.ok(nil) + var info []dao.UsedLogInfo + if in.Stamp != utils.StringEmpty { + w := modelbase.Params{ + Eq: map[string]string{ + "stamp": in.Stamp, + "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + }, + } + err := model.UsedLogModel{}.Init().Items(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.ErrorNotFund) + } + return l.ok(info) + } else { + w := modelbase.Params{ + Page: int(in.Page), + Size: int(in.Size), + Order: "id desc", + Eq: map[string]string{"user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen)}, + } + + items, err := model.UsedLogModel{}.Init().Page(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.ErrorNotFund) + } + return l.ok(items) + } } diff --git a/services/percutaneous/internal/logic/userItemsLogic.go b/services/percutaneous/internal/logic/userItemsLogic.go new file mode 100644 index 0000000..9564312 --- /dev/null +++ b/services/percutaneous/internal/logic/userItemsLogic.go @@ -0,0 +1,106 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + user "lone-services/rpc/user/pb" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" + "lone-services/services/percutaneous/validator" + "strconv" + + "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type UserItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewUserItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserItemsLogic { + return &UserItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *UserItemsLogic) UserItems(in *percutaneous.UserItemsRequest) (*percutaneous.Response, error) { + var v validator.GroupItemsValidator + if fail := l.checkParams(in, &v); fail != nil { + return fail, nil + } + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + w := modelbase.Params{ + Eq: map[string]string{ + "host_user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), + "host_code": in.HostCode, + "status": utils.StringStatusOk, + }, + Page: int(in.Page), + Size: int(in.Size), + Order: "id desc", + } + var info []dao.GroupInfo + items, err := model.GroupModel{}.Init().Page(w, &info) + if err != nil { + logx.Errorf("get group err: %v", err) + return l.fail(utils.Fail) + } + var ids []int64 + for _, item := range info { + ids = append(ids, item.UserId) + } + l.setUserItems(&info, ids) + + items.Items = info + return l.ok(items) +} + +func (l *UserItemsLogic) setUserItems(info *[]dao.GroupInfo, ids []int64) { + if len(ids) == utils.NumberZero { + return + } + + cli, err := svc.GetRpcClient(l.svcCtx.UserName) + if err != nil { + logx.Errorf("get user err: %v", err) + return + } + + client := user.NewUserClient(cli.Conn()) + + data := user.InternalUsersByIdsReq{ + Ids: ids, + } + res, err := client.InternalUsersByIds(context.Background(), &data) + if err != nil { + logx.Errorf("get order err: %v", err) + return + } + + type UserItem struct { + Name string `json:"name"` + Avatar string `json:"avatar"` + } + names := make(map[int64]UserItem) + for _, item := range res.Items { + names[item.Id] = UserItem{Name: item.Name, Avatar: item.Avatar} + } + for key, item := range *info { + (*info)[key].UserName = names[item.UserId].Name + (*info)[key].UserAvatar = names[item.UserId].Avatar + } + + return +} diff --git a/services/percutaneous/internal/logic/weatherLogic.go b/services/percutaneous/internal/logic/weatherLogic.go new file mode 100644 index 0000000..0e3a4e0 --- /dev/null +++ b/services/percutaneous/internal/logic/weatherLogic.go @@ -0,0 +1,30 @@ +package logic + +import ( + "context" + + "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type WeatherLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger +} + +func NewWeatherLogic(ctx context.Context, svcCtx *svc.ServiceContext) *WeatherLogic { + return &WeatherLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *WeatherLogic) Weather(in *percutaneous.EmptyRequest) (*percutaneous.Response, error) { + // todo: add your logic here and delete this line + + return &percutaneous.Response{}, nil +} diff --git a/services/percutaneous/internal/logic/wifiCheckLogic.go b/services/percutaneous/internal/logic/wifiCheckLogic.go index 7fde415..2b28260 100644 --- a/services/percutaneous/internal/logic/wifiCheckLogic.go +++ b/services/percutaneous/internal/logic/wifiCheckLogic.go @@ -2,7 +2,10 @@ package logic import ( "context" + "lone-services/pkg/modelbase" "lone-services/pkg/utils" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" "lone-services/services/percutaneous/validator" "lone-services/rpc/percutaneous/pb" @@ -36,5 +39,17 @@ func (l *WifiCheckLogic) WifiCheck(in *percutaneous.WifiCheckRequest) (*percutan return l.fail(utils.ErrorNoLoginInfo) } - return l.ok(nil) + w := modelbase.Params{Eq: map[string]string{"host_code": in.HostCode}} + var info dao.WifiInfo + err := model.WifiModel{}.Init().Items(w, &info) + if err != nil { + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.ok(false) + } + if info.Done == dao.WifiNotDone { + return l.ok(false) + } + return l.ok(true) } diff --git a/services/percutaneous/internal/logic/wifiSetLogic.go b/services/percutaneous/internal/logic/wifiSetLogic.go index dc77cc3..6a1bf1f 100644 --- a/services/percutaneous/internal/logic/wifiSetLogic.go +++ b/services/percutaneous/internal/logic/wifiSetLogic.go @@ -2,7 +2,10 @@ package logic import ( "context" + "lone-services/pkg/modelbase" "lone-services/pkg/utils" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/model" "lone-services/services/percutaneous/validator" "lone-services/rpc/percutaneous/pb" @@ -35,6 +38,30 @@ func (l *WifiSetLogic) WifiSet(in *percutaneous.WifiSetRequest) (*percutaneous.R if adminInfo.ID < utils.NumberOne { return l.fail(utils.ErrorNoLoginInfo) } - - return l.ok(nil) + w := modelbase.Params{Eq: map[string]string{"host_code": in.HostCode}} + var info dao.Wifi + err := model.WifiModel{}.Init().Items(w, &info) + if err != nil { + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + info.UserId = adminInfo.ID + info.UserType = int32(adminInfo.Type) + info.HostCode = in.HostCode + info.Done = dao.WifiDone + err = model.WifiModel{}.Init().Create(&info) + if err != nil { + return l.fail(utils.Fail) + } + return l.ok(utils.NumberOne) + } + if info.Done == dao.WifiNotDone { + info.Done = dao.WifiDone + _, err = model.WifiModel{}.Init().Edit(w, &info) + if err != nil { + return l.fail(utils.Fail) + } + return l.ok(utils.NumberOne) + } + return l.ok(utils.NumberOne) } diff --git a/services/percutaneous/internal/model/group.go b/services/percutaneous/internal/model/group.go new file mode 100644 index 0000000..716a761 --- /dev/null +++ b/services/percutaneous/internal/model/group.go @@ -0,0 +1,23 @@ +package model + +import ( + "lone-services/pkg/modelbase" + "lone-services/services/percutaneous/internal/dao" +) + +type GroupModel struct { + modelbase.Base +} + +func (m GroupModel) TableName() string { + return modelbase.Prefix() + "group" +} + +func (m GroupModel) Init() GroupModel { + m.Table = m.TableName() + return m +} + +func (m GroupModel) Create(data *dao.Group) error { + return m.Base.Create(data) +} diff --git a/services/percutaneous/internal/server/percutaneousServer.go b/services/percutaneous/internal/server/percutaneousServer.go index 6a8e453..877b437 100644 --- a/services/percutaneous/internal/server/percutaneousServer.go +++ b/services/percutaneous/internal/server/percutaneousServer.go @@ -42,3 +42,18 @@ func (s *PercutaneousServer) UsedLog(ctx context.Context, in *percutaneous.UsedL l := logic.NewUsedLogLogic(ctx, s.svcCtx) return l.UsedLog(in) } + +func (s *PercutaneousServer) AddUser(ctx context.Context, in *percutaneous.AddUserRequest) (*percutaneous.Response, error) { + l := logic.NewAddUserLogic(ctx, s.svcCtx) + return l.AddUser(in) +} + +func (s *PercutaneousServer) UserItems(ctx context.Context, in *percutaneous.UserItemsRequest) (*percutaneous.Response, error) { + l := logic.NewUserItemsLogic(ctx, s.svcCtx) + return l.UserItems(in) +} + +func (s *PercutaneousServer) Weather(ctx context.Context, in *percutaneous.EmptyRequest) (*percutaneous.Response, error) { + l := logic.NewWeatherLogic(ctx, s.svcCtx) + return l.Weather(in) +} diff --git a/services/percutaneous/internal/svc/servicecontext.go b/services/percutaneous/internal/svc/servicecontext.go index 891e643..b5d262f 100644 --- a/services/percutaneous/internal/svc/servicecontext.go +++ b/services/percutaneous/internal/svc/servicecontext.go @@ -1,22 +1,94 @@ package svc import ( + "fmt" + "lone-services/pkg/discovery" "lone-services/pkg/utils" "lone-services/services/percutaneous/internal/config" + "net" + "strconv" + "sync" + "time" + "github.com/zeromicro/go-zero/core/logx" + "github.com/zeromicro/go-zero/zrpc" "gorm.io/gorm" ) +type rpcClientCacheEntry struct { + cli zrpc.Client + target string + expireAt time.Time +} + +const rpcClientCacheTTL = 30 * time.Second //缓存过期时间 + +var ( + rpcCacheLock sync.Mutex + rpcCache = make(map[string]*rpcClientCacheEntry) +) + +func GetRpcClient(serviceName string) (zrpc.Client, error) { + if serviceName == utils.StringEmpty { + err := fmt.Errorf("rpc serviceName is empty") + logx.Error(err) + return nil, err + } + + cacheKey := serviceName + + rpcCacheLock.Lock() + entry, ok := rpcCache[cacheKey] + if ok && time.Now().Before(entry.expireAt) { + rpcCacheLock.Unlock() + return entry.cli, nil + } + delete(rpcCache, cacheKey) + rpcCacheLock.Unlock() + + inst, err := discovery.Pick(serviceName) + if err != nil { + err = fmt.Errorf("discovery pick %s failed: %w", serviceName, err) + logx.Error(err) + return nil, err + } + + target := net.JoinHostPort(inst.IP, strconv.FormatUint(inst.Port, utils.NumberTen)) + + cli := zrpc.MustNewClient(zrpc.RpcClientConf{ + Target: target, + Timeout: utils.RpcTimeOut, //rpc调用超时5s + }) + + rpcCacheLock.Lock() + rpcCache[cacheKey] = &rpcClientCacheEntry{ + cli: cli, + target: target, + expireAt: time.Now().Add(rpcClientCacheTTL), + } + rpcCacheLock.Unlock() + + return cli, nil +} + type ServiceContext struct { - Config config.Config - DB *gorm.DB - Prefix string + Config config.Config + DB *gorm.DB + Prefix string + UserName string } func NewServiceContext(c config.Config, db *gorm.DB) *ServiceContext { + //启动仅读取配置,不建立rpc连接 多个服务就多个 + UserSvc := utils.GetConfigString("services.user") + if UserSvc == utils.StringEmpty { + logx.Error("config services.user empty") + } + return &ServiceContext{ - Config: c, - DB: db, - Prefix: utils.GetConfigString("mysql.prefix"), + Config: c, + DB: db, + Prefix: utils.GetConfigString("mysql.prefix"), + UserName: UserSvc, } } diff --git a/services/percutaneous/percutaneousclient/percutaneous.go b/services/percutaneous/percutaneousclient/percutaneous.go index 6ca280b..8e91fb5 100644 --- a/services/percutaneous/percutaneousclient/percutaneous.go +++ b/services/percutaneous/percutaneousclient/percutaneous.go @@ -14,9 +14,12 @@ import ( ) type ( + AddUserRequest = percutaneous.AddUserRequest + EmptyRequest = percutaneous.EmptyRequest Response = percutaneous.Response UseRequest = percutaneous.UseRequest UsedLogRequest = percutaneous.UsedLogRequest + UserItemsRequest = percutaneous.UserItemsRequest WifiCheckRequest = percutaneous.WifiCheckRequest WifiSetRequest = percutaneous.WifiSetRequest @@ -25,6 +28,9 @@ type ( WifiSet(ctx context.Context, in *WifiSetRequest, opts ...grpc.CallOption) (*Response, error) Use(ctx context.Context, in *UseRequest, opts ...grpc.CallOption) (*Response, error) UsedLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) + AddUser(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UserItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) + Weather(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) } defaultPercutaneous struct { @@ -57,3 +63,18 @@ func (m *defaultPercutaneous) UsedLog(ctx context.Context, in *UsedLogRequest, o client := percutaneous.NewPercutaneousClient(m.cli.Conn()) return client.UsedLog(ctx, in, opts...) } + +func (m *defaultPercutaneous) AddUser(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.AddUser(ctx, in, opts...) +} + +func (m *defaultPercutaneous) UserItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.UserItems(ctx, in, opts...) +} + +func (m *defaultPercutaneous) Weather(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.Weather(ctx, in, opts...) +} diff --git a/services/percutaneous/run.toml b/services/percutaneous/run.toml index 9279ef2..3b2d9f0 100644 --- a/services/percutaneous/run.toml +++ b/services/percutaneous/run.toml @@ -42,5 +42,7 @@ password = 'lLMLcuPpzSj' port = 6379 db = 3 +[services] + user = "user-service" [encrypt] data_key = "u2t9T3luZtoRfhBstkFN6TiIMW38BA8a" #内容数据, \ No newline at end of file diff --git a/services/percutaneous/tmp/runner-build b/services/percutaneous/tmp/runner-build index e8a79a0..8b7555d 100644 Binary files a/services/percutaneous/tmp/runner-build and b/services/percutaneous/tmp/runner-build differ diff --git a/services/percutaneous/validator/group.go b/services/percutaneous/validator/group.go new file mode 100644 index 0000000..3277b5d --- /dev/null +++ b/services/percutaneous/validator/group.go @@ -0,0 +1,28 @@ +package validator + +import "lone-services/pkg/validate" + +// GroupValidator 查看列表 +type GroupValidator struct { + HostCode string `validate:"required"` + UserId int64 `validate:"required"` +} + +// GetMessage 查看列表 - 提示消息 +func (p GroupValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "HostCode.required": "设备不能为空", + "UserId.required": "用户不能为空", + } +} + +type GroupItemsValidator struct { + HostCode string `validate:"required"` +} + +// GetMessage 查看列表 - 提示消息 +func (p GroupItemsValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "HostCode.required": "设备不能为空", + } +} diff --git a/services/percutaneous/validator/usedLog.go b/services/percutaneous/validator/usedLog.go index 3bc6198..27d423c 100644 --- a/services/percutaneous/validator/usedLog.go +++ b/services/percutaneous/validator/usedLog.go @@ -7,8 +7,8 @@ type UseValidator struct { HostCode string `validate:"required"` UserId int64 `validate:"required"` Data string `validate:"required"` - Stamp int32 `validate:"required"` - Position string + Stamp string `validate:"required"` + Position int32 } // GetMessage 查看列表 - 提示消息