package logic import ( "context" "lone-services/pkg/rpcclient" "lone-services/pkg/utils" chore "lone-services/rpc/chore/pb" sale "lone-services/rpc/sale/pb" "lone-services/services/chore/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) // product 库存变更:1 增加 2 减少 const productNumberTypeIncr uint32 = 1 const productNumberTypeDecr uint32 = 2 type TestLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewTestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TestLogic { return &TestLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } func (l *TestLogic) Test(in *chore.TestReq) (*chore.Response, error) { cli, err := rpcclient.Get(l.svcCtx.ProductSvcName) // cli, err := rpcclient.Get(l.svcCtx.SaleSvcName) if err != nil { l.Errorf("get rpc: %v", err) return failResponse(utils.ErrorInternalServer), nil } // 产品库存更变 // _, err = product.NewProductClient(cli.Conn()).Number(l.ctx, &product.NumberReq{ // Id: in.GetId(), // Type: productNumberTypeDecr, // Number: in.GetNumber(), // }) // 获取单个产品详情 // res, err := product.NewProductClient(cli.Conn()).InfoById(l.ctx, &product.InfoByIdReq{ // Id: int64(in.GetId()), // }) // fmt.Println(res.GetName()) // 获取多个产品详情 // res, err := product.NewProductClient(cli.Conn()).ItemsByIds(l.ctx, &product.ItemsByIdsReq{ // Ids: in.GetIds(), // }) // for _, item := range res.GetItems() { // fmt.Println(item.GetName()) // } // 销售 names res, err := sale.NewSaleClient(cli.Conn()).NamesInternal(l.ctx, &sale.NamesReq{ Type: in.GetNumber(), Level: uint32(in.GetId()), }) // TODO: 批量扣减库存 // items := make([]*product.NumberItem, 0, len(in.GetIds())) // for _, id := range in.GetIds() { // items = append(items, &product.NumberItem{ // Id: id, // Number: in.GetNumber(), // }) // } // _, err = product.NewProductClient(cli.Conn()).NumberItems(l.ctx, &product.NumberItemsReq{ // Type: productNumberTypeDecr, // Items: items, // }) if err != nil { l.Errorf("XXXXXXXXXXX: %v", err) return failResponse(utils.ErrorInternalServer), nil } if res == nil { l.Errorf("XXXXXXXXXXX res为空") return failResponse(utils.Fail), nil } return okResponse(nil), nil }