This commit is contained in:
苏尹岚
2021-04-20 13:51:57 +08:00
parent 1cd87fb87c
commit c43039abca
3 changed files with 75 additions and 45 deletions

View File

@@ -192,7 +192,7 @@ func PublishJob(ctx *jxcontext.Context, jobExt *model.JobExt) (errCode string, e
} }
//发布任务要扣除任务总额的保证金,不够扣就要进行充值 //发布任务要扣除任务总额的保证金,不够扣就要进行充值
if err == nil && job.Status != model.JobStatusFailed { if err == nil && job.Status != model.JobStatusFailed {
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeDeposit, job.TotalPrice, job.ID); err != nil { if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeDeposit, job.TotalPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -243,14 +243,14 @@ func CancelPublishJob(ctx *jxcontext.Context, jobID int) (err error) {
} }
price = job.TotalPrice - price price = job.TotalPrice - price
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, price, jobID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeJobCancelOverdue, price, jobID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
//3、任务状态被取消 //3、任务状态被取消
job.Status = model.JobStatusFailed job.Status = model.JobStatusFailed
// job.DeletedAt = time.Now() // job.DeletedAt = time.Now()
if _, err = dao.UpdateEntity(db, job, "Status"); err != nil { if _, err = dao.UpdateEntityTx(txDB, job, "Status"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -409,13 +409,13 @@ func AcceptJob(ctx *jxcontext.Context, jobID, dropShippingDeliveryID, dropShippi
} }
}() }()
dao.WrapAddIDCULEntity(jobOrder, ctx.GetUserName()) dao.WrapAddIDCULEntity(jobOrder, ctx.GetUserName())
if err = dao.CreateEntity(db, jobOrder); err != nil { if err = dao.CreateEntityTx(txDB, jobOrder); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
//用户接受任务,任务剩余次数-1 //用户接受任务,任务剩余次数-1
job.SurplusCount -= 1 job.SurplusCount -= 1
if _, err = dao.UpdateEntity(db, job, "SurplusCount"); err != nil { if _, err = dao.UpdateEntityTx(txDB, job, "SurplusCount"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -429,7 +429,7 @@ func AcceptJob(ctx *jxcontext.Context, jobID, dropShippingDeliveryID, dropShippi
panic(r) panic(r)
} }
}() }()
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil { if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -481,7 +481,7 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
//如果当前任务状态正常剩余数量就加1 //如果当前任务状态正常剩余数量就加1
if job.Status >= 0 { if job.Status >= 0 {
job.SurplusCount += 1 job.SurplusCount += 1
if _, err = dao.UpdateEntity(db, job, "SurplusCount"); err != nil { if _, err = dao.UpdateEntityTx(txDB, job, "SurplusCount"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -494,7 +494,7 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
//2、账户收入 //2、账户收入
//是固定返现才会退一笔任务单价 //是固定返现才会退一笔任务单价
if job.CashbackType == model.JobCashbackPrice { if job.CashbackType == model.JobCashbackPrice {
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, job.AvgPrice, jobID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeJobCancelOverdue, job.AvgPrice, jobID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -506,14 +506,14 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
if userBill == nil { if userBill == nil {
return fmt.Errorf("未查询到该用户的账单!") return fmt.Errorf("未查询到该用户的账单!")
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, jobOrder.UserActualPrice, jobID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeJobCancelOverdue, jobOrder.UserActualPrice, jobID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
} }
//3、任务订单状态被取消 //3、任务订单状态被取消
jobOrder.Status = model.JobOrderStatusCancel jobOrder.Status = model.JobOrderStatusCancel
if _, err = dao.UpdateEntity(db, jobOrder, "Status"); err != nil { if _, err = dao.UpdateEntityTx(txDB, jobOrder, "Status"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -617,7 +617,7 @@ func UpdateDropShippingJobOrders(db *dao.DaoDB, timer *time.Timer, jobID int, jo
panic(r) panic(r)
} }
}() }()
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -746,7 +746,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntity(db, jobOrder, "Status", "Comment", "AuditAt", "LastOperator"); err != nil { if _, err = dao.UpdateEntityTx(txDB, jobOrder, "Status", "Comment", "AuditAt", "LastOperator"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -771,19 +771,19 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
if len(messageGroupsResult) == 1 { if len(messageGroupsResult) == 1 {
if messageGroupsResult[0].DividePercentage != 0 { if messageGroupsResult[0].DividePercentage != 0 {
if userBillGroupMaster, err := dao.GetUserBill(db, messageGroupsResult[0].UserID, ""); err == nil { if userBillGroupMaster, err := dao.GetUserBill(db, messageGroupsResult[0].UserID, ""); err == nil {
if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeDivide, price*messageGroupsResult[0].DividePercentage/100, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBillGroupMaster, model.BillTypeDivide, price*messageGroupsResult[0].DividePercentage/100, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
} }
//接收人账户收入 //接收人账户收入
if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJobDivide, price*(100-messageGroupsResult[0].DividePercentage)/100, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBillJobOrder, model.BillTypeJobDivide, price*(100-messageGroupsResult[0].DividePercentage)/100, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
} else { } else {
//接收人账户收入 //接收人账户收入
if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -792,14 +792,14 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
} }
} else if len(messageGroupMembers) == 0 { //若没有在某个群组,则得到全部 } else if len(messageGroupMembers) == 0 { //若没有在某个群组,则得到全部
//接收人账户收入 //接收人账户收入
if err = financial.AddIncomeUpdateAccount(db, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
} }
} }
jobOrder.Status = model.JobOrderStatusFinish jobOrder.Status = model.JobOrderStatusFinish
if _, err = dao.UpdateEntity(db, jobOrder, "Status"); err != nil { if _, err = dao.UpdateEntityTx(txDB, jobOrder, "Status"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -809,12 +809,12 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
//一件代发处理,审核相当于发货 //一件代发处理,审核相当于发货
jobOrder.VendorWaybillID = vendorWaybillID jobOrder.VendorWaybillID = vendorWaybillID
jobOrder.Status = model.JobOrderStatusFinish jobOrder.Status = model.JobOrderStatusFinish
if _, err = dao.UpdateEntity(db, jobOrder, "Status", "VendorWaybillID"); err != nil { if _, err = dao.UpdateEntityTx(txDB, jobOrder, "Status", "VendorWaybillID"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
userBill, err := dao.GetUserBill(db, job.UserID, "") userBill, err := dao.GetUserBill(db, job.UserID, "")
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -828,7 +828,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
if job.Status < 0 { if job.Status < 0 {
if job.CashbackType == model.JobCashbackPrice { if job.CashbackType == model.JobCashbackPrice {
userBill, err := dao.GetUserBill(db, job.UserID, "") userBill, err := dao.GetUserBill(db, job.UserID, "")
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobAuditUnPassWithCancelOverdue, job.AvgPrice, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeJobAuditUnPassWithCancelOverdue, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -836,7 +836,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
} else { } else {
//审核不通过的话,要重新变成待上传,再重新开个定时器 //审核不通过的话,要重新变成待上传,再重新开个定时器
jobOrder.Status = model.JobOrderStatusAccept jobOrder.Status = model.JobOrderStatusAccept
if _, err = dao.UpdateEntity(db, jobOrder, "Status"); err != nil { if _, err = dao.UpdateEntityTx(txDB, jobOrder, "Status"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -845,7 +845,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
JobID: job.ID, JobID: job.ID,
JobOrderID: jobOrder.JobOrderID, JobOrderID: jobOrder.JobOrderID,
} }
if _, err = dao.DeleteEntity(db, jobTimer, "JobID", "JobOrderID"); err != nil { if _, err = dao.DeleteEntityTx(txDB, jobTimer, "JobID", "JobOrderID"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -919,7 +919,7 @@ func RefreshJobStatus(ctx *jxcontext.Context) (err error) {
} }
price = job.TotalPrice - price price = job.TotalPrice - price
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, price, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeJobCancelOverdue, price, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -930,7 +930,7 @@ func RefreshJobStatus(ctx *jxcontext.Context) (err error) {
if job2 != nil { if job2 != nil {
job2.Status = model.JobStatusOverdue job2.Status = model.JobStatusOverdue
// job.DeletedAt = time.Now() // job.DeletedAt = time.Now()
if _, err = dao.UpdateEntity(db, job2, "Status"); err != nil { if _, err = dao.UpdateEntityTx(txDB, job2, "Status"); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return err return err
} }
@@ -999,7 +999,7 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
} }
//账户支出 //账户支出
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, mtwmMemberPrice, 1); err != nil { if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeSpJob, mtwmMemberPrice, 1); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return errCode, err return errCode, err
} }
@@ -1128,7 +1128,7 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
} }
}() }()
//账户支出明细 //账户支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil { if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -1206,7 +1206,7 @@ func CancelJdDelivery(ctx *jxcontext.Context, vendorWaybillID, reason string) (e
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }
@@ -1268,12 +1268,19 @@ func RefreshJdDelivery(ctx *jxcontext.Context) (err error) {
} }
dOrder := &model.DeliveryOrder{} dOrder := &model.DeliveryOrder{}
dOrder.VendorWaybillID = v.VendorWaybillID dOrder.VendorWaybillID = v.VendorWaybillID
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db, txDB)
panic(r)
}
}()
if err = dao.GetEntity(db, dOrder, "VendorWaybillID"); err == nil { if err = dao.GetEntity(db, dOrder, "VendorWaybillID"); err == nil {
if isCancel { if isCancel {
//退钱给发快递的 //退钱给发快递的
dOrder.Status = model.OrderStatusCanceled dOrder.Status = model.OrderStatusCanceled
userBill, _ := dao.GetUserBill(db, v.UserID, "") userBill, _ := dao.GetUserBill(db, v.UserID, "")
err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, v.PayPrice+v.DiffPrice, 2) err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeSpJob, v.PayPrice+v.DiffPrice, 2)
} else if isFinished { } else if isFinished {
//快递任务要完成 //快递任务要完成
dOrder.Status = model.OrderStatusFinished dOrder.Status = model.OrderStatusFinished
@@ -1284,13 +1291,14 @@ func RefreshJdDelivery(ctx *jxcontext.Context) (err error) {
return retVal, err return retVal, err
} }
if err == nil { if err == nil {
dao.UpdateEntity(db, dOrder, "Status") dao.UpdateEntityTx(txDB, dOrder, "Status")
} else { } else {
if strings.Contains(err.Error(), "审核状态不正确") { if strings.Contains(err.Error(), "审核状态不正确") {
dao.UpdateEntity(db, dOrder, "Status") dao.UpdateEntityTx(txDB, dOrder, "Status")
} }
} }
} }
dao.Commit(db, txDB)
} }
return retVal, err return retVal, err
}, list) }, list)
@@ -1362,6 +1370,13 @@ func CheckJdDeliveryWeight(ctx *jxcontext.Context) (err error) {
if waybill.DeliveryID == "" { if waybill.DeliveryID == "" {
return retVal, err return retVal, err
} }
txDB, _ := dao.Begin(db)
defer func() {
if r := recover(); r != nil {
dao.Rollback(db, txDB)
panic(r)
}
}()
if waybill.DeliveryID == deliveryOrder.VendorWaybillID { if waybill.DeliveryID == deliveryOrder.VendorWaybillID {
deliveryOrder.IsWeight = 1 //合格 deliveryOrder.IsWeight = 1 //合格
if waybill.Weight > 3 && math.Floor(deliveryOrder.Weight) < math.Floor(waybill.Weight) { if waybill.Weight > 3 && math.Floor(deliveryOrder.Weight) < math.Floor(waybill.Weight) {
@@ -1369,7 +1384,8 @@ func CheckJdDeliveryWeight(ctx *jxcontext.Context) (err error) {
if err != nil { if err != nil {
return retVal, err return retVal, err
} }
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeJdWaybillOverWeight, utils.Float64TwoInt(diffPrice), 2); err != nil { if err = financial.AddExpendUpdateAccount(txDB, userBill, model.BillTypeJdWaybillOverWeight, utils.Float64TwoInt(diffPrice), 2); err != nil {
txDB.Rollback()
return retVal, err return retVal, err
} }
deliveryOrder.IsWeight = 2 //超重 deliveryOrder.IsWeight = 2 //超重
@@ -1377,7 +1393,8 @@ func CheckJdDeliveryWeight(ctx *jxcontext.Context) (err error) {
} }
} }
deliveryOrder.ActualWeight = waybill.Weight deliveryOrder.ActualWeight = waybill.Weight
dao.UpdateEntity(db, deliveryOrder, "IsWeight", "ActualWeight", "DiffPrice") dao.UpdateEntityTx(txDB, deliveryOrder, "IsWeight", "ActualWeight", "DiffPrice")
dao.Commit(db, txDB)
return retVal, err return retVal, err
}, deliveryOrders) }, deliveryOrders)
tasksch.HandleTask(task, nil, true).Run() tasksch.HandleTask(task, nil, true).Run()
@@ -1550,7 +1567,7 @@ func ConfirmDropShippingJob(ctx *jxcontext.Context, jobOrderID int) (err error)
return return
} }
userBill, err := dao.GetUserBill(db, job.UserID, "") userBill, err := dao.GetUserBill(db, job.UserID, "")
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(txDB, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil {
dao.Rollback(db, txDB) dao.Rollback(db, txDB)
return return
} }

View File

@@ -5,9 +5,10 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/model/dao"
"github.com/astaxie/beego/client/orm"
) )
func AddBillIncome(db *dao.DaoDB, billID int64, billType, incomePrice, jobID int) (err error) { func AddBillIncome(txDB orm.TxOrmer, billID int64, billType, incomePrice, jobID int) (err error) {
billIncome := &model.BillIncome{ billIncome := &model.BillIncome{
BillID: billID, BillID: billID,
Type: billType, Type: billType,
@@ -15,10 +16,10 @@ func AddBillIncome(db *dao.DaoDB, billID int64, billType, incomePrice, jobID int
JobID: jobID, JobID: jobID,
} }
dao.WrapAddIDCULEntity(billIncome, jxcontext.AdminCtx.GetUserName()) dao.WrapAddIDCULEntity(billIncome, jxcontext.AdminCtx.GetUserName())
return dao.CreateEntity(db, billIncome) return dao.CreateEntityTx(txDB, billIncome)
} }
func AddBillExpend(db *dao.DaoDB, billID int64, billType, expendPrice, jobID int) (err error) { func AddBillExpend(txDB orm.TxOrmer, billID int64, billType, expendPrice, jobID int) (err error) {
billExpend := &model.BillExpend{ billExpend := &model.BillExpend{
BillID: billID, BillID: billID,
Type: billType, Type: billType,
@@ -26,41 +27,41 @@ func AddBillExpend(db *dao.DaoDB, billID int64, billType, expendPrice, jobID int
JobID: jobID, JobID: jobID,
} }
dao.WrapAddIDCULEntity(billExpend, jxcontext.AdminCtx.GetUserName()) dao.WrapAddIDCULEntity(billExpend, jxcontext.AdminCtx.GetUserName())
return dao.CreateEntity(db, billExpend) return dao.CreateEntityTx(txDB, billExpend)
} }
func AddUserBill(db *dao.DaoDB, billID int64, userID string) (err error) { func AddUserBill(txDB orm.TxOrmer, billID int64, userID string) (err error) {
userBillInsert := &model.UserBill{ userBillInsert := &model.UserBill{
BillID: billID, BillID: billID,
UserID: userID, UserID: userID,
} }
dao.WrapAddIDCULDEntity(userBillInsert, jxcontext.AdminCtx.GetUserName()) dao.WrapAddIDCULDEntity(userBillInsert, jxcontext.AdminCtx.GetUserName())
return dao.CreateEntity(db, userBillInsert) return dao.CreateEntityTx(txDB, userBillInsert)
} }
func GetUserBillDetail(ctx *jxcontext.Context, userID, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { func GetUserBillDetail(ctx *jxcontext.Context, userID, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
return dao.GetUserBillDetail(dao.GetDB(), userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset) return dao.GetUserBillDetail(dao.GetDB(), userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset)
} }
func AddExpendUpdateAccount(db *dao.DaoDB, userBill *model.UserBill, billType, price, jobID int) (err error) { func AddExpendUpdateAccount(txDB orm.TxOrmer, userBill *model.UserBill, billType, price, jobID int) (err error) {
//1、账户支出增加一条记录 //1、账户支出增加一条记录
err = AddBillExpend(db, userBill.BillID, billType, price, jobID) err = AddBillExpend(txDB, userBill.BillID, billType, price, jobID)
if err != nil { if err != nil {
return err return err
} }
//2、账户表余额减少相应值 //2、账户表余额减少相应值
userBill.AccountBalance -= price userBill.AccountBalance -= price
_, err = dao.UpdateEntity(db, userBill, "AccountBalance") _, err = dao.UpdateEntityTx(txDB, userBill, "AccountBalance")
return err return err
} }
func AddIncomeUpdateAccount(db *dao.DaoDB, userBill *model.UserBill, billType, price, jobID int) (err error) { func AddIncomeUpdateAccount(txDB orm.TxOrmer, userBill *model.UserBill, billType, price, jobID int) (err error) {
//2、账户收入增加一条记录 //2、账户收入增加一条记录
err = AddBillIncome(db, userBill.BillID, billType, price, jobID) err = AddBillIncome(txDB, userBill.BillID, billType, price, jobID)
if err != nil { if err != nil {
return err return err
} }
//1、根据任务剩余数量退钱到账户余额中 //1、根据任务剩余数量退钱到账户余额中
userBill.AccountBalance += price userBill.AccountBalance += price
_, err = dao.UpdateEntity(db, userBill, "AccountBalance") _, err = dao.UpdateEntityTx(txDB, userBill, "AccountBalance")
return err return err
} }

View File

@@ -263,6 +263,18 @@ func DeleteEntity(db *DaoDB, item interface{}, cols ...string) (num int64, err e
return num, err return num, err
} }
func DeleteEntityTx(txDB orm.TxOrmer, item interface{}, cols ...string) (num int64, err error) {
if txDB == nil {
return
}
err = utils.CallFuncLogError(func() error {
num, err = txDB.Delete(item, cols...)
//num, err = db.Db.Delete(item, cols...)
return err
}, reflect.TypeOf(item).Name())
return num, err
}
func ExecuteSQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) { func ExecuteSQL(db *DaoDB, sql string, params ...interface{}) (num int64, err error) {
if db == nil { if db == nil {
db = GetDB() db = GetDB()