index.ts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
  1. import {AxiosPromise} from "axios";
  2. import axios from "./config";
  3. // NOTE: 暂时使用ts-ignore忽略module not exported的问题
  4. // @ts-ignore
  5. import {
  6. IUser,
  7. IList,
  8. IDeliveryBook,
  9. IOfficialSimple,
  10. IBookSearchResult,
  11. ADpushSimple,
  12. IOfficials,
  13. ADPlanItem,
  14. deliveryPlanItem,
  15. IPlatform,
  16. adPlanLog,
  17. adPlanCount,
  18. PlanBack,
  19. RegisterData,
  20. FinanceData,
  21. AdGroupData,
  22. AdgroupList,
  23. IUserAdmin,
  24. AccountPlanConfig,
  25. IGZHItem,
  26. IDomainItem,
  27. IPBookItem,
  28. } from "@/types/api";
  29. /**
  30. * 登录
  31. * @param userData 用户信息
  32. */
  33. export const doLogin = <T>(userData: T): AxiosPromise<IUser> => {
  34. return axios.post("/login", userData);
  35. };
  36. /**
  37. * 书籍搜素
  38. * @param key_word
  39. * @param page
  40. */
  41. export const getDeliveryBookList = (
  42. query: Partial<{
  43. official_name: string;
  44. book_name: string;
  45. page: number;
  46. }> = {page: 1}
  47. ): AxiosPromise<IList<IDeliveryBook>> => {
  48. return axios("/getUserDeliveryBooks", {
  49. params: query,
  50. });
  51. };
  52. /**
  53. * 获取公众号 - 无分页 用作于下拉
  54. */
  55. export const getOfficialSimpleAccount = (): AxiosPromise<IOfficialSimple[]> => {
  56. return axios("/simpleUserOfficialAccounts");
  57. };
  58. /**
  59. * 通过书名搜索书籍
  60. * @param key_word
  61. * @param page
  62. */
  63. export const getBooksByName = (
  64. key_word: string,
  65. page = 1
  66. ): AxiosPromise<IList<IBookSearchResult>> => {
  67. return axios("/searchBooks", {params: {key_word, page}});
  68. };
  69. /**
  70. * @description: 获取广告投放列表
  71. */
  72. export const getAdPushList = (
  73. query: Partial<{
  74. email: string;
  75. account_name: string;
  76. account_id: string;
  77. advertiser_id: string;
  78. page: number;
  79. }> = {page: 1}
  80. ): AxiosPromise<IList<ADpushSimple>> => {
  81. return axios("/ad/userAdAdvertisers", {params: query});
  82. };
  83. /**
  84. * 获取公众号列表
  85. * @param query
  86. */
  87. export const getOfficialAccounts = (query: {
  88. official_name: string;
  89. platform: string;
  90. page: number;
  91. }): AxiosPromise<IList<IOfficials>> => {
  92. return axios("/userOfficialAccounts", {params: query});
  93. };
  94. /**
  95. * 获取公众号列表
  96. * @param query
  97. */
  98. export const getADPlanlist = (
  99. query: Partial<{
  100. ad_id: string;
  101. advertiser_id: string;
  102. campaign_id: string;
  103. status: string;
  104. begin_date: any;
  105. end_date: any;
  106. cost_order: number;
  107. page: number;
  108. }> = {page: 1}
  109. ): AxiosPromise<IList<ADPlanItem>> => {
  110. return axios("/ad/adData", {params: query});
  111. };
  112. /**
  113. * @description: 获取投放数据列表
  114. */
  115. export const getDeliveryStatList = (
  116. query: Partial<{
  117. start_time: string;
  118. end_time: string;
  119. official_name: string;
  120. book_name: string;
  121. page: number;
  122. day_num: number;
  123. }> = {page: 1}
  124. ): AxiosPromise<any> => {
  125. return axios("/delivery/stat", {params: query});
  126. };
  127. /*
  128. * 获取平台列表
  129. */
  130. export const getPlatforms = (): AxiosPromise<IPlatform[]> => {
  131. return axios("/simplePlatforms");
  132. };
  133. /**
  134. * 添加投放书籍
  135. * @param data
  136. */
  137. export const addDeliveryBook = (data: {
  138. delivery_bid: string | number;
  139. official_id: string | number;
  140. platform: string;
  141. }) => {
  142. return axios.post("/addDeliveryBook", data);
  143. };
  144. /**
  145. * 退出登录
  146. */
  147. export const logout = () => {
  148. return axios("/logout");
  149. };
  150. /**
  151. * 停止投放书籍
  152. * @param id 记录id
  153. */
  154. export const onStopDeliveryBook = (id: number) => {
  155. return axios("/stopDeliveryBook", {params: {id}});
  156. };
  157. /**
  158. * 自定义列
  159. * @param null
  160. */
  161. export const getCustomColumn = () => {
  162. return axios("/ad/adFields");
  163. };
  164. /**
  165. * @description: 获取更多投放数据
  166. */
  167. export const getDeliveryMoreStatList = (
  168. query: Partial<{
  169. official_id: number;
  170. start_time: string;
  171. end_time: string;
  172. official_name: string;
  173. book_name: string;
  174. page: number;
  175. }> = {page: 1}
  176. ): AxiosPromise<IList<any>> => {
  177. return axios("/delivery/moreStat", {params: query});
  178. };
  179. /* 广告授权
  180. * @param null
  181. */
  182. export const getAdauth = () => {
  183. return axios("/oauth/accountGrant");
  184. };
  185. /* 广告预算修改
  186. * @param null
  187. */
  188. export const adChangeMoney = (data: {
  189. ad_id: string | number;
  190. budget: string | number;
  191. }) => {
  192. return axios.post("/ad/updateAdBudget", data);
  193. };
  194. /* 广告出价修改
  195. * @param null
  196. */
  197. export const adChangeCrem = (data: {
  198. ad_id: string | number;
  199. bid: string | number;
  200. }) => {
  201. return axios.post("/api/updateAdBid", data);
  202. };
  203. /* 修改广告状态
  204. * @param null
  205. */
  206. export const statusChange = (data: {
  207. ad_id: string | number;
  208. status: string;
  209. }) => {
  210. return axios.post("/ad/updateAdStatus", data);
  211. };
  212. /* 获取操作日志
  213. * @param null
  214. */
  215. export const opertaroLog = (
  216. query: Partial<{
  217. begin_time: string;
  218. end_time: string;
  219. page: number;
  220. ad_id: string;
  221. }> = {page: 1}
  222. ): AxiosPromise<IList<adPlanLog>> => {
  223. return axios("/ad/adOptLogs", {params: query});
  224. };
  225. /* 获取广告状态
  226. * @param null
  227. */
  228. export const getAddStatus = (): AxiosPromise<any> => {
  229. return axios("/ad/adStatus");
  230. };
  231. //广告计划字段
  232. export const getAdplanTable = (query: {
  233. field: string;
  234. }): AxiosPromise<Array<{
  235. desc: string;
  236. name: string;
  237. }>> => {
  238. return axios("/ad/adStatFields", {params: query});
  239. };
  240. //广告计划字段
  241. export const getAdplanData = (query: {
  242. field: string;
  243. begin_date: string;
  244. end_date: string;
  245. ids: string;
  246. page: number;
  247. }): AxiosPromise<any> => {
  248. return axios("/ad/adStats", {params: query});
  249. };
  250. //获取计划的回传配置
  251. export const getAdBackPlan = (query: {
  252. ad_lid: string;
  253. back_platform: string;
  254. }): AxiosPromise<any> => {
  255. return axios("/getReportConfig", {params: query});
  256. };
  257. //设置回传配置
  258. export const setBackConfig = (data: {
  259. id: string | number;
  260. back_on: number;
  261. rate: number;
  262. condition: string;
  263. price: number;
  264. float_rate: string | number;
  265. }) => {
  266. return axios.post("/setReportConfig", data);
  267. };
  268. /**
  269. * @description: 获取广告投放列表
  270. */
  271. export const getRegisterData = (
  272. query: Partial<{
  273. ad_lid: number;
  274. back_platform: string;
  275. is_paid: number;
  276. show_all: number;
  277. page: number;
  278. }> = {page: 1}
  279. ): AxiosPromise<IList<RegisterData>> => {
  280. return axios("/getAdMatchUsers", {params: query});
  281. };
  282. //强制回传
  283. export const setMustUpback = (data: {
  284. uid: string | number;
  285. platform: string;
  286. report_type: string;
  287. }) => {
  288. return axios.post("/forceReport", data);
  289. };
  290. //广告统计字段
  291. export const getAdStatus = (): AxiosPromise<Array<{
  292. desc: string;
  293. name: string;
  294. }>> => {
  295. return axios("/ad/adStatOptFields");
  296. };
  297. //广告统计tab
  298. export const getDesignList = (query: {
  299. day_num: number;
  300. }): AxiosPromise<Array<{
  301. desc: string;
  302. name: string;
  303. }>> => {
  304. return axios("/delivery/getDeliveryStatFields", {params: query});
  305. };
  306. //财务数据
  307. export const getFinanceList = (
  308. query: Partial<{
  309. start_ymd: string;
  310. end_ymd: string;
  311. page: number;
  312. }> = {page: 1}
  313. ): AxiosPromise<IList<FinanceData>> => {
  314. return axios("/ad/adFinanceStat", {params: query});
  315. };
  316. //广告组数据
  317. export const getAdgroupList = (
  318. query: Partial<{
  319. advertiser_id: string;
  320. account_id: string;
  321. campaign_id: string;
  322. begin_date: string;
  323. end_date: string;
  324. page: number;
  325. uids: string;
  326. }> = {page: 1}
  327. ): AxiosPromise<IList<AdGroupData>> => {
  328. return axios("/ad/adCampaigns", {params: query});
  329. };
  330. //修改广告组状态
  331. export const setGroupStatus = (data: {
  332. campaign_id: string | number;
  333. status: string | number;
  334. }) => {
  335. return axios.post("/ad/updateCampaignStatus", data);
  336. };
  337. //广告组账户列表
  338. export const getAdgroupData = (
  339. query: Partial<{
  340. advertiser_id: string | number;
  341. account_id: string | number;
  342. page: number;
  343. begin_date: string;
  344. end_date: string;
  345. uids: string;
  346. }> = {page: 1}
  347. ): AxiosPromise<IList<AdgroupList>> => {
  348. return axios("/ad/adAdvertisers", {params: query});
  349. };
  350. //更新账户日预算
  351. export const setGroupDay = (data: {
  352. advertiser_id: string | number;
  353. budget_mode: string;
  354. budget?: number | string;
  355. }) => {
  356. return axios.post("/ad/updateAdvertiserBudget", data);
  357. };
  358. //获取自定义所有列
  359. export const getCoustomClomuns = (): any => {
  360. return axios("/ad/getFields");
  361. };
  362. //设置站点回传比例
  363. export const setChannelRate = (data: {
  364. rate: string | number;
  365. channel_id: string;
  366. }) => {
  367. return axios.post("/setChannelConfig", data);
  368. };
  369. //保存自定义列
  370. export const setCoustomClomuns = (data: any): any => {
  371. return axios.post("/ad/saveFields", {fields: data});
  372. };
  373. //获取组统计
  374. export const ALLadGroupData = (
  375. query: Partial<{
  376. advertiser_id: string | number;
  377. campaign_id: string | number;
  378. end_date: string;
  379. begin_date: string;
  380. cost_order: number;
  381. uids: string;
  382. }>
  383. ) => {
  384. return axios("/ad/adCampaignSum", {params: query});
  385. };
  386. //获取🐖统计
  387. export const ALLAcountGroupData = (
  388. query: Partial<{
  389. advertiser_id: string | number;
  390. campaign_id: string | number;
  391. begin_date: string;
  392. end_date: string;
  393. cost_order: number;
  394. uids: string;
  395. }>
  396. ) => {
  397. return axios("/ad/adAdvertiserSum", {params: query});
  398. };
  399. //获取广告计划汇总
  400. export const getadDataSum = (
  401. query: Partial<{
  402. advertiser_id: string | number;
  403. campaign_id: string | number;
  404. ad_id: number;
  405. begin_date: string;
  406. end_date: string;
  407. cost_order: number;
  408. status: number | string;
  409. }>
  410. ) => {
  411. return axios("/ad/adSumData", {params: query});
  412. };
  413. //设置回传付费最低金额
  414. export const setBackMinimum = (data: {
  415. advertiser_id: string;
  416. back_min_price: number | string;
  417. }) => {
  418. return axios.post("/setAdAdvertiserBackMinPrice", data);
  419. };
  420. /* 修改广告状态
  421. * @param null
  422. */
  423. export const statusAdChange = (data: {
  424. advertiser_id: string | number;
  425. is_enable: string | number;
  426. }) => {
  427. return axios("/ad/updateAdvertiserStatus", {params: data});
  428. };
  429. /**
  430. * 获取权限用户列表
  431. * @returns
  432. */
  433. export const getAuthorUser = (): AxiosPromise<IUserAdmin> => {
  434. return axios("/userInfo");
  435. };
  436. // 获取公众号回传配置
  437. export const getOfficialBackConfig = (
  438. channel_id: number
  439. ): AxiosPromise<AccountPlanConfig> => {
  440. return axios("/channel/reportConfig", {params: {channel_id}});
  441. };
  442. // 保存公众号回传配置
  443. export const setOfficialBackConfig = (data: any) => {
  444. return axios.post("/channel/setReportConfig", data);
  445. };
  446. // 切换公众号回传方式
  447. export const onUpdateOfficialReportType = (
  448. channel_id: number,
  449. report_module: string
  450. ) => {
  451. return axios.post("/channel/switchReportModule", {
  452. channel_id,
  453. report_module,
  454. });
  455. };
  456. /**
  457. * 获取落地页列表
  458. * @returns
  459. */
  460. export const getLandingPageList = (data: {
  461. page: number | 1;
  462. title?: string;
  463. link_source?: string;
  464. gzh_name?: string;
  465. start_time?: string;
  466. end_time?: string;
  467. status?: number;
  468. }) => {
  469. return axios("/landingPage/list", {params: data});
  470. };
  471. /**
  472. * 删除落地页
  473. * @returns
  474. */
  475. export const landingDelete = (data: {id: string | number}) => {
  476. return axios("/landingPage/delete", {params: data});
  477. };
  478. /**
  479. * 落地页 创建落地页
  480. * @returns
  481. */
  482. export const landingAdd = (data: any) => {
  483. return axios.post("/landingPage/add", data);
  484. }
  485. /**
  486. * 落地页 编辑
  487. * @returns
  488. */
  489. export const landingEdit = (data: any) => {
  490. return axios.post("/landingPage/edit", data);
  491. }
  492. /**
  493. * 落地页 提交审核
  494. * @returns
  495. */
  496. export const landingSubmit = (data: {id: string | number}) => {
  497. return axios("/landingPage/submit", {params: data});
  498. }
  499. /*
  500. * 获取落地页公众号列表
  501. * @returns
  502. */
  503. export const getLandingOfficials = (): AxiosPromise<IList<IGZHItem>> => {
  504. return axios("/landingPage/getGzh");
  505. };
  506. /**
  507. * 获取落地页域名列表
  508. * @returns
  509. */
  510. export const getLandingDomains = (): AxiosPromise<IList<IDomainItem>> => {
  511. return axios("/landingPage/domain");
  512. };
  513. /**
  514. * 获取落地页详情
  515. * @returns
  516. */
  517. export const getLandingInfo = (id:string): AxiosPromise<any> => {
  518. return axios("/landingPage/info",{params: {id}});
  519. };
  520. /**
  521. * 获取落地页推广书籍列表
  522. * @param official_name
  523. * @param book_name
  524. * @returns
  525. */
  526. export const getLandingBooks = (
  527. official_name?: string,
  528. book_name?: string
  529. ): AxiosPromise<IList<IPBookItem>> => {
  530. return axios("/landingPage/books", {
  531. params: {
  532. official_name,
  533. book_name,
  534. page_size: 999,
  535. },
  536. });
  537. };
  538. /**
  539. * 获取封面列表
  540. * @param type
  541. * @param category
  542. * @returns
  543. */
  544. export const getLandingPic = (type?: any, category?: any, page?: any): any => {
  545. return axios("/landingPage/documents", {
  546. params: {
  547. type,
  548. category,
  549. page,
  550. },
  551. });
  552. };
  553. /**
  554. * 图片上传
  555. * @param file
  556. * @param type
  557. * @returns
  558. */
  559. export const onUpload = (
  560. file: File,
  561. type: string
  562. ): AxiosPromise<{ url: string }> => {
  563. const formData = new FormData();
  564. formData.append("file", file);
  565. formData.append("type", type);
  566. return axios.post("/landingPage/upload", formData);
  567. };
  568. /**
  569. * 模板列表
  570. * @param type
  571. * @param category
  572. * @returns
  573. */
  574. export const getLandingTempalte = (): any => {
  575. return axios("/landingPage/bodyTemplates");
  576. };