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, statuss, vendorIDs []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 len(statuss) > 0 { sql += ` AND a.status IN (` + GenQuestionMarks(len(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 { sql += ` AND a.created_at >= ?` sqlParams = append(sqlParams, fromTime) } if toTime != utils.ZeroTimeValue { sql += ` AND a.created_at <= ?` sqlParams = append(sqlParams, toTime) } sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, 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, statuss []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 len(statuss) > 0 { sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` sqlParams = append(sqlParams, statuss) } 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 } } 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 } 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 GetJobOrdersNoPage(db *DaoDB, jobID int, jobOrderID int64, userID string, statusCompareStr string, fromTime, toTime time.Time, statuss []int) (jobOrders []*model.JobOrder, err error) { sql := ` SELECT a.* FROM job_order a WHERE 1 = 1 ` sqlParams := []interface{}{} if jobID != 0 { sql += ` AND a.job_id = ?` sqlParams = append(sqlParams, jobID) } if jobOrderID != 0 { sql += ` AND a.job_order_id = ?` sqlParams = append(sqlParams, jobOrderID) } if userID != "" { sql += ` AND a.user_id = ?` sqlParams = append(sqlParams, userID) } if statusCompareStr != "" { sql += ` AND a.status ` + statusCompareStr } 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) } if len(statuss) > 0 { sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` sqlParams = append(sqlParams, statuss) } err = GetRows(db, &jobOrders, sql, sqlParams) return jobOrders, err } func GetJobOrders(db *DaoDB, jobID int, jobOrderID int64, userID string, statusCompareStr string, fromTime, toTime time.Time, statuss []int, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var jobOrders []*model.JobOrder sql := ` SELECT SQL_CALC_FOUND_ROWS a.* FROM job_order a WHERE 1 = 1 ` sqlParams := []interface{}{} if jobID != 0 { sql += ` AND a.job_id = ?` sqlParams = append(sqlParams, jobID) } if jobOrderID != 0 { sql += ` AND a.job_order_id = ?` sqlParams = append(sqlParams, jobOrderID) } if userID != "" { sql += ` AND a.user_id = ?` sqlParams = append(sqlParams, userID) } if statusCompareStr != "" { sql += ` AND a.status ` + statusCompareStr } 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) } if len(statuss) > 0 { sql += ` AND a.status IN (` + GenQuestionMarks(len(statuss)) + `)` sqlParams = append(sqlParams, statuss) } sql += " AND LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) Begin(db) defer Commit(db) if err = GetRows(db, &jobOrders, sql, sqlParams...); err == nil { pagedInfo = &model.PagedInfo{ TotalCount: GetLastTotalRowCount(db), Data: jobOrders, } } return pagedInfo, err } func GetMtMember(db *DaoDB) (mtMember *model.MtMember, err error) { sql := ` SELECT * FROM mt_member WHERE deleted_at = ? LIMIT 1 ` sqlParams := []interface{}{utils.DefaultTimeValue} err = GetRow(db, &mtMember, sql, sqlParams) return mtMember, err }