BaseService.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import Token from '@/utils/token';
  2. import SystemConst from '@/utils/const';
  3. import { request } from 'umi';
  4. interface IBaseService<T> {
  5. query: (params: any) => Promise<any>;
  6. save: (data: T) => Promise<any>;
  7. remove: (id: string) => Promise<any>;
  8. }
  9. class BaseService<T> implements IBaseService<T> {
  10. protected uri: string;
  11. protected headers = {
  12. 'X-Access-Token': Token.get(),
  13. };
  14. constructor(uri?: string) {
  15. this.uri = `/${SystemConst.API_BASE}/${uri}`;
  16. }
  17. query(data: any): Promise<any> {
  18. return request(`${this.uri}/_query/`, { data, method: 'POST' });
  19. }
  20. queryNoPagingPost(data: any): Promise<unknown> {
  21. return request(`${this.uri}/_query/no-paging?paging=false`, { data, method: 'POST' });
  22. }
  23. queryNoPaging(params?: any): Promise<unknown> {
  24. return request(`${this.uri}/_query/no-paging?paging=false`, { params, method: 'GET' });
  25. }
  26. remove(id: string): Promise<unknown> {
  27. return request(`${this.uri}/${id}`, { method: 'DELETE' });
  28. }
  29. save(data: Partial<T>): Promise<unknown> {
  30. return request(this.uri, { data, method: 'POST' });
  31. }
  32. savePatch(data: Partial<T>): Promise<unknown> {
  33. return request(this.uri, { data, method: 'PATCH' });
  34. }
  35. update(data: Partial<T>): Promise<any> {
  36. // @ts-ignore
  37. return data.id ? request(this.uri, { data, method: 'PATCH' }) : this.save(data);
  38. }
  39. detail(id: string): Promise<any> {
  40. return request(`${this.uri}/${id}`, { method: 'GET' });
  41. }
  42. modify(id: string, data: Partial<T>): Promise<any> {
  43. return request(`${this.uri}/${id}`, {
  44. method: 'PUT',
  45. data,
  46. });
  47. }
  48. getUri() {
  49. return this.uri;
  50. }
  51. POST(url: string, data: Partial<T> = {}, params?: any, options?: any): Promise<any> {
  52. return request(url, {
  53. method: 'POST',
  54. data,
  55. params,
  56. ...options,
  57. });
  58. }
  59. GET(url: string, params?: Partial<T>, options?: any): Promise<any> {
  60. return request(url, {
  61. method: 'GET',
  62. params,
  63. ...options,
  64. });
  65. }
  66. PATCH(url: string, data?: Partial<T>, options?: any): Promise<any> {
  67. return request(url, {
  68. method: 'PATCH',
  69. data,
  70. ...options,
  71. });
  72. }
  73. DELETE(url: string, params?: Partial<T>, options?: any): Promise<any> {
  74. return request(url, {
  75. method: 'DELETE',
  76. params,
  77. ...options,
  78. });
  79. }
  80. PUT(url: string, data?: Partial<T>, options?: any): Promise<any> {
  81. return request(url, {
  82. method: 'PUT',
  83. data,
  84. ...options,
  85. });
  86. }
  87. }
  88. export default BaseService;