|
@@ -12,63 +12,136 @@ class GetAccount extends API {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
async onRequest(req, res) {
|
|
async onRequest(req, res) {
|
|
|
- let { uuid, session } = req.query
|
|
|
|
|
|
|
+ let { uuid, session, email, area, username, student_num, state, pagesize, current } = req.query
|
|
|
|
|
|
|
|
- if ([uuid, session].some(value => value === '' || value === null || value === undefined))
|
|
|
|
|
|
|
+ if ([uuid, session, pagesize, current].some(value => value === '' || value === null || value === undefined))
|
|
|
return res.json({
|
|
return res.json({
|
|
|
...BaseStdResponse.MISSING_PARAMETER,
|
|
...BaseStdResponse.MISSING_PARAMETER,
|
|
|
endpoint: 1513126
|
|
endpoint: 1513126
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ // 校验分页参数
|
|
|
|
|
+ if (isNaN(pagesize) || pagesize <= 0 || pagesize > 50) {
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
|
|
+ msg: '参数错误'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (isNaN(current) || current <= 0) {
|
|
|
|
|
+ return res.json({
|
|
|
|
|
+ ...BaseStdResponse.ERR,
|
|
|
|
|
+ msg: '参数错误'
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (!await AccessControl.checkSession(uuid, session))
|
|
if (!await AccessControl.checkSession(uuid, session))
|
|
|
return res.status(401).json({
|
|
return res.status(401).json({
|
|
|
...BaseStdResponse.ACCESS_DENIED
|
|
...BaseStdResponse.ACCESS_DENIED
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ const offset = (current - 1) * pagesize
|
|
|
|
|
+
|
|
|
let sql = `
|
|
let sql = `
|
|
|
SELECT
|
|
SELECT
|
|
|
- a.id,
|
|
|
|
|
- a.name,
|
|
|
|
|
- a.student_num,
|
|
|
|
|
- a.create_time,
|
|
|
|
|
- a.update_time,
|
|
|
|
|
- a.state,
|
|
|
|
|
- a.area,
|
|
|
|
|
- a.auto_time,
|
|
|
|
|
- a.min_distance,
|
|
|
|
|
- a.max_distance,
|
|
|
|
|
- a.total_num,
|
|
|
|
|
- a.term_num,
|
|
|
|
|
- a.academy_name,
|
|
|
|
|
- a.sex,
|
|
|
|
|
- a.user_avatar,
|
|
|
|
|
- a.grade_id,
|
|
|
|
|
- a.race,
|
|
|
|
|
- a.email,
|
|
|
|
|
- a.auto_run,
|
|
|
|
|
- a.notes,
|
|
|
|
|
|
|
+ l.id,
|
|
|
|
|
+ l.name,
|
|
|
|
|
+ l.student_num,
|
|
|
|
|
+ l.create_time,
|
|
|
|
|
+ l.update_time,
|
|
|
|
|
+ l.state,
|
|
|
|
|
+ l.area,
|
|
|
|
|
+ l.auto_time,
|
|
|
|
|
+ l.total_num,
|
|
|
|
|
+ l.term_num,
|
|
|
|
|
+ l.academy_name,
|
|
|
|
|
+ l.sex,
|
|
|
|
|
+ l.user_avatar,
|
|
|
|
|
+ l.grade_id,
|
|
|
|
|
+ l.email,
|
|
|
|
|
+ l.auto_run,
|
|
|
|
|
+ l.notes,
|
|
|
u.username AS create_user
|
|
u.username AS create_user
|
|
|
FROM
|
|
FROM
|
|
|
- lepao_account a
|
|
|
|
|
|
|
+ lepao_account l
|
|
|
LEFT JOIN
|
|
LEFT JOIN
|
|
|
users u
|
|
users u
|
|
|
ON
|
|
ON
|
|
|
- a.create_user = u.uuid
|
|
|
|
|
|
|
+ l.create_user = u.uuid
|
|
|
WHERE
|
|
WHERE
|
|
|
- a.create_user = ?
|
|
|
|
|
- ORDER BY a.create_time DESC
|
|
|
|
|
|
|
+ l.create_user = ?
|
|
|
`
|
|
`
|
|
|
|
|
|
|
|
- let rows = await db.query(sql, [uuid])
|
|
|
|
|
|
|
+ let countSql = `
|
|
|
|
|
+ SELECT COUNT(*) AS total
|
|
|
|
|
+ FROM
|
|
|
|
|
+ lepao_account l
|
|
|
|
|
+ WHERE l.create_user = ?
|
|
|
|
|
+ `
|
|
|
|
|
+
|
|
|
|
|
+ let params = [uuid]
|
|
|
|
|
+ let countParams = [uuid]
|
|
|
|
|
|
|
|
- if (!rows)
|
|
|
|
|
|
|
+ if (email) {
|
|
|
|
|
+ sql += ` AND l.email = ?`
|
|
|
|
|
+ countSql += ` AND l.email = ?`
|
|
|
|
|
+ params.push(email)
|
|
|
|
|
+ countParams.push(email)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (area) {
|
|
|
|
|
+ sql += ` AND l.area = ?`
|
|
|
|
|
+ countSql += ` AND l.area = ?`
|
|
|
|
|
+ params.push(area)
|
|
|
|
|
+ countParams.push(area)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (student_num) {
|
|
|
|
|
+ sql += ` AND l.student_num = ?`
|
|
|
|
|
+ countSql += ` AND l.student_num = ?`
|
|
|
|
|
+ params.push(student_num)
|
|
|
|
|
+ countParams.push(student_num)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (username) {
|
|
|
|
|
+ sql += ` AND l.name LIKE ?`
|
|
|
|
|
+ countSql += ` AND l.name LIKE ?`
|
|
|
|
|
+ params.push(`%${username}%`)
|
|
|
|
|
+ countParams.push(`%${username}%`)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (state !== -1) {
|
|
|
|
|
+ sql += ` AND l.state = ?`
|
|
|
|
|
+ countSql += ` AND l.state = ?`
|
|
|
|
|
+ params.push(state)
|
|
|
|
|
+ countParams.push(state)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ sql += `
|
|
|
|
|
+ ORDER BY l.create_time DESC
|
|
|
|
|
+ LIMIT ? OFFSET ?;
|
|
|
|
|
+ `
|
|
|
|
|
+ params.push(String(pagesize), String(offset))
|
|
|
|
|
+
|
|
|
|
|
+ let rows = await db.query(sql, params)
|
|
|
|
|
+ let countResult = await db.query(countSql, countParams)
|
|
|
|
|
+
|
|
|
|
|
+ if (!rows || !countResult)
|
|
|
return res.json({
|
|
return res.json({
|
|
|
- ...BaseStdResponse.DATABASE_ERR
|
|
|
|
|
|
|
+ ...BaseStdResponse.MISSING_FILE,
|
|
|
|
|
+ msg: '获取乐跑账号数据失败!'
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+ let total = countResult[0].total
|
|
|
|
|
+
|
|
|
res.json({
|
|
res.json({
|
|
|
...BaseStdResponse.OK,
|
|
...BaseStdResponse.OK,
|
|
|
- data: rows
|
|
|
|
|
|
|
+ data: rows,
|
|
|
|
|
+ pagination: {
|
|
|
|
|
+ current,
|
|
|
|
|
+ pagesize,
|
|
|
|
|
+ total
|
|
|
|
|
+ }
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|