From 46c37959230df500a574faf55bba79ce59496ac0 Mon Sep 17 00:00:00 2001 From: gjs Date: Thu, 22 Oct 2026 15:07:03 +0800 Subject: [PATCH 1/3] test --- .../equipment/internal/logic/authorizationStoreItemsLogic.go | 1 + 1 file changed, 1 insertion(+) diff --git a/services/equipment/internal/logic/authorizationStoreItemsLogic.go b/services/equipment/internal/logic/authorizationStoreItemsLogic.go index ccff346..f8a14fa 100644 --- a/services/equipment/internal/logic/authorizationStoreItemsLogic.go +++ b/services/equipment/internal/logic/authorizationStoreItemsLogic.go @@ -49,6 +49,7 @@ func (l *AuthorizationStoreItemsLogic) AuthorizationStoreItems(in *equipment.Emp for _, v := range info { ids[v.UserId] = v.UserId } + var items []dao.AuthorizationRecordStoreItems if len(ids) < utils.NumberOne { return l.ok(items) From 0346297803b99c8fd664ba8c861ee6f1a8b04d5f Mon Sep 17 00:00:00 2001 From: gjs Date: Thu, 22 Oct 2026 15:12:11 +0800 Subject: [PATCH 2/3] test --- .../equipment/internal/logic/authorizationStoreItemsLogic.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/equipment/internal/logic/authorizationStoreItemsLogic.go b/services/equipment/internal/logic/authorizationStoreItemsLogic.go index f8a14fa..2ee69fb 100644 --- a/services/equipment/internal/logic/authorizationStoreItemsLogic.go +++ b/services/equipment/internal/logic/authorizationStoreItemsLogic.go @@ -49,7 +49,7 @@ func (l *AuthorizationStoreItemsLogic) AuthorizationStoreItems(in *equipment.Emp for _, v := range info { ids[v.UserId] = v.UserId } - + var items []dao.AuthorizationRecordStoreItems if len(ids) < utils.NumberOne { return l.ok(items) @@ -62,6 +62,7 @@ func (l *AuthorizationStoreItemsLogic) AuthorizationStoreItems(in *equipment.Emp userItems := svc.GetUsers(idsSlice, l.svcCtx.UserSvcName) userIdItems := make(map[int64]dao.AuthorizationRecordStoreItems) + for _, val := range userItems { ww := modelbase.Params{Eq: map[string]string{ "store_id": strconv.Itoa(int(adminInfo.BizId)), From 38cffc2f2ab6d02078e64a364323cd42cca51ae1 Mon Sep 17 00:00:00 2001 From: gjs Date: Fri, 23 Oct 2026 13:20:18 +0800 Subject: [PATCH 3/3] =?UTF-8?q?add=20ws=20=E9=93=BE=E6=8E=A5=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rpc/percutaneous/pb/percutaneous.pb.go | 46 +++++++---- rpc/percutaneous/pb/percutaneous_grpc.pb.go | 38 +++++++++ rpc/percutaneous/percutaneous.pb | Bin 15216 -> 15358 bytes rpc/percutaneous/percutaneous.proto | 8 ++ .../logic/authorizationStoreItemsLogic.go | 2 +- services/percutaneous/internal/logic/base.go | 5 ++ .../internal/logic/getWsCodeLogic.go | 18 ++-- .../internal/logic/setPositionLogic.go | 4 +- .../internal/logic/wsClientStatusLogic.go | 77 ++++++++++++++++++ .../internal/server/percutaneousServer.go | 5 ++ .../percutaneousclient/percutaneous.go | 6 ++ 11 files changed, 182 insertions(+), 27 deletions(-) create mode 100644 services/percutaneous/internal/logic/wsClientStatusLogic.go diff --git a/rpc/percutaneous/pb/percutaneous.pb.go b/rpc/percutaneous/pb/percutaneous.pb.go index d837c53..e7e4854 100644 --- a/rpc/percutaneous/pb/percutaneous.pb.go +++ b/rpc/percutaneous/pb/percutaneous.pb.go @@ -569,6 +569,7 @@ func (x *SetPositionRequest) GetSessionId() string { type GetWsCodeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` + UserId int64 `protobuf:"varint,2,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -610,6 +611,13 @@ func (x *GetWsCodeRequest) GetType() int32 { return 0 } +func (x *GetWsCodeRequest) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + type EmptyRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -729,12 +737,13 @@ const file_percutaneous_percutaneous_proto_rawDesc = "" + "\x12setPositionRequest\x12\x1a\n" + "\bposition\x18\x02 \x01(\x05R\bposition\x12\x1d\n" + "\n" + - "session_id\x18\x04 \x01(\tR\tsessionId\"&\n" + + "session_id\x18\x04 \x01(\tR\tsessionId\"?\n" + "\x10getWsCodeRequest\x12\x12\n" + - "\x04type\x18\x01 \x01(\x05R\x04type\"\x0e\n" + + "\x04type\x18\x01 \x01(\x05R\x04type\x12\x17\n" + + "\auser_id\x18\x02 \x01(\x03R\x06userId\"\x0e\n" + "\fEmptyRequest\",\n" + "\x0fWsStreamRequest\x12\x19\n" + - "\braw_body\x18\x01 \x01(\fR\arawBody2\xca\a\n" + + "\braw_body\x18\x01 \x01(\fR\arawBody2\xbf\b\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" + @@ -742,8 +751,9 @@ const file_percutaneous_percutaneous_proto_rawDesc = "" + "\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\x12u\n" + - "\vsetPosition\x12 .percutaneous.setPositionRequest\x1a\x16.percutaneous.Response\",\x82\xd3\xe4\x93\x02&:\x01*\x12!/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" + + "\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" + "\x0fWsAddUserStream\x12\x1d.percutaneous.WsStreamRequest\x1a\x1d.percutaneous.WsStreamRequest(\x010\x01B\x10Z\x0e./percutaneousb\x06proto3" var ( @@ -783,18 +793,20 @@ var file_percutaneous_percutaneous_proto_depIdxs = []int32{ 6, // 5: percutaneous.Percutaneous.UserItems:input_type -> percutaneous.UserItemsRequest 9, // 6: percutaneous.Percutaneous.setPosition:input_type -> percutaneous.setPositionRequest 10, // 7: percutaneous.Percutaneous.getWsCode:input_type -> percutaneous.getWsCodeRequest - 12, // 8: percutaneous.Percutaneous.WsAddUserStream:input_type -> percutaneous.WsStreamRequest - 4, // 9: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response - 4, // 10: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response - 4, // 11: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response - 4, // 12: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response - 4, // 13: percutaneous.Percutaneous.AddUser:output_type -> percutaneous.Response - 4, // 14: percutaneous.Percutaneous.UserItems:output_type -> percutaneous.Response - 4, // 15: percutaneous.Percutaneous.setPosition:output_type -> percutaneous.Response - 4, // 16: percutaneous.Percutaneous.getWsCode:output_type -> percutaneous.Response - 12, // 17: percutaneous.Percutaneous.WsAddUserStream:output_type -> percutaneous.WsStreamRequest - 9, // [9:18] is the sub-list for method output_type - 0, // [0:9] is the sub-list for method input_type + 10, // 8: percutaneous.Percutaneous.WsClientStatus:input_type -> percutaneous.getWsCodeRequest + 12, // 9: percutaneous.Percutaneous.WsAddUserStream:input_type -> percutaneous.WsStreamRequest + 4, // 10: percutaneous.Percutaneous.WifiCheck:output_type -> percutaneous.Response + 4, // 11: percutaneous.Percutaneous.WifiSet:output_type -> percutaneous.Response + 4, // 12: percutaneous.Percutaneous.Use:output_type -> percutaneous.Response + 4, // 13: percutaneous.Percutaneous.UsedLog:output_type -> percutaneous.Response + 4, // 14: percutaneous.Percutaneous.AddUser:output_type -> percutaneous.Response + 4, // 15: percutaneous.Percutaneous.UserItems:output_type -> percutaneous.Response + 4, // 16: percutaneous.Percutaneous.setPosition:output_type -> percutaneous.Response + 4, // 17: percutaneous.Percutaneous.getWsCode:output_type -> percutaneous.Response + 4, // 18: percutaneous.Percutaneous.WsClientStatus:output_type -> percutaneous.Response + 12, // 19: percutaneous.Percutaneous.WsAddUserStream:output_type -> percutaneous.WsStreamRequest + 10, // [10:20] is the sub-list for method output_type + 0, // [0:10] 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 754ee9a..aa98a9f 100644 --- a/rpc/percutaneous/pb/percutaneous_grpc.pb.go +++ b/rpc/percutaneous/pb/percutaneous_grpc.pb.go @@ -27,6 +27,7 @@ const ( Percutaneous_UserItems_FullMethodName = "/percutaneous.Percutaneous/UserItems" Percutaneous_SetPosition_FullMethodName = "/percutaneous.Percutaneous/setPosition" Percutaneous_GetWsCode_FullMethodName = "/percutaneous.Percutaneous/getWsCode" + Percutaneous_WsClientStatus_FullMethodName = "/percutaneous.Percutaneous/WsClientStatus" Percutaneous_WsAddUserStream_FullMethodName = "/percutaneous.Percutaneous/WsAddUserStream" ) @@ -43,6 +44,7 @@ type PercutaneousClient interface { // 使用指南 SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) + WsClientStatus(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) // 添加用户 WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[WsStreamRequest, WsStreamRequest], error) } @@ -135,6 +137,16 @@ func (c *percutaneousClient) GetWsCode(ctx context.Context, in *GetWsCodeRequest return out, nil } +func (c *percutaneousClient) WsClientStatus(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Percutaneous_WsClientStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *percutaneousClient) WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[WsStreamRequest, WsStreamRequest], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) stream, err := c.cc.NewStream(ctx, &Percutaneous_ServiceDesc.Streams[0], Percutaneous_WsAddUserStream_FullMethodName, cOpts...) @@ -161,6 +173,7 @@ type PercutaneousServer interface { // 使用指南 SetPosition(context.Context, *SetPositionRequest) (*Response, error) GetWsCode(context.Context, *GetWsCodeRequest) (*Response, error) + WsClientStatus(context.Context, *GetWsCodeRequest) (*Response, error) // 添加用户 WsAddUserStream(grpc.BidiStreamingServer[WsStreamRequest, WsStreamRequest]) error mustEmbedUnimplementedPercutaneousServer() @@ -197,6 +210,9 @@ func (UnimplementedPercutaneousServer) SetPosition(context.Context, *SetPosition func (UnimplementedPercutaneousServer) GetWsCode(context.Context, *GetWsCodeRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method GetWsCode not implemented") } +func (UnimplementedPercutaneousServer) WsClientStatus(context.Context, *GetWsCodeRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method WsClientStatus not implemented") +} func (UnimplementedPercutaneousServer) WsAddUserStream(grpc.BidiStreamingServer[WsStreamRequest, WsStreamRequest]) error { return status.Error(codes.Unimplemented, "method WsAddUserStream not implemented") } @@ -365,6 +381,24 @@ func _Percutaneous_GetWsCode_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Percutaneous_WsClientStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetWsCodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).WsClientStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_WsClientStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).WsClientStatus(ctx, req.(*GetWsCodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Percutaneous_WsAddUserStream_Handler(srv interface{}, stream grpc.ServerStream) error { return srv.(PercutaneousServer).WsAddUserStream(&grpc.GenericServerStream[WsStreamRequest, WsStreamRequest]{ServerStream: stream}) } @@ -411,6 +445,10 @@ var Percutaneous_ServiceDesc = grpc.ServiceDesc{ MethodName: "getWsCode", Handler: _Percutaneous_GetWsCode_Handler, }, + { + MethodName: "WsClientStatus", + Handler: _Percutaneous_WsClientStatus_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/rpc/percutaneous/percutaneous.pb b/rpc/percutaneous/percutaneous.pb index ede54b0d0092bdcf38bd5cdba4ca3be3af667adc..c6a20a1119dab179a47150ac7b7c7edb7d4ae84f 100644 GIT binary patch delta 98 zcmexR_OE=yV`HY70-K*2+cPuTPgXTooBYUBYO;^H9n*e}%{}H1n3$9lCqJ|jo!o3y xFIddQ7hdd~lbM=V5?qp4Qd&HDzLh1XX4B;-lbMu- utils.NumberTen { + data := "ok" + keys := []string{WsTypeApp, WsTypeOperation} + + for _, k := range keys { + key = utils.MD5Encrypt(fmt.Sprintf("%d%s%s", id, dao.WsCode, k)) + redisKey = pkgws.RedisKeyQRSession + key + if err = pkgws.Publish(l.ctx, redisKey, pkgws.Success(data)); err != nil { + l.Errorf("ws client publish: %v", err) + return l.fail(utils.Fail) + } + redis.Client.Del(l.ctx, redisKey).Result() + } + return l.ok(utils.NumberOne) + } + + if err := redis.Client.Set(l.ctx, redisKey, redisKey, pkgws.SessionTTL).Err(); err != nil { + return l.fail(utils.Fail) + } + + return l.ok(utils.NumberOne) +} diff --git a/services/percutaneous/internal/server/percutaneousServer.go b/services/percutaneous/internal/server/percutaneousServer.go index e064d9b..fb91816 100644 --- a/services/percutaneous/internal/server/percutaneousServer.go +++ b/services/percutaneous/internal/server/percutaneousServer.go @@ -64,6 +64,11 @@ func (s *PercutaneousServer) GetWsCode(ctx context.Context, in *percutaneous.Get return l.GetWsCode(in) } +func (s *PercutaneousServer) WsClientStatus(ctx context.Context, in *percutaneous.GetWsCodeRequest) (*percutaneous.Response, error) { + l := logic.NewWsClientStatusLogic(ctx, s.svcCtx) + return l.WsClientStatus(in) +} + // 添加用户 func (s *PercutaneousServer) WsAddUserStream(stream percutaneous.Percutaneous_WsAddUserStreamServer) error { l := logic.NewWsAddUserStreamLogic(stream.Context(), s.svcCtx) diff --git a/services/percutaneous/percutaneousclient/percutaneous.go b/services/percutaneous/percutaneousclient/percutaneous.go index cfa323c..914734a 100644 --- a/services/percutaneous/percutaneousclient/percutaneous.go +++ b/services/percutaneous/percutaneousclient/percutaneous.go @@ -38,6 +38,7 @@ type ( // 使用指南 SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) + WsClientStatus(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) // 添加用户 WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (percutaneous.Percutaneous_WsAddUserStreamClient, error) } @@ -94,6 +95,11 @@ func (m *defaultPercutaneous) GetWsCode(ctx context.Context, in *GetWsCodeReques return client.GetWsCode(ctx, in, opts...) } +func (m *defaultPercutaneous) WsClientStatus(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.WsClientStatus(ctx, in, opts...) +} + // 添加用户 func (m *defaultPercutaneous) WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (percutaneous.Percutaneous_WsAddUserStreamClient, error) { client := percutaneous.NewPercutaneousClient(m.cli.Conn())