Files
jx-callback/business/model/dao/job.go
苏尹岚 54438022ff bill job
2020-10-14 18:29:36 +08:00

150 lines
4.2 KiB
Go

package dao
import (
"time"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
)
func GetJobCategories(db *DaoDB, name string) (jobCategories []*model.JobCategory, err error) {
sql := `
SELECT * FROM job_category WHERE deleted_at = ?
`
sqlParams := []interface{}{utils.DefaultTimeValue}
if name != "" {
sql += ` AND name LIKE ?`
sqlParams = append(sqlParams, "%"+name+"%")
}
err = GetRows(db, &jobCategories, sql, sqlParams)
return jobCategories, err
}
type GetJobsResult struct {
model.Job
CategoryName string `json:"CategoryName"` //分类名
}
func GetJobs(db *DaoDB, userIDs []string, categoryIDs []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
FROM job a
JOIN job_category b ON b.id = a.job_category_id AND b.deleted_at = ?
WHERE 1 = 1
`
sqlParams := []interface{}{utils.DefaultTimeValue}
if len(userIDs) > 0 {
sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)`
sqlParams = append(sqlParams, userIDs)
}
if len(categoryIDs) > 0 {
sql += ` AND a.job_category_id IN (` + GenQuestionMarks(len(categoryIDs)) + `)`
sqlParams = append(sqlParams, categoryIDs)
}
if fromTime != utils.ZeroTimeValue {
sql += ` AND a.created_at >= ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql += ` AND a.created_at <= ?`
sqlParams = append(sqlParams, toTime)
}
sql += " AND a.status <> ? LIMIT ? OFFSET ?"
pageSize = jxutils.FormalizePageSize(pageSize)
sqlParams = append(sqlParams, model.JobStatusFailed, pageSize, offset)
Begin(db)
defer Commit(db)
if err = GetRows(db, &jobs, sql, sqlParams...); err == nil {
pagedInfo = &model.PagedInfo{
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
}
}
pagedInfo.Data = jobs
}
return pagedInfo, err
}
func GetJobsNoPage(db *DaoDB, userIDs []string, categoryIDs []int, fromTime, toTime time.Time, includeStep bool) (jobs []*GetJobsResult, err error) {
sql := `
SELECT a.*, b.name
FROM job a
JOIN job_category b ON b.id = a.job_category_id AND b.deleted_at = ?
WHERE 1 = 1
`
sqlParams := []interface{}{utils.DefaultTimeValue}
if len(userIDs) > 0 {
sql += ` AND a.user_id IN (` + GenQuestionMarks(len(userIDs)) + `)`
sqlParams = append(sqlParams, userIDs)
}
if len(categoryIDs) > 0 {
sql += ` AND a.job_category_id IN (` + GenQuestionMarks(len(categoryIDs)) + `)`
sqlParams = append(sqlParams, categoryIDs)
}
if fromTime != utils.ZeroTimeValue {
sql += ` AND a.created_at >= ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql += ` AND a.created_at <= ?`
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
}
}
return jobs, err
}
func GetJobDetail(db *DaoDB, jobID int) (job *GetJobsResult, err error) {
var jobSteps []*model.JobStep
sql := `
SELECT a.*, b.name
FROM job a
JOIN job_category b ON b.id = a.job_category_id AND b.deleted_at = ?
WHERE 1 = 1
`
sqlParams := []interface{}{utils.DefaultTimeValue}
if jobID != 0 {
sql += ` AND a.id = ?`
sqlParams = append(sqlParams, jobID)
}
err = GetRow(db, &job, sql, sqlParams...)
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
return job, err
}