From 62df553f34807562ea0f251933214fdb558f31fb Mon Sep 17 00:00:00 2001 From: gjs Date: Wed, 28 Oct 2026 17:00:00 +0800 Subject: [PATCH] add apis --- rpc/percutaneous/pb/percutaneous.pb.go | 62 ++++++---- rpc/percutaneous/pb/percutaneous_grpc.pb.go | 114 ++++++++++++++++++ rpc/percutaneous/percutaneous.pb | Bin 15491 -> 15876 bytes rpc/percutaneous/percutaneous.proto | 19 +++ .../internal/logic/usedLogLogic.go | 4 + .../internal/logic/usedStoreLogLogic.go | 81 +++++++++++++ .../internal/logic/userDeleteLogic.go | 6 +- .../internal/logic/userStoreDeleteLogic.go | 67 ++++++++++ .../internal/logic/userStoreItemsLogic.go | 104 ++++++++++++++++ .../internal/server/percutaneousServer.go | 15 +++ .../percutaneousclient/percutaneous.go | 18 +++ services/percutaneous/validator/group.go | 22 ++++ 12 files changed, 485 insertions(+), 27 deletions(-) create mode 100644 services/percutaneous/internal/logic/usedStoreLogLogic.go create mode 100644 services/percutaneous/internal/logic/userStoreDeleteLogic.go create mode 100644 services/percutaneous/internal/logic/userStoreItemsLogic.go diff --git a/rpc/percutaneous/pb/percutaneous.pb.go b/rpc/percutaneous/pb/percutaneous.pb.go index ab1020d..b7f2fe9 100644 --- a/rpc/percutaneous/pb/percutaneous.pb.go +++ b/rpc/percutaneous/pb/percutaneous.pb.go @@ -192,6 +192,7 @@ type UsedLogRequest struct { Size int32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` Stamp string `protobuf:"bytes,3,opt,name=stamp,proto3" json:"stamp,omitempty"` Time []string `protobuf:"bytes,4,rep,name=time,proto3" json:"time,omitempty"` + HostCode string `protobuf:"bytes,5,opt,name=host_code,json=hostCode,proto3" json:"host_code,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -254,6 +255,13 @@ func (x *UsedLogRequest) GetTime() []string { return nil } +func (x *UsedLogRequest) GetHostCode() string { + if x != nil { + return x.HostCode + } + return "" +} + type Response struct { state protoimpl.MessageState `protogen:"open.v1"` Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` @@ -721,12 +729,13 @@ 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\"b\n" + + "\bposition\x18\x05 \x01(\x05R\bposition\"\x7f\n" + "\x0eUsedLogRequest\x12\x12\n" + "\x04page\x18\x01 \x01(\x05R\x04page\x12\x12\n" + "\x04size\x18\x02 \x01(\x05R\x04size\x12\x14\n" + "\x05stamp\x18\x03 \x01(\tR\x05stamp\x12\x12\n" + - "\x04time\x18\x04 \x03(\tR\x04time\"D\n" + + "\x04time\x18\x04 \x03(\tR\x04time\x12\x1b\n" + + "\thost_code\x18\x05 \x01(\tR\bhostCode\"D\n" + "\bResponse\x12\x12\n" + "\x04code\x18\x01 \x01(\x05R\x04code\x12\x10\n" + "\x03msg\x18\x02 \x01(\tR\x03msg\x12\x12\n" + @@ -752,16 +761,19 @@ const file_percutaneous_percutaneous_proto_rawDesc = "" + "\auser_id\x18\x02 \x01(\x03R\x06userId\"\x0e\n" + "\fEmptyRequest\",\n" + "\x0fWsStreamRequest\x12\x19\n" + - "\braw_body\x18\x01 \x01(\fR\arawBody2\xb0\t\n" + + "\braw_body\x18\x01 \x01(\fR\arawBody2\x94\f\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/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\x12o\n" + + "\tUserItems\x12\x1e.percutaneous.UserItemsRequest\x1a\x16.percutaneous.Response\"*\x82\xd3\xe4\x93\x02$:\x01*\x12\x1f/api/v3/percutaneous/user/items\x12u\n" + + "\x0eUserStoreItems\x12\x1e.percutaneous.UserItemsRequest\x1a\x16.percutaneous.Response\"+\x82\xd3\xe4\x93\x02%:\x01*\x12 /api/v3/percutaneous/store/items\x12o\n" + "\n" + "UserDelete\x12\x1c.percutaneous.AddUserRequest\x1a\x16.percutaneous.Response\"+\x82\xd3\xe4\x93\x02%:\x01*\x12 /api/v3/percutaneous/user/delete\x12u\n" + + "\x0fUserStoreDelete\x12\x1c.percutaneous.AddUserRequest\x1a\x16.percutaneous.Response\",\x82\xd3\xe4\x93\x02&:\x01*\x12!/api/v3/percutaneous/store/delete\x12t\n" + + "\fUsedStoreLog\x12\x1c.percutaneous.UsedLogRequest\x1a\x16.percutaneous.Response\".\x82\xd3\xe4\x93\x02(:\x01*\x12#/api/v3/percutaneous/store/used/log\x12u\n" + "\vsetPosition\x12 .percutaneous.setPositionRequest\x1a\x16.percutaneous.Response\",\x82\xd3\xe4\x93\x02&:\x01*\"!/api/v3/percutaneous/use/position\x12m\n" + "\tgetWsCode\x12\x1e.percutaneous.getWsCodeRequest\x1a\x16.percutaneous.Response\"(\x82\xd3\xe4\x93\x02\":\x01*\x12\x1d/api/v3/percutaneous/get/code\x12s\n" + "\x0eWsClientStatus\x12\x1e.percutaneous.getWsCodeRequest\x1a\x16.percutaneous.Response\")\x82\xd3\xe4\x93\x02#:\x01*\x12\x1e/api/v3/percutaneous/ws/status\x12S\n" + @@ -802,24 +814,30 @@ var file_percutaneous_percutaneous_proto_depIdxs = []int32{ 3, // 3: percutaneous.Percutaneous.UsedLog:input_type -> percutaneous.UsedLogRequest 5, // 4: percutaneous.Percutaneous.AddUser:input_type -> percutaneous.AddUserRequest 6, // 5: percutaneous.Percutaneous.UserItems:input_type -> percutaneous.UserItemsRequest - 5, // 6: percutaneous.Percutaneous.UserDelete:input_type -> percutaneous.AddUserRequest - 9, // 7: percutaneous.Percutaneous.setPosition:input_type -> percutaneous.setPositionRequest - 10, // 8: percutaneous.Percutaneous.getWsCode:input_type -> percutaneous.getWsCodeRequest - 10, // 9: percutaneous.Percutaneous.WsClientStatus:input_type -> percutaneous.getWsCodeRequest - 12, // 10: percutaneous.Percutaneous.WsAddUserStream:input_type -> percutaneous.WsStreamRequest - 4, // 11: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response - 4, // 12: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response - 4, // 13: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response - 4, // 14: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response - 4, // 15: percutaneous.Percutaneous.AddUser:output_type -> percutaneous.Response - 4, // 16: percutaneous.Percutaneous.UserItems:output_type -> percutaneous.Response - 4, // 17: percutaneous.Percutaneous.UserDelete:output_type -> percutaneous.Response - 4, // 18: percutaneous.Percutaneous.setPosition:output_type -> percutaneous.Response - 4, // 19: percutaneous.Percutaneous.getWsCode:output_type -> percutaneous.Response - 4, // 20: percutaneous.Percutaneous.WsClientStatus:output_type -> percutaneous.Response - 12, // 21: percutaneous.Percutaneous.WsAddUserStream:output_type -> percutaneous.WsStreamRequest - 11, // [11:22] is the sub-list for method output_type - 0, // [0:11] is the sub-list for method input_type + 6, // 6: percutaneous.Percutaneous.UserStoreItems:input_type -> percutaneous.UserItemsRequest + 5, // 7: percutaneous.Percutaneous.UserDelete:input_type -> percutaneous.AddUserRequest + 5, // 8: percutaneous.Percutaneous.UserStoreDelete:input_type -> percutaneous.AddUserRequest + 3, // 9: percutaneous.Percutaneous.UsedStoreLog:input_type -> percutaneous.UsedLogRequest + 9, // 10: percutaneous.Percutaneous.setPosition:input_type -> percutaneous.setPositionRequest + 10, // 11: percutaneous.Percutaneous.getWsCode:input_type -> percutaneous.getWsCodeRequest + 10, // 12: percutaneous.Percutaneous.WsClientStatus:input_type -> percutaneous.getWsCodeRequest + 12, // 13: percutaneous.Percutaneous.WsAddUserStream:input_type -> percutaneous.WsStreamRequest + 4, // 14: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response + 4, // 15: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response + 4, // 16: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response + 4, // 17: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response + 4, // 18: percutaneous.Percutaneous.AddUser:output_type -> percutaneous.Response + 4, // 19: percutaneous.Percutaneous.UserItems:output_type -> percutaneous.Response + 4, // 20: percutaneous.Percutaneous.UserStoreItems:output_type -> percutaneous.Response + 4, // 21: percutaneous.Percutaneous.UserDelete:output_type -> percutaneous.Response + 4, // 22: percutaneous.Percutaneous.UserStoreDelete:output_type -> percutaneous.Response + 4, // 23: percutaneous.Percutaneous.UsedStoreLog:output_type -> percutaneous.Response + 4, // 24: percutaneous.Percutaneous.setPosition:output_type -> percutaneous.Response + 4, // 25: percutaneous.Percutaneous.getWsCode:output_type -> percutaneous.Response + 4, // 26: percutaneous.Percutaneous.WsClientStatus:output_type -> percutaneous.Response + 12, // 27: percutaneous.Percutaneous.WsAddUserStream:output_type -> percutaneous.WsStreamRequest + 14, // [14:28] is the sub-list for method output_type + 0, // [0:14] 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 diff --git a/rpc/percutaneous/pb/percutaneous_grpc.pb.go b/rpc/percutaneous/pb/percutaneous_grpc.pb.go index 8067a40..b918492 100644 --- a/rpc/percutaneous/pb/percutaneous_grpc.pb.go +++ b/rpc/percutaneous/pb/percutaneous_grpc.pb.go @@ -25,7 +25,10 @@ const ( Percutaneous_UsedLog_FullMethodName = "/percutaneous.Percutaneous/UsedLog" Percutaneous_AddUser_FullMethodName = "/percutaneous.Percutaneous/AddUser" Percutaneous_UserItems_FullMethodName = "/percutaneous.Percutaneous/UserItems" + Percutaneous_UserStoreItems_FullMethodName = "/percutaneous.Percutaneous/UserStoreItems" Percutaneous_UserDelete_FullMethodName = "/percutaneous.Percutaneous/UserDelete" + Percutaneous_UserStoreDelete_FullMethodName = "/percutaneous.Percutaneous/UserStoreDelete" + Percutaneous_UsedStoreLog_FullMethodName = "/percutaneous.Percutaneous/UsedStoreLog" Percutaneous_SetPosition_FullMethodName = "/percutaneous.Percutaneous/setPosition" Percutaneous_GetWsCode_FullMethodName = "/percutaneous.Percutaneous/getWsCode" Percutaneous_WsClientStatus_FullMethodName = "/percutaneous.Percutaneous/WsClientStatus" @@ -42,7 +45,10 @@ type PercutaneousClient interface { 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) + UserStoreItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) UserDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UserStoreDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UsedStoreLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) // 使用指南 SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) @@ -119,6 +125,16 @@ func (c *percutaneousClient) UserItems(ctx context.Context, in *UserItemsRequest return out, nil } +func (c *percutaneousClient) UserStoreItems(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_UserStoreItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *percutaneousClient) UserDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) @@ -129,6 +145,26 @@ func (c *percutaneousClient) UserDelete(ctx context.Context, in *AddUserRequest, return out, nil } +func (c *percutaneousClient) UserStoreDelete(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_UserStoreDelete_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *percutaneousClient) UsedStoreLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Percutaneous_UsedStoreLog_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *percutaneousClient) SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) @@ -182,7 +218,10 @@ type PercutaneousServer interface { UsedLog(context.Context, *UsedLogRequest) (*Response, error) AddUser(context.Context, *AddUserRequest) (*Response, error) UserItems(context.Context, *UserItemsRequest) (*Response, error) + UserStoreItems(context.Context, *UserItemsRequest) (*Response, error) UserDelete(context.Context, *AddUserRequest) (*Response, error) + UserStoreDelete(context.Context, *AddUserRequest) (*Response, error) + UsedStoreLog(context.Context, *UsedLogRequest) (*Response, error) // 使用指南 SetPosition(context.Context, *SetPositionRequest) (*Response, error) GetWsCode(context.Context, *GetWsCodeRequest) (*Response, error) @@ -217,9 +256,18 @@ func (UnimplementedPercutaneousServer) AddUser(context.Context, *AddUserRequest) func (UnimplementedPercutaneousServer) UserItems(context.Context, *UserItemsRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method UserItems not implemented") } +func (UnimplementedPercutaneousServer) UserStoreItems(context.Context, *UserItemsRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method UserStoreItems not implemented") +} func (UnimplementedPercutaneousServer) UserDelete(context.Context, *AddUserRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method UserDelete not implemented") } +func (UnimplementedPercutaneousServer) UserStoreDelete(context.Context, *AddUserRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method UserStoreDelete not implemented") +} +func (UnimplementedPercutaneousServer) UsedStoreLog(context.Context, *UsedLogRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method UsedStoreLog not implemented") +} func (UnimplementedPercutaneousServer) SetPosition(context.Context, *SetPositionRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method SetPosition not implemented") } @@ -361,6 +409,24 @@ func _Percutaneous_UserItems_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Percutaneous_UserStoreItems_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).UserStoreItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_UserStoreItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).UserStoreItems(ctx, req.(*UserItemsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Percutaneous_UserDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(AddUserRequest) if err := dec(in); err != nil { @@ -379,6 +445,42 @@ func _Percutaneous_UserDelete_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Percutaneous_UserStoreDelete_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).UserStoreDelete(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_UserStoreDelete_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).UserStoreDelete(ctx, req.(*AddUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Percutaneous_UsedStoreLog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UsedLogRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).UsedStoreLog(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_UsedStoreLog_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).UsedStoreLog(ctx, req.(*UsedLogRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Percutaneous_SetPosition_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(SetPositionRequest) if err := dec(in); err != nil { @@ -471,10 +573,22 @@ var Percutaneous_ServiceDesc = grpc.ServiceDesc{ MethodName: "UserItems", Handler: _Percutaneous_UserItems_Handler, }, + { + MethodName: "UserStoreItems", + Handler: _Percutaneous_UserStoreItems_Handler, + }, { MethodName: "UserDelete", Handler: _Percutaneous_UserDelete_Handler, }, + { + MethodName: "UserStoreDelete", + Handler: _Percutaneous_UserStoreDelete_Handler, + }, + { + MethodName: "UsedStoreLog", + Handler: _Percutaneous_UsedStoreLog_Handler, + }, { MethodName: "setPosition", Handler: _Percutaneous_SetPosition_Handler, diff --git a/rpc/percutaneous/percutaneous.pb b/rpc/percutaneous/percutaneous.pb index 2a6bf5632a05c0c8d39c374022e43f096860a3ca..7ccc8992a6cfb6e062d303dc3539bb753c7c5e51 100644 GIT binary patch delta 190 zcmZp!Y^mAs*qCX)$mXZUmW+(`ljTj5WQ3%-I5YB#OX8FBQ&J^Z6&N)*gE&9}&iN^u z8%)ian5OV--f2F8iKmo{FSIzdD7YlQD0T9EOS{RvR&uPxV4l5IEf+sRGQi4~Q>W?j zlgUhKLW+~?twm+P%JfrGb5cuEtr)e0O1OA{%2Oa_aavk&>VcJO2q}Y<^FfrC0#)ee M#{qs? B5di=I diff --git a/rpc/percutaneous/percutaneous.proto b/rpc/percutaneous/percutaneous.proto index 05eacb0..95d901c 100644 --- a/rpc/percutaneous/percutaneous.proto +++ b/rpc/percutaneous/percutaneous.proto @@ -26,6 +26,7 @@ message UsedLogRequest { int32 size = 2; string stamp = 3; repeated string time = 4; + string host_code = 5; } message Response { @@ -111,12 +112,30 @@ service Percutaneous { body: "*" }; } + rpc UserStoreItems(UserItemsRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/store/items" + body: "*" + }; + } rpc UserDelete(AddUserRequest) returns (Response) { option (google.api.http) = { get: "/api/v3/percutaneous/user/delete" body: "*" }; } + rpc UserStoreDelete(AddUserRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/store/delete" + body: "*" + }; + } + rpc UsedStoreLog(UsedLogRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/store/used/log" + body: "*" + }; + } // 使用指南 rpc setPosition(setPositionRequest) returns (Response) { option (google.api.http) = { diff --git a/services/percutaneous/internal/logic/usedLogLogic.go b/services/percutaneous/internal/logic/usedLogLogic.go index 72a0202..20c5737 100644 --- a/services/percutaneous/internal/logic/usedLogLogic.go +++ b/services/percutaneous/internal/logic/usedLogLogic.go @@ -63,6 +63,10 @@ func (l *UsedLogLogic) UsedLog(in *percutaneous.UsedLogRequest) (*percutaneous.R w.Between = map[string][2]string{"create_time": { in.Time[utils.NumberZero], in.Time[utils.NumberOne]}} } + if len(in.Time) > utils.NumberOne { + w.Between = map[string][2]string{"create_time": { + in.Time[utils.NumberZero], in.Time[utils.NumberOne]}} + } items, err := model.UsedLogModel{}.Init().Page(w, &info) if err != nil { diff --git a/services/percutaneous/internal/logic/usedStoreLogLogic.go b/services/percutaneous/internal/logic/usedStoreLogLogic.go new file mode 100644 index 0000000..a6fd601 --- /dev/null +++ b/services/percutaneous/internal/logic/usedStoreLogLogic.go @@ -0,0 +1,81 @@ +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 UsedStoreLogLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewUsedStoreLogLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UsedStoreLogLogic { + return &UsedStoreLogLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *UsedStoreLogLogic) UsedStoreLog(in *percutaneous.UsedLogRequest) (*percutaneous.Response, error) { + var v validator.UsedStoreLogValidator + 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) + } + + 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), + "host_code": in.HostCode, + }, + } + if len(in.Time) > utils.NumberOne { + w.Between = map[string][2]string{"create_time": { + in.Time[utils.NumberZero], in.Time[utils.NumberOne]}} + } + 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)}, + } + if len(in.Time) > utils.NumberOne { + w.Between = map[string][2]string{"create_time": { + in.Time[utils.NumberZero], in.Time[utils.NumberOne]}} + } + + 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/userDeleteLogic.go b/services/percutaneous/internal/logic/userDeleteLogic.go index 6f139cf..e527f67 100644 --- a/services/percutaneous/internal/logic/userDeleteLogic.go +++ b/services/percutaneous/internal/logic/userDeleteLogic.go @@ -31,7 +31,7 @@ func NewUserDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserDe } func (l *UserDeleteLogic) UserDelete(in *percutaneous.AddUserRequest) (*percutaneous.Response, error) { - var v validator.GroupValidator + var v validator.GroupDeleteValidator if fail := l.checkParams(in, &v); fail != nil { return fail, nil } @@ -40,7 +40,6 @@ func (l *UserDeleteLogic) UserDelete(in *percutaneous.AddUserRequest) (*percutan return l.fail(utils.ErrorNoLoginInfo) } w := modelbase.Params{Eq: map[string]string{ - "host_code": in.HostCode, "host_user_id": strconv.FormatInt(in.UserId, utils.NumberTen), "user_id": strconv.FormatInt(adminInfo.ID, utils.NumberTen), }} @@ -52,9 +51,6 @@ func (l *UserDeleteLogic) UserDelete(in *percutaneous.AddUserRequest) (*percutan return l.fail(utils.Fail) } if info.Id > utils.NumberZero { - info.HostCode = in.HostCode - info.HostUserId = in.UserId - info.UserId = adminInfo.ID info.Status = utils.StatusFail _, err = model.GroupModel{}.Init().Edit(w, &info) if err != nil { diff --git a/services/percutaneous/internal/logic/userStoreDeleteLogic.go b/services/percutaneous/internal/logic/userStoreDeleteLogic.go new file mode 100644 index 0000000..75b611a --- /dev/null +++ b/services/percutaneous/internal/logic/userStoreDeleteLogic.go @@ -0,0 +1,67 @@ +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 UserStoreDeleteLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewUserStoreDeleteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserStoreDeleteLogic { + return &UserStoreDeleteLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *UserStoreDeleteLogic) UserStoreDelete(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(in.UserId, utils.NumberTen), + "user_id": strconv.FormatInt(adminInfo.ID, 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.NumberZero { + info.HostCode = in.HostCode + info.HostUserId = in.UserId + info.UserId = adminInfo.ID + info.Status = utils.StatusFail + _, err = model.GroupModel{}.Init().Edit(w, &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/userStoreItemsLogic.go b/services/percutaneous/internal/logic/userStoreItemsLogic.go new file mode 100644 index 0000000..4471ac0 --- /dev/null +++ b/services/percutaneous/internal/logic/userStoreItemsLogic.go @@ -0,0 +1,104 @@ +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 UserStoreItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewUserStoreItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserStoreItemsLogic { + return &UserStoreItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *UserStoreItemsLogic) UserStoreItems(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 *UserStoreItemsLogic) 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 + } +} diff --git a/services/percutaneous/internal/server/percutaneousServer.go b/services/percutaneous/internal/server/percutaneousServer.go index 8c34584..d9dc27e 100644 --- a/services/percutaneous/internal/server/percutaneousServer.go +++ b/services/percutaneous/internal/server/percutaneousServer.go @@ -53,11 +53,26 @@ func (s *PercutaneousServer) UserItems(ctx context.Context, in *percutaneous.Use return l.UserItems(in) } +func (s *PercutaneousServer) UserStoreItems(ctx context.Context, in *percutaneous.UserItemsRequest) (*percutaneous.Response, error) { + l := logic.NewUserStoreItemsLogic(ctx, s.svcCtx) + return l.UserStoreItems(in) +} + func (s *PercutaneousServer) UserDelete(ctx context.Context, in *percutaneous.AddUserRequest) (*percutaneous.Response, error) { l := logic.NewUserDeleteLogic(ctx, s.svcCtx) return l.UserDelete(in) } +func (s *PercutaneousServer) UserStoreDelete(ctx context.Context, in *percutaneous.AddUserRequest) (*percutaneous.Response, error) { + l := logic.NewUserStoreDeleteLogic(ctx, s.svcCtx) + return l.UserStoreDelete(in) +} + +func (s *PercutaneousServer) UsedStoreLog(ctx context.Context, in *percutaneous.UsedLogRequest) (*percutaneous.Response, error) { + l := logic.NewUsedStoreLogLogic(ctx, s.svcCtx) + return l.UsedStoreLog(in) +} + // 使用指南 func (s *PercutaneousServer) SetPosition(ctx context.Context, in *percutaneous.SetPositionRequest) (*percutaneous.Response, error) { l := logic.NewSetPositionLogic(ctx, s.svcCtx) diff --git a/services/percutaneous/percutaneousclient/percutaneous.go b/services/percutaneous/percutaneousclient/percutaneous.go index 046fc3c..ae8f4a4 100644 --- a/services/percutaneous/percutaneousclient/percutaneous.go +++ b/services/percutaneous/percutaneousclient/percutaneous.go @@ -35,7 +35,10 @@ type ( 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) + UserStoreItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) UserDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UserStoreDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) + UsedStoreLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) // 使用指南 SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) @@ -85,11 +88,26 @@ func (m *defaultPercutaneous) UserItems(ctx context.Context, in *UserItemsReques return client.UserItems(ctx, in, opts...) } +func (m *defaultPercutaneous) UserStoreItems(ctx context.Context, in *UserItemsRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.UserStoreItems(ctx, in, opts...) +} + func (m *defaultPercutaneous) UserDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) { client := percutaneous.NewPercutaneousClient(m.cli.Conn()) return client.UserDelete(ctx, in, opts...) } +func (m *defaultPercutaneous) UserStoreDelete(ctx context.Context, in *AddUserRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.UserStoreDelete(ctx, in, opts...) +} + +func (m *defaultPercutaneous) UsedStoreLog(ctx context.Context, in *UsedLogRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.UsedStoreLog(ctx, in, opts...) +} + // 使用指南 func (m *defaultPercutaneous) SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) { client := percutaneous.NewPercutaneousClient(m.cli.Conn()) diff --git a/services/percutaneous/validator/group.go b/services/percutaneous/validator/group.go index 3277b5d..1a31afd 100644 --- a/services/percutaneous/validator/group.go +++ b/services/percutaneous/validator/group.go @@ -16,6 +16,17 @@ func (p GroupValidator) GetMessage() validate.ValidatorMessages { } } +type GroupDeleteValidator struct { + UserId int64 `validate:"required"` +} + +// GetMessage 查看列表 - 提示消息 +func (p GroupDeleteValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "UserId.required": "用户不能为空", + } +} + type GroupItemsValidator struct { HostCode string `validate:"required"` } @@ -26,3 +37,14 @@ func (p GroupItemsValidator) GetMessage() validate.ValidatorMessages { "HostCode.required": "设备不能为空", } } + +type UsedStoreLogValidator struct { + HostCode string `validate:"required"` +} + +// GetMessage 查看列表 - 提示消息 +func (p UsedStoreLogValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "HostCode.required": "设备不能为空", + } +}