acceptjob
This commit is contained in:
@@ -127,8 +127,8 @@ func PublishJob(ctx *jxcontext.Context, job *model.Job) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs, statuss []int, includeStep bool, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
return dao.GetJobs(dao.GetDB(), userIDs, categoryIDs, statuss, includeStep, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset)
|
||||
func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs, statuss, vendorIDs []int, includeStep bool, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
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) {
|
||||
@@ -171,7 +171,41 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
||||
default:
|
||||
return fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
||||
}
|
||||
|
||||
jobOrder := &model.JobOrder{
|
||||
JobID: jobID,
|
||||
JobOrderID: jxutils.GenJobOrderNo(),
|
||||
UserID: job.UserID,
|
||||
Status: model.JobOrderStatusAccept,
|
||||
}
|
||||
dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
dao.Rollback(db)
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
if err = dao.CreateEntity(db, jobOrder); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
//用户接受任务,任务剩余次数-1
|
||||
job.SurplusCount -= 1
|
||||
if _, err = dao.UpdateEntity(db, job, "SurplusCount"); err != nil {
|
||||
dao.Rollback(db)
|
||||
}
|
||||
dao.Commit(db)
|
||||
//任务限时完成
|
||||
utils.AfterFuncWithRecover(time.Hour*time.Duration(job.JobLimitAt), func() {
|
||||
jobOrders, _ := dao.GetJobOrdersNoPage(db, jobID, jobOrder.JobOrderID, userID, "", utils.ZeroTimeValue, utils.ZeroTimeValue, nil)
|
||||
if len(jobOrders) == 0 {
|
||||
return
|
||||
}
|
||||
jobOrder := jobOrders[0]
|
||||
if jobOrder.Status == model.JobOrderStatusCancel {
|
||||
return
|
||||
}
|
||||
jobOrder.Status = model.JobOrderStatusCancel
|
||||
dao.UpdateEntity(db, jobOrder, "Status")
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
|
||||
@@ -186,6 +186,21 @@ func GenOrderNo() (orderNo int64) {
|
||||
return orderNo
|
||||
}
|
||||
|
||||
func GenJobOrderNo() (orderNo int64) {
|
||||
const prefix = 88
|
||||
const randPartNum = 1000
|
||||
orderNo = time.Now().Unix() - orderNoBeginTimestamp
|
||||
orderNo = orderNo * randPartNum
|
||||
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
|
||||
randPart := 0
|
||||
for k, v := range md5Bytes {
|
||||
randPart += int(v) << ((k % 3) * 8)
|
||||
}
|
||||
orderNo += int64(randPart % randPartNum)
|
||||
orderNo += int64(math.Pow10(int(math.Log10(float64(orderNo)))+1)) * prefix
|
||||
return orderNo
|
||||
}
|
||||
|
||||
func GenBillID() (billID int64) {
|
||||
const prefix = 66
|
||||
const randPartNum = 100
|
||||
|
||||
@@ -26,7 +26,7 @@ type GetJobsResult struct {
|
||||
CategoryName string `json:"CategoryName"` //分类名
|
||||
}
|
||||
|
||||
func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss []int, includeStep bool, fromTime, toTime time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs []int, includeStep bool, fromTime, toTime time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
|
||||
var jobs []*GetJobsResult
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS a.*, b.name
|
||||
@@ -47,6 +47,10 @@ func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss []int, includeSte
|
||||
sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)`
|
||||
sqlParams = append(sqlParams, statuss)
|
||||
}
|
||||
if len(vendorIDs) > 0 {
|
||||
sql += ` AND a.vendor_id IN (` + GenQuestionMarks(len(vendorIDs)) + `)`
|
||||
sqlParams = append(sqlParams, vendorIDs)
|
||||
}
|
||||
if fromTime != utils.ZeroTimeValue {
|
||||
sql += ` AND a.created_at >= ?`
|
||||
sqlParams = append(sqlParams, fromTime)
|
||||
|
||||
@@ -87,7 +87,7 @@ type JobOrder struct {
|
||||
ModelIDCUL
|
||||
|
||||
JobID int `orm:"column(job_id)" json:"jobID"` //任务ID
|
||||
JobOrderID int `orm:"column(job_order_id)" json:"jobOrderID"` //任务订单号
|
||||
JobOrderID int64 `orm:"column(job_order_id)" json:"jobOrderID"` //任务订单号
|
||||
UserID string `orm:"column(user_id)" json:"userID"` //接任务人ID
|
||||
Status int `json:"status"` //任务订单状态,接单,待审核,已审核,已结算等
|
||||
SubmitAuditAt time.Time `json:"submitAuditTime"` //提交审核日期
|
||||
|
||||
Reference in New Issue
Block a user