diff --git a/business/model/dao/dao_job.go b/business/model/dao/dao_job.go index 82929f9dd..d761a9065 100644 --- a/business/model/dao/dao_job.go +++ b/business/model/dao/dao_job.go @@ -35,6 +35,29 @@ type GetJobsResult struct { Distance float64 `json:"distance"` //距用户距离 } +func GetJobSteps(db *DaoDB, jobID int) (jobSteps []*model.JobStep, err error) { + sql := ` + SELECT * + FROM job_step + WHERE job_id = ? + AND deleted_at = ? + ` + sqlParams := []interface{}{jobID, utils.DefaultTimeValue} + err = GetRows(db, &jobSteps, sql, sqlParams) + return jobSteps, err +} + +func GetJobImgs(db *DaoDB, jobID int) (jobImgs []*model.JobImg, err error) { + sql := ` + SELECT * + FROM job_img + WHERE job_id = ? + ` + sqlParams := []interface{}{jobID} + err = GetRows(db, &jobImgs, sql, sqlParams) + return jobImgs, err +} + func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types []int, includeStep bool, fromTime, toTime time.Time, lng, lat float64, sortType, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var ( jobs []*GetJobsResult @@ -105,33 +128,16 @@ func GetJobs(db *DaoDB, userIDs []string, categoryIDs, statuss, vendorIDs, types TotalCount: GetLastTotalRowCount(db), // Data: jobs, } - if includeStep { - for _, v := range jobs { - var jobSteps []*model.JobStep - sql2 := ` - SELECT * - FROM job_step - WHERE job_id = ? - AND deleted_at = ? - ` - sqlParams2 := []interface{}{v.ID, utils.DefaultTimeValue} - err = GetRows(db, &jobSteps, sql2, sqlParams2) - v.JobSteps = jobSteps - } - } for _, v := range jobs { + if includeStep { + if jobSteps, err := GetJobSteps(db, v.ID); err == nil && len(jobSteps) > 0 { + v.JobSteps = jobSteps + } + } var ( - jobImgs []*model.JobImg distance float64 ) - sql3 := ` - SELECT * - FROM job_img - WHERE job_id = ? - ` - sqlParams3 := []interface{}{v.ID} - err = GetRows(db, &jobImgs, sql3, sqlParams3) - if len(jobImgs) > 0 { + if jobImgs, err := GetJobImgs(db, v.ID); err == nil && len(jobImgs) > 0 { v.JobImgs = jobImgs v.IndexImg = jobImgs[0].Img } @@ -191,39 +197,20 @@ func GetJobsNoPage(db *DaoDB, userIDs []string, categoryIDs, statuss, types []in sqlParams = append(sqlParams, toTime) } err = GetRows(db, &jobs, sql, sqlParams...) - if includeStep { - for _, v := range jobs { - var jobSteps []*model.JobStep - sql2 := ` - SELECT * - FROM job_step - WHERE job_id = ? - AND deleted_at = ? - ` - sqlParams2 := []interface{}{v.ID, utils.DefaultTimeValue} - err = GetRows(db, &jobSteps, sql2, sqlParams2) - v.JobSteps = jobSteps - } - } for _, v := range jobs { - var jobImgs []*model.JobImg - sql3 := ` - SELECT * - FROM job_img - WHERE job_id = ? - ` - sqlParams3 := []interface{}{v.ID} - err = GetRows(db, &jobImgs, sql3, sqlParams3) - v.JobImgs = jobImgs + if includeStep { + if jobSteps, err := GetJobSteps(db, v.ID); err == nil && len(jobSteps) > 0 { + v.JobSteps = jobSteps + } + } + if jobImgs, err := GetJobImgs(db, v.ID); err == nil && len(jobImgs) > 0 { + v.JobImgs = jobImgs + } } return jobs, err } func GetJobDetail(db *DaoDB, jobID int) (job *GetJobsResult, err error) { - var ( - jobImgs []*model.JobImg - jobSteps []*model.JobStep - ) sql := ` SELECT a.*, b.name FROM job a @@ -237,23 +224,12 @@ func GetJobDetail(db *DaoDB, jobID int) (job *GetJobsResult, err error) { } err = GetRow(db, &job, sql, sqlParams...) if job != nil { - sql2 := ` - SELECT * - FROM job_step - WHERE job_id = ? - AND deleted_at = ? - ` - sqlParams2 := []interface{}{job.ID, utils.DefaultTimeValue} - err = GetRows(db, &jobSteps, sql2, sqlParams2) - job.JobSteps = jobSteps - sql3 := ` - SELECT * - FROM job_img - WHERE job_id = ? - ` - sqlParams3 := []interface{}{job.ID} - err = GetRows(db, &jobImgs, sql3, sqlParams3) - job.JobImgs = jobImgs + if jobSteps, err := GetJobSteps(db, job.ID); err == nil && len(jobSteps) > 0 { + job.JobSteps = jobSteps + } + if jobImgs, err := GetJobImgs(db, job.ID); err == nil && len(jobImgs) > 0 { + job.JobImgs = jobImgs + } } else { return job, fmt.Errorf("未查到到该任务!") } @@ -352,16 +328,9 @@ func GetJobOrders(db *DaoDB, jobID int, jobOrderID int64, userID string, statusC // Data: jobOrders, } for _, v := range jobOrders { - v.JobOrderFinishAt = v.CreatedAt.Add(time.Duration(v.JobLimitAt) * time.Hour) - var jobImgs []*model.JobImg - sql3 := ` - SELECT * - FROM job_img - WHERE job_id = ? - ` - sqlParams3 := []interface{}{v.JobID} - err = GetRows(db, &jobImgs, sql3, sqlParams3) - v.JobIndexImg = jobImgs[0].Img + if jobImgs, err := GetJobImgs(db, v.JobID); err == nil && len(jobImgs) > 0 { + v.JobIndexImg = jobImgs[0].Img + } } pagedInfo.Data = jobOrders }