package logic import ( "context" "fmt" "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 := fmt.Sprintf("%d,%d", in.Position, adminInfo.ID) if err := pkgws.Publish(l.ctx, in.SessionId, pkgws.Success(data)); err != nil { l.Errorf("set position publish: %v", err) } return l.ok(utils.NumberOne) }