diff --git a/business/jxstore/cms/job.go b/business/jxstore/cms/job.go index c482b816c..40e6df83c 100644 --- a/business/jxstore/cms/job.go +++ b/business/jxstore/cms/job.go @@ -157,7 +157,7 @@ func CancelPublishJob(ctx *jxcontext.Context, jobID int) (err error) { dao.Rollback(db) } //2、账户收入增加一条记录 - if err = financial.AddBillIncome(db, userBill.BillID, model.OrderTypeDeposit, userBill.DepositBalance); err != nil { + if err = financial.AddBillIncome(db, userBill.BillID, model.OrderTypeDeposit, job.SurplusCount*job.AvgPrice); err != nil { dao.Rollback(db) } //3、任务状态被取消 @@ -279,7 +279,7 @@ func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err e dao.Rollback(db) } //2、账户收入增加一条记录 - if err = financial.AddBillIncome(db, userBill.BillID, model.OrderTypeDeposit, userBill.DepositBalance); err != nil { + if err = financial.AddBillIncome(db, userBill.BillID, model.OrderTypeDeposit, job.AvgPrice); err != nil { dao.Rollback(db) } //3、任务订单状态被取消 @@ -322,6 +322,9 @@ func SubmitJob(ctx *jxcontext.Context, jobOrder *model.JobOrder) (err error) { if jobOrder.JobID == 0 || jobOrder.JobOrderID == 0 { return fmt.Errorf("传入数据有误!") } + job := &model.Job{} + job.ID = jobOrder.JobID + err = dao.GetEntity(db, &job) jobOrder2 := &model.JobOrder{} jobOrder2.JobOrderID = jobOrder.JobOrderID err = dao.GetEntity(db, &jobOrder2, "JobOrderID") @@ -331,10 +334,79 @@ func SubmitJob(ctx *jxcontext.Context, jobOrder *model.JobOrder) (err error) { if jobOrder2.Status >= model.JobOrderStatusWaitAudit { return fmt.Errorf("任务订单状态有误!") } + if ctx.GetUserID() != jobOrder2.UserID { + return fmt.Errorf("任务订单接收人有误!") + } jobOrder2.Img = jobOrder.Img jobOrder2.Content = jobOrder.Content jobOrder2.SubmitAuditAt = time.Now() jobOrder2.Status = model.JobOrderStatusWaitAudit - dao.UpdateEntity(db, jobOrder2, "Img", "Content", "SubmitAuditAt", "Status") + if _, err = dao.UpdateEntity(db, jobOrder2, "Img", "Content", "SubmitAuditAt", "Status"); err == nil { + //审核定时 + + } + return err +} + +func AuditJob(ctx *jxcontext.Context, jobOrderID, status int, comment string) (err error) { + var ( + db = dao.GetDB() + ) + jobOrder := &model.JobOrder{} + jobOrder.JobOrderID = int64(jobOrderID) + err = dao.GetEntity(db, &jobOrder, "JobOrderID") + job := &model.Job{} + job.ID = jobOrder.JobID + err = dao.GetEntity(db, &job) + if ctx.GetUserID() != job.UserID { + return fmt.Errorf("任务发起人才能审核!") + } + //审核时,若此任务已过期或者已取消,不通过则应将此任务保证金退还给发起人,通过则应将单次任务保证金给接受人 + //若此任务未过期,不通过则此任务剩余数量将+1,通过则应将单次任务保证金给接受人 + jobOrder.Status = status + jobOrder.Comment = comment + jobOrder.AuditAt = time.Now() + jobOrder.LastOperator = ctx.GetUserName() + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + if _, err = dao.UpdateEntity(db, jobOrder, "Status", "Comment", "AuditAt", "LastOperator"); err != nil { + dao.Rollback(db) + } + if status == model.JobOrderStatusAuditPass { + //接收人账户增加任务单次 + userBillJobOrder, err := dao.GetUserBill(db, jobOrder.UserID, "") + userBillJobOrder.AccountBalance += job.AvgPrice + if _, err = dao.UpdateEntity(db, userBillJobOrder, "AccountBalance"); err != nil { + dao.Rollback(db) + } + //接收人账户收入增加一条 + if err = financial.AddBillIncome(db, userBillJobOrder.BillID, model.OrderTypeJob, job.AvgPrice); err != nil { + dao.Rollback(db) + } + } else { + if job.Status < 0 { + userBill, err := dao.GetUserBill(db, job.UserID, "") + //1、根据任务剩余数量退钱到任务保证金余额中 + userBill.DepositBalance += job.AvgPrice + if _, err = dao.UpdateEntity(db, userBill, "DepositBalance"); err != nil { + dao.Rollback(db) + } + //2、账户收入增加一条记录 + if err = financial.AddBillIncome(db, userBill.BillID, model.OrderTypeDeposit, job.AvgPrice); err != nil { + dao.Rollback(db) + } + } else { + job.SurplusCount += 1 + if _, err = dao.UpdateEntity(db, job, "SurplusCount"); err != nil { + dao.Rollback(db) + } + } + } + dao.Commit(db) return err } diff --git a/business/model/job.go b/business/model/job.go index 1748eca93..577afced3 100644 --- a/business/model/job.go +++ b/business/model/job.go @@ -94,6 +94,7 @@ type JobOrder struct { AuditAt time.Time `json:"auditAt"` //审核日期 Content string `josn:"content"` //任务审核内容 Img string `json:"img"` //任务审核图片 + Comment string `json:"comment"` //审核理由 } func (v *JobOrder) TableIndex() [][]string { diff --git a/business/model/order.go b/business/model/order.go index 922963294..302a8df21 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -34,6 +34,7 @@ const ( OrderTypeDefendPrice = 3 //守价订单 OrderTypeDeposit = 1 //保证金 + OrderTypeJob = 2 //任务金 ) var ( diff --git a/controllers/job_controller.go b/controllers/job_controller.go index ae8ee29ac..85f5d2ce1 100644 --- a/controllers/job_controller.go +++ b/controllers/job_controller.go @@ -170,3 +170,19 @@ func (c *JobController) SubmitJob() { return retVal, "", err }) } + +// @Title 审核任务 +// @Description 审核任务 +// @Param token header string true "认证token" +// @Param jobOrderID formData int true "jobOrderID" +// @Param status formData int true "审核标志,15 是通过,20是不通过" +// @Param comment formData string true "审核理由" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /AuditJob [post] +func (c *JobController) AuditJob() { + c.callAuditJob(func(params *tJobAuditJobParams) (retVal interface{}, errCode string, err error) { + err = cms.AuditJob(params.Ctx, params.JobOrderID, params.Status, params.Comment) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4cc3d33f2..729344a9e 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -160,6 +160,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: "AuditJob", + Router: `/AuditJob`, + 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: "CancelAcceptJob",