94 lines
2.3 KiB
Go
94 lines
2.3 KiB
Go
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
|
|
}
|