acceptjob
This commit is contained in:
@@ -127,8 +127,8 @@ func PublishJob(ctx *jxcontext.Context, job *model.Job) (err error) {
|
|||||||
return err
|
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) {
|
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, 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) (err error) {
|
||||||
@@ -171,7 +171,41 @@ func AcceptJob(ctx *jxcontext.Context, jobID int) (err error) {
|
|||||||
default:
|
default:
|
||||||
return fmt.Errorf("不支持的任务限次类型!%v", job.LimitCountType)
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -186,6 +186,21 @@ func GenOrderNo() (orderNo int64) {
|
|||||||
return orderNo
|
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) {
|
func GenBillID() (billID int64) {
|
||||||
const prefix = 66
|
const prefix = 66
|
||||||
const randPartNum = 100
|
const randPartNum = 100
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ type GetJobsResult struct {
|
|||||||
CategoryName string `json:"CategoryName"` //分类名
|
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
|
var jobs []*GetJobsResult
|
||||||
sql := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS a.*, b.name
|
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)) + `)`
|
sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)`
|
||||||
sqlParams = append(sqlParams, 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 {
|
if fromTime != utils.ZeroTimeValue {
|
||||||
sql += ` AND a.created_at >= ?`
|
sql += ` AND a.created_at >= ?`
|
||||||
sqlParams = append(sqlParams, fromTime)
|
sqlParams = append(sqlParams, fromTime)
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ type JobOrder struct {
|
|||||||
ModelIDCUL
|
ModelIDCUL
|
||||||
|
|
||||||
JobID int `orm:"column(job_id)" json:"jobID"` //任务ID
|
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
|
UserID string `orm:"column(user_id)" json:"userID"` //接任务人ID
|
||||||
Status int `json:"status"` //任务订单状态,接单,待审核,已审核,已结算等
|
Status int `json:"status"` //任务订单状态,接单,待审核,已审核,已结算等
|
||||||
SubmitAuditAt time.Time `json:"submitAuditTime"` //提交审核日期
|
SubmitAuditAt time.Time `json:"submitAuditTime"` //提交审核日期
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ func (c *JobController) GetJobCategories() {
|
|||||||
// @Param userIDs query string false "用户IDs"
|
// @Param userIDs query string false "用户IDs"
|
||||||
// @Param categoryIDs query string false "分类IDs"
|
// @Param categoryIDs query string false "分类IDs"
|
||||||
// @Param statuss query string false "状态s"
|
// @Param statuss query string false "状态s"
|
||||||
|
// @Param vendorIDs query string false "平台IDs"
|
||||||
// @Param includeStep query bool false "是否查询步骤,默认否"
|
// @Param includeStep query bool false "是否查询步骤,默认否"
|
||||||
// @Param fromTime query string false "开始时间"
|
// @Param fromTime query string false "开始时间"
|
||||||
// @Param toTime query string false "结束时间"
|
// @Param toTime query string false "结束时间"
|
||||||
@@ -61,11 +62,11 @@ func (c *JobController) GetJobCategories() {
|
|||||||
func (c *JobController) GetJobs() {
|
func (c *JobController) GetJobs() {
|
||||||
c.callGetJobs(func(params *tJobGetJobsParams) (retVal interface{}, errCode string, err error) {
|
c.callGetJobs(func(params *tJobGetJobsParams) (retVal interface{}, errCode string, err error) {
|
||||||
var (
|
var (
|
||||||
userIDs []string
|
userIDs []string
|
||||||
categoryIDs, statuss []int
|
categoryIDs, statuss, vendorIDs []int
|
||||||
)
|
)
|
||||||
if err = jxutils.Strings2Objs(params.UserIDs, &userIDs, params.CategoryIDs, &categoryIDs, params.Statuss, &statuss); err == nil {
|
if err = jxutils.Strings2Objs(params.UserIDs, &userIDs, params.CategoryIDs, &categoryIDs, params.Statuss, &statuss, params.VendorIDs, vendorIDs); err == nil {
|
||||||
retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, statuss, params.IncludeStep, params.FromTime, params.ToTime, params.PageSize, params.Offset)
|
retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, statuss, vendorIDs, params.IncludeStep, params.FromTime, params.ToTime, params.PageSize, params.Offset)
|
||||||
}
|
}
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user