From 70b576df1107b3f8066074d993f95db7d7560553 Mon Sep 17 00:00:00 2001 From: gjs Date: Thu, 22 Oct 2026 10:49:06 +0800 Subject: [PATCH] admin --- pkg/ws/types.go | 8 +- rpc/equipment/equipment.pb | Bin 20925 -> 21244 bytes rpc/equipment/equipment.proto | 20 + rpc/equipment/pb/equipment.pb.go | 426 ++++++++++-------- rpc/equipment/pb/equipment_grpc.pb.go | 150 ++++-- rpc/percutaneous/pb/percutaneous.pb.go | 174 +++++-- rpc/percutaneous/pb/percutaneous_grpc.pb.go | 78 ++++ rpc/percutaneous/percutaneous.pb | Bin 14865 -> 15216 bytes rpc/percutaneous/percutaneous.proto | 23 + .../equipment/equipmentclient/equipment.go | 15 + .../internal/dao/authorizationRecord.go | 13 + .../internal/logic/apiStoreCheckMaskLogic.go | 106 +++++ .../logic/authorizationStoreItemsLogic.go | 105 +++++ .../internal/server/equipmentServer.go | 11 + .../equipment/internal/svc/grpcService.go | 17 + services/equipment/validator/mask.go | 13 + services/percutaneous/internal/dao/group.go | 2 + .../internal/logic/getWsCodeLogic.go | 43 ++ .../internal/logic/setPositionLogic.go | 47 ++ .../internal/server/percutaneousServer.go | 11 + .../percutaneousclient/percutaneous.go | 38 +- services/ws/internal/logic/connectLogic.go | 6 + 22 files changed, 1042 insertions(+), 264 deletions(-) create mode 100644 services/equipment/internal/logic/apiStoreCheckMaskLogic.go create mode 100644 services/equipment/internal/logic/authorizationStoreItemsLogic.go create mode 100644 services/percutaneous/internal/logic/getWsCodeLogic.go create mode 100644 services/percutaneous/internal/logic/setPositionLogic.go diff --git a/pkg/ws/types.go b/pkg/ws/types.go index e99db1f..b030aa6 100644 --- a/pkg/ws/types.go +++ b/pkg/ws/types.go @@ -12,13 +12,15 @@ const ( RedisKeyTaskLights = "task:lights:" RedisChannelQRPush = "ws:qr:push" - StatusPending = 1 // 待扫码 - StatusScanned = 2 // 已扫码未登录 - StatusLogined = 3 // 已扫码已登录 + StatusPending = 1 // 待扫码 + StatusScanned = 2 // 已扫码未登录 + StatusLogined = 3 // 已扫码已登录 + StatusUsePosition = 4 //使用位置 WsTypeLogin = 1 // 同意登录 WsTypeScanned = 2 // 拒绝授权 / 拒绝登录 WsTypeScan = 3 // 进入扫码页通知 + WsUsePosition = 4 //使用位置 SessionTTL = 5 * time.Minute diff --git a/rpc/equipment/equipment.pb b/rpc/equipment/equipment.pb index 24792fb5983196e7024a6ab1755dd0ca4e9770cd..9f39d9c861a3126cfda9a14daa8170ff2f224f03 100644 GIT binary patch delta 211 zcmdnHnDNh2#tn~+nWo!qerl}4%;CW$5?qpBlsfr^nTEKKI2U_qacWU~W{L!p0;2|V z5F3cQna@0uhiQ}C=1k`{9?=>uamUhG7a{5**E9)A-~>^GFCscBsI6#icw3bluOXDAQP@8K<%4f`(I)N033x%a{vGU delta 35 tcmV+;0Nnrlr2)O80kGpU0@ypV equipment.ItemsRequest 4, // 1: equipment.Equipment.Info:input_type -> equipment.IdRequest 1, // 2: equipment.Equipment.Create:input_type -> equipment.CreateRequest 2, // 3: equipment.Equipment.Edit:input_type -> equipment.EditRequest - 6, // 4: equipment.Equipment.Status:input_type -> equipment.StatusRequest - 7, // 5: equipment.Equipment.MaskItems:input_type -> equipment.MaskItemsRequest - 8, // 6: equipment.Equipment.BeansItems:input_type -> equipment.BeansItemsRequest - 27, // 7: equipment.Equipment.BindExpiry:input_type -> equipment.BindExpiryRequest - 31, // 8: equipment.Equipment.UserBind:input_type -> equipment.UserBindRequest - 24, // 9: equipment.Equipment.ApiMaskAdd:input_type -> equipment.ApiMaskAddRequest - 19, // 10: equipment.Equipment.ApiBindItems:input_type -> equipment.EmptyRequest - 18, // 11: equipment.Equipment.ApiUnBind:input_type -> equipment.ApiUnBindRequest - 9, // 12: equipment.Equipment.ApiBindAdd:input_type -> equipment.ApiBindAddRequest - 20, // 13: equipment.Equipment.ApiBindExpiry:input_type -> equipment.ApiBindExpiryRequest - 21, // 14: equipment.Equipment.ApiBindExpiryGet:input_type -> equipment.ApiBindExpiryGetRequest - 23, // 15: equipment.Equipment.ApiBeansAdd:input_type -> equipment.ApiBeansAddRequest - 19, // 16: equipment.Equipment.ApiBeansLast:input_type -> equipment.EmptyRequest - 22, // 17: equipment.Equipment.ApiBeansItems:input_type -> equipment.ApiBeansItemsRequest - 25, // 18: equipment.Equipment.ApiMaskUse:input_type -> equipment.ApiMaskUseRequest - 26, // 19: equipment.Equipment.ApiMaskUsedItems:input_type -> equipment.ApiMaskUsedItemsRequest - 25, // 20: equipment.Equipment.ApiMaskStoreUse:input_type -> equipment.ApiMaskUseRequest - 26, // 21: equipment.Equipment.ApiMaskStoreUseItems:input_type -> equipment.ApiMaskUsedItemsRequest - 32, // 22: equipment.Equipment.ApiVersion:input_type -> equipment.ApiVersionRequest - 12, // 23: equipment.Equipment.ApiBindInfo:input_type -> equipment.ApiBindInfoRequest - 13, // 24: equipment.Equipment.ApiBindUpdate:input_type -> equipment.ApiBindUpdateRequest + 7, // 4: equipment.Equipment.Status:input_type -> equipment.StatusRequest + 8, // 5: equipment.Equipment.MaskItems:input_type -> equipment.MaskItemsRequest + 9, // 6: equipment.Equipment.BeansItems:input_type -> equipment.BeansItemsRequest + 28, // 7: equipment.Equipment.BindExpiry:input_type -> equipment.BindExpiryRequest + 32, // 8: equipment.Equipment.UserBind:input_type -> equipment.UserBindRequest + 25, // 9: equipment.Equipment.ApiMaskAdd:input_type -> equipment.ApiMaskAddRequest + 20, // 10: equipment.Equipment.ApiBindItems:input_type -> equipment.EmptyRequest + 19, // 11: equipment.Equipment.ApiUnBind:input_type -> equipment.ApiUnBindRequest + 10, // 12: equipment.Equipment.ApiBindAdd:input_type -> equipment.ApiBindAddRequest + 21, // 13: equipment.Equipment.ApiBindExpiry:input_type -> equipment.ApiBindExpiryRequest + 22, // 14: equipment.Equipment.ApiBindExpiryGet:input_type -> equipment.ApiBindExpiryGetRequest + 24, // 15: equipment.Equipment.ApiBeansAdd:input_type -> equipment.ApiBeansAddRequest + 20, // 16: equipment.Equipment.ApiBeansLast:input_type -> equipment.EmptyRequest + 23, // 17: equipment.Equipment.ApiBeansItems:input_type -> equipment.ApiBeansItemsRequest + 26, // 18: equipment.Equipment.ApiMaskUse:input_type -> equipment.ApiMaskUseRequest + 27, // 19: equipment.Equipment.ApiMaskUsedItems:input_type -> equipment.ApiMaskUsedItemsRequest + 26, // 20: equipment.Equipment.ApiMaskStoreUse:input_type -> equipment.ApiMaskUseRequest + 27, // 21: equipment.Equipment.ApiMaskStoreUseItems:input_type -> equipment.ApiMaskUsedItemsRequest + 33, // 22: equipment.Equipment.ApiVersion:input_type -> equipment.ApiVersionRequest + 13, // 23: equipment.Equipment.ApiBindInfo:input_type -> equipment.ApiBindInfoRequest + 14, // 24: equipment.Equipment.ApiBindUpdate:input_type -> equipment.ApiBindUpdateRequest 5, // 25: equipment.Equipment.ApiCheckMask:input_type -> equipment.IdStringRequest - 14, // 26: equipment.Equipment.ApiEditName:input_type -> equipment.ApiEditNameRequest - 15, // 27: equipment.Equipment.AuthorizationBind:input_type -> equipment.AuthorizationBindRequest - 16, // 28: equipment.Equipment.AuthorizationCancel:input_type -> equipment.AuthorizationCancelRequest - 17, // 29: equipment.Equipment.AuthorizationControl:input_type -> equipment.AuthorizationControlRequest - 19, // 30: equipment.Equipment.AuthorizationItems:input_type -> equipment.EmptyRequest - 19, // 31: equipment.Equipment.AuthorizationCode:input_type -> equipment.EmptyRequest - 10, // 32: equipment.Equipment.InternalBindAdd:input_type -> equipment.InternalBindAddRequest - 11, // 33: equipment.Equipment.InternalBindInfo:input_type -> equipment.InternalBindInfoRequest - 28, // 34: equipment.Equipment.InternalUserAdd:input_type -> equipment.InternalUserInfoRequest - 28, // 35: equipment.Equipment.InternalUserEditNumber:input_type -> equipment.InternalUserInfoRequest - 0, // 36: equipment.Equipment.Items:output_type -> equipment.Response - 0, // 37: equipment.Equipment.Info:output_type -> equipment.Response - 0, // 38: equipment.Equipment.Create:output_type -> equipment.Response - 0, // 39: equipment.Equipment.Edit:output_type -> equipment.Response - 0, // 40: equipment.Equipment.Status:output_type -> equipment.Response - 0, // 41: equipment.Equipment.MaskItems:output_type -> equipment.Response - 0, // 42: equipment.Equipment.BeansItems:output_type -> equipment.Response - 0, // 43: equipment.Equipment.BindExpiry:output_type -> equipment.Response - 0, // 44: equipment.Equipment.UserBind:output_type -> equipment.Response - 0, // 45: equipment.Equipment.ApiMaskAdd:output_type -> equipment.Response - 0, // 46: equipment.Equipment.ApiBindItems:output_type -> equipment.Response - 0, // 47: equipment.Equipment.ApiUnBind:output_type -> equipment.Response - 0, // 48: equipment.Equipment.ApiBindAdd:output_type -> equipment.Response - 0, // 49: equipment.Equipment.ApiBindExpiry:output_type -> equipment.Response - 0, // 50: equipment.Equipment.ApiBindExpiryGet:output_type -> equipment.Response - 0, // 51: equipment.Equipment.ApiBeansAdd:output_type -> equipment.Response - 0, // 52: equipment.Equipment.ApiBeansLast:output_type -> equipment.Response - 0, // 53: equipment.Equipment.ApiBeansItems:output_type -> equipment.Response - 0, // 54: equipment.Equipment.ApiMaskUse:output_type -> equipment.Response - 0, // 55: equipment.Equipment.ApiMaskUsedItems:output_type -> equipment.Response - 0, // 56: equipment.Equipment.ApiMaskStoreUse:output_type -> equipment.Response - 0, // 57: equipment.Equipment.ApiMaskStoreUseItems:output_type -> equipment.Response - 0, // 58: equipment.Equipment.ApiVersion:output_type -> equipment.Response - 0, // 59: equipment.Equipment.ApiBindInfo:output_type -> equipment.Response - 0, // 60: equipment.Equipment.ApiBindUpdate:output_type -> equipment.Response - 0, // 61: equipment.Equipment.ApiCheckMask:output_type -> equipment.Response - 0, // 62: equipment.Equipment.ApiEditName:output_type -> equipment.Response - 0, // 63: equipment.Equipment.AuthorizationBind:output_type -> equipment.Response - 0, // 64: equipment.Equipment.AuthorizationCancel:output_type -> equipment.Response - 0, // 65: equipment.Equipment.AuthorizationControl:output_type -> equipment.Response - 0, // 66: equipment.Equipment.AuthorizationItems:output_type -> equipment.Response - 0, // 67: equipment.Equipment.AuthorizationCode:output_type -> equipment.Response - 0, // 68: equipment.Equipment.InternalBindAdd:output_type -> equipment.Response - 0, // 69: equipment.Equipment.InternalBindInfo:output_type -> equipment.Response - 29, // 70: equipment.Equipment.InternalUserAdd:output_type -> equipment.InternalResponse - 29, // 71: equipment.Equipment.InternalUserEditNumber:output_type -> equipment.InternalResponse - 36, // [36:72] is the sub-list for method output_type - 0, // [0:36] is the sub-list for method input_type + 15, // 26: equipment.Equipment.ApiEditName:input_type -> equipment.ApiEditNameRequest + 16, // 27: equipment.Equipment.AuthorizationBind:input_type -> equipment.AuthorizationBindRequest + 17, // 28: equipment.Equipment.AuthorizationCancel:input_type -> equipment.AuthorizationCancelRequest + 18, // 29: equipment.Equipment.AuthorizationControl:input_type -> equipment.AuthorizationControlRequest + 20, // 30: equipment.Equipment.AuthorizationItems:input_type -> equipment.EmptyRequest + 20, // 31: equipment.Equipment.AuthorizationStoreItems:input_type -> equipment.EmptyRequest + 6, // 32: equipment.Equipment.ApiStoreCheckMask:input_type -> equipment.StoreIdStringRequest + 20, // 33: equipment.Equipment.AuthorizationCode:input_type -> equipment.EmptyRequest + 11, // 34: equipment.Equipment.InternalBindAdd:input_type -> equipment.InternalBindAddRequest + 12, // 35: equipment.Equipment.InternalBindInfo:input_type -> equipment.InternalBindInfoRequest + 29, // 36: equipment.Equipment.InternalUserAdd:input_type -> equipment.InternalUserInfoRequest + 29, // 37: equipment.Equipment.InternalUserEditNumber:input_type -> equipment.InternalUserInfoRequest + 0, // 38: equipment.Equipment.Items:output_type -> equipment.Response + 0, // 39: equipment.Equipment.Info:output_type -> equipment.Response + 0, // 40: equipment.Equipment.Create:output_type -> equipment.Response + 0, // 41: equipment.Equipment.Edit:output_type -> equipment.Response + 0, // 42: equipment.Equipment.Status:output_type -> equipment.Response + 0, // 43: equipment.Equipment.MaskItems:output_type -> equipment.Response + 0, // 44: equipment.Equipment.BeansItems:output_type -> equipment.Response + 0, // 45: equipment.Equipment.BindExpiry:output_type -> equipment.Response + 0, // 46: equipment.Equipment.UserBind:output_type -> equipment.Response + 0, // 47: equipment.Equipment.ApiMaskAdd:output_type -> equipment.Response + 0, // 48: equipment.Equipment.ApiBindItems:output_type -> equipment.Response + 0, // 49: equipment.Equipment.ApiUnBind:output_type -> equipment.Response + 0, // 50: equipment.Equipment.ApiBindAdd:output_type -> equipment.Response + 0, // 51: equipment.Equipment.ApiBindExpiry:output_type -> equipment.Response + 0, // 52: equipment.Equipment.ApiBindExpiryGet:output_type -> equipment.Response + 0, // 53: equipment.Equipment.ApiBeansAdd:output_type -> equipment.Response + 0, // 54: equipment.Equipment.ApiBeansLast:output_type -> equipment.Response + 0, // 55: equipment.Equipment.ApiBeansItems:output_type -> equipment.Response + 0, // 56: equipment.Equipment.ApiMaskUse:output_type -> equipment.Response + 0, // 57: equipment.Equipment.ApiMaskUsedItems:output_type -> equipment.Response + 0, // 58: equipment.Equipment.ApiMaskStoreUse:output_type -> equipment.Response + 0, // 59: equipment.Equipment.ApiMaskStoreUseItems:output_type -> equipment.Response + 0, // 60: equipment.Equipment.ApiVersion:output_type -> equipment.Response + 0, // 61: equipment.Equipment.ApiBindInfo:output_type -> equipment.Response + 0, // 62: equipment.Equipment.ApiBindUpdate:output_type -> equipment.Response + 0, // 63: equipment.Equipment.ApiCheckMask:output_type -> equipment.Response + 0, // 64: equipment.Equipment.ApiEditName:output_type -> equipment.Response + 0, // 65: equipment.Equipment.AuthorizationBind:output_type -> equipment.Response + 0, // 66: equipment.Equipment.AuthorizationCancel:output_type -> equipment.Response + 0, // 67: equipment.Equipment.AuthorizationControl:output_type -> equipment.Response + 0, // 68: equipment.Equipment.AuthorizationItems:output_type -> equipment.Response + 0, // 69: equipment.Equipment.AuthorizationStoreItems:output_type -> equipment.Response + 0, // 70: equipment.Equipment.ApiStoreCheckMask:output_type -> equipment.Response + 0, // 71: equipment.Equipment.AuthorizationCode:output_type -> equipment.Response + 0, // 72: equipment.Equipment.InternalBindAdd:output_type -> equipment.Response + 0, // 73: equipment.Equipment.InternalBindInfo:output_type -> equipment.Response + 30, // 74: equipment.Equipment.InternalUserAdd:output_type -> equipment.InternalResponse + 30, // 75: equipment.Equipment.InternalUserEditNumber:output_type -> equipment.InternalResponse + 38, // [38:76] is the sub-list for method output_type + 0, // [0:38] 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 @@ -2529,7 +2591,7 @@ func file_equipment_equipment_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_equipment_equipment_proto_rawDesc), len(file_equipment_equipment_proto_rawDesc)), NumEnums: 0, - NumMessages: 33, + NumMessages: 34, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/equipment/pb/equipment_grpc.pb.go b/rpc/equipment/pb/equipment_grpc.pb.go index 0f95c33..e561280 100644 --- a/rpc/equipment/pb/equipment_grpc.pb.go +++ b/rpc/equipment/pb/equipment_grpc.pb.go @@ -19,42 +19,44 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - Equipment_Items_FullMethodName = "/equipment.Equipment/Items" - Equipment_Info_FullMethodName = "/equipment.Equipment/Info" - Equipment_Create_FullMethodName = "/equipment.Equipment/Create" - Equipment_Edit_FullMethodName = "/equipment.Equipment/Edit" - Equipment_Status_FullMethodName = "/equipment.Equipment/Status" - Equipment_MaskItems_FullMethodName = "/equipment.Equipment/MaskItems" - Equipment_BeansItems_FullMethodName = "/equipment.Equipment/BeansItems" - Equipment_BindExpiry_FullMethodName = "/equipment.Equipment/BindExpiry" - Equipment_UserBind_FullMethodName = "/equipment.Equipment/UserBind" - Equipment_ApiMaskAdd_FullMethodName = "/equipment.Equipment/ApiMaskAdd" - Equipment_ApiBindItems_FullMethodName = "/equipment.Equipment/ApiBindItems" - Equipment_ApiUnBind_FullMethodName = "/equipment.Equipment/ApiUnBind" - Equipment_ApiBindAdd_FullMethodName = "/equipment.Equipment/ApiBindAdd" - Equipment_ApiBindExpiry_FullMethodName = "/equipment.Equipment/ApiBindExpiry" - Equipment_ApiBindExpiryGet_FullMethodName = "/equipment.Equipment/ApiBindExpiryGet" - Equipment_ApiBeansAdd_FullMethodName = "/equipment.Equipment/ApiBeansAdd" - Equipment_ApiBeansLast_FullMethodName = "/equipment.Equipment/ApiBeansLast" - Equipment_ApiBeansItems_FullMethodName = "/equipment.Equipment/ApiBeansItems" - Equipment_ApiMaskUse_FullMethodName = "/equipment.Equipment/ApiMaskUse" - Equipment_ApiMaskUsedItems_FullMethodName = "/equipment.Equipment/ApiMaskUsedItems" - Equipment_ApiMaskStoreUse_FullMethodName = "/equipment.Equipment/ApiMaskStoreUse" - Equipment_ApiMaskStoreUseItems_FullMethodName = "/equipment.Equipment/ApiMaskStoreUseItems" - Equipment_ApiVersion_FullMethodName = "/equipment.Equipment/ApiVersion" - Equipment_ApiBindInfo_FullMethodName = "/equipment.Equipment/ApiBindInfo" - Equipment_ApiBindUpdate_FullMethodName = "/equipment.Equipment/ApiBindUpdate" - Equipment_ApiCheckMask_FullMethodName = "/equipment.Equipment/ApiCheckMask" - Equipment_ApiEditName_FullMethodName = "/equipment.Equipment/ApiEditName" - Equipment_AuthorizationBind_FullMethodName = "/equipment.Equipment/AuthorizationBind" - Equipment_AuthorizationCancel_FullMethodName = "/equipment.Equipment/AuthorizationCancel" - Equipment_AuthorizationControl_FullMethodName = "/equipment.Equipment/AuthorizationControl" - Equipment_AuthorizationItems_FullMethodName = "/equipment.Equipment/AuthorizationItems" - Equipment_AuthorizationCode_FullMethodName = "/equipment.Equipment/AuthorizationCode" - Equipment_InternalBindAdd_FullMethodName = "/equipment.Equipment/InternalBindAdd" - Equipment_InternalBindInfo_FullMethodName = "/equipment.Equipment/InternalBindInfo" - Equipment_InternalUserAdd_FullMethodName = "/equipment.Equipment/InternalUserAdd" - Equipment_InternalUserEditNumber_FullMethodName = "/equipment.Equipment/InternalUserEditNumber" + Equipment_Items_FullMethodName = "/equipment.Equipment/Items" + Equipment_Info_FullMethodName = "/equipment.Equipment/Info" + Equipment_Create_FullMethodName = "/equipment.Equipment/Create" + Equipment_Edit_FullMethodName = "/equipment.Equipment/Edit" + Equipment_Status_FullMethodName = "/equipment.Equipment/Status" + Equipment_MaskItems_FullMethodName = "/equipment.Equipment/MaskItems" + Equipment_BeansItems_FullMethodName = "/equipment.Equipment/BeansItems" + Equipment_BindExpiry_FullMethodName = "/equipment.Equipment/BindExpiry" + Equipment_UserBind_FullMethodName = "/equipment.Equipment/UserBind" + Equipment_ApiMaskAdd_FullMethodName = "/equipment.Equipment/ApiMaskAdd" + Equipment_ApiBindItems_FullMethodName = "/equipment.Equipment/ApiBindItems" + Equipment_ApiUnBind_FullMethodName = "/equipment.Equipment/ApiUnBind" + Equipment_ApiBindAdd_FullMethodName = "/equipment.Equipment/ApiBindAdd" + Equipment_ApiBindExpiry_FullMethodName = "/equipment.Equipment/ApiBindExpiry" + Equipment_ApiBindExpiryGet_FullMethodName = "/equipment.Equipment/ApiBindExpiryGet" + Equipment_ApiBeansAdd_FullMethodName = "/equipment.Equipment/ApiBeansAdd" + Equipment_ApiBeansLast_FullMethodName = "/equipment.Equipment/ApiBeansLast" + Equipment_ApiBeansItems_FullMethodName = "/equipment.Equipment/ApiBeansItems" + Equipment_ApiMaskUse_FullMethodName = "/equipment.Equipment/ApiMaskUse" + Equipment_ApiMaskUsedItems_FullMethodName = "/equipment.Equipment/ApiMaskUsedItems" + Equipment_ApiMaskStoreUse_FullMethodName = "/equipment.Equipment/ApiMaskStoreUse" + Equipment_ApiMaskStoreUseItems_FullMethodName = "/equipment.Equipment/ApiMaskStoreUseItems" + Equipment_ApiVersion_FullMethodName = "/equipment.Equipment/ApiVersion" + Equipment_ApiBindInfo_FullMethodName = "/equipment.Equipment/ApiBindInfo" + Equipment_ApiBindUpdate_FullMethodName = "/equipment.Equipment/ApiBindUpdate" + Equipment_ApiCheckMask_FullMethodName = "/equipment.Equipment/ApiCheckMask" + Equipment_ApiEditName_FullMethodName = "/equipment.Equipment/ApiEditName" + Equipment_AuthorizationBind_FullMethodName = "/equipment.Equipment/AuthorizationBind" + Equipment_AuthorizationCancel_FullMethodName = "/equipment.Equipment/AuthorizationCancel" + Equipment_AuthorizationControl_FullMethodName = "/equipment.Equipment/AuthorizationControl" + Equipment_AuthorizationItems_FullMethodName = "/equipment.Equipment/AuthorizationItems" + Equipment_AuthorizationStoreItems_FullMethodName = "/equipment.Equipment/AuthorizationStoreItems" + Equipment_ApiStoreCheckMask_FullMethodName = "/equipment.Equipment/ApiStoreCheckMask" + Equipment_AuthorizationCode_FullMethodName = "/equipment.Equipment/AuthorizationCode" + Equipment_InternalBindAdd_FullMethodName = "/equipment.Equipment/InternalBindAdd" + Equipment_InternalBindInfo_FullMethodName = "/equipment.Equipment/InternalBindInfo" + Equipment_InternalUserAdd_FullMethodName = "/equipment.Equipment/InternalUserAdd" + Equipment_InternalUserEditNumber_FullMethodName = "/equipment.Equipment/InternalUserEditNumber" ) // EquipmentClient is the client API for Equipment service. @@ -97,6 +99,9 @@ type EquipmentClient interface { AuthorizationControl(ctx context.Context, in *AuthorizationControlRequest, opts ...grpc.CallOption) (*Response, error) // 用户端获取授权列表 AuthorizationItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) + // 门店端获取授权列表 + AuthorizationStoreItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) + ApiStoreCheckMask(ctx context.Context, in *StoreIdStringRequest, opts ...grpc.CallOption) (*Response, error) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error) InternalBindInfo(ctx context.Context, in *InternalBindInfoRequest, opts ...grpc.CallOption) (*Response, error) @@ -424,6 +429,26 @@ func (c *equipmentClient) AuthorizationItems(ctx context.Context, in *EmptyReque return out, nil } +func (c *equipmentClient) AuthorizationStoreItems(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, Equipment_AuthorizationStoreItems_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *equipmentClient) ApiStoreCheckMask(ctx context.Context, in *StoreIdStringRequest, opts ...grpc.CallOption) (*Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Response) + err := c.cc.Invoke(ctx, Equipment_ApiStoreCheckMask_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *equipmentClient) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Response) @@ -514,6 +539,9 @@ type EquipmentServer interface { AuthorizationControl(context.Context, *AuthorizationControlRequest) (*Response, error) // 用户端获取授权列表 AuthorizationItems(context.Context, *EmptyRequest) (*Response, error) + // 门店端获取授权列表 + AuthorizationStoreItems(context.Context, *EmptyRequest) (*Response, error) + ApiStoreCheckMask(context.Context, *StoreIdStringRequest) (*Response, error) AuthorizationCode(context.Context, *EmptyRequest) (*Response, error) InternalBindAdd(context.Context, *InternalBindAddRequest) (*Response, error) InternalBindInfo(context.Context, *InternalBindInfoRequest) (*Response, error) @@ -624,6 +652,12 @@ func (UnimplementedEquipmentServer) AuthorizationControl(context.Context, *Autho func (UnimplementedEquipmentServer) AuthorizationItems(context.Context, *EmptyRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method AuthorizationItems not implemented") } +func (UnimplementedEquipmentServer) AuthorizationStoreItems(context.Context, *EmptyRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method AuthorizationStoreItems not implemented") +} +func (UnimplementedEquipmentServer) ApiStoreCheckMask(context.Context, *StoreIdStringRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method ApiStoreCheckMask not implemented") +} func (UnimplementedEquipmentServer) AuthorizationCode(context.Context, *EmptyRequest) (*Response, error) { return nil, status.Error(codes.Unimplemented, "method AuthorizationCode not implemented") } @@ -1218,6 +1252,42 @@ func _Equipment_AuthorizationItems_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Equipment_AuthorizationStoreItems_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.(EquipmentServer).AuthorizationStoreItems(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Equipment_AuthorizationStoreItems_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EquipmentServer).AuthorizationStoreItems(ctx, req.(*EmptyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Equipment_ApiStoreCheckMask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreIdStringRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(EquipmentServer).ApiStoreCheckMask(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Equipment_ApiStoreCheckMask_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(EquipmentServer).ApiStoreCheckMask(ctx, req.(*StoreIdStringRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Equipment_AuthorizationCode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(EmptyRequest) if err := dec(in); err != nil { @@ -1439,6 +1509,14 @@ var Equipment_ServiceDesc = grpc.ServiceDesc{ MethodName: "AuthorizationItems", Handler: _Equipment_AuthorizationItems_Handler, }, + { + MethodName: "AuthorizationStoreItems", + Handler: _Equipment_AuthorizationStoreItems_Handler, + }, + { + MethodName: "ApiStoreCheckMask", + Handler: _Equipment_ApiStoreCheckMask_Handler, + }, { MethodName: "AuthorizationCode", Handler: _Equipment_AuthorizationCode_Handler, diff --git a/rpc/percutaneous/pb/percutaneous.pb.go b/rpc/percutaneous/pb/percutaneous.pb.go index 0231d65..d837c53 100644 --- a/rpc/percutaneous/pb/percutaneous.pb.go +++ b/rpc/percutaneous/pb/percutaneous.pb.go @@ -514,6 +514,102 @@ func (x *AddUserQRRequest) GetHostCode() string { return "" } +type SetPositionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Position int32 `protobuf:"varint,2,opt,name=position,proto3" json:"position,omitempty"` + SessionId string `protobuf:"bytes,4,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetPositionRequest) Reset() { + *x = SetPositionRequest{} + mi := &file_percutaneous_percutaneous_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetPositionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetPositionRequest) ProtoMessage() {} + +func (x *SetPositionRequest) ProtoReflect() protoreflect.Message { + mi := &file_percutaneous_percutaneous_proto_msgTypes[9] + 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 SetPositionRequest.ProtoReflect.Descriptor instead. +func (*SetPositionRequest) Descriptor() ([]byte, []int) { + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{9} +} + +func (x *SetPositionRequest) GetPosition() int32 { + if x != nil { + return x.Position + } + return 0 +} + +func (x *SetPositionRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +type GetWsCodeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type int32 `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetWsCodeRequest) Reset() { + *x = GetWsCodeRequest{} + mi := &file_percutaneous_percutaneous_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetWsCodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetWsCodeRequest) ProtoMessage() {} + +func (x *GetWsCodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_percutaneous_percutaneous_proto_msgTypes[10] + 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 GetWsCodeRequest.ProtoReflect.Descriptor instead. +func (*GetWsCodeRequest) Descriptor() ([]byte, []int) { + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{10} +} + +func (x *GetWsCodeRequest) GetType() int32 { + if x != nil { + return x.Type + } + return 0 +} + type EmptyRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -522,7 +618,7 @@ type EmptyRequest struct { func (x *EmptyRequest) Reset() { *x = EmptyRequest{} - mi := &file_percutaneous_percutaneous_proto_msgTypes[9] + mi := &file_percutaneous_percutaneous_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -534,7 +630,7 @@ func (x *EmptyRequest) String() string { func (*EmptyRequest) ProtoMessage() {} func (x *EmptyRequest) ProtoReflect() protoreflect.Message { - mi := &file_percutaneous_percutaneous_proto_msgTypes[9] + mi := &file_percutaneous_percutaneous_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -547,7 +643,7 @@ func (x *EmptyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EmptyRequest.ProtoReflect.Descriptor instead. func (*EmptyRequest) Descriptor() ([]byte, []int) { - return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{9} + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{11} } type WsStreamRequest struct { @@ -559,7 +655,7 @@ type WsStreamRequest struct { func (x *WsStreamRequest) Reset() { *x = WsStreamRequest{} - mi := &file_percutaneous_percutaneous_proto_msgTypes[10] + mi := &file_percutaneous_percutaneous_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -571,7 +667,7 @@ func (x *WsStreamRequest) String() string { func (*WsStreamRequest) ProtoMessage() {} func (x *WsStreamRequest) ProtoReflect() protoreflect.Message { - mi := &file_percutaneous_percutaneous_proto_msgTypes[10] + mi := &file_percutaneous_percutaneous_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -584,7 +680,7 @@ func (x *WsStreamRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WsStreamRequest.ProtoReflect.Descriptor instead. func (*WsStreamRequest) Descriptor() ([]byte, []int) { - return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{10} + return file_percutaneous_percutaneous_proto_rawDescGZIP(), []int{12} } func (x *WsStreamRequest) GetRawBody() []byte { @@ -629,17 +725,25 @@ const file_percutaneous_percutaneous_proto_rawDesc = "" + "\thost_code\x18\x01 \x01(\tR\bhostCode\x12\x1c\n" + "\tbluetooth\x18\x02 \x01(\tR\tbluetooth\"/\n" + "\x10AddUserQRRequest\x12\x1b\n" + - "\thost_code\x18\x01 \x01(\tR\bhostCode\"\x0e\n" + + "\thost_code\x18\x01 \x01(\tR\bhostCode\"O\n" + + "\x12setPositionRequest\x12\x1a\n" + + "\bposition\x18\x02 \x01(\x05R\bposition\x12\x1d\n" + + "\n" + + "session_id\x18\x04 \x01(\tR\tsessionId\"&\n" + + "\x10getWsCodeRequest\x12\x12\n" + + "\x04type\x18\x01 \x01(\x05R\x04type\"\x0e\n" + "\fEmptyRequest\",\n" + "\x0fWsStreamRequest\x12\x19\n" + - "\braw_body\x18\x01 \x01(\fR\arawBody2\xe4\x05\n" + + "\braw_body\x18\x01 \x01(\fR\arawBody2\xca\a\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\x12S\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" + "\x0fWsAddUserStream\x12\x1d.percutaneous.WsStreamRequest\x1a\x1d.percutaneous.WsStreamRequest(\x010\x01B\x10Z\x0e./percutaneousb\x06proto3" var ( @@ -654,19 +758,21 @@ func file_percutaneous_percutaneous_proto_rawDescGZIP() []byte { return file_percutaneous_percutaneous_proto_rawDescData } -var file_percutaneous_percutaneous_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_percutaneous_percutaneous_proto_msgTypes = make([]protoimpl.MessageInfo, 13) 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 - (*LoginQRRequest)(nil), // 7: percutaneous.LoginQRRequest - (*AddUserQRRequest)(nil), // 8: percutaneous.AddUserQRRequest - (*EmptyRequest)(nil), // 9: percutaneous.EmptyRequest - (*WsStreamRequest)(nil), // 10: percutaneous.WsStreamRequest + (*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 + (*LoginQRRequest)(nil), // 7: percutaneous.LoginQRRequest + (*AddUserQRRequest)(nil), // 8: percutaneous.AddUserQRRequest + (*SetPositionRequest)(nil), // 9: percutaneous.setPositionRequest + (*GetWsCodeRequest)(nil), // 10: percutaneous.getWsCodeRequest + (*EmptyRequest)(nil), // 11: percutaneous.EmptyRequest + (*WsStreamRequest)(nil), // 12: percutaneous.WsStreamRequest } var file_percutaneous_percutaneous_proto_depIdxs = []int32{ 0, // 0: percutaneous.Percutaneous.WifiCheck:input_type -> percutaneous.WifiCheckRequest @@ -675,16 +781,20 @@ 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 - 10, // 6: percutaneous.Percutaneous.WsAddUserStream:input_type -> percutaneous.WsStreamRequest - 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 - 10, // 13: percutaneous.Percutaneous.WsAddUserStream:output_type -> percutaneous.WsStreamRequest - 7, // [7:14] is the sub-list for method output_type - 0, // [0:7] is the sub-list for method input_type + 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 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 @@ -701,7 +811,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: 11, + NumMessages: 13, NumExtensions: 0, NumServices: 1, }, diff --git a/rpc/percutaneous/pb/percutaneous_grpc.pb.go b/rpc/percutaneous/pb/percutaneous_grpc.pb.go index fff8242..754ee9a 100644 --- a/rpc/percutaneous/pb/percutaneous_grpc.pb.go +++ b/rpc/percutaneous/pb/percutaneous_grpc.pb.go @@ -25,6 +25,8 @@ const ( Percutaneous_UsedLog_FullMethodName = "/percutaneous.Percutaneous/UsedLog" Percutaneous_AddUser_FullMethodName = "/percutaneous.Percutaneous/AddUser" Percutaneous_UserItems_FullMethodName = "/percutaneous.Percutaneous/UserItems" + Percutaneous_SetPosition_FullMethodName = "/percutaneous.Percutaneous/setPosition" + Percutaneous_GetWsCode_FullMethodName = "/percutaneous.Percutaneous/getWsCode" Percutaneous_WsAddUserStream_FullMethodName = "/percutaneous.Percutaneous/WsAddUserStream" ) @@ -38,6 +40,9 @@ 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) + // 使用指南 + SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) + GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) // 添加用户 WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[WsStreamRequest, WsStreamRequest], error) } @@ -110,6 +115,26 @@ func (c *percutaneousClient) UserItems(ctx context.Context, in *UserItemsRequest 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) + err := c.cc.Invoke(ctx, Percutaneous_SetPosition_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *percutaneousClient) GetWsCode(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_GetWsCode_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...) @@ -133,6 +158,9 @@ type PercutaneousServer interface { UsedLog(context.Context, *UsedLogRequest) (*Response, error) AddUser(context.Context, *AddUserRequest) (*Response, error) UserItems(context.Context, *UserItemsRequest) (*Response, error) + // 使用指南 + SetPosition(context.Context, *SetPositionRequest) (*Response, error) + GetWsCode(context.Context, *GetWsCodeRequest) (*Response, error) // 添加用户 WsAddUserStream(grpc.BidiStreamingServer[WsStreamRequest, WsStreamRequest]) error mustEmbedUnimplementedPercutaneousServer() @@ -163,6 +191,12 @@ 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) SetPosition(context.Context, *SetPositionRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method SetPosition not implemented") +} +func (UnimplementedPercutaneousServer) GetWsCode(context.Context, *GetWsCodeRequest) (*Response, error) { + return nil, status.Error(codes.Unimplemented, "method GetWsCode not implemented") +} func (UnimplementedPercutaneousServer) WsAddUserStream(grpc.BidiStreamingServer[WsStreamRequest, WsStreamRequest]) error { return status.Error(codes.Unimplemented, "method WsAddUserStream not implemented") } @@ -295,6 +329,42 @@ func _Percutaneous_UserItems_Handler(srv interface{}, ctx context.Context, dec f 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 { + return nil, err + } + if interceptor == nil { + return srv.(PercutaneousServer).SetPosition(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_SetPosition_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).SetPosition(ctx, req.(*SetPositionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Percutaneous_GetWsCode_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).GetWsCode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Percutaneous_GetWsCode_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(PercutaneousServer).GetWsCode(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}) } @@ -333,6 +403,14 @@ var Percutaneous_ServiceDesc = grpc.ServiceDesc{ MethodName: "UserItems", Handler: _Percutaneous_UserItems_Handler, }, + { + MethodName: "setPosition", + Handler: _Percutaneous_SetPosition_Handler, + }, + { + MethodName: "getWsCode", + Handler: _Percutaneous_GetWsCode_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/rpc/percutaneous/percutaneous.pb b/rpc/percutaneous/percutaneous.pb index 758dd316df37da3ad3cf9eedea2e4cbe24395b6a..ede54b0d0092bdcf38bd5cdba4ca3be3af667adc 100644 GIT binary patch delta 286 zcmbPO@}X?QV`HXn{>@K~-!awua|sovmIUM%XO?8<=LMw}mZlb$2uX2q6hMU}m=qW_ zScBkvAz3c2;?&||pz8R{6bTlfEN2iWRKznyNsUV&J+&mf*f~EX6=s|e7fVTHL8=5J z*eEbtiI0oNHMd~$O*0FoQ|z0C%_lHvmU3|;xkX4puOPK3xwIrPFEzikSPw~Ra;=2| zr%u!5CzF}fgcK(WT8f&M7N_dNoNUFYC6vp>33rB&9I8oh37|Q496+9aGSIP;=UWy5 E0JVi+SO5S3 delta 31 ncmexRHnC*GV`HW@Je!{yzhj#0V{XUvgmrU|`2?oPOxAe-?M)3V diff --git a/rpc/percutaneous/percutaneous.proto b/rpc/percutaneous/percutaneous.proto index 9d1c4f3..ddd2cf3 100644 --- a/rpc/percutaneous/percutaneous.proto +++ b/rpc/percutaneous/percutaneous.proto @@ -53,6 +53,15 @@ message AddUserQRRequest { string host_code = 1; } +message setPositionRequest { + int32 position =2; + string session_id =4; +} + +message getWsCodeRequest { + int32 type =1; +} + message EmptyRequest { } @@ -100,6 +109,20 @@ service Percutaneous { body: "*" }; } + // 使用指南 + rpc setPosition(setPositionRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/use/position" + body: "*" + }; + } + + rpc getWsCode(getWsCodeRequest) returns (Response) { + option (google.api.http) = { + get: "/api/v3/percutaneous/get/code" + body: "*" + }; + } // 添加用户 rpc WsAddUserStream(stream WsStreamRequest) returns (stream WsStreamRequest); diff --git a/services/equipment/equipmentclient/equipment.go b/services/equipment/equipmentclient/equipment.go index 28d2f7f..1974826 100644 --- a/services/equipment/equipmentclient/equipment.go +++ b/services/equipment/equipmentclient/equipment.go @@ -46,6 +46,7 @@ type ( Response = equipment.Response SetExpiryRequest = equipment.SetExpiryRequest StatusRequest = equipment.StatusRequest + StoreIdStringRequest = equipment.StoreIdStringRequest UserBindRequest = equipment.UserBindRequest Equipment interface { @@ -85,6 +86,9 @@ type ( AuthorizationControl(ctx context.Context, in *AuthorizationControlRequest, opts ...grpc.CallOption) (*Response, error) // 用户端获取授权列表 AuthorizationItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) + // 门店端获取授权列表 + AuthorizationStoreItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) + ApiStoreCheckMask(ctx context.Context, in *StoreIdStringRequest, opts ...grpc.CallOption) (*Response, error) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) InternalBindAdd(ctx context.Context, in *InternalBindAddRequest, opts ...grpc.CallOption) (*Response, error) InternalBindInfo(ctx context.Context, in *InternalBindInfoRequest, opts ...grpc.CallOption) (*Response, error) @@ -265,6 +269,17 @@ func (m *defaultEquipment) AuthorizationItems(ctx context.Context, in *EmptyRequ return client.AuthorizationItems(ctx, in, opts...) } +// 门店端获取授权列表 +func (m *defaultEquipment) AuthorizationStoreItems(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { + client := equipment.NewEquipmentClient(m.cli.Conn()) + return client.AuthorizationStoreItems(ctx, in, opts...) +} + +func (m *defaultEquipment) ApiStoreCheckMask(ctx context.Context, in *StoreIdStringRequest, opts ...grpc.CallOption) (*Response, error) { + client := equipment.NewEquipmentClient(m.cli.Conn()) + return client.ApiStoreCheckMask(ctx, in, opts...) +} + func (m *defaultEquipment) AuthorizationCode(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*Response, error) { client := equipment.NewEquipmentClient(m.cli.Conn()) return client.AuthorizationCode(ctx, in, opts...) diff --git a/services/equipment/internal/dao/authorizationRecord.go b/services/equipment/internal/dao/authorizationRecord.go index 4c00e82..cbd842e 100644 --- a/services/equipment/internal/dao/authorizationRecord.go +++ b/services/equipment/internal/dao/authorizationRecord.go @@ -35,3 +35,16 @@ type AuthorizationRecordItems struct { DistrictArr []int64 `json:"district_arr"` UsageCount int32 `json:"usage_count"` } + +type AuthorizationRecordStoreItems struct { + Id int64 `json:"id"` + UserId int64 `json:"user_id"` // 用户ID + Status int32 `json:"status"` // 2未授权 1 已授权 + Open int32 `json:"open"` // 是否开启展示,1为默认开启,2为关闭 + Username string `json:"username"` + Mobile string `json:"mobile"` + Avatar string `json:"avatar"` + Birthday string `json:"birthday"` + Gender int32 `json:"gender"` + UsageCount int32 `json:"usage_count"` +} diff --git a/services/equipment/internal/logic/apiStoreCheckMaskLogic.go b/services/equipment/internal/logic/apiStoreCheckMaskLogic.go new file mode 100644 index 0000000..6929f19 --- /dev/null +++ b/services/equipment/internal/logic/apiStoreCheckMaskLogic.go @@ -0,0 +1,106 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "lone-services/services/equipment/validator" + "strconv" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type ApiStoreCheckMaskLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewApiStoreCheckMaskLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ApiStoreCheckMaskLogic { + return &ApiStoreCheckMaskLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *ApiStoreCheckMaskLogic) ApiStoreCheckMask(in *equipment.StoreIdStringRequest) (*equipment.Response, error) { + var v validator.MaskStoreCheckValidator + 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.MaskInfo + w := modelbase.Params{ + Eq: map[string]string{ + "facial_mask_id": in.MaskId}, + } + + modelObj := model.MaskModel{}.Init() + err := modelObj.GetOne(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if info.Id < utils.NumberOne { + return l.fail(utils.ErrorNotFund) + } + + if info.IsUse == utils.NumberOne { + return l.fail(utils.SetError(utils.Fail, "该面膜已经使用过")) + } + + if info.IsOnTrial != utils.NumberOne { + return l.ok(utils.NumberOne) + } + + w = modelbase.Params{Eq: map[string]string{ + "facial_mask_id": in.MaskId, + "user_id": strconv.FormatInt(in.UserId, utils.NumberTen), + }} + + var items []dao.MaskUsageRecordInfo + count, err := model.MaskUsageRecordModel{}.Init().Count(w, &items) + + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if count < utils.NumberOne { + return l.ok(utils.NumberOne) + } + + var user dao.MaskUserInfo + w = modelbase.Params{Eq: map[string]string{ + "user_id": strconv.FormatInt(in.UserId, utils.NumberTen), + }} + err = model.MaskUserModel{}.Init().GetOne(w, &user) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + if user.Id < utils.NumberOne { + return l.fail(utils.SetError(utils.ErrorNotFund, "用户不存在")) + } + + if user.OnTrialNum < utils.NumberOne { + return l.fail(utils.SetError(utils.Fail, "用户已经试用过")) + } + + if count >= int64(user.OnTrialNum) { + return l.fail(utils.SetError(utils.Fail, "用户已经试用过")) + } + + return l.ok(utils.NumberOne) +} diff --git a/services/equipment/internal/logic/authorizationStoreItemsLogic.go b/services/equipment/internal/logic/authorizationStoreItemsLogic.go new file mode 100644 index 0000000..7544eb0 --- /dev/null +++ b/services/equipment/internal/logic/authorizationStoreItemsLogic.go @@ -0,0 +1,105 @@ +package logic + +import ( + "context" + "lone-services/pkg/modelbase" + "lone-services/pkg/utils" + "lone-services/services/equipment/internal/dao" + "lone-services/services/equipment/internal/model" + "strconv" + + "lone-services/rpc/equipment/pb" + "lone-services/services/equipment/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type AuthorizationStoreItemsLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewAuthorizationStoreItemsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AuthorizationStoreItemsLogic { + return &AuthorizationStoreItemsLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// 门店端获取授权列表 +func (l *AuthorizationStoreItemsLogic) AuthorizationStoreItems(in *equipment.EmptyRequest) (*equipment.Response, error) { + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + w := modelbase.Params{Eq: map[string]string{ + "store_id": strconv.Itoa(int(adminInfo.ID))}} + var info []dao.AuthorizationRecordInfo + err := model.AuthorizationRecordModel{}.Init().Items(w, &info) + if err != nil { + l.Logger.Error(err) + return l.fail(utils.Fail) + } + + ids := make(map[int64]int64) + for _, v := range info { + ids[v.UserId] = v.UserId + } + var items []dao.AuthorizationRecordStoreItems + if len(ids) < utils.NumberOne { + return l.ok(items) + } + idsSlice := make([]int64, 0, len(ids)) + for k := range ids { + idsSlice = append(idsSlice, k) + } + + 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.ID)), + "user_id": strconv.Itoa(int(adminInfo.ID))}} + storeNumber, err := model.AuthorizationRecordModel{}.Init().CountNumber(ww) + if err != nil { + l.Logger.Error(err) + } + + mobile := utils.StringEmpty + if val.Mobile != utils.StringEmpty { + tmp, phoneErr := utils.DecryptPhone(val.Mobile) + if phoneErr != nil { + l.Logger.Error(err) + } + mobile = tmp + } + + userIdItems[val.Id] = dao.AuthorizationRecordStoreItems{ + Username: val.Name, + Mobile: mobile, + Avatar: val.Avatar, + Birthday: val.Birthday, + Gender: int32(val.Gender), + UsageCount: int32(storeNumber), + } + + } + + for _, v := range info { + item, ok := userIdItems[v.UserId] + if !ok { + continue + } + item.Id = v.Id + item.Open = v.Open + item.Status = v.Status + item.UserId = v.UserId + items = append(items, item) + } + return l.ok(items) +} diff --git a/services/equipment/internal/server/equipmentServer.go b/services/equipment/internal/server/equipmentServer.go index 6f4dcd2..28a613c 100644 --- a/services/equipment/internal/server/equipmentServer.go +++ b/services/equipment/internal/server/equipmentServer.go @@ -183,6 +183,17 @@ func (s *EquipmentServer) AuthorizationItems(ctx context.Context, in *equipment. return l.AuthorizationItems(in) } +// 门店端获取授权列表 +func (s *EquipmentServer) AuthorizationStoreItems(ctx context.Context, in *equipment.EmptyRequest) (*equipment.Response, error) { + l := logic.NewAuthorizationStoreItemsLogic(ctx, s.svcCtx) + return l.AuthorizationStoreItems(in) +} + +func (s *EquipmentServer) ApiStoreCheckMask(ctx context.Context, in *equipment.StoreIdStringRequest) (*equipment.Response, error) { + l := logic.NewApiStoreCheckMaskLogic(ctx, s.svcCtx) + return l.ApiStoreCheckMask(in) +} + func (s *EquipmentServer) AuthorizationCode(ctx context.Context, in *equipment.EmptyRequest) (*equipment.Response, error) { l := logic.NewAuthorizationCodeLogic(ctx, s.svcCtx) return l.AuthorizationCode(in) diff --git a/services/equipment/internal/svc/grpcService.go b/services/equipment/internal/svc/grpcService.go index c1e9db2..23846eb 100644 --- a/services/equipment/internal/svc/grpcService.go +++ b/services/equipment/internal/svc/grpcService.go @@ -65,3 +65,20 @@ func GetStores(ids []int64, name string) []*store.InfoResponse { return items.Items } + +func GetUsers(ids []int64, name string) []*user.UserBriefItem { + cli, err := GetRpcClient(name) + if err != nil { + logx.Error(err) + return nil + } + + client := user.NewUserClient(cli.Conn()) + items, err := client.InternalUsersByIds(context.Background(), &user.InternalUsersByIdsReq{Ids: ids}) + if err != nil { + logx.Errorf("get store err: %v", err) + return nil + } + + return items.Items +} diff --git a/services/equipment/validator/mask.go b/services/equipment/validator/mask.go index 5553861..7e07e31 100644 --- a/services/equipment/validator/mask.go +++ b/services/equipment/validator/mask.go @@ -97,3 +97,16 @@ func (p MaskIdValidator) GetMessage() validate.ValidatorMessages { "MaskId.required": "缺少ID", } } + +type MaskStoreCheckValidator struct { + MaskId string `form:"mask_id" json:"mask_id" validate:"required"` + UserId int64 `form:"user_id" json:"user_id" validate:"required"` +} + +// GetMessage 提示消息 +func (p MaskStoreCheckValidator) GetMessage() validate.ValidatorMessages { + return validate.ValidatorMessages{ + "MaskId.required": "缺少ID", + "UserId.required": "缺少渠道ID", + } +} diff --git a/services/percutaneous/internal/dao/group.go b/services/percutaneous/internal/dao/group.go index bf37edf..5c7fb0a 100644 --- a/services/percutaneous/internal/dao/group.go +++ b/services/percutaneous/internal/dao/group.go @@ -4,6 +4,8 @@ import ( "lone-services/pkg/utils" ) +const WsCode = "ws-code" + 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 diff --git a/services/percutaneous/internal/logic/getWsCodeLogic.go b/services/percutaneous/internal/logic/getWsCodeLogic.go new file mode 100644 index 0000000..d76217b --- /dev/null +++ b/services/percutaneous/internal/logic/getWsCodeLogic.go @@ -0,0 +1,43 @@ +package logic + +import ( + "context" + "fmt" + "lone-services/pkg/utils" + "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/dao" + "lone-services/services/percutaneous/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type GetWsCodeLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewGetWsCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetWsCodeLogic { + return &GetWsCodeLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +func (l *GetWsCodeLogic) GetWsCode(in *percutaneous.GetWsCodeRequest) (*percutaneous.Response, error) { + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + Type := "app" + if in.Type == utils.NumberOne { + Type = "operation" + } + + key := utils.MD5Encrypt(fmt.Sprintf("%d%s%s", adminInfo.ID, dao.WsCode, Type)) + + return l.ok(key) +} diff --git a/services/percutaneous/internal/logic/setPositionLogic.go b/services/percutaneous/internal/logic/setPositionLogic.go new file mode 100644 index 0000000..f13f8b4 --- /dev/null +++ b/services/percutaneous/internal/logic/setPositionLogic.go @@ -0,0 +1,47 @@ +package logic + +import ( + "context" + "lone-services/pkg/utils" + pkgws "lone-services/pkg/ws" + + "lone-services/rpc/percutaneous/pb" + "lone-services/services/percutaneous/internal/svc" + + "github.com/zeromicro/go-zero/core/logx" +) + +type SetPositionLogic struct { + ctx context.Context + svcCtx *svc.ServiceContext + logx.Logger + BaseLogic +} + +func NewSetPositionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SetPositionLogic { + return &SetPositionLogic{ + ctx: ctx, + svcCtx: svcCtx, + Logger: logx.WithContext(ctx), + } +} + +// 使用指南 +func (l *SetPositionLogic) SetPosition(in *percutaneous.SetPositionRequest) (*percutaneous.Response, error) { + adminInfo := utils.GetUserFromCtx(l.ctx) + if adminInfo.ID < utils.NumberOne { + return l.fail(utils.ErrorNoLoginInfo) + } + + if _, err := pkgws.GetSession(l.ctx, in.SessionId); err != nil { + l.Errorf("set position session: %v", err) + return l.fail(utils.ErrorQRcodeExp) + } + + data := map[string]int{"ws_type": pkgws.WsTypeScan} + if err := pkgws.Publish(l.ctx, in.SessionId, pkgws.Success(data)); err != nil { + l.Errorf("qrcode scan publish: %v", err) + } + + return &percutaneous.Response{}, nil +} diff --git a/services/percutaneous/internal/server/percutaneousServer.go b/services/percutaneous/internal/server/percutaneousServer.go index d62d2cc..e064d9b 100644 --- a/services/percutaneous/internal/server/percutaneousServer.go +++ b/services/percutaneous/internal/server/percutaneousServer.go @@ -53,6 +53,17 @@ func (s *PercutaneousServer) UserItems(ctx context.Context, in *percutaneous.Use return l.UserItems(in) } +// 使用指南 +func (s *PercutaneousServer) SetPosition(ctx context.Context, in *percutaneous.SetPositionRequest) (*percutaneous.Response, error) { + l := logic.NewSetPositionLogic(ctx, s.svcCtx) + return l.SetPosition(in) +} + +func (s *PercutaneousServer) GetWsCode(ctx context.Context, in *percutaneous.GetWsCodeRequest) (*percutaneous.Response, error) { + l := logic.NewGetWsCodeLogic(ctx, s.svcCtx) + return l.GetWsCode(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 fbdc901..cfa323c 100644 --- a/services/percutaneous/percutaneousclient/percutaneous.go +++ b/services/percutaneous/percutaneousclient/percutaneous.go @@ -14,17 +14,19 @@ import ( ) type ( - AddUserQRRequest = percutaneous.AddUserQRRequest - AddUserRequest = percutaneous.AddUserRequest - EmptyRequest = percutaneous.EmptyRequest - LoginQRRequest = percutaneous.LoginQRRequest - Response = percutaneous.Response - UseRequest = percutaneous.UseRequest - UsedLogRequest = percutaneous.UsedLogRequest - UserItemsRequest = percutaneous.UserItemsRequest - WifiCheckRequest = percutaneous.WifiCheckRequest - WifiSetRequest = percutaneous.WifiSetRequest - WsStreamRequest = percutaneous.WsStreamRequest + AddUserQRRequest = percutaneous.AddUserQRRequest + AddUserRequest = percutaneous.AddUserRequest + EmptyRequest = percutaneous.EmptyRequest + GetWsCodeRequest = percutaneous.GetWsCodeRequest + LoginQRRequest = percutaneous.LoginQRRequest + Response = percutaneous.Response + SetPositionRequest = percutaneous.SetPositionRequest + UseRequest = percutaneous.UseRequest + UsedLogRequest = percutaneous.UsedLogRequest + UserItemsRequest = percutaneous.UserItemsRequest + WifiCheckRequest = percutaneous.WifiCheckRequest + WifiSetRequest = percutaneous.WifiSetRequest + WsStreamRequest = percutaneous.WsStreamRequest Percutaneous interface { WifiCheck(ctx context.Context, in *WifiCheckRequest, opts ...grpc.CallOption) (*Response, error) @@ -33,6 +35,9 @@ 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) + // 使用指南 + SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) + GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) // 添加用户 WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (percutaneous.Percutaneous_WsAddUserStreamClient, error) } @@ -78,6 +83,17 @@ func (m *defaultPercutaneous) UserItems(ctx context.Context, in *UserItemsReques return client.UserItems(ctx, in, opts...) } +// 使用指南 +func (m *defaultPercutaneous) SetPosition(ctx context.Context, in *SetPositionRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.SetPosition(ctx, in, opts...) +} + +func (m *defaultPercutaneous) GetWsCode(ctx context.Context, in *GetWsCodeRequest, opts ...grpc.CallOption) (*Response, error) { + client := percutaneous.NewPercutaneousClient(m.cli.Conn()) + return client.GetWsCode(ctx, in, opts...) +} + // 添加用户 func (m *defaultPercutaneous) WsAddUserStream(ctx context.Context, opts ...grpc.CallOption) (percutaneous.Percutaneous_WsAddUserStreamClient, error) { client := percutaneous.NewPercutaneousClient(m.cli.Conn()) diff --git a/services/ws/internal/logic/connectLogic.go b/services/ws/internal/logic/connectLogic.go index 5ecef8a..9755f0f 100644 --- a/services/ws/internal/logic/connectLogic.go +++ b/services/ws/internal/logic/connectLogic.go @@ -91,6 +91,12 @@ func (l *ConnectLogic) pushSnapshot(c *svc.Client, sess *pkgws.Session) error { } else { data = nil } + case pkgws.StatusUsePosition: + if len(sess.Data) > 0 && string(sess.Data) != "null" { + data = sess.Data + } else { + data = nil + } default: data = nil }