MailData.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. export interface Mail {
  2. id: string;
  3. sys: number;
  4. expire: string;
  5. read: string;//读取状态
  6. awards: any;//奖励附件
  7. }
  8. class Data {
  9. private _mails: { [id: string]: Mail } = {};
  10. private _mailMaxIdTab: { [sys: number]: number } = { 0: 0, 1: 0 };
  11. init(): void {
  12. this.reset();
  13. }
  14. reset(): void {
  15. this._mails = {};
  16. this._mailMaxIdTab = { 0: 0, 1: 0 };
  17. }
  18. purge(): void {
  19. this.reset();
  20. }
  21. setData(data: Mail[]): void {
  22. if (data) {
  23. for (const v of data) {
  24. this._mails[v.id] = v;
  25. }
  26. for (const v of data) {
  27. if (parseInt(v.id, 10) > this._mailMaxIdTab[v.sys]) {
  28. this._mailMaxIdTab[v.sys] = parseInt(v.id, 10);
  29. }
  30. }
  31. }
  32. }
  33. getData(): { [id: string]: Mail } {
  34. return this._mails;
  35. }
  36. //设置最后获得邮件索引
  37. setMailMax(data: number[]): void {
  38. for (const v of data) {
  39. if (v > this._mailMaxIdTab[1]) {
  40. this._mailMaxIdTab[1] = v;
  41. }
  42. }
  43. }
  44. //设置最新获得邮件索引
  45. setNewMail(data: Mail[]): void {
  46. for (const v of data) {
  47. this._mails[v.id] = v;
  48. }
  49. for (const v of data) {
  50. if (parseInt(v.id, 10) > this._mailMaxIdTab[v.sys]) {
  51. this._mailMaxIdTab[v.sys] = parseInt(v.id, 10);
  52. }
  53. }
  54. }
  55. //获取最新获得邮件索引
  56. getMaxMailId(type: number): number {
  57. return this._mailMaxIdTab[type];
  58. }
  59. //根据id设置邮件已读状态
  60. setMailReadById(id: string): void {
  61. for (const key in this._mails) {
  62. const v = this._mails[key];
  63. if (parseInt(v.id, 10) === parseInt(id, 10)) {
  64. v.read = '1';
  65. break;
  66. }
  67. }
  68. }
  69. //批量设置邮件已读状态
  70. setMailRead(ids: string[]): void {
  71. for (const k1 of ids) {
  72. for (const key in this._mails) {
  73. const v = this._mails[key];
  74. if (parseInt(v.id, 10) === parseInt(k1, 10)) {
  75. v.read = '1';
  76. }
  77. }
  78. }
  79. }
  80. //批量移除邮件
  81. removeMail(mailList): void {
  82. for (const k1 in mailList) {
  83. for (const key in this._mails) {
  84. const v = this._mails[key];
  85. if (parseInt(v.id, 10) === parseInt(k1, 10)) {
  86. delete this._mails[key];
  87. }
  88. }
  89. }
  90. }
  91. //根据id移除邮件
  92. removeMailById(id: string): void {
  93. for (const key in this._mails) {
  94. const v = this._mails[key];
  95. if (parseInt(v.id, 10) === parseInt(id, 10)) {
  96. delete this._mails[key];
  97. }
  98. }
  99. }
  100. }
  101. export let MailData = new Data;