diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index 5b39d752f..3a8ed2f36 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -611,6 +611,7 @@ func ImprotMtMembers(ctx *jxcontext.Context, mtMembers []*model.MtMember) (err e func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err error) { var ( db = dao.GetDB() + db2 = dao.GetDB() userID = ctx.GetUserID() ) dao.Begin(db) @@ -646,16 +647,25 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e dao.Rollback(db) return errCode, err } + dao.Commit(db) for { - mtMember, err := dao.GetMtMember(db) + dao.Begin(db2) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db2) + panic(r) + } + }() + mtMember, err := dao.GetMtMember(db2) if mtMember == nil { return errCode, fmt.Errorf("补券中,请稍后再试!") } err = api.MtMemberAPI.RechargeExchange(phone, mtMember.ShortLink) mtMember.DeletedAt = time.Now() - dao.UpdateEntity(db, mtMember, "DeletedAt") + dao.UpdateEntity(db2, mtMember, "DeletedAt") + dao.Commit(db2) if err == nil { - job, err := dao.GetJob(db, 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) if errCode != "" { return errCode, err @@ -666,7 +676,6 @@ func RechargeMtMembers(ctx *jxcontext.Context, phone int) (errCode string, err e break } } - dao.Commit(db) return errCode, err }