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—————————————————————————————— // Type:销售类型 // 1 销售人员 // 2 销售商(法人) // 3 销售商(个人) // 0 或不传:不按类型过滤 // Level:层级过滤 // 1:只查顶级(sale_id = 0,没有上级) // 0 或不传:不按层级过滤 // res, err := sale.NewSaleClient(cli.Conn()).NamesInternal(l.ctx, &sale.NamesReq{ // Type: in.GetNumber(), // Level: uint32(in.GetId()), // }) // ——————————————————————————————批量扣减库存—————————————————————————————— // items := make([]*product.NumberItem, 0, len(in.GetIds())) // for _, id := range in.GetIds() { // items = append(items, &product.NumberItem{ // Id: id, // Number: in.GetNumber(), // }) // } // // { // // "items" : [ // // { // // "id": 1, // // "number": 10 // // } // // { // // "id": 2, // // "number": 20 // // } // // ], // // "type": 1 // // } // _, err = product.NewProductClient(cli.Conn()).NumberItems(l.ctx, &product.NumberItemsReq{ // Type: productNumberTypeDecr, // Items: items, // }) // ——————————————————————————————销售详情—————————————————————————————— res, err := sale.NewSaleClient(cli.Conn()).InfoInternal(l.ctx, &sale.InfoReq{ Id: int64(in.GetId()), }) if err != nil { l.Errorf("XXXXXX: %v", err) return failResponse(utils.ErrorInternalServer), nil } if res == nil { l.Errorf("XXXXXXXXXX res为空") return failResponse(utils.Fail), nil } return okResponse(res), nil }