trackApi.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. import { defHttp } from '@jeesite/core/utils/http/axios';
  2. import { useGlobSetting } from '@jeesite/core/hooks/setting';
  3. import {
  4. ExpressInfo,
  5. ExpressInfoDetailPageDTO,
  6. ExpressInfoDTO,
  7. ExpressInfoPageDTO,
  8. HotelStayInfo,
  9. HotelStayInfoPageDTO,
  10. TrackCellTowerDTO,
  11. TrackEnLocalDTO,
  12. TrackMeetDTO,
  13. TrackMeetSummeryDTO,
  14. TogetherLiveInfo,
  15. TogetherLiveInfoPageDTO,
  16. TrackTogetherLiveDTO,
  17. TravelDataDTO,
  18. TravelRecordDTO,
  19. TravelTimelineDTO,
  20. } from './types/dto';
  21. import {
  22. TogetherLiveDetailQuery,
  23. ExpressInfoQuery,
  24. TrackCellTowerQuery,
  25. TrackEnLocalQuery,
  26. TrackMeetQuery,
  27. TrackTogetherLiveQuery,
  28. TrackTogetherTravelQuery,
  29. } from './types/query';
  30. import { CallRecord } from '@jeesite/call/api/types/dto';
  31. import { Page } from '@jeesite/core/api/model/baseModel';
  32. const { adminPath } = useGlobSetting();
  33. const normalizeRequestData = <T extends object>(params: T) => {
  34. return Object.entries(params as Record<string, unknown>).reduce<Record<string, unknown>>((acc, [key, value]) => {
  35. if (value === undefined || value === null || value === '') return acc;
  36. if (Array.isArray(value) && !value.length) return acc;
  37. acc[key] = value;
  38. return acc;
  39. }, {});
  40. };
  41. // ==================== 快递信息查询 ====================
  42. /**
  43. * 统计第一级快递信息
  44. */
  45. export const statFirstExpressInfo = (params: ExpressInfoQuery) =>
  46. defHttp.postJson<ExpressInfoPageDTO | ExpressInfoDTO[]>({
  47. url: adminPath + '/expressInfo/statFirstExpressInfo',
  48. data: normalizeRequestData(params),
  49. });
  50. /**
  51. * 统计第二级快递信息
  52. */
  53. export const statSecondExpressInfo = (params: ExpressInfoQuery) =>
  54. defHttp.postJson<ExpressInfoDetailPageDTO | ExpressInfo[]>({
  55. url: adminPath + '/expressInfo/statSecondExpressInfo',
  56. data: normalizeRequestData(params),
  57. });
  58. // ==================== 基站轨迹分析 ====================
  59. /**
  60. * 统计首次基站轨迹数据
  61. */
  62. export const statFirstTrackCellTower = (data: TrackCellTowerQuery) =>
  63. defHttp.postJson<TrackCellTowerDTO>({ url: adminPath + '/track/cellTower/statFirstTrackCellTower', data });
  64. /**
  65. * 统计二次基站轨迹数据
  66. */
  67. export const statSecondTrackCellTower = (data: TrackCellTowerQuery) =>
  68. defHttp.postJson<TrackCellTowerDTO>({ url: adminPath + '/track/cellTower/statSecondTrackCellTower', data });
  69. // ==================== 境外人员轨迹 ====================
  70. /**
  71. * 统计第一次早晚详情
  72. */
  73. export const statFirstTrackEnLocal = (data: TrackEnLocalQuery) =>
  74. defHttp.postJson<{ [key: string]: TrackEnLocalDTO[] }>({
  75. url: adminPath + '/track/enLocal/statFirstTrackEnLocal',
  76. data,
  77. });
  78. /**
  79. * 统计二次早晚详情
  80. */
  81. export const statSecondTrackEnLocal = (data: TrackEnLocalQuery) =>
  82. defHttp.postJson<Page<CallRecord>>({
  83. url: adminPath + '/track/enLocal/statSecondTrackEnLocal',
  84. data,
  85. });
  86. // ==================== 寄递轨迹分析 ====================
  87. /**
  88. * 统计首个寄递信息
  89. */
  90. export const statFirstExpressInfoByTrack = (params: ExpressInfoQuery) =>
  91. defHttp.get<ExpressInfoDTO>({ url: adminPath + '/track/express/statFirstExpressInfo', params });
  92. // ==================== 轨迹碰面分析 ====================
  93. /**
  94. * 统计首次轨迹碰面
  95. */
  96. export const statFirstTrackMeet = (data: TrackMeetQuery) =>
  97. defHttp.postJson<TrackMeetSummeryDTO[] | { [key: string]: TrackMeetSummeryDTO[] }>({
  98. url: adminPath + '/track/meet/statFirstTrackMeet',
  99. data,
  100. });
  101. /**
  102. * 统计二次轨迹碰面详情
  103. */
  104. export const statSecondTrackMeet = (data: TrackMeetQuery) =>
  105. defHttp.postJson<TrackMeetDTO[] | { [key: string]: TrackMeetDTO[] }>({
  106. url: adminPath + '/track/meet/statSecondTrackMeet',
  107. data,
  108. });
  109. // ==================== 同住分析 ====================
  110. /**
  111. * 统计首次同住信息
  112. */
  113. export const statFirstTrackTogetherLive = (data: TrackTogetherLiveQuery) =>
  114. defHttp.postJson<TrackTogetherLiveDTO[] | { [key: string]: TrackTogetherLiveDTO[] }>({
  115. url: adminPath + '/track/togetherLive/statFirstTrackTogetherLive',
  116. data,
  117. });
  118. /**
  119. * 统计二层同住信息
  120. */
  121. export const statSecondTrackTogetherLive = (data: TrackTogetherLiveQuery) =>
  122. defHttp.postJson<TrackTogetherLiveDTO[] | { [key: string]: TrackTogetherLiveDTO[] }>(
  123. {
  124. url: adminPath + '/track/togetherLive/statSecondTrackTogetherLive',
  125. data: normalizeRequestData(data),
  126. },
  127. { errorMessageMode: 'none' },
  128. );
  129. /**
  130. * 酒店住宿详情
  131. */
  132. export const hotelStayInfoDetail = (data: TogetherLiveDetailQuery) =>
  133. defHttp.postJson<HotelStayInfoPageDTO | HotelStayInfo[]>(
  134. {
  135. url: adminPath + '/track/togetherLive/hotelStayInfoDetail',
  136. data: normalizeRequestData(data),
  137. },
  138. { errorMessageMode: 'none' },
  139. );
  140. /**
  141. * 同住服务详情
  142. */
  143. export const togetherLiveInfoDetail = (data: TogetherLiveDetailQuery) =>
  144. defHttp.postJson<TogetherLiveInfoPageDTO | TogetherLiveInfo[]>(
  145. {
  146. url: adminPath + '/track/togetherLive/togetherLiveInfoDetail',
  147. data: normalizeRequestData(data),
  148. },
  149. { errorMessageMode: 'none' },
  150. );
  151. // ==================== 同行旅行分析 ====================
  152. /**
  153. * 统计同行旅行数据
  154. */
  155. export const statTogetherTravel = (data: TrackTogetherTravelQuery) =>
  156. defHttp.postJson<TravelTimelineDTO[]>(
  157. { url: adminPath + '/track/togetherTravel/statTogetherTravel', data },
  158. { errorMessageMode: 'none' },
  159. );
  160. /**
  161. * 统计同行旅行第二层记录
  162. */
  163. export const statSecondTogetherTravel = (data: TrackTogetherTravelQuery) =>
  164. defHttp.postJson<TravelRecordDTO[] | TravelDataDTO[] | { [key: string]: TravelRecordDTO[] | TravelDataDTO[] }>(
  165. {
  166. url: adminPath + '/track/togetherTravel/statSecondTogetherTravel',
  167. data: normalizeRequestData(data),
  168. },
  169. { errorMessageMode: 'none' },
  170. );
  171. /**
  172. * 统计同行旅行第三层详情
  173. */
  174. export const statThreeTogetherTravel = (data: TrackTogetherTravelQuery) =>
  175. defHttp.postJson<Record<string, any> | Record<string, any>[] | { [key: string]: any }>(
  176. {
  177. url: adminPath + '/track/togetherTravel/statThreeTogetherTravel',
  178. data: normalizeRequestData(data),
  179. },
  180. { errorMessageMode: 'none' },
  181. );
  182. /**
  183. * 兼容旧版同行汇总接口
  184. */
  185. export const legacyTravelTimeline = (data: TrackTogetherTravelQuery & { caseId?: string | number }) =>
  186. defHttp.postJson<TravelTimelineDTO[]>({ url: '/findPeople/travelTimeline', data }, { errorMessageMode: 'none' });
  187. /**
  188. * 兼容旧版同行记录接口
  189. */
  190. export const legacyTravelRecords = (data: { caseId?: string | number; idList?: string[] }) =>
  191. defHttp.postJson<TravelRecordDTO[]>({ url: '/findPeople/travelRecords', data }, { errorMessageMode: 'none' });
  192. /**
  193. * 兼容旧版同行详情接口
  194. */
  195. export const legacyTravelTimelineDetail = (data: { caseId?: string | number; type?: string; id?: string }) =>
  196. defHttp.postJson<Record<string, any>>(
  197. { url: '/findPeople/travelTimelineDetail', data },
  198. { errorMessageMode: 'none' },
  199. );