Files
lone-services/services/product/internal/logic/itemsByIdsLogic.go
T
zzw 72d55d396d
CI / changes (push) Successful in 36s
CI / docker-bff (push) Successful in 3m8s
CI / docker-product (push) Successful in 3m36s
CI / docker-admin (push) Successful in 3m35s
CI / docker-user (push) Successful in 9s
CI / docker-ad (push) Successful in 29s
CI / docker-chore (push) Failing after 4s
feat: product number
2026-08-26 16:53:50 +08:00

61 lines
1.6 KiB
Go

package logic
import (
"context"
"strconv"
"lone-services/pkg/modelbase"
"lone-services/pkg/utils"
"lone-services/pkg/validate"
product "lone-services/rpc/product/pb"
"lone-services/services/product/internal/dao"
"lone-services/services/product/internal/model"
"lone-services/services/product/internal/svc"
"lone-services/services/product/validator"
"github.com/zeromicro/go-zero/core/logx"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
type ItemsByIdsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewItemsByIdsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ItemsByIdsLogic {
return &ItemsByIdsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *ItemsByIdsLogic) ItemsByIds(in *product.ItemsByIdsReq) (*product.ItemsByIdsData, error) {
var req validator.ProductItemsByIdsValidator
if msg := validate.ValidateFromProto(in, &req); msg != utils.StringEmpty {
return nil, status.Error(codes.InvalidArgument, msg)
}
ids := make([]string, 0, len(req.Ids))
for _, id := range req.Ids {
ids = append(ids, strconv.FormatInt(id, 10))
}
var infos []dao.Info
err := model.ProductModel{}.Init().Items(modelbase.Params{
In: map[string][]string{"id in ?": ids},
}, &infos)
if err != nil {
l.Errorf("product ItemsByIds: %v", err)
return nil, status.Error(codes.Internal, utils.Fail.Msg)
}
items := make([]*product.Item, 0, len(infos))
for _, row := range infos {
items = append(items, toProductItem(row))
}
return &product.ItemsByIdsData{Items: items}, nil
}