req_log.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import BaseService from '../../base';
  2. /**
  3. * 请求追踪服务
  4. */
  5. export default class SysReqLogService extends BaseService {
  6. /**
  7. * 记录日志
  8. */
  9. async save(url: string, params: string, status: number, consumeTime: number, method: string | undefined, userId: number | null) {
  10. const ip = this.getHelper().getReqIP();
  11. await this.getRepo().admin.sys.ReqLog.insert({
  12. action: url,
  13. params: JSON.stringify(params),
  14. userId: userId === null ? undefined : userId,
  15. ip,
  16. method: method ? method.toUpperCase() : undefined,
  17. status,
  18. consumeTime,
  19. });
  20. }
  21. /**
  22. * 计算日志总数
  23. */
  24. async count() {
  25. return await this.getRepo().admin.sys.ReqLog.count();
  26. }
  27. /**
  28. * 分页加载日志信息
  29. */
  30. async page(page: number, count: number) {
  31. const result = await this.getRepo().admin.sys.ReqLog.find({
  32. order: {
  33. id: 'DESC',
  34. },
  35. take: count,
  36. skip: page * count,
  37. });
  38. return result;
  39. }
  40. /**
  41. * 分页查询
  42. */
  43. async search(page: number, count: number, q: string) {
  44. const allResult = await this.getRepo().admin.sys.ReqLog.createQueryBuilder('req_log')
  45. .where(`req_log.userId LIKE '%${q}%'`)
  46. .orWhere(`req_log.ip LIKE '%${q}%'`)
  47. .orWhere(`req_log.action LIKE '%${q}%'`)
  48. .orWhere(`req_log.params LIKE '%${q}%'`)
  49. .getMany();
  50. const result = await this.getRepo().admin.sys.ReqLog.createQueryBuilder('req_log')
  51. .where(`req_log.userId LIKE '%${q}%'`)
  52. .orWhere(`req_log.ip LIKE '%${q}%'`)
  53. .orWhere(`req_log.action LIKE '%${q}%'`)
  54. .orWhere(`req_log.params LIKE '%${q}%'`)
  55. .skip(page * count)
  56. .take(count)
  57. .getMany();
  58. return {
  59. count: allResult.length,
  60. logs: result,
  61. };
  62. }
  63. /**
  64. * 清空表中的所有数据
  65. */
  66. async clear() {
  67. await this.getRepo().admin.sys.ReqLog.clear();
  68. }
  69. }