This commit is contained in:
苏尹岚
2021-04-20 09:33:30 +08:00
parent 14f7fc7828
commit a75ed0f33c
18 changed files with 473 additions and 459 deletions

View File

@@ -224,29 +224,29 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (hint s
hint = "1" hint = "1"
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
configList, err := dao.QueryConfigs(db, key, configType, "") configList, err := dao.QueryConfigs(db, key, configType, "")
if err != nil { if err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return "", err return "", err
} }
if _, err = dao.UpdateEntityLogically(db, configList[0], map[string]interface{}{ if _, err = dao.UpdateEntityLogically(db, configList[0], map[string]interface{}{
"Value": value, "Value": value,
}, ctx.GetUserName(), nil); err != nil { }, ctx.GetUserName(), nil); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return "", err return "", err
} }
switch configType { switch configType {
case model.ConfigTypePricePack: case model.ConfigTypePricePack:
default: default:
dao.Commit(db) dao.Commit(db, txDB)
} }
if configType == model.ConfigTypeSys && err == nil { if configType == model.ConfigTypeSys && err == nil {
// err = onSysConfigChanged(key, value) // err = onSysConfigChanged(key, value)

View File

@@ -162,15 +162,15 @@ func PublishJob(ctx *jxcontext.Context, jobExt *model.JobExt) (errCode string, e
job.Lat = jxutils.StandardCoordinate2Int(lat) job.Lat = jxutils.StandardCoordinate2Int(lat)
} }
dao.WrapAddIDCULDEntity(job, ctx.GetUserName()) dao.WrapAddIDCULDEntity(job, ctx.GetUserName())
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if err = dao.CreateEntity(db, job); err != nil { if err = dao.CreateEntity(db, job); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
for _, v := range jobExt.JobSteps { for _, v := range jobExt.JobSteps {
@@ -184,17 +184,17 @@ func PublishJob(ctx *jxcontext.Context, jobExt *model.JobExt) (errCode string, e
err = dao.CreateEntity(db, v) err = dao.CreateEntity(db, v)
} }
if err != nil { if err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
//发布任务要扣除任务总额的保证金,不够扣就要进行充值 //发布任务要扣除任务总额的保证金,不够扣就要进行充值
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(db, userBill, model.BillTypeDeposit, job.TotalPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
content := new(strings.Builder) content := new(strings.Builder)
content.WriteString("您的任务:") content.WriteString("您的任务:")
content.WriteString(job.Title) content.WriteString(job.Title)
@@ -220,10 +220,10 @@ func CancelPublishJob(ctx *jxcontext.Context, jobID int) (err error) {
if userBill == nil { if userBill == nil {
return fmt.Errorf("未查询到该用户的账单!") return fmt.Errorf("未查询到该用户的账单!")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -241,17 +241,17 @@ 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(db, userBill, model.BillTypeJobCancelOverdue, price, jobID); err != nil {
dao.Rollback(db) 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.UpdateEntity(db, job, "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
content := new(strings.Builder) content := new(strings.Builder)
content.WriteString("您的任务:") content.WriteString("您的任务:")
content.WriteString(job.Title) content.WriteString(job.Title)
@@ -398,44 +398,44 @@ func AcceptJob(ctx *jxcontext.Context, jobID, dropShippingDeliveryID, dropShippi
} else if job.JobCategoryID == model.JobCategoryIDUnion { } else if job.JobCategoryID == model.JobCategoryIDUnion {
jobOrder.Status = model.JobOrderStatusSpec jobOrder.Status = model.JobOrderStatusSpec
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
dao.WrapAddIDCULEntity(jobOrder, ctx.GetUserName()) dao.WrapAddIDCULEntity(jobOrder, ctx.GetUserName())
if err = dao.CreateEntity(db, jobOrder); err != nil { if err = dao.CreateEntity(db, jobOrder); err != nil {
dao.Rollback(db) 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.UpdateEntity(db, job, "SurplusCount"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
if job.JobCategoryID == model.JobCategoryIDDropShipping { if job.JobCategoryID == model.JobCategoryIDDropShipping {
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil { if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
//一件代发 //一件代发
if err = SubmitJob(ctx, jobOrder); err != nil { if err = SubmitJob(ctx, jobOrder); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
} else { } else {
//任务限时完成 //任务限时完成
timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept) timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept)
@@ -468,10 +468,10 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
} else { } else {
content.WriteString(",已被取消。") content.WriteString(",已被取消。")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -479,7 +479,7 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
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.UpdateEntity(db, job, "SurplusCount"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
} else { } else {
@@ -492,7 +492,7 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
//是固定返现才会退一笔任务单价 //是固定返现才会退一笔任务单价
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(db, userBill, model.BillTypeJobCancelOverdue, job.AvgPrice, jobID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
@@ -504,17 +504,17 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e
return fmt.Errorf("未查询到该用户的账单!") return fmt.Errorf("未查询到该用户的账单!")
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, jobOrder.UserActualPrice, jobID); err != nil { if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, jobOrder.UserActualPrice, jobID); err != nil {
dao.Rollback(db) 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.UpdateEntity(db, jobOrder, "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
dao.Commit(db) dao.Commit(db, txDB)
event.SendSysMessageSimple(content.String(), jobOrder.UserID) event.SendSysMessageSimple(content.String(), jobOrder.UserID)
return err return err
} }
@@ -607,18 +607,18 @@ func UpdateDropShippingJobOrders(db *dao.DaoDB, timer *time.Timer, jobID int, jo
//如果限时内还没发货 //如果限时内还没发货
if jobOrder.Status < model.JobOrderStatusFinish { if jobOrder.Status < model.JobOrderStatusFinish {
userBill, err := dao.GetUserBill(db, jobOrder.UserID, "") userBill, err := dao.GetUserBill(db, jobOrder.UserID, "")
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil { if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
} }
} }
@@ -736,15 +736,15 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
} else { } else {
content.WriteString(",商家已经审核") content.WriteString(",商家已经审核")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntity(db, jobOrder, "Status", "Comment", "AuditAt", "LastOperator"); err != nil { if _, err = dao.UpdateEntity(db, jobOrder, "Status", "Comment", "AuditAt", "LastOperator"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
if status == model.JobOrderStatusAuditPass { if status == model.JobOrderStatusAuditPass {
@@ -769,19 +769,19 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
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(db, userBillGroupMaster, model.BillTypeDivide, price*messageGroupsResult[0].DividePercentage/100, job.ID); err != nil {
dao.Rollback(db) 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(db, userBillJobOrder, model.BillTypeJobDivide, price*(100-messageGroupsResult[0].DividePercentage)/100, job.ID); err != nil {
dao.Rollback(db) 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(db, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
@@ -790,14 +790,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(db, userBillJobOrder, model.BillTypeJob, price, job.ID); err != nil {
dao.Rollback(db) 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.UpdateEntity(db, jobOrder, "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
content.WriteString(utils.Float64ToStr(jxutils.IntPrice2Standard(int64(price)))) content.WriteString(utils.Float64ToStr(jxutils.IntPrice2Standard(int64(price))))
@@ -807,12 +807,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.UpdateEntity(db, jobOrder, "Status", "VendorWaybillID"); err != nil {
dao.Rollback(db) 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(db, userBill, model.BillTypeDropShippingDeposit, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
@@ -826,7 +826,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
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(db, userBill, model.BillTypeJobAuditUnPassWithCancelOverdue, job.AvgPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
@@ -834,7 +834,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
//审核不通过的话,要重新变成待上传,再重新开个定时器 //审核不通过的话,要重新变成待上传,再重新开个定时器
jobOrder.Status = model.JobOrderStatusAccept jobOrder.Status = model.JobOrderStatusAccept
if _, err = dao.UpdateEntity(db, jobOrder, "Status"); err != nil { if _, err = dao.UpdateEntity(db, jobOrder, "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
//之前的定时表删了? //之前的定时表删了?
@@ -843,7 +843,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
JobOrderID: jobOrder.JobOrderID, JobOrderID: jobOrder.JobOrderID,
} }
if _, err = dao.DeleteEntity(db, jobTimer, "JobID", "JobOrderID"); err != nil { if _, err = dao.DeleteEntity(db, jobTimer, "JobID", "JobOrderID"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
//任务限时完成 //任务限时完成
@@ -854,7 +854,7 @@ func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment, vendorWay
} }
event.SendSysMessageSimple(content2.String(), jobOrder.UserID) event.SendSysMessageSimple(content2.String(), jobOrder.UserID)
} }
dao.Commit(db) dao.Commit(db, txDB)
//任务定时器停止 //任务定时器停止
JobTimers.s.RLock() JobTimers.s.RLock()
if JobTimers.JobAuditTimerMap[int64(jobOrderID)] != nil { if JobTimers.JobAuditTimerMap[int64(jobOrderID)] != nil {
@@ -896,10 +896,10 @@ func RefreshJobStatus(ctx *jxcontext.Context) (err error) {
if userBill == nil { if userBill == nil {
return fmt.Errorf("未查询到该用户的账单!") return fmt.Errorf("未查询到该用户的账单!")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -917,7 +917,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(db, userBill, model.BillTypeJobCancelOverdue, price, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
//3、任务状态被取消 //3、任务状态被取消
@@ -928,11 +928,11 @@ func RefreshJobStatus(ctx *jxcontext.Context) (err error) {
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.UpdateEntity(db, job2, "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
} }
globals.SugarLogger.Debugf("RefreshJobStatus end...") globals.SugarLogger.Debugf("RefreshJobStatus end...")
@@ -964,10 +964,10 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
db2 = dao.GetDB() db2 = dao.GetDB()
userID = ctx.GetUserID() userID = ctx.GetUserID()
) )
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -979,12 +979,12 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
}) })
} }
if err != nil { if err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return errCode, err return errCode, err
} }
//验证微信绑定 //验证微信绑定
if err = auth2.CheckWeixinminiAuthBind(userID); err != nil { if err = auth2.CheckWeixinminiAuthBind(userID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return "", err return "", err
} }
//特殊任务,如美团会员,是直接要支付 //特殊任务,如美团会员,是直接要支付
@@ -997,15 +997,15 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
} }
//账户支出 //账户支出
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, mtwmMemberPrice, 1); err != nil { if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, mtwmMemberPrice, 1); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return errCode, err return errCode, err
} }
dao.Commit(db) dao.Commit(db, txDB)
for { for {
dao.Begin(db2) txDB, _ := dao.Begin(db2)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db2) dao.Rollback(db2, txDB)
panic(r) panic(r)
} }
}() }()
@@ -1016,7 +1016,7 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e
err = api.MtMemberAPI.RechargeExchange(phone, mtMember.ShortLink) err = api.MtMemberAPI.RechargeExchange(phone, mtMember.ShortLink)
mtMember.DeletedAt = time.Now() mtMember.DeletedAt = time.Now()
dao.UpdateEntity(db2, mtMember, "DeletedAt") dao.UpdateEntity(db2, mtMember, "DeletedAt")
dao.Commit(db2) dao.Commit(db2, txDB)
if err == nil { if err == nil {
job, err := dao.GetJob(db2, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false) job, err := dao.GetJob(db2, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
_, errCode, err = AcceptJob(ctx, job.ID, 0, 0) _, errCode, err = AcceptJob(ctx, job.ID, 0, 0)
@@ -1117,16 +1117,16 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
} }
dOrder.Status = model.OrderStatusNew dOrder.Status = model.OrderStatusNew
dOrder.UserID = ctx.GetUserID() dOrder.UserID = ctx.GetUserID()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
//账户支出明细 //账户支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil { if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dOrder.SendName = sendDelivery.ConsigneeName dOrder.SendName = sendDelivery.ConsigneeName
@@ -1146,10 +1146,10 @@ func SendJdDelivery(ctx *jxcontext.Context, dOrder *model.DeliveryOrder) (errCod
dOrder.ReceiveLng = receiveDelivery.Lng dOrder.ReceiveLng = receiveDelivery.Lng
dOrder.ReceiveLat = receiveDelivery.Lat dOrder.ReceiveLat = receiveDelivery.Lat
if err = dao.CreateEntity(db, dOrder); err != nil { if err = dao.CreateEntity(db, dOrder); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
utils.CallFuncAsync(func() { utils.CallFuncAsync(func() {
job, _ := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeJdDelivery}, utils.ZeroTimeValue, utils.ZeroTimeValue, false) job, _ := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeJdDelivery}, utils.ZeroTimeValue, utils.ZeroTimeValue, false)
if jobOrderID, _, err := AcceptJob(ctx, job.ID, 0, 0); err == nil { if jobOrderID, _, err := AcceptJob(ctx, job.ID, 0, 0); err == nil {
@@ -1192,25 +1192,25 @@ func CancelJdDelivery(ctx *jxcontext.Context, vendorWaybillID, reason string) (e
dOrder.Status = model.OrderStatusCanceled dOrder.Status = model.OrderStatusCanceled
dOrder.OrderFinishedAt = time.Now() dOrder.OrderFinishedAt = time.Now()
dOrder.Comment = reason dOrder.Comment = reason
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntity(db, dOrder, "Status", "OrderFinishedAt", "Comment"); err != nil { if _, err = dao.UpdateEntity(db, dOrder, "Status", "OrderFinishedAt", "Comment"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil { if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeSpJob, dOrder.PayPrice, 2); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
if err = CancelAcceptJob(ctx, 2, utils.Str2Int64(dOrder.JobOrderID)); err != nil { if err = CancelAcceptJob(ctx, 2, utils.Str2Int64(dOrder.JobOrderID)); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -1531,10 +1531,10 @@ func ConfirmDropShippingJob(ctx *jxcontext.Context, jobOrderID int) (err error)
if ctx.GetUserID() != jobOrder.UserID && ctx.GetUserName() != "jxadmin" { if ctx.GetUserID() != jobOrder.UserID && ctx.GetUserName() != "jxadmin" {
return fmt.Errorf("只有任务接取人才能确认收货!") return fmt.Errorf("只有任务接取人才能确认收货!")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -1543,15 +1543,15 @@ func ConfirmDropShippingJob(ctx *jxcontext.Context, jobOrderID int) (err error)
jobOrder.DropShippingConfirmUser = ctx.GetUserName() jobOrder.DropShippingConfirmUser = ctx.GetUserName()
jobOrder.Status = model.OrderStatusConfirm jobOrder.Status = model.OrderStatusConfirm
if _, err = dao.UpdateEntity(db, jobOrder, "DropShippingConfirmTime", "DropShippingConfirmUser", "Status"); err != nil { if _, err = dao.UpdateEntity(db, jobOrder, "DropShippingConfirmTime", "DropShippingConfirmUser", "Status"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
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(db, userBill, model.BillTypeDropShipping, jobOrder.UserActualPrice, job.ID); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -1628,15 +1628,15 @@ func UpdateJob(ctx *jxcontext.Context, payload map[string]interface{}) (err erro
dao.GetEntity(db, job2) dao.GetEntity(db, job2)
valid := dao.StrictMakeMapByStructObject(payload, job2, ctx.GetUserName()) valid := dao.StrictMakeMapByStructObject(payload, job2, ctx.GetUserName())
if len(valid) > 0 { if len(valid) > 0 {
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntityByKV(db, job2, valid, nil); err != nil { if _, err = dao.UpdateEntityByKV(db, job2, valid, nil); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
if len(jobExt.JobSteps) > 0 { if len(jobExt.JobSteps) > 0 {
@@ -1663,7 +1663,7 @@ func UpdateJob(ctx *jxcontext.Context, payload map[string]interface{}) (err erro
dao.CreateEntity(db, v) dao.CreateEntity(db, v)
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
return err return err
} }
@@ -1762,163 +1762,163 @@ type Store struct {
} }
func TempJob() (err error) { func TempJob() (err error) {
var ( //var (
db = dao.GetDB() // db = dao.GetDB()
ctx = jxcontext.AdminCtx // ctx = jxcontext.AdminCtx
storesJD []*Store // storesJD []*Store
storesMT []*Store // storesMT []*Store
) //)
db.Db.Using("c4") //db.Db.Using("c4")
sql := ` //sql := `
SELECT a.*, b.vendor_store_id // SELECT a.*, b.vendor_store_id
FROM store a // FROM store a
JOIN store_map b ON a.id = b.store_id AND b.vendor_id = 0 AND b.deleted_at = ? AND b.vendor_store_id <> '' // JOIN store_map b ON a.id = b.store_id AND b.vendor_id = 0 AND b.deleted_at = ? AND b.vendor_store_id <> ''
WHERE a.deleted_at = ? // WHERE a.deleted_at = ?
AND a.id <> 667281 // AND a.id <> 667281
AND a.id <> 667278 // AND a.id <> 667278
AND a.status IN (1,0) // AND a.status IN (1,0)
` //`
sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue} //sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue}
if err = dao.GetRows(db, &storesJD, sql, sqlParams); err != nil { //if err = dao.GetRows(db, &storesJD, sql, sqlParams); err != nil {
return err // return err
} //}
sql2 := ` //sql2 := `
SELECT a.*, b.vendor_store_id // SELECT a.*, b.vendor_store_id
FROM store a // FROM store a
JOIN store_map b ON a.id = b.store_id AND b.vendor_id = 1 AND b.deleted_at = ? AND b.vendor_store_id <> '' // JOIN store_map b ON a.id = b.store_id AND b.vendor_id = 1 AND b.deleted_at = ? AND b.vendor_store_id <> ''
WHERE a.deleted_at = ? // WHERE a.deleted_at = ?
AND a.id <> 667281 // AND a.id <> 667281
AND a.id <> 667278 // AND a.id <> 667278
AND a.status IN (1,0) // AND a.status IN (1,0)
` //`
sqlParams2 := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue} //sqlParams2 := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue}
if err = dao.GetRows(db, &storesMT, sql2, sqlParams2); err != nil { //if err = dao.GetRows(db, &storesMT, sql2, sqlParams2); err != nil {
return err // return err
} //}
db.Db.Using("default") //db.Db.Using("default")
task := tasksch.NewParallelTask("TempJob", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx, //task := tasksch.NewParallelTask("TempJob", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
func(task2 *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { // func(task2 *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
step := batchItemList[0].(int) // step := batchItemList[0].(int)
switch step { // switch step {
case 0: // case 0:
task := tasksch.NewParallelTask("TempJob1", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx, // task := tasksch.NewParallelTask("TempJob1", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
store := batchItemList[0].(*Store) // store := batchItemList[0].(*Store)
job := &model.Job{ // job := &model.Job{
UserID: "906380C7390E11EB8831525400C36BDA", // UserID: "906380C7390E11EB8831525400C36BDA",
JobCategoryID: 3, // JobCategoryID: 3,
Title: "京东(" + store.Name + ")", // Title: "京东(" + store.Name + ")",
Content: "领取任务后,需要尽快去完成,并提交截图。如超时未完成,任务会被取消", // Content: "领取任务后,需要尽快去完成,并提交截图。如超时未完成,任务会被取消",
Count: 1000, // Count: 1000,
AvgPrice: 300, // AvgPrice: 300,
TotalPrice: 300000, // TotalPrice: 300000,
Status: 0, // Status: 0,
Address: store.Address, // Address: store.Address,
StoreURL: store.VendorStoreID, // StoreURL: store.VendorStoreID,
SurplusCount: 1000, // SurplusCount: 1000,
JobLimitAt: 72, // JobLimitAt: 72,
AuditLimitAt: 168, // AuditLimitAt: 168,
LimitCountType: 3, // LimitCountType: 3,
VendorID: 0, // VendorID: 0,
CashbackType: 1, // CashbackType: 1,
JobLat: jxutils.IntCoordinate2Standard(store.Lat), // JobLat: jxutils.IntCoordinate2Standard(store.Lat),
JobLng: jxutils.IntCoordinate2Standard(store.Lng), // JobLng: jxutils.IntCoordinate2Standard(store.Lng),
Lng: store.Lng, // Lng: store.Lng,
Lat: store.Lat, // Lat: store.Lat,
JobCityCode: store.CityCode, // JobCityCode: store.CityCode,
} // }
finishAt := utils.Str2Time("2021-12-31 00:00:00") // finishAt := utils.Str2Time("2021-12-31 00:00:00")
job.FinishedAt = &finishAt // job.FinishedAt = &finishAt
dao.WrapAddIDCULDEntity(job, ctx.GetUserName()) // dao.WrapAddIDCULDEntity(job, ctx.GetUserName())
if err = dao.CreateEntity(db, job); err == nil { // if err = dao.CreateEntity(db, job); err == nil {
jobsteps, _ := dao.GetJobSteps(db, 171) // jobsteps, _ := dao.GetJobSteps(db, 171)
for _, v := range jobsteps { // for _, v := range jobsteps {
jobStep := &model.JobStep{ // jobStep := &model.JobStep{
JobID: job.ID, // JobID: job.ID,
StepCount: v.StepCount, // StepCount: v.StepCount,
Content: v.Content, // Content: v.Content,
Img: v.Img, // Img: v.Img,
Type: v.Type, // Type: v.Type,
} // }
dao.WrapAddIDCULDEntity(jobStep, ctx.GetUserName()) // dao.WrapAddIDCULDEntity(jobStep, ctx.GetUserName())
err = dao.CreateEntity(db, jobStep) // err = dao.CreateEntity(db, jobStep)
} // }
jobImgs, _ := dao.GetJobImgs(db, 171) // jobImgs, _ := dao.GetJobImgs(db, 171)
for _, v := range jobImgs { // for _, v := range jobImgs {
jobImg := &model.JobImg{ // jobImg := &model.JobImg{
JobID: job.ID, // JobID: job.ID,
Img: v.Img, // Img: v.Img,
} // }
dao.WrapAddIDCULEntity(jobImg, ctx.GetUserName()) // dao.WrapAddIDCULEntity(jobImg, ctx.GetUserName())
err = dao.CreateEntity(db, jobImg) // err = dao.CreateEntity(db, jobImg)
} // }
} // }
return retVal, err // return retVal, err
}, storesJD) // }, storesJD)
tasksch.HandleTask(task, task2, true).Run() // tasksch.HandleTask(task, task2, true).Run()
task.GetResult(0) // task.GetResult(0)
case 1: // case 1:
task := tasksch.NewParallelTask("TempJob2", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx, // task := tasksch.NewParallelTask("TempJob2", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
store := batchItemList[0].(*Store) // store := batchItemList[0].(*Store)
job := &model.Job{ // job := &model.Job{
UserID: "906380C7390E11EB8831525400C36BDA", // UserID: "906380C7390E11EB8831525400C36BDA",
JobCategoryID: 3, // JobCategoryID: 3,
Title: "美团(" + store.Name + ")", // Title: "美团(" + store.Name + ")",
Content: "领取任务后,需要尽快去完成,并提交截图。如超时未完成,任务会被取消", // Content: "领取任务后,需要尽快去完成,并提交截图。如超时未完成,任务会被取消",
Count: 1000, // Count: 1000,
AvgPrice: 300, // AvgPrice: 300,
TotalPrice: 300000, // TotalPrice: 300000,
Status: 0, // Status: 0,
Address: store.Address, // Address: store.Address,
StoreURL: store.VendorStoreID, // StoreURL: store.VendorStoreID,
SurplusCount: 1000, // SurplusCount: 1000,
JobLimitAt: 72, // JobLimitAt: 72,
AuditLimitAt: 168, // AuditLimitAt: 168,
LimitCountType: 3, // LimitCountType: 3,
VendorID: 1, // VendorID: 1,
CashbackType: 1, // CashbackType: 1,
JobLat: jxutils.IntCoordinate2Standard(store.Lat), // JobLat: jxutils.IntCoordinate2Standard(store.Lat),
JobLng: jxutils.IntCoordinate2Standard(store.Lng), // JobLng: jxutils.IntCoordinate2Standard(store.Lng),
Lng: store.Lng, // Lng: store.Lng,
Lat: store.Lat, // Lat: store.Lat,
JobCityCode: store.CityCode, // JobCityCode: store.CityCode,
} // }
finishAt := utils.Str2Time("2021-12-31 00:00:00") // finishAt := utils.Str2Time("2021-12-31 00:00:00")
job.FinishedAt = &finishAt // job.FinishedAt = &finishAt
dao.WrapAddIDCULDEntity(job, ctx.GetUserName()) // dao.WrapAddIDCULDEntity(job, ctx.GetUserName())
if err = dao.CreateEntity(db, job); err == nil { // if err = dao.CreateEntity(db, job); err == nil {
jobsteps, _ := dao.GetJobSteps(db, 173) // jobsteps, _ := dao.GetJobSteps(db, 173)
for _, v := range jobsteps { // for _, v := range jobsteps {
jobStep := &model.JobStep{ // jobStep := &model.JobStep{
JobID: job.ID, // JobID: job.ID,
StepCount: v.StepCount, // StepCount: v.StepCount,
Content: v.Content, // Content: v.Content,
Img: v.Img, // Img: v.Img,
Type: v.Type, // Type: v.Type,
} // }
dao.WrapAddIDCULDEntity(jobStep, ctx.GetUserName()) // dao.WrapAddIDCULDEntity(jobStep, ctx.GetUserName())
err = dao.CreateEntity(db, jobStep) // err = dao.CreateEntity(db, jobStep)
} // }
jobImgs, _ := dao.GetJobImgs(db, 173) // jobImgs, _ := dao.GetJobImgs(db, 173)
for _, v := range jobImgs { // for _, v := range jobImgs {
jobImg := &model.JobImg{ // jobImg := &model.JobImg{
JobID: job.ID, // JobID: job.ID,
Img: v.Img, // Img: v.Img,
} // }
dao.WrapAddIDCULEntity(jobImg, ctx.GetUserName()) // dao.WrapAddIDCULEntity(jobImg, ctx.GetUserName())
err = dao.CreateEntity(db, jobImg) // err = dao.CreateEntity(db, jobImg)
} // }
} // }
return retVal, err // return retVal, err
}, storesMT) // }, storesMT)
tasksch.HandleTask(task, task2, true).Run() // tasksch.HandleTask(task, task2, true).Run()
task.GetResult(0) // task.GetResult(0)
} // }
return retVal, err // return retVal, err
}, []int{0, 1}) // }, []int{0, 1})
tasksch.HandleTask(task, nil, true).Run() //tasksch.HandleTask(task, nil, true).Run()
task.GetID() //task.GetID()
return err return err
} }
@@ -1929,6 +1929,18 @@ func GetUnionActList(ctx *jxcontext.Context, vendorID, actType int) (actList []*
return actList, err return actList, err
} }
func ShareUnionLink(ctx *jxcontext.Context, vendorID, linkType int) (link string, err error) { func ShareUnionLink(ctx *jxcontext.Context, jobID, linkType int) (link string, err error) {
return partner.GetHandler(vendorID).ShareUnionLink(ctx, linkType) var (
db = dao.GetDB()
job = &model.Job{}
)
job.ID = jobID
err = dao.GetEntity(db, job)
if err != nil {
return link, err
}
if handler := partner.GetHandler(job.VendorID); handler != nil {
handler.ShareUnionLink(ctx, linkType)
}
return link, err
} }

View File

@@ -65,13 +65,13 @@ func GetStoreMessages(ctx *jxcontext.Context, msgIDs, storeIDs, types []int, fro
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer dao.Commit(db) defer dao.Commit(db, txDB)
var msgList []*model.Message var msgList []*model.Message
// globals.SugarLogger.Debug(sql) // globals.SugarLogger.Debug(sql)
if err = dao.GetRows(db, &msgList, sql, sqlParams...); err == nil { if err = dao.GetRowsTx(txDB, &msgList, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: dao.GetLastTotalRowCount(db), TotalCount: dao.GetLastTotalRowCountTx(txDB),
Data: msgList, Data: msgList,
} }
} }
@@ -120,14 +120,14 @@ func GetStoreMessageStatuses(ctx *jxcontext.Context, msgIDs, storeIDs []int, fro
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, jxutils.FormalizePageSize(pageSize), offset) sqlParams = append(sqlParams, jxutils.FormalizePageSize(pageSize), offset)
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer dao.Commit(db) defer dao.Commit(db, txDB)
var msgStatusList []*MessageStatusExt var msgStatusList []*MessageStatusExt
// globals.SugarLogger.Debug(sql) // globals.SugarLogger.Debug(sql)
// globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false)) // globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
if err = dao.GetRows(db, &msgStatusList, sql, sqlParams...); err == nil { if err = dao.GetRowsTx(txDB, &msgStatusList, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: dao.GetLastTotalRowCount(db), TotalCount: dao.GetLastTotalRowCountTx(txDB),
Data: msgStatusList, Data: msgStatusList,
} }
} }

View File

@@ -63,17 +63,17 @@ func CreateOrder(ctx *jxcontext.Context, type1, orderType int, way string, price
CityCode: cCode, CityCode: cCode,
} }
dao.WrapAddIDCULEntity(order, ctx.GetUserName()) dao.WrapAddIDCULEntity(order, ctx.GetUserName())
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if err = dao.CreateEntity(db, order); err != nil { if err = dao.CreateEntity(db, order); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
dao.Commit(db) dao.Commit(db, txDB)
return order.OrderID, errCode, err return order.OrderID, errCode, err
} }

View File

@@ -31,16 +31,16 @@ func AddMenu(ctx *jxcontext.Context, menu *model.Menu) (err error) {
if len(menus) > 0 { if len(menus) > 0 {
return fmt.Errorf("添加失败!已存在相同名称的 menu name : %v", menu.Name) return fmt.Errorf("添加失败!已存在相同名称的 menu name : %v", menu.Name)
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
dao.WrapAddIDCULDEntity(menu, ctx.GetUserName()) dao.WrapAddIDCULDEntity(menu, ctx.GetUserName())
err = dao.CreateEntity(db, menu) err = dao.CreateEntity(db, menu)
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -54,10 +54,10 @@ func UpdateMenu(ctx *jxcontext.Context, menuID int, payload map[string]interface
if err != nil { if err != nil {
return 0, err return 0, err
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -65,7 +65,7 @@ func UpdateMenu(ctx *jxcontext.Context, menuID int, payload map[string]interface
valid := dao.StrictMakeMapByStructObject(payload, menu, ctx.GetUserName()) valid := dao.StrictMakeMapByStructObject(payload, menu, ctx.GetUserName())
if len(valid) > 0 { if len(valid) > 0 {
if num, err = dao.UpdateEntityLogically(db, menu, valid, ctx.GetUserName(), nil); err != nil { if num, err = dao.UpdateEntityLogically(db, menu, valid, ctx.GetUserName(), nil); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return 0, err return 0, err
} }
} }
@@ -73,7 +73,7 @@ func UpdateMenu(ctx *jxcontext.Context, menuID int, payload map[string]interface
menu.DeletedAt = time.Now() menu.DeletedAt = time.Now()
num, err = dao.UpdateEntity(db, menu, "DeletedAt") num, err = dao.UpdateEntity(db, menu, "DeletedAt")
} }
dao.Commit(db) dao.Commit(db, txDB)
return num, err return num, err
} }
@@ -92,16 +92,16 @@ func AddRole(ctx *jxcontext.Context, name string) (err error) {
role := &model.Role{ role := &model.Role{
Name: name, Name: name,
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
dao.WrapAddIDCULDEntity(role, ctx.GetUserName()) dao.WrapAddIDCULDEntity(role, ctx.GetUserName())
err = dao.CreateEntity(db, role) err = dao.CreateEntity(db, role)
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -118,10 +118,10 @@ func UpdateRole(ctx *jxcontext.Context, roleID int, name string, isDelete bool)
if err != nil { if err != nil {
return 0, err return 0, err
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -134,7 +134,7 @@ func UpdateRole(ctx *jxcontext.Context, roleID int, name string, isDelete bool)
role.DeletedAt = time.Now() role.DeletedAt = time.Now()
num, err = dao.UpdateEntity(db, role, "DeletedAt") num, err = dao.UpdateEntity(db, role, "DeletedAt")
} }
dao.Commit(db) dao.Commit(db, txDB)
return num, err return num, err
} }
@@ -177,10 +177,10 @@ func UpdateUserRole(ctx *jxcontext.Context, userIDs []string, roleIDs []int) (er
} }
} }
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -208,7 +208,7 @@ func UpdateUserRole(ctx *jxcontext.Context, userIDs []string, roleIDs []int) (er
} }
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -251,10 +251,10 @@ func UpdateRoleMenu(ctx *jxcontext.Context, roleIDs, menuIDs []int) (err error)
} }
} }
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -282,6 +282,6 @@ func UpdateRoleMenu(ctx *jxcontext.Context, roleIDs, menuIDs []int) (err error)
} }
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }

View File

@@ -361,23 +361,23 @@ func UpdateUserDeliveryAddress(ctx *jxcontext.Context, userID string, addressID
return err return err
} }
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if utils.ForceInterface2Int64(valid["isDefault"]) == 1 { if utils.ForceInterface2Int64(valid["isDefault"]) == 1 {
if err = dao.ClearUserDeliveryAddressDefault(db, userID, 0); err != nil { if err = dao.ClearUserDeliveryAddressDefault(db, userID, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
} }
if _, err = dao.UpdateEntityLogically(db, address, valid, ctx.GetUserName(), nil); err == nil { if _, err = dao.UpdateEntityLogically(db, address, valid, ctx.GetUserName(), nil); err == nil {
dao.Commit(db) dao.Commit(db, txDB)
} else { } else {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
} }
} }
@@ -417,25 +417,25 @@ func AddUserDeliveryAddress(ctx *jxcontext.Context, address *model.UserDeliveryA
address.AutoAddress, address.DistrictCode, address.CityCode, err = getAddressInfoFromCoord(db, lng, lat) address.AutoAddress, address.DistrictCode, address.CityCode, err = getAddressInfoFromCoord(db, lng, lat)
if err == nil { if err == nil {
globals.SugarLogger.Debugf("AddUserDeliveryAddress2 address:%s", utils.Format4Output(address, true)) globals.SugarLogger.Debugf("AddUserDeliveryAddress2 address:%s", utils.Format4Output(address, true))
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
dao.WrapAddIDCULDEntity(address, ctx.GetUserName()) dao.WrapAddIDCULDEntity(address, ctx.GetUserName())
if address.IsDefault == 1 { if address.IsDefault == 1 {
if err = dao.ClearUserDeliveryAddressDefault(db, address.UserID, 0); err != nil { if err = dao.ClearUserDeliveryAddressDefault(db, address.UserID, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return nil, err return nil, err
} }
} }
if err = dao.CreateEntity(db, address); err == nil { if err = dao.CreateEntity(db, address); err == nil {
dao.Commit(db) dao.Commit(db, txDB)
outAddress = address outAddress = address
} else { } else {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
} }
globals.SugarLogger.Debugf("AddUserDeliveryAddress3 address:%s", utils.Format4Output(address, true)) globals.SugarLogger.Debugf("AddUserDeliveryAddress3 address:%s", utils.Format4Output(address, true))
@@ -452,10 +452,10 @@ func SaveUserCart(ctx *jxcontext.Context, userID string, storeID int, cartItems
dao.WrapAddIDCULEntity(v, userID) dao.WrapAddIDCULEntity(v, userID)
} }
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil || err != nil { if r := recover(); r != nil || err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
if r != nil { if r != nil {
panic(r) panic(r)
} }
@@ -473,7 +473,7 @@ func SaveUserCart(ctx *jxcontext.Context, userID string, storeID int, cartItems
err = dao.CreateMultiEntities(db, cartItems) err = dao.CreateMultiEntities(db, cartItems)
} }
if err == nil { if err == nil {
dao.Commit(db) dao.Commit(db, txDB)
} }
return err return err
} }
@@ -563,10 +563,10 @@ func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bo
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
} }
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -579,7 +579,7 @@ func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bo
userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0) userMember.EndAt = userMember.EndAt.AddDate(1, 0, 0)
} }
if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil { if _, err = dao.UpdateEntity(db, userMember, "EndAt"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
} else { } else {
@@ -595,18 +595,18 @@ func InvestMember(ctx *jxcontext.Context, memberID int, userID string, isFree bo
} }
dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName()) dao.WrapAddIDCULDEntity(userMember2, ctx.GetUserName())
if err = dao.CreateEntity(db, userMember2); err != nil { if err = dao.CreateEntity(db, userMember2); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
} }
if !isFree { if !isFree {
//支出明细 //支出明细
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeMember, memberCard.Price, 0); err != nil { if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeMember, memberCard.Price, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return return
} }
} }
dao.Commit(db) dao.Commit(db, txDB)
return errCode, err return errCode, err
} }
@@ -648,18 +648,18 @@ func UpdateUser(ctx *jxcontext.Context, payload map[string]interface{}) (err err
} }
valid := dao.StrictMakeMapByStructObject(payload, user, ctx.GetUserName()) valid := dao.StrictMakeMapByStructObject(payload, user, ctx.GetUserName())
if len(valid) > 0 { if len(valid) > 0 {
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntityByKV(db, user, valid, nil); err != nil { if _, err = dao.UpdateEntityByKV(db, user, valid, nil); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
if payload["popUser"] != nil { if payload["popUser"] != nil {
// InvestMemberAndUpdate := func(user *model.User) (err error) { // InvestMemberAndUpdate := func(user *model.User) (err error) {

View File

@@ -217,45 +217,45 @@ func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCod
ErrMsg: errMsg, ErrMsg: errMsg,
UseTime: useTime, UseTime: useTime,
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
err = dao.CreateEntity(db, event) err = dao.CreateEntity(db, event)
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
func AddOperateEventDetail(db *dao.DaoDB, operateEventDetail *model.OperateEventDetail) (err error) { func AddOperateEventDetail(db *dao.DaoDB, operateEventDetail *model.OperateEventDetail) (err error) {
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
operateEventDetail.BeforeData = utils.LimitUTF8StringLen(operateEventDetail.BeforeData, 3200) operateEventDetail.BeforeData = utils.LimitUTF8StringLen(operateEventDetail.BeforeData, 3200)
operateEventDetail.AfterData = utils.LimitUTF8StringLen(operateEventDetail.AfterData, 3200) operateEventDetail.AfterData = utils.LimitUTF8StringLen(operateEventDetail.AfterData, 3200)
err = dao.CreateEntity(db, operateEventDetail) err = dao.CreateEntity(db, operateEventDetail)
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
func DeleteOperateEventAndDetail(ctx *jxcontext.Context, deleteTime time.Time) (err error) { func DeleteOperateEventAndDetail(ctx *jxcontext.Context, deleteTime time.Time) (err error) {
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
dao.DeleteOperateEventDetail(db, deleteTime) dao.DeleteOperateEventDetail(db, deleteTime)
dao.DeleteOperateEvent(db, deleteTime) dao.DeleteOperateEvent(db, deleteTime)
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }
@@ -538,18 +538,18 @@ func UpdateMessageGroup(ctx *jxcontext.Context, groupID int, payload map[string]
} }
valid := dao.StrictMakeMapByStructObject(payload, messageGroup, ctx.GetUserName()) valid := dao.StrictMakeMapByStructObject(payload, messageGroup, ctx.GetUserName())
if len(valid) > 0 { if len(valid) > 0 {
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if num, err = dao.UpdateEntityLogically(db, messageGroup, valid, ctx.GetUserName(), nil); err != nil { if num, err = dao.UpdateEntityLogically(db, messageGroup, valid, ctx.GetUserName(), nil); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return 0, err return 0, err
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
return num, err return num, err
} }
@@ -600,24 +600,24 @@ func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string, flag
if userBill.AccountBalance < quitPrice { if userBill.AccountBalance < quitPrice {
return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!")
} }
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
//账户支出 //账户支出
if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeQuitGroup, quitPrice, 0); err != nil { if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeQuitGroup, quitPrice, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return errCode, err return errCode, err
} }
//群主收到退团金额 //群主收到退团金额
if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeQuitGroup, quitPrice, 0); err != nil { if err = financial.AddIncomeUpdateAccount(db, userBillGroupMaster, model.BillTypeQuitGroup, quitPrice, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return errCode, err return errCode, err
} }
dao.Commit(db) dao.Commit(db, txDB)
} }
messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID) messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID)
if err != nil { if err != nil {
@@ -654,22 +654,22 @@ func TransferMessageGroupMaster(ctx *jxcontext.Context, groupID int, userID stri
messageGroupMember := messageGroupMembers[0] messageGroupMember := messageGroupMembers[0]
messageGroupMember.MemberUserID = ctx.GetUserID() messageGroupMember.MemberUserID = ctx.GetUserID()
messageGroupMember.LastOperator = ctx.GetUserName() messageGroupMember.LastOperator = ctx.GetUserName()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
if _, err = dao.UpdateEntity(db, messageGroup, "UserID", "LastOperator"); err != nil { if _, err = dao.UpdateEntity(db, messageGroup, "UserID", "LastOperator"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
if _, err = dao.UpdateEntity(db, messageGroupMember, "MemberUserID", "LastOperator"); err != nil { if _, err = dao.UpdateEntity(db, messageGroupMember, "MemberUserID", "LastOperator"); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
return err return err
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }

View File

@@ -40,10 +40,10 @@ func OnPayFinished(order *model.Order) (err error) {
db = dao.GetDB() db = dao.GetDB()
) )
globals.SugarLogger.Debugf("OnPayFinished begin modify account order: %v", utils.Format4Output(order, false)) globals.SugarLogger.Debugf("OnPayFinished begin modify account order: %v", utils.Format4Output(order, false))
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -59,13 +59,13 @@ func OnPayFinished(order *model.Order) (err error) {
//如果是账户充值(发布任务等) //如果是账户充值(发布任务等)
//账户收入 //账户收入
if err = AddIncomeUpdateAccount(db, userBill, model.BillTypeInvest, order.PayPrice, 0); err != nil { if err = AddIncomeUpdateAccount(db, userBill, model.BillTypeInvest, order.PayPrice, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
default: default:
globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false)) globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
return fmt.Errorf("暂不支持此订单类型!") return fmt.Errorf("暂不支持此订单类型!")
} }
dao.Commit(db) dao.Commit(db, txDB)
globals.SugarLogger.Debugf("OnPayFinished end modify account ...") globals.SugarLogger.Debugf("OnPayFinished end modify account ...")
return err return err
} }
@@ -75,10 +75,10 @@ func OnCashFinished(order *model.Order) (err error) {
db = dao.GetDB() db = dao.GetDB()
) )
globals.SugarLogger.Debugf("OnCashFinished begin modify account order: %v", utils.Format4Output(order, false)) globals.SugarLogger.Debugf("OnCashFinished begin modify account order: %v", utils.Format4Output(order, false))
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
@@ -94,13 +94,13 @@ func OnCashFinished(order *model.Order) (err error) {
//如果是账户提现 //如果是账户提现
//账户支出 //账户支出
if err = AddExpendUpdateAccount(db, userBill, model.BillTypeCash, order.PayPrice, 0); err != nil { if err = AddExpendUpdateAccount(db, userBill, model.BillTypeCash, order.PayPrice, 0); err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
} }
default: default:
globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false)) globals.SugarLogger.Debugf("OnPayFinished 暂不支持此订单类型 order: %v", utils.Format4Output(order, false))
return fmt.Errorf("暂不支持此订单类型!") return fmt.Errorf("暂不支持此订单类型!")
} }
dao.Commit(db) dao.Commit(db, txDB)
globals.SugarLogger.Debugf("OnCashFinished end modify account ...") globals.SugarLogger.Debugf("OnCashFinished end modify account ...")
return err return err
} }

View File

@@ -48,10 +48,10 @@ func InitPlace(ctx *jxcontext.Context) (err error) {
} }
placeList = placeList[0].Districts placeList = placeList[0].Districts
db := dao.GetDB() db := dao.GetDB()
dao.Begin(db) txDB, _ := dao.Begin(db)
defer func() { defer func() {
if r := recover(); r != nil || err != nil { if r := recover(); r != nil || err != nil {
dao.Rollback(db) dao.Rollback(db, txDB)
if r != nil { if r != nil {
panic(r) panic(r)
} }
@@ -67,7 +67,7 @@ func InitPlace(ctx *jxcontext.Context) (err error) {
if err = insertPlace(ctx, db, nil, placeList); err != nil { if err = insertPlace(ctx, db, nil, placeList); err != nil {
return err return err
} }
dao.Commit(db) dao.Commit(db, txDB)
return err return err
} }

View File

@@ -292,20 +292,20 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, syncStatus int, keywo
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
var idList []int var idList []int
Begin(db) txDB, _ := Begin(db)
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
Rollback(db) Rollback(db, txDB)
panic(r) panic(r)
} }
}() }()
// globals.SugarLogger.Debug(sql) // globals.SugarLogger.Debug(sql)
if err = GetRows(db, &idList, sql, sqlParams...); err != nil || len(idList) == 0 { if err = GetRowsTx(txDB, &idList, sql, sqlParams...); err != nil || len(idList) == 0 {
Rollback(db) Rollback(db, txDB)
return pagedInfo, err return pagedInfo, err
} }
pagedInfo.TotalCount = GetLastTotalRowCount(db) pagedInfo.TotalCount = GetLastTotalRowCountTx(txDB)
Commit(db) Commit(db, txDB)
sql = ` sql = `
SELECT SELECT

View File

@@ -8,7 +8,7 @@ import (
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"github.com/astaxie/beego/adapter/orm" "github.com/astaxie/beego/client/orm"
) )
const ( const (
@@ -65,15 +65,15 @@ func GetDB() *DaoDB {
return &DaoDB{Db: orm.NewOrm()} return &DaoDB{Db: orm.NewOrm()}
} }
func Begin(db *DaoDB) (err error) { func Begin(db *DaoDB) (txDB orm.TxOrmer, err error) {
if db.transactionLevel == 0 { if db.transactionLevel == 0 {
err = db.Db.Begin() txDB, err = db.Db.Begin()
if err == nil { if err == nil {
db.startWatchTransaction() db.startWatchTransaction()
} }
} }
db.transactionLevel++ db.transactionLevel++
return err return txDB, err
} }
func (db *DaoDB) startWatchTransaction() { func (db *DaoDB) startWatchTransaction() {
@@ -93,11 +93,11 @@ func (db *DaoDB) stopWatchTransaction() {
} }
} }
func Commit(db *DaoDB) (err error) { func Commit(db *DaoDB, txDB orm.TxOrmer) (err error) {
if db.transactionLevel == 1 { if db.transactionLevel == 1 {
db.stopWatchTransaction() db.stopWatchTransaction()
err = txDB.Commit()
err = db.Db.Commit() //err = db.Db.Commit()
db.transactionLevel = 0 db.transactionLevel = 0
} else if db.transactionLevel > 1 { } else if db.transactionLevel > 1 {
db.transactionLevel-- db.transactionLevel--
@@ -105,11 +105,11 @@ func Commit(db *DaoDB) (err error) {
return err return err
} }
func Rollback(db *DaoDB) (err error) { func Rollback(db *DaoDB, txDB orm.TxOrmer) (err error) {
if db.transactionLevel > 0 { if db.transactionLevel > 0 {
db.stopWatchTransaction() db.stopWatchTransaction()
err = txDB.Rollback()
err = db.Db.Rollback() //err = db.Db.Rollback()
} }
db.transactionLevel = 0 db.transactionLevel = 0
return err return err
@@ -139,6 +139,31 @@ func GetRow(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (er
return err return err
} }
func GetRowTx(txDB orm.TxOrmer, inPtr interface{}, sql string, values ...interface{}) (err error) {
if txDB == nil {
return
}
if !useGetRowsWhenGetRow { // beego QueryRow有bug嵌入的struct不能正常绑定
err = txDB.Raw(sql, values).QueryRow(inPtr)
//err = db.Db.Raw(sql, values).QueryRow(inPtr)
} else {
typeInfo := reflect.TypeOf(inPtr)
if typeInfo.Kind() != reflect.Ptr {
return errors.New("inPtr must be ptr")
}
slice := reflect.New(reflect.SliceOf(typeInfo.Elem()))
if err = GetRowsTx(txDB, slice.Interface(), sql, values...); err == nil {
slice = slice.Elem()
if slice.Len() > 0 {
reflect.ValueOf(inPtr).Elem().Set(slice.Index(0))
} else {
return orm.ErrNoRows
}
}
}
return err
}
func GetRows(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) { func GetRows(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (err error) {
if db == nil { if db == nil {
db = GetDB() db = GetDB()
@@ -147,6 +172,15 @@ func GetRows(db *DaoDB, inPtr interface{}, sql string, values ...interface{}) (e
return err return err
} }
func GetRowsTx(txDB orm.TxOrmer, inPtr interface{}, sql string, values ...interface{}) (err error) {
if txDB == nil {
return
}
_, err = txDB.Raw(sql, values).QueryRows(inPtr)
//_, err = db.Db.Raw(sql, values).QueryRows(inPtr)
return err
}
func GetEntity(db *DaoDB, item interface{}, cols ...string) (err error) { func GetEntity(db *DaoDB, item interface{}, cols ...string) (err error) {
if db == nil { if db == nil {
db = GetDB() db = GetDB()
@@ -178,6 +212,27 @@ func CreateEntity(db *DaoDB, item interface{}) (err error) {
return err return err
} }
func UpdateEntityTx(txDB orm.TxOrmer, item interface{}, cols ...string) (num int64, err error) {
if txDB == nil {
return
}
num, err = txDB.Update(item, cols...)
if err != nil && !IsDuplicateError(err) {
globals.SugarLogger.Errorf("UpdateEntity %s failed with error:%v", reflect.TypeOf(item).Name(), err)
}
return num, err
}
func CreateEntityTx(txDB orm.TxOrmer, item interface{}) (err error) {
if txDB == nil {
return
}
if _, err = txDB.Insert(item); err != nil && !IsDuplicateError(err) {
globals.SugarLogger.Errorf("CreateEntity %s failed with error:%v", reflect.TypeOf(item).Name(), err)
}
return err
}
// InsertMulti执行成功后ID不会改写成正确的象Insert一样 // InsertMulti执行成功后ID不会改写成正确的象Insert一样
func CreateMultiEntities(db *DaoDB, item interface{}) (err error) { func CreateMultiEntities(db *DaoDB, item interface{}) (err error) {
if db == nil { if db == nil {
@@ -230,3 +285,11 @@ func GetLastTotalRowCount(db *DaoDB) int {
} }
return 0 return 0
} }
func GetLastTotalRowCountTx(txDB orm.TxOrmer) int {
countInfo := &struct{ Ct int }{}
if err := GetRowTx(txDB, countInfo, "SELECT FOUND_ROWS() ct"); err == nil {
return countInfo.Ct
}
return 0
}

View File

@@ -115,11 +115,11 @@ func GetUserBillDetail(db *DaoDB, userID string, fromTime, toTime time.Time, pag
` `
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &userBillDetails, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &userBillDetails, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
Data: userBillDetails, Data: userBillDetails,
} }
} }

View File

@@ -137,11 +137,11 @@ func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &jobs, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &jobs, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
// Data: jobs, // Data: jobs,
} }
for _, v := range jobs { for _, v := range jobs {
@@ -358,11 +358,11 @@ func GetJobOrders(db *DaoDB, jobID int, jobOrderID int64, userID, jobUserID stri
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &jobOrders, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &jobOrders, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
// Data: jobOrders, // Data: jobOrders,
} }
for _, v := range jobOrders { for _, v := range jobOrders {
@@ -490,11 +490,11 @@ func GetStationInfoList(db *DaoDB, stationName string, cityCode int, lat, lng fl
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &stations, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &stations, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
// Data: stations, // Data: stations,
} }
for _, v := range stations { for _, v := range stations {

View File

@@ -75,13 +75,13 @@ func GetDeliveryOrders(db *DaoDB, userIDs []string, statuss []int, fromTime, toT
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
fmt.Println(sql) fmt.Println(sql)
fmt.Println(sqlParams) fmt.Println(sqlParams)
if err = GetRows(db, &dOrders, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &dOrders, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
// Data: dOrders, // Data: dOrders,
} }
for _, v := range dOrders { for _, v := range dOrders {
@@ -170,11 +170,11 @@ func GetOrders(db *DaoDB, orderID, userID string, orderType int, cityCodes []int
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &orders, sql, sqlParams); err == nil { if err = GetRowsTx(txDB, &orders, sql, sqlParams); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
Data: orders, Data: orders,
} }
} }
@@ -506,13 +506,13 @@ func GetManageStatisticsJob(db *DaoDB, cityCodes []int, fromTime, toTime time.Ti
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize) pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
err = GetRows(db, &getManageStatisticsJobResult, sql, sqlParams) err = GetRowsTx(txDB, &getManageStatisticsJobResult, sql, sqlParams)
if err == nil { if err == nil {
pageInfo = &model.PagedInfo{ pageInfo = &model.PagedInfo{
Data: getManageStatisticsJobResult, Data: getManageStatisticsJobResult,
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
} }
} }
return pageInfo, err return pageInfo, err

View File

@@ -1,62 +0,0 @@
package dao
import (
"testing"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/testinit"
)
func init() {
testinit.Init()
}
func TestSelectEntities(t *testing.T) {
places := []*model.Place{}
GetRows(nil, &places, `
SELECT DISTINCT t3.*
FROM sku_name_place_bind t1
JOIN place t2 ON t1.place_code = t2.code
JOIN place t3 ON (t2.level = 2 AND t2.code = t3.code) OR (t2.level = 1 AND t2.code = t3.parent_code)
WHERE t1.name_id = ?
`, 40)
globals.SugarLogger.Debug(utils.Format4Output(places, false))
}
func TestGetPlaceByName(t *testing.T) {
result, err := GetPlaceByName(nil, "青羊", 3, 510100)
if err != nil {
t.Fatal(err)
}
t.Log(result)
}
func TestUpdateKV(t *testing.T) {
dummy := &model.Store{}
kvs := map[string]interface{}{
"status": 100,
"Tel1": "tel1",
"tEl2": "tel2",
"deliveryRangeType": 15,
}
cond := map[string]interface{}{
"id": 100002,
}
num, err := UpdateEntityLogically(nil, dummy, kvs, "autotest", cond)
if err != nil {
t.Fatal(err)
}
t.Log(num)
}
func TestWrapAddIDCULEntity(t *testing.T) {
dummy := &model.Store{}
WrapAddIDCULEntity(dummy, "autotest")
if dummy.LastOperator != "autotest" {
t.Fatal("last operator is not same")
}
t.Log(dummy)
}

View File

@@ -106,10 +106,10 @@ func GetUsers(db *DaoDB, userType int, keyword, popUser string, userIDs, userID2
} }
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &userList, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &userList, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db) totalCount = GetLastTotalRowCountTx(txDB)
} }
return userList, totalCount, err return userList, totalCount, err
} }
@@ -210,11 +210,11 @@ func GetUsers2(db *DaoDB, keyword string, userID string, pop int, mobile string,
} }
sql += " LIMIT ? OFFSET ?" sql += " LIMIT ? OFFSET ?"
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &userList, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &userList, sql, sqlParams...); err == nil {
pageInfo = &model.PagedInfo{ pageInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
Data: userList, Data: userList,
} }
} }
@@ -292,10 +292,10 @@ func QueryUserDeliveryAddress(db *DaoDB, addressID int64, userIDs []string, addT
LIMIT ? OFFSET ?` LIMIT ? OFFSET ?`
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &addressList, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &addressList, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db) totalCount = GetLastTotalRowCountTx(txDB)
} }
return addressList, totalCount, err return addressList, totalCount, err
} }

View File

@@ -108,10 +108,10 @@ func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateType
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
` `
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &operateEventExt, sql, sqlParams...); err == nil { if err = GetRowsTx(txDB, &operateEventExt, sql, sqlParams...); err == nil {
totalCount = GetLastTotalRowCount(db) totalCount = GetLastTotalRowCountTx(txDB)
} }
var ( var (
accessUUidList []string accessUUidList []string
@@ -185,11 +185,11 @@ func GetImMessageRecord(db *DaoDB, groupID int, userID, toUserID string, storeID
LIMIT ? OFFSET ? LIMIT ? OFFSET ?
` `
sqlParams = append(sqlParams, pageSize, offset) sqlParams = append(sqlParams, pageSize, offset)
Begin(db) txDB, _ := Begin(db)
defer Commit(db) defer Commit(db, txDB)
if err = GetRows(db, &msg, sql, sqlParams); err == nil { if err = GetRowsTx(txDB, &msg, sql, sqlParams); err == nil {
pagedInfo = &model.PagedInfo{ pagedInfo = &model.PagedInfo{
TotalCount: GetLastTotalRowCount(db), TotalCount: GetLastTotalRowCountTx(txDB),
// Data: msg, // Data: msg,
} }
for _, v := range msg { for _, v := range msg {

View File

@@ -570,12 +570,13 @@ func (c *JobController) GetUnionActList() {
// @Description 分享联盟链接 // @Description 分享联盟链接
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param jobID formData int true "任务ID" // @Param jobID formData int true "任务ID"
// @Param linkType formData int true "链接类型1为小程序2为H5"
// @Success 200 {object} controllers.CallResult // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /ShareUnionLink [post] // @router /ShareUnionLink [post]
func (c *JobController) ShareUnionLink() { func (c *JobController) ShareUnionLink() {
c.callShareUnionLink(func(params *tJobShareUnionLinkParams) (retVal interface{}, errCode string, err error) { c.callShareUnionLink(func(params *tJobShareUnionLinkParams) (retVal interface{}, errCode string, err error) {
retVal, err = cms.ShareUnionLink(params.Ctx, 1, 1) retVal, err = cms.ShareUnionLink(params.Ctx, params.JobID, params.LinkType)
return retVal, "", err return retVal, "", err
}) })
} }