From 633aef8f10f2ab8e8823e3478cc577d281348c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 9 Dec 2020 15:22:59 +0800 Subject: [PATCH] a --- business/jxstore/cms/job.go | 72 ++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index fd17971e4..1b504ca53 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -296,21 +296,6 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) { //任务限时完成 timer := checkLimitJobOrders(db, job, jobOrder, model.JobTimerTypeAccept) JobTimerMap[jobOrder.JobOrderID] = timer - //特殊任务,如美团会员,是直接要支付 - if job.Type == model.JobTypeMtMember { - userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "") - if err != nil { - return errCode, err - } - if userBill.AccountBalance < 1000 { - return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") - } - //账户支出 - if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, 1000); err != nil { - dao.Rollback(db) - return errCode, err - } - } dao.Commit(db) return errCode, err } @@ -625,50 +610,63 @@ 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() + db = dao.GetDB() + userID = ctx.GetUserID() ) dao.Begin(db) defer func() { if r := recover(); r != nil { dao.Rollback(db) panic(r) - } else { - dao.Commit(db) } }() nums, err := dao.GetMtMembers(db) if nums < 10 { ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "F4836F9238F611EB9101525400C36BDA", "美团会员券", "美团会员券仅剩"+utils.Int2Str(nums)+"张了!") - } - mtMember, err := dao.GetMtMember(db) - if mtMember == nil { - return errCode, fmt.Errorf("补券中,请稍后再试!") + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "EFA9876238FC11EB9101525400C36BDA", "美团会员券", "美团会员券仅剩"+utils.Int2Str(nums)+"张了!") } if err != nil { dao.Rollback(db) return errCode, err } //验证微信绑定 - if err = auth2.CheckWeixinminiAuthBind(ctx.GetUserID()); err != nil { + if err = auth2.CheckWeixinminiAuthBind(userID); err != nil { return "", err } - if err = api.MtMemberAPI.RechargeExchange(phone, mtMember.ShortLink); err == nil { + //特殊任务,如美团会员,是直接要支付 + userBill, err := dao.GetUserBill(db, userID, "") + if err != nil { + return errCode, err + } + if userBill.AccountBalance < 1000 { + return model.ErrCodeAccountBalanceNotEnough, fmt.Errorf("用户余额不足,请充值!") + } + //账户支出 + if err = financial.AddExpendUpdateAccount(db, userBill, model.BillTypeSpJob, 1000); err != nil { + dao.Rollback(db) + return errCode, err + } + for { + mtMember, err := dao.GetMtMember(db) + if mtMember == nil { + return errCode, fmt.Errorf("补券中,请稍后再试!") + } + err = api.MtMemberAPI.RechargeExchange(phone, mtMember.ShortLink) mtMember.DeletedAt = time.Now() - if _, err = dao.UpdateEntity(db, mtMember, "DeletedAt"); err == nil { - dao.Commit(db) - } else { - dao.Rollback(db) - return errCode, err - } - job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false) - errCode, err = AcceptJob(ctx, job.ID) - if errCode != "" { - return errCode, err - } - if err != nil { - return errCode, err + dao.UpdateEntity(db, mtMember, "DeletedAt") + if err == nil { + job, err := dao.GetJob(db, nil, nil, nil, []int{model.JobTypeMtMember}, utils.ZeroTimeValue, utils.ZeroTimeValue, false) + errCode, err = AcceptJob(ctx, job.ID) + if errCode != "" { + return errCode, err + } + if err != nil { + return errCode, err + } + break } } + dao.Commit(db) return errCode, err }