This commit is contained in:
2026-10-22 10:49:06 +08:00
parent fa465a01f0
commit 70b576df11
22 changed files with 1042 additions and 264 deletions
@@ -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
@@ -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)
}
@@ -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
}
@@ -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)
@@ -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())