diff --git a/services/order/internal/logic/webCreateLogic.go b/services/order/internal/logic/webCreateLogic.go index b68239d..61863e6 100644 --- a/services/order/internal/logic/webCreateLogic.go +++ b/services/order/internal/logic/webCreateLogic.go @@ -4,6 +4,7 @@ import ( "context" "lone-services/pkg/modelbase" "lone-services/pkg/utils" + product "lone-services/rpc/product/pb" "lone-services/services/order/internal/dao" "lone-services/services/order/internal/model" "lone-services/services/order/validator" @@ -124,6 +125,8 @@ func (l *WebCreateLogic) WebCreate(in *order.CreateOrderRequest) (*order.Respons var totalPrice float64 errData := make(map[int64]int64) productItems := []dao.OrderProductCreate{} + + NumItems := make([]*product.NumberItem, 0) for _, item := range products.Items { if buyNum, ok := ids[item.Id]; ok { if buyNum > int64(item.Number) { @@ -131,6 +134,8 @@ func (l *WebCreateLogic) WebCreate(in *order.CreateOrderRequest) (*order.Respons return l.out(utils.Fail, item.Name+"购买数量超出库存,目前可以够买:"+strconv.Itoa(int(item.Number))) } else { + numItem := &product.NumberItem{Id: item.Id, Number: uint32(buyNum)} + NumItems = append(NumItems, numItem) keys = append(keys, strconv.Itoa(int(item.Id))) totalPrice += item.Price * float64(buyNum) productItems = append(productItems, dao.OrderProductCreate{ @@ -171,20 +176,19 @@ func (l *WebCreateLogic) WebCreate(in *order.CreateOrderRequest) (*order.Respons return l.fail(utils.Fail) } - //TODO 扣库存接口 - //cli, err := svc.GetRpcClient(l.svcCtx.ProductSvcName) - //if err != nil { - // mobileObj.Rollback() - // return l.fail(utils.Fail) - //} + cli, err := svc.GetRpcClient(l.svcCtx.ProductSvcName) + if err != nil { + mobileObj.Rollback() + return l.fail(utils.Fail) + } - //productClient := product.NewProductClient(cli.Conn()) - //_, err = productClient.Number(l.ctx, &product.NumberReq{Id: item.Id, Type: utils.NumberOne, Number: buyNum}) - //if err != nil { - // mobileObj.Rollback() - // logx.Errorf("get products err: %v", err) - // return l.fail(utils.Fail, "产品库存不足") - //} + productClient := product.NewProductClient(cli.Conn()) + _, err = productClient.NumberItems(l.ctx, &product.NumberItemsReq{Type: utils.NumberOne, Items: NumItems}) + if err != nil { + mobileObj.Rollback() + logx.Errorf("get products err: %v", err) + return l.out(utils.Fail, "产品库存不足") + } mobileObj.Commit() diff --git a/services/sale/run.toml b/services/sale/run.toml index 94aee8e..05a692a 100644 --- a/services/sale/run.toml +++ b/services/sale/run.toml @@ -2,7 +2,7 @@ login_out_time=43200 #api接口超时时间分 login_refresh_out_time=83200 name = "sale-service" - listenOn = "0.0.0.0:10300" + listenOn = "0.0.0.0:10900" mode = "dev" [log] path = "logs" @@ -52,7 +52,4 @@ db = 0 [encrypt] - data_key = "u2t9T3luZtoRfhBstkFN6TiIMW38BA8a" - -[services] - chore = "chore-service" \ No newline at end of file + data_key = "u2t9T3luZtoRfhBstkFN6TiIMW38BA8a" \ No newline at end of file