锁定库存
CI / changes (push) Successful in 13s
CI / docker-bff (push) Has been skipped
CI / docker-product (push) Has been skipped
CI / docker-admin (push) Has been skipped
CI / docker-user (push) Has been skipped
CI / docker-ad (push) Has been skipped
CI / docker-chore (push) Has been skipped
CI / docker-express (push) Has been skipped
CI / docker-sale (push) Successful in 25s

This commit is contained in:
2026-08-28 16:22:12 +08:00
parent f5fb621428
commit 4e470b527c
2 changed files with 19 additions and 18 deletions
+17 -13
View File
@@ -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()
+2 -5
View File
@@ -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"
data_key = "u2t9T3luZtoRfhBstkFN6TiIMW38BA8a"