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)
|
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 (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
userID = ctx.GetUserID()
|
userID = ctx.GetUserID()
|
||||||
@@ -180,15 +180,15 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
|||||||
job.ID = jobID
|
job.ID = jobID
|
||||||
err = dao.GetEntity(db, &job)
|
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 {
|
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)
|
num, err = checkJobOrders(db, 0, "<= "+utils.Int2Str(model.JobOrderStatusAccept), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num >= AcceptMaxCount {
|
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)
|
num, err = checkJobOrders(db, jobID, "<= "+utils.Int2Str(model.JobOrderStatusWaitAudit), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return fmt.Errorf("您还有此任务未完成,请完成后再接取!")
|
return errCode, fmt.Errorf("您还有此任务未完成,请完成后再接取!")
|
||||||
}
|
}
|
||||||
// num, err = checkJobOrders(db, "= "+utils.Int2Str(model.JobOrderStatusAuditUnPass), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
// num, err = checkJobOrders(db, "= "+utils.Int2Str(model.JobOrderStatusAuditUnPass), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
// if num > 0 {
|
// if num > 0 {
|
||||||
@@ -198,21 +198,21 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
|||||||
case model.JobLimitCountTypePO:
|
case model.JobLimitCountTypePO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, utils.ZeroTimeValue, utils.ZeroTimeValue)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return fmt.Errorf("此任务只支持每人做一次!")
|
return errCode, fmt.Errorf("此任务只支持每人做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypePDO:
|
case model.JobLimitCountTypePDO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, DayTimeBegin, DayTimeEnd)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return fmt.Errorf("此任务只支持每人每天做一次!")
|
return errCode, fmt.Errorf("此任务只支持每人每天做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypePWO:
|
case model.JobLimitCountTypePWO:
|
||||||
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
|
num, err = checkJobOrders(db, jobID, "<> "+utils.Int2Str(model.JobOrderStatusCancel), userID, WeekTimeBegin, WeekTimeEnd)
|
||||||
if num > 0 {
|
if num > 0 {
|
||||||
return fmt.Errorf("此任务只支持每人每周做一次!")
|
return errCode, fmt.Errorf("此任务只支持每人每周做一次!")
|
||||||
}
|
}
|
||||||
case model.JobLimitCountTypeNoLimit:
|
case model.JobLimitCountTypeNoLimit:
|
||||||
default:
|
default:
|
||||||
return fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
return errCode, fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
||||||
}
|
}
|
||||||
jobOrder := &model.JobOrder{
|
jobOrder := &model.JobOrder{
|
||||||
JobID: jobID,
|
JobID: jobID,
|
||||||
@@ -244,10 +244,35 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
|||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
//任务限时完成
|
//任务限时完成
|
||||||
checkLimitJobOrders(db, job, jobOrder)
|
checkLimitJobOrders(db, job, jobOrder)
|
||||||
|
//特殊任务,如美团会员,是直接要支付
|
||||||
if jobID == model.JobIDMtMembers {
|
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) {
|
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
|
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 //开通会员
|
BillTypeMember = 3 //开通会员
|
||||||
BillTypeJobCancelOverdue = 4 //任务过期或取消
|
BillTypeJobCancelOverdue = 4 //任务过期或取消
|
||||||
BillTypeJobAuditUnPassWithCancelOverdue = 5 //任务不通过时,任务已取消或过期
|
BillTypeJobAuditUnPassWithCancelOverdue = 5 //任务不通过时,任务已取消或过期
|
||||||
|
BillTypeSpJob = 6 //特殊任务扣除
|
||||||
|
|
||||||
BillTypeCash = 9 //提现
|
BillTypeCash = 9 //提现
|
||||||
BillTypeInvest = 8 //充值
|
BillTypeInvest = 8 //充值
|
||||||
|
|||||||
@@ -109,8 +109,8 @@ func (c *JobController) GetJobDetail() {
|
|||||||
// @router /AcceptJob [post]
|
// @router /AcceptJob [post]
|
||||||
func (c *JobController) AcceptJob() {
|
func (c *JobController) AcceptJob() {
|
||||||
c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) {
|
c.callAcceptJob(func(params *tJobAcceptJobParams) (retVal interface{}, errCode string, err error) {
|
||||||
err = cms.AcceptJob(params.Ctx, params.JobID)
|
errCode, err = cms.AcceptJob(params.Ctx, params.JobID)
|
||||||
return retVal, "", err
|
return retVal, errCode, err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -203,17 +203,3 @@ func (c *JobController) ImprotMtMembers() {
|
|||||||
return retVal, "", err
|
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,
|
Filters: nil,
|
||||||
Params: 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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "CancelAcceptJob",
|
Method: "CancelAcceptJob",
|
||||||
|
|||||||
Reference in New Issue
Block a user