package user

import (
	"context"
	"encoding/json"
	"fmt"
	"microGame/app/usercenter/cmd/rpc/pb/usercenter"
	"microGame/pkg/ctxdata"

	"microGame/app/usercenter/cmd/api/internal/svc"
	"microGame/app/usercenter/cmd/api/internal/types"

	"github.com/zeromicro/go-zero/core/logx"
)

type DetailLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

// NewDetailLogic get user info
func NewDetailLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DetailLogic {
	return &DetailLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

func (l *DetailLogic) Detail(req *types.UserInfoReq) (resp *types.UserInfoResp, err error) {
	userId := ctxdata.GetUidFromCtx(l.ctx)
	detailResp, err := l.svcCtx.UserRpc.GetUserInfo(l.ctx, &usercenter.UserInfoReq{
		UserId: userId,
	})
	if err != nil {
		return nil, err
	}
	//value := l.ctx.Value("jwtUserId")
	//logc.Info(l.ctx, value)
	//str := fmt.Sprintf("%s", userId)
	msg, _ := json.Marshal(detailResp)

	if err := l.svcCtx.KqPusherClient.Push(l.ctx, string(msg)); err != nil {
		logx.Errorf("KqPusherClient Push Error , err :%+v\n", err)
	}
	fmt.Printf("KqPusherClient Push connect req , err :%+v\n", err)

	resp = &types.UserInfoResp{
		Uid:      detailResp.Uid,
		Username: detailResp.Username,
	}

	return
}
