150 lines
4.2 KiB
Go
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
|
|
}
|