admin-users.component.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { CommonModule } from '@angular/common';
  2. import { Component, OnInit } from '@angular/core';
  3. import { FormsModule } from '@angular/forms';
  4. import { AdminUserRow, AuthCreditService } from '../../services/auth-credit.service';
  5. @Component({
  6. selector: 'app-admin-users',
  7. standalone: true,
  8. imports: [CommonModule, FormsModule],
  9. templateUrl: './admin-users.component.html',
  10. styleUrls: ['./admin-users.component.css'],
  11. })
  12. export class AdminUsersComponent implements OnInit {
  13. users: AdminUserRow[] = [];
  14. loading = false;
  15. error = '';
  16. message = '';
  17. adjustAmount: Record<string, number> = {};
  18. adjustNote: Record<string, string> = {};
  19. createForm = {
  20. username: '',
  21. password: '',
  22. displayName: '',
  23. email: '',
  24. phone: '',
  25. role: 'user' as 'user' | 'admin',
  26. initialCredits: 10,
  27. };
  28. constructor(public auth: AuthCreditService) {}
  29. ngOnInit(): void {
  30. this.reload();
  31. }
  32. async reload(): Promise<void> {
  33. if (!this.auth.isAdmin) return;
  34. this.loading = true;
  35. this.error = '';
  36. try {
  37. this.users = await this.auth.adminListUsers();
  38. } catch (e: any) {
  39. this.error = e?.message || '加载账号明细失败';
  40. } finally {
  41. this.loading = false;
  42. }
  43. }
  44. async adjust(user: AdminUserRow): Promise<void> {
  45. this.error = '';
  46. try {
  47. const amount = Number(this.adjustAmount[user.objectId] || 0);
  48. if (!amount) throw new Error('请输入调整积分');
  49. await this.auth.adminAdjustCredit(user.objectId, amount, this.adjustNote[user.objectId] || '管理员调整');
  50. this.adjustAmount[user.objectId] = 0;
  51. this.adjustNote[user.objectId] = '';
  52. await this.reload();
  53. } catch (e: any) {
  54. this.error = e?.message || '调整失败';
  55. }
  56. }
  57. async createUser(): Promise<void> {
  58. this.error = '';
  59. this.message = '';
  60. try {
  61. const user = await this.auth.adminCreateUser(this.createForm);
  62. this.message = `账号 ${user.username} 已创建`;
  63. this.createForm = {
  64. username: '',
  65. password: '',
  66. displayName: '',
  67. email: '',
  68. phone: '',
  69. role: 'user',
  70. initialCredits: 10,
  71. };
  72. await this.reload();
  73. } catch (e: any) {
  74. this.error = e?.message || '创建账号失败';
  75. }
  76. }
  77. }