This commit is contained in:
苏尹岚
2020-10-14 10:29:09 +08:00
parent 6f848954d1
commit fb9992e616
5 changed files with 187 additions and 1 deletions

View File

@@ -3,6 +3,8 @@ package cms
import (
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/globals/api"
@@ -56,3 +58,7 @@ func PublishJob(ctx *jxcontext.Context, job *model.Job) (err error) {
dao.Commit(db)
return err
}
func GetJobs(ctx *jxcontext.Context, userIDs []string, categoryIDs []int, includeStep bool, fromTime, toTime string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) {
return dao.GetJobs(dao.GetDB(), userIDs, categoryIDs, includeStep, utils.Str2Time(fromTime), utils.Str2Time(toTime), pageSize, offset)
}

View File

@@ -1,7 +1,10 @@
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"
)
@@ -17,3 +20,122 @@ func GetJobCategories(db *DaoDB, name string) (jobCategories []*model.JobCategor
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 += " 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 []int, 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)
}
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
}

View File

@@ -1,6 +1,6 @@
appname = jx-callback
httpport = 8080
runmode = rsm
runmode = dev
autorender = false
copyrequestbody = true
EnableDocs = true

View File

@@ -42,3 +42,43 @@ func (c *JobController) GetJobCategories() {
return retVal, "", err
})
}
// @Title 查看任务列表
// @Description 查看任务列表
// @Param token header string true "认证token"
// @Param userIDs query string false "用户IDs"
// @Param categoryIDs query string false "分类IDs"
// @Param includeStep query bool false "是否查询步骤,默认否"
// @Param fromTime query string false "开始时间"
// @Param toTime query string false "结束时间"
// @Param offset query int false "门店列表起始序号以0开始缺省为0"
// @Param pageSize query int false "门店列表页大小缺省为50-1表示全部"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetJobs [get]
func (c *JobController) GetJobs() {
c.callGetJobs(func(params *tJobGetJobsParams) (retVal interface{}, errCode string, err error) {
var (
userIDs []string
categoryIDs []int
)
if err = jxutils.Strings2Objs(params.UserIDs, &userIDs, params.CategoryIDs, categoryIDs); err == nil {
retVal, err = cms.GetJobs(params.Ctx, userIDs, categoryIDs, params.IncludeStep, params.FromTime, params.ToTime, params.PageSize, params.Offset)
}
return retVal, "", err
})
}
// @Title 查看任务
// @Description 查看任务
// @Param token header string true "认证token"
// @Param jobID query int false "任务ID"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetJobDetail [get]
func (c *JobController) GetJobDetail() {
c.callGetJobDetail(func(params *tJobGetJobDetailParams) (retVal interface{}, errCode string, err error) {
retVal, err = dao.GetJobDetail(dao.GetDB(), params.JobID)
return retVal, "", err
})
}

View File

@@ -160,6 +160,24 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"],
beego.ControllerComments{
Method: "GetJobDetail",
Router: `/GetJobDetail`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"],
beego.ControllerComments{
Method: "GetJobs",
Router: `/GetJobs`,
AllowHTTPMethods: []string{"get"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:JobController"],
beego.ControllerComments{
Method: "PublishJob",