From 78ab9a6ba6dfe3c84b442c8f17830d0c80c4697f Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Mon, 6 Nov 2023 11:11:13 +0800 Subject: [PATCH] 5 --- api/service/doctorWithdrawal.go | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/api/service/doctorWithdrawal.go b/api/service/doctorWithdrawal.go index 7bb3176..61460c2 100644 --- a/api/service/doctorWithdrawal.go +++ b/api/service/doctorWithdrawal.go @@ -2,12 +2,12 @@ package service import ( "errors" + "github.com/shopspring/decimal" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/requests" "hospital-admin-api/global" "hospital-admin-api/utils" - "math" "time" ) @@ -118,12 +118,18 @@ func (r *DoctorWithdrawalService) PutDoctorWithdrawalIncome(req requests.PutDoct }() // 计算实际提现金额 - actualWithdrawalAmount := math.Floor((doctorWithdrawal.AppliedWithdrawalAmount-req.IncomeTax)*100) / 100 + var appliedWithdrawalAmount = decimal.NewFromFloat(doctorWithdrawal.AppliedWithdrawalAmount) + var incomeTax = decimal.NewFromFloat(req.IncomeTax) + + // (计算提现金额-个人所得税金额) * 100 取小数点后3位, + actualWithdrawalAmount := appliedWithdrawalAmount.Sub(incomeTax).Mul(decimal.NewFromFloat(100)).Floor().Div(decimal.NewFromFloat(100)) + // 转为float64 + result, _ := actualWithdrawalAmount.Float64() // 提现申请修改数据-提现金额固定不动,修改个人所得税,实际提现金额跟随变动 doctorWithdrawalData := make(map[string]interface{}) - doctorWithdrawalData["actual_withdrawal_amount"] = actualWithdrawalAmount // 实际提现金额 - doctorWithdrawalData["income_tax"] = req.IncomeTax // 提现所得税金额 + doctorWithdrawalData["actual_withdrawal_amount"] = result // 实际提现金额 + doctorWithdrawalData["income_tax"] = req.IncomeTax // 提现所得税金额 err := doctorWithdrawalDao.EditDoctorWithdrawalById(tx, doctorWithdrawal.WithdrawalId, doctorWithdrawalData) if err != nil { tx.Rollback() @@ -353,7 +359,7 @@ func (r *DoctorWithdrawalService) getDoctorWithdrawalOrderAmountTotal(withdrawal } // 总金额 - var amountTotal float64 + var amountTotal = decimal.NewFromFloat(0) for _, v := range doctorWithdrawalOrders { // 获取订单数据 orderInquiryDao := dao.OrderInquiryDao{} @@ -374,10 +380,19 @@ func (r *DoctorWithdrawalService) getDoctorWithdrawalOrderAmountTotal(withdrawal return 0, errors.New("存在支付状态错误订单,数据错误") } - amountTotal = amountTotal + orderInquiry.AmountTotal + var orderInquiryAmountTotal = decimal.NewFromFloat(orderInquiry.AmountTotal) + + amountTotal = amountTotal.Sub(orderInquiryAmountTotal) } - amountTotal = amountTotal * 0.75 + // 分成比例 + var prop = decimal.NewFromFloat(0.75) - return amountTotal, nil + // 计算分成 + amountTotal = amountTotal.Mul(prop) + + // 转为float64 + result, _ := amountTotal.Float64() + + return result, nil }