diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index 5a1b44fb1..c0d2c736e 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -631,7 +631,43 @@ func RefreshJobStatus(ctx *jxcontext.Context) (err error) { } for _, job := range jobs { if time.Now().Sub(*job.FinishedAt) >= 0 { - CancelPublishJob(ctx, job.ID) + //取消已发布的任务 + userBill, err := dao.GetUserBill(db, job.UserID, "") + if userBill == nil { + return fmt.Errorf("未查询到该用户的账单!") + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + //如果是固定返现,退给任务发起人剩余数量*单价 + //如果是比例返现,推给任务发起人任务总价-接取这个任务的用户实际返现的价格之和 + var price int + if job.CashbackType == model.JobCashbackPrice { + price = job.SurplusCount * job.AvgPrice + } else { + if billIncomes, err := dao.GetBillIncome(db, job.ID); err == nil { + for _, v := range billIncomes { + price += v.IncomePrice + } + } + price = job.TotalPrice - price + } + if err = financial.AddIncomeUpdateAccount(db, userBill, model.BillTypeJobCancelOverdue, price, job.ID); err != nil { + dao.Rollback(db) + return err + } + //3、任务状态被取消 + job.Status = model.JobStatusOverdue + // job.DeletedAt = time.Now() + if _, err = dao.UpdateEntity(db, job, "Status"); err != nil { + dao.Rollback(db) + return err + } + dao.Commit(db) } } globals.SugarLogger.Debugf("RefreshJobStatus end...") diff --git a/controllers/job_controller.go b/controllers/job_controller.go index 79617e7be..29b5153fb 100644 --- a/controllers/job_controller.go +++ b/controllers/job_controller.go @@ -382,3 +382,16 @@ func (c *JobController) UserRefundEjy() { return retVal, "", err }) } + +// @Title 刷新任务状态 +// @Description 刷新任务状态 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /RefreshJobStatus [post] +func (c *JobController) RefreshJobStatus() { + c.callRefreshJobStatus(func(params *tJobRefreshJobStatusParams) (retVal interface{}, errCode string, err error) { + err = cms.RefreshJobStatus(params.Ctx) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4283b97b5..6f84e7cca 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -484,6 +484,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"], + beego.ControllerComments{ + Method: "RefreshJobStatus", + Router: `/RefreshJobStatus`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"], beego.ControllerComments{ Method: "SendJdDelivery",