Detail.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. const API = require("../../../lib/API.js")
  2. const db = require("../../../plugin/DataBase/db.js")
  3. const { BaseStdResponse } = require("../../../BaseStdResponse.js")
  4. const AccessControl = require("../../../lib/AccessControl.js")
  5. function parseBookList(value) {
  6. if (value === null || value === undefined || value === '') return []
  7. if (Array.isArray(value)) return value
  8. try {
  9. const parsed = JSON.parse(value)
  10. return Array.isArray(parsed) ? parsed : []
  11. } catch {
  12. return []
  13. }
  14. }
  15. function extractClassName(bookList) {
  16. if (!Array.isArray(bookList) || bookList.length === 0) return ''
  17. const book = bookList.find(b => b && b.className)
  18. return book?.className ?? ''
  19. }
  20. class AdminQxsAccountDetail extends API {
  21. constructor() {
  22. super()
  23. this.setPath('/Admin/QXS/Account/Detail')
  24. this.setMethod('GET')
  25. }
  26. async onRequest(req, res) {
  27. let { uuid, session, id } = req.query
  28. if ([uuid, session, id].some(v => v === '' || v === null || v === undefined))
  29. return res.json({ ...BaseStdResponse.MISSING_PARAMETER })
  30. if (!await AccessControl.checkSession(uuid, session))
  31. return res.status(401).json({ ...BaseStdResponse.ACCESS_DENIED })
  32. const permission = await AccessControl.getPermission(uuid)
  33. if (!permission.includes('admin') && !permission.includes('server') && !permission.includes('service'))
  34. return res.json({ ...BaseStdResponse.PERMISSION_DENIED })
  35. const sql = `
  36. SELECT id, username, create_time, realname, email, mobile, termName, book_list
  37. FROM qsx_account
  38. WHERE id = ?
  39. LIMIT 1
  40. `
  41. const rows = await db.query(sql, [id])
  42. if (!rows) return res.json({ ...BaseStdResponse.DATABASE_ERR })
  43. if (!rows.length) return res.json({ ...BaseStdResponse.ERR, msg: '记录不存在' })
  44. const row = rows[0]
  45. const bookList = parseBookList(row.book_list)
  46. return res.json({
  47. ...BaseStdResponse.OK,
  48. data: {
  49. id: row.id,
  50. username: row.username,
  51. create_time: row.create_time,
  52. realname: row.realname,
  53. email: row.email,
  54. mobile: row.mobile,
  55. termName: row.termName,
  56. className: extractClassName(bookList),
  57. bookList
  58. }
  59. })
  60. }
  61. }
  62. module.exports.AdminQxsAccountDetail = AdminQxsAccountDetail