handler.go 1.38 KB
Newer Older
kzkzzzz's avatar
kzkzzzz committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
package server

import (
	"context"
	"github.com/spf13/cast"
	"gomicro-base/api/wallet"
	"gomicro-base/service/wallet/internal/model"
	"gomicro-base/service/wallet/internal/service"
	"google.golang.org/protobuf/types/known/timestamppb"
)

// 检查接口实现
var _ wallet.WalletHandler = &handler{}

// handler类似控制器
type handler struct {
	svc *service.WalletService
}

func (h *handler) GetWallet(ctx context.Context, req *wallet.WalletReq, resp *wallet.WalletResp) error {
	getWallet, err := h.svc.GetWallet(ctx, req)
	if err != nil {
		return err
	}
	*resp = *h.convertUserModel(getWallet)
	return nil
}

func (h *handler) ListWallet(ctx context.Context, req *wallet.ListWalletReq, resp *wallet.ListWalletResp) error {
	if req.Limit <= 0 {
		req.Limit = 15
	}

	listWallet, err := h.svc.ListWallet(ctx, req)
	if err != nil {
		return err
	}

	list := make([]*wallet.WalletResp, 0)
	for _, v := range listWallet {
		c := *h.convertUserModel(v)
		list = append(list, &c)
	}
	resp.List = list
	resp.Limit = req.Limit
	return nil
}

func (h *handler) convertUserModel(users *model.User) (resp *wallet.WalletResp) {
	r := &wallet.WalletResp{
		Id:        cast.ToString(users.Id),
		Username:  users.Username,
		Email:     users.Email,
		Avatar:    users.Avatar,
		Status:    int32(users.Status),
		CreatedAt: timestamppb.New(users.CreatedAt),
		UpdatedAt: timestamppb.New(users.UpdatedAt),
	}
	return r
}