This commit is contained in:
苏尹岚
2020-10-20 16:37:52 +08:00
parent a6034b3535
commit 379d826b44
4 changed files with 38 additions and 52 deletions

View File

@@ -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
}

View File

@@ -6,6 +6,7 @@ const (
BillTypeMember = 3 //开通会员
BillTypeJobCancelOverdue = 4 //任务过期或取消
BillTypeJobAuditUnPassWithCancelOverdue = 5 //任务不通过时,任务已取消或过期
BillTypeSpJob = 6 //特殊任务扣除
BillTypeCash = 9 //提现
BillTypeInvest = 8 //充值

View File

@@ -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
})
}

View File

@@ -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",