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 } func GetJobOrders(db *DaoDB, jobID int, userID string, status int) (jobOrders []*model.JobOrder, err error) { // sql := ` // SELECT // ` return jobOrders, err }