diff --git a/server/shopping-cart/internal/logic/calculatecartpricelogic.go b/server/shopping-cart/internal/logic/calculatecartpricelogic.go index 4dbe0ed4..fc461746 100644 --- a/server/shopping-cart/internal/logic/calculatecartpricelogic.go +++ b/server/shopping-cart/internal/logic/calculatecartpricelogic.go @@ -130,7 +130,7 @@ func (l *CalculateCartPriceLogic) CalculateCartPrice(req *types.CalculateCartPri calculateResultList = append(calculateResultList, types.CalculateResultItem{ CartId: cart.Id, ItemPrice: format.CentitoDollar(itemPrice, 3), - TotalPrice: format.CentitoDollar(totalPrice, 2), + TotalPrice: format.CentitoDollarWithNoHalfAdjust(totalPrice, 2), }) updData := &gmodel.FsShoppingCart{ PurchaseQuantity: &reqPurchaseQuantity, @@ -152,7 +152,7 @@ func (l *CalculateCartPriceLogic) CalculateCartPrice(req *types.CalculateCartPri return resp.SetStatusWithMessage(basic.CodeDbSqlErr, err.Error()) } return resp.SetStatusWithMessage(basic.CodeOK, "success", types.CalculateCartPriceRsp{ - SubTotalPrice: format.CentitoDollar(subTotalPrice, 2), + SubTotalPrice: format.CentitoDollarWithNoHalfAdjust(subTotalPrice, 2), CalculateResultList: calculateResultList, }) } diff --git a/server/shopping-cart/internal/logic/getcartslogic.go b/server/shopping-cart/internal/logic/getcartslogic.go index 35ba6f08..67e67138 100644 --- a/server/shopping-cart/internal/logic/getcartslogic.go +++ b/server/shopping-cart/internal/logic/getcartslogic.go @@ -174,7 +174,7 @@ func (l *GetCartsLogic) GetCarts(req *types.GetCartsReq, userinfo *auth.UserInfo FittingName: fittingName, }, ItemPrice: format.CentitoDollar(itemPrice, 3), - TotalPrice: format.CentitoDollar(totalPrice, 2), + TotalPrice: format.CentitoDollarWithNoHalfAdjust(totalPrice, 2), DiyInformation: types.DiyInformation{ Phone: snapShot.UserDiyInformation.Phone, Address: snapShot.UserDiyInformation.Address, diff --git a/utils/format/price.go b/utils/format/price.go index af736079..52aa1a65 100644 --- a/utils/format/price.go +++ b/utils/format/price.go @@ -4,7 +4,7 @@ import ( "fmt" ) -// 厘转美元 +// 厘转美元(四舍五入) func CentitoDollar(price int64, remainFloatPoint ...uint) string { s := "%0.3f" if len(remainFloatPoint) > 0 { @@ -13,6 +13,16 @@ func CentitoDollar(price int64, remainFloatPoint ...uint) string { return fmt.Sprintf(s, float64(price)/float64(1000)) } +// 厘转美元(向下截断,舍弃掉厘)用于计算总价 +func CentitoDollarWithNoHalfAdjust(price int64, remainFloatPoint ...uint) string { + s := "%0.2f" + if len(remainFloatPoint) > 0 { + s = fmt.Sprintf("%%0.%df", remainFloatPoint[0]) + } + t := price / 10 + return fmt.Sprintf(s, float64(t)/float64(100)) +} + // 厘转美元 func CentitoDollarStr(price float64) string { s := "%0.2f"