BaseService.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. }
  52. export default BaseService;