spjob
This commit is contained in:
@@ -170,7 +170,7 @@ func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs, statuss, ven
|
||||
return dao.GetJobs(dao.GetDB(), userIDs, categoryIDs, statuss, vendorIDs, includeStep, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset)
|
||||
}
|
||||
|
||||
func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
||||
func AcceptJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
userID = ctx.GetUserID()
|
||||
@@ -180,15 +180,15 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
||||
job.ID = jobID
|
||||
err = dao.GetEntity(db, &job)
|
||||
if job.UserID == "" || job.Status == model.JobStatusFailed || job.Status == model.JobStatusOverdue || job.FinishedAt.Sub(time.Now()) <= 0 || job.SurplusCount <= 0 || job.LimitCountType <= 0 {
|
||||
return fmt.Errorf("未找到该任务或该任务状态不正常,无法接单!")
|
||||
return errCode, fmt.Errorf("未找到该任务或该任务状态不正常,无法接单!")
|
||||
}
|
||||
num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if num >= AcceptMaxCount {
|
||||
return fmt.Errorf("每人最多接取" + utils.Int2Str(AcceptMaxCount) + "个任务,请核实!")
|
||||
return errCode, fmt.Errorf("每人最多接取" + utils.Int2Str(AcceptMaxCount) + "个任务,请核实!")
|
||||
}
|
||||
num, err = checkJobOrders(db, jobID, "<= "+utils.Int2Str(model.JobOrderStatusWaitAudit), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if num > 0 {
|
||||
return fmt.Errorf("您还有此任务未完成,请完成后再接取!")
|
||||
return errCode, fmt.Errorf("您还有此任务未完成,请完成后再接取!")
|
||||
}
|
||||
// num, err = checkJobOrders(db, "= "+utils.Int2Str(model.JobOrderStatusAuditUnPass), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
// if num > 0 {
|
||||
@@ -198,21 +198,21 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
||||
case model.JobLimitCountTypePO:
|
||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||
if num > 0 {
|
||||
return fmt.Errorf("此任务只支持每人做一次!")
|
||||
return errCode, fmt.Errorf("此任务只支持每人做一次!")
|
||||
}
|
||||
case model.JobLimitCountTypePDO:
|
||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
|
||||
if num > 0 {
|
||||
return fmt.Errorf("此任务只支持每人每天做一次!")
|
||||
return errCode, fmt.Errorf("此任务只支持每人每天做一次!")
|
||||
}
|
||||
case model.JobLimitCountTypePWO:
|
||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
|
||||
if num > 0 {
|
||||
return fmt.Errorf("此任务只支持每人每周做一次!")
|
||||
return errCode, fmt.Errorf("此任务只支持每人每周做一次!")
|
||||
}
|
||||
case model.JobLimitCountTypeNoLimit:
|
||||
default:
|
||||
return fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
||||
return errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
||||
}
|
||||
jobOrder := &model.JobOrder{
|
||||
JobID: jobID,
|
||||
@@ -244,10 +244,35 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
||||
dao.Commit(db)
|
||||
//任务限时完成
|
||||
checkLimitJobOrders(db, job, jobOrder)
|
||||
//特殊任务,如美团会员,是直接要支付
|
||||
if jobID == model.JobIDMtMembers {
|
||||
|
||||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||||
if err != nil {
|
||||
return errCode, err
|
||||
}
|
||||
if userBill.AccountBalance < job.AvgPrice {
|
||||
return model.ErrCodeAccountBalanceNotEnough, err
|
||||
}
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
//账户支出明细
|
||||
//1、账户支出增加一条记录
|
||||
if err = financial.AddBillExpend(db, userBill.BillID, model.BillTypeSpJob, job.AvgPrice); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//2、账户表余额减少相应值
|
||||
userBill.AccountBalance -= job.AvgPrice
|
||||
if _, err = dao.UpdateEntity(db, userBill, "AccountBalance"); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
dao.Commit(db)
|
||||
}
|
||||
return err
|
||||
return errCode, err
|
||||
}
|
||||
|
||||
func CancelAcceptJob(ctx *jxcontext.Context, jobID int, jobOrderID int64) (err error) {
|
||||
@@ -469,20 +494,3 @@ func ImprotMtMembers(ctx *jxcontext.Context, mtMembers []*model.MtMember) (err e
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func BuySpecialJob(ctx *jxcontext.Context, jobID int) (errCode string, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
job = &model.Job{}
|
||||
)
|
||||
job.ID = jobID
|
||||
dao.GetEntity(db, job)
|
||||
if job == nil {
|
||||
return errCode, fmt.Errorf("未查询到该任务!")
|
||||
}
|
||||
userBill, err := dao.GetUserBill(db, ctx.GetUserID(), "")
|
||||
if userBill.AccountBalance < job.AvgPrice {
|
||||
|
||||
}
|
||||
return errCode, err
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ const (
|
||||
BillTypeMember = 3 //开通会员
|
||||
BillTypeJobCancelOverdue = 4 //任务过期或取消
|
||||
BillTypeJobAuditUnPassWithCancelOverdue = 5 //任务不通过时,任务已取消或过期
|
||||
BillTypeSpJob = 6 //特殊任务扣除
|
||||
|
||||
BillTypeCash = 9 //提现
|
||||
BillTypeInvest = 8 //充值
|
||||
|
||||
@@ -109,8 +109,8 @@ func (c *JobController) GetJobDetail() {
|
||||
// @router /AcceptJob [post]
|
||||
func (c *JobController) AcceptJob() {
|
||||
c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) {
|
||||
err = cms.AcceptJob(params.Ctx, params.JobID)
|
||||
return retVal, "", err
|
||||
errCode, err = cms.AcceptJob(params.Ctx, params.JobID)
|
||||
return retVal, errCode, err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -203,17 +203,3 @@ func (c *JobController) ImprotMtMembers() {
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 特殊任务购买
|
||||
// @Description 特殊任务购买
|
||||
// @Param token header string true "认证token"
|
||||
// @Param jobID formData int true "任务ID"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /BuySpecialJob [post]
|
||||
func (c *JobController) BuySpecialJob() {
|
||||
c.callBuySpecialJob(func(params *tJobBuySpecialJobParams) (retVal interface{}, errCode string, err error) {
|
||||
errCode, err = cms.BuySpecialJob(params.Ctx, params.JobID)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -178,15 +178,6 @@ 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: "BuySpecialJob",
|
||||
Router: `/BuySpecialJob`,
|
||||
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",
|
||||
|
||||
Reference in New Issue
Block a user