adMonitor.ts 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. import { api } from '../api'
  2. import { request } from 'umi'
  3. export interface ListType {
  4. // startTime?: string,
  5. // endTime?: string,
  6. timeUnit?: 'minute' | 'hour' | 'day',//时间维度
  7. adgroup?: any,//广告ID
  8. campaign?: any,//计划ID
  9. accountId?: any,//广告账户
  10. sysUserId?: any,//投手
  11. pageNum?: number,//页数
  12. pageSize?: number//条数
  13. sortField?: string, // "排序字段"
  14. sort?: 'ASC' | 'DESC' // 排序方式
  15. topN?: number
  16. groupAccountIds?: number[]
  17. adgroupName?: string // 广告名称
  18. }
  19. /** 获取起量广告列表总表 */
  20. export async function getPlanListApi(params: ListType) {
  21. Object.keys(params).forEach(key => {
  22. if (!params[key as keyof typeof params]) {
  23. delete params[key as keyof typeof params]
  24. }
  25. })
  26. return request(`${api}/tencentMonitor/adControl/up/ad/list`, {
  27. method: 'POST',
  28. data: params
  29. })
  30. }
  31. /** 获取起量广告列表明细 */
  32. export async function getDetailListApi(params: ListType) {
  33. Object.keys(params).forEach(key => {
  34. if (!params[key as keyof typeof params]) {
  35. delete params[key as keyof typeof params]
  36. }
  37. })
  38. return request(`${api}/tencentMonitor/adControl/up/ad/detail/list`, {
  39. method: 'POST',
  40. data: params
  41. })
  42. }
  43. export interface ListHourProps {
  44. pageNum: number,
  45. pageSize: number,
  46. accountIdStr?: string, // 广告账号(字符串文本,随便输,可以输入多个)
  47. adCreateTimeMin?: string // 广告创建时间
  48. adCreateTimeMax?: string //
  49. adgroupIdStr?: string // 广告 id(字符串文本,随便输,可以输入多个)
  50. columns?: string[] // 列
  51. conversionsCountDayMin?: number, // 最低今日转化数
  52. conversionsCountTotalMin?: number // 最低总转化数
  53. costDayMin?: number, // 最低今日消耗
  54. costTotalMin?: number, // 最小总消耗
  55. promotedObjectName?: string // 推广目标名称
  56. promotedObjectType?: string // 推广目标类型
  57. sortAsc?: boolean, // 是否顺序
  58. sortColumn?: string, // 排序列
  59. sysUserIds?: number[],
  60. thousandDisplayPriceDayMin?: number, // 最低今日千次曝光成本
  61. thousandDisplayPriceTotalMin?: number // 最低总千次曝光成本
  62. }
  63. export async function getListForHourApi(params: ListHourProps) {
  64. return request(`${api}/tencentMonitor/adData/listForHour`, {
  65. method: 'POST',
  66. data: params
  67. })
  68. }
  69. /**
  70. * 3.0
  71. * @param params
  72. * @returns
  73. */
  74. export async function getListForHourV3Api(params: ListHourProps) {
  75. return request(`${api}/tencentMonitor/adV3Data/listForHour`, {
  76. method: 'POST',
  77. data: params
  78. })
  79. }
  80. /** 获取起量广告列表5min */
  81. export async function getMinuteListApi(params: ListType) {
  82. Object.keys(params).forEach(key => {
  83. if (!params[key as keyof typeof params]) {
  84. delete params[key as keyof typeof params]
  85. }
  86. })
  87. return request(`${api}/tencentMonitor/adControl/up/ad/detail/list/minute`, {
  88. method: 'POST',
  89. data: params
  90. })
  91. }
  92. /** 获取今日计划总消耗图谱 折线图 */
  93. export async function getTotalCostApi(params: ListType) {
  94. Object.keys(params).forEach(key => {
  95. if (!params[key as keyof typeof params]) {
  96. delete params[key as keyof typeof params]
  97. }
  98. })
  99. return request(`${api}/tencentMonitor/adControl/total/cost/list`, {
  100. method: 'GET',
  101. params
  102. })
  103. }
  104. /** 获取计划消耗图谱 z柱状图 */
  105. export async function getPlanCostApi(params: ListType) {
  106. Object.keys(params).forEach(key => {
  107. if (!params[key as keyof typeof params]) {
  108. delete params[key as keyof typeof params]
  109. }
  110. })
  111. return request(`${api}/tencentMonitor/adControl/ad/cost/list`, {
  112. method: 'GET',
  113. params
  114. })
  115. }
  116. /** 获取消耗速度详情(弹窗) */
  117. export async function getCostSpeedApi(params: ListType) {
  118. Object.keys(params).forEach(key => {
  119. if (!params[key as keyof typeof params]) {
  120. delete params[key as keyof typeof params]
  121. }
  122. })
  123. return request(`${api}/tencentMonitor/adControl/cost/speed/info`, {
  124. method: 'POST',
  125. data: params
  126. })
  127. }
  128. /** 获取组员 */
  129. export async function getUserGroupApi() {
  130. return request(`${api}/erp/userGroup/memberUser/`, {
  131. method: 'GET'
  132. })
  133. }
  134. export interface allPlanProps {
  135. pageNum?: number,
  136. pageSize?: number,
  137. adSeat?: any[],// 广告位置 1 : 朋友圈信息流, 2 : 公众号文章底部, 3 : 公众号文中广告, 4 : 公众号文章视频贴片, 5 : 小程序banner广告, 6 : 激励式广告
  138. createStartTime?: string, // 创建开始时间
  139. createEndTime?: string, // 创建结束时间
  140. adgroup?: string, // 广告ID & 广告名称
  141. creativeId?: string, // 创意ID & 创意名称
  142. creativeStatus?: 1 | 2 | 3, // 创意状态, 0或者null : 全部, 1 : 审核通过, 2 : 审核中, 3 : 未通过
  143. dataStartTime?: string, // 数据结束日期(格式 : yyyy-MM-dd)
  144. dataEndTime?: string, // 数据结束日期(格式 : yyyy-MM-dd)
  145. followStatus?: 1 | 2, // 关注状态, 0或者null : 全部, 1 : 已关注, 2 : 未关注
  146. mainBookList?: any[], // 主投书籍列表
  147. accountId?: any, // 投放计划数据源, 账号
  148. sysUserId?: any, // 投手id列表
  149. campaign?: string, // 计划id或者计划名称
  150. adStatus?: number, // 计划状态, 0或者null : 全部, 1 : 投放中, …依次递增
  151. sortField?: string, // "排序字段"
  152. sort?: 'ASC' | 'DESC', // 排序方式
  153. }
  154. /** 计划列表 */
  155. export async function getAllPlanListApi(data: allPlanProps) {
  156. Object.keys(data).forEach(key => {
  157. if (!data[key as keyof typeof data]) {
  158. delete data[key as keyof typeof data]
  159. }
  160. })
  161. return request(`${api}/tencentMonitor/adControl/all/ad/list`, {
  162. method: 'POST',
  163. data
  164. })
  165. }
  166. /** 获取所有书籍 */
  167. export async function getBookListAllApi() {
  168. return request(`${api}/erp/book/all`, {
  169. method: 'GET'
  170. })
  171. }
  172. /** 下载 */
  173. /** 下载起量广告总表 */
  174. export async function downLoadUpAdApi(params: ListType) {
  175. return request(`${api}/tencentMonitor/adExcel/up/ad/list`, {
  176. method: 'POST',
  177. data: params,
  178. responseType: 'blob'
  179. })
  180. }
  181. /** 下载单个广告明细表(小时) */
  182. export async function downLoadDetailApi(params: ListType) {
  183. return request(`${api}/tencentMonitor/adExcel/up/ad/detail/list`, {
  184. method: 'POST',
  185. data: params,
  186. responseType: 'blob'
  187. })
  188. }
  189. /** 下载单个广告明细表(5分钟) */
  190. export async function downLoadDetailMinuteApi(params: ListType) {
  191. return request(`${api}/tencentMonitor/adExcel/up/ad/detail/list/minute`, {
  192. method: 'POST',
  193. data: params,
  194. responseType: 'blob'
  195. })
  196. }
  197. /** 下载消耗速度详情(弹窗) */
  198. export async function downLoadSpeedApi(params: ListType) {
  199. return request(`${api}/tencentMonitor/adExcel/cost/speed/info`, {
  200. method: 'POST',
  201. data: params,
  202. responseType: 'blob'
  203. })
  204. }
  205. /** 下载计划列表 */
  206. export async function downLoadAllAdListApi(data: allPlanProps) {
  207. Object.keys(data).forEach(key => {
  208. if (!data[key as keyof typeof data]) {
  209. delete data[key as keyof typeof data]
  210. }
  211. })
  212. return request(`${api}/tencentMonitor/adExcel/all/ad/list`, {
  213. method: 'POST',
  214. data,
  215. responseType: 'blob'
  216. })
  217. }
  218. // 监控数据源
  219. // 查询分组
  220. export async function getAdGroupListApi() {
  221. return request(`${api}/tencentMonitor/adGroup/list`, {
  222. method: 'GET'
  223. })
  224. }
  225. // 查询分组
  226. export async function addEditGroupApi(data: { groupName: string, id?: number, remark?: string }) {
  227. return request(`${api}/tencentMonitor/adGroup/add/or/update`, {
  228. method: 'POST',
  229. data
  230. })
  231. }
  232. // 删除分组
  233. export async function deleteAdGroupApi(params: { id: number }) {
  234. return request(`${api}/tencentMonitor/adGroup/delete`, {
  235. method: 'DELETE',
  236. params
  237. })
  238. }
  239. // 分组账号查询
  240. export interface AccountListProps {
  241. // beginDate?: string,
  242. // endDate?: string,
  243. groupId?: number,
  244. mpAppIdList?: string[],
  245. pitcherIdList?: string[],
  246. pageNum: number,
  247. pageSize: number
  248. }
  249. export async function getAccountListApi(data: AccountListProps) {
  250. Object.keys(data).forEach(key => {
  251. if (!data[key as keyof typeof data]) {
  252. delete data[key as keyof typeof data]
  253. }
  254. })
  255. return request(`${api}/tencentMonitor/adGroup/accountList`, {
  256. method: 'POST',
  257. data
  258. })
  259. }
  260. // 账号绑定或者解绑分组
  261. export async function addDelAccountApi(data: { accountIdList: number[], groupId: number, type: 0 | 1 }) {
  262. return request(`${api}/tencentMonitor/adGroup/account/update`, {
  263. method: 'POST',
  264. data
  265. })
  266. }
  267. /**
  268. * NEW 广告消耗趋势 获取今日计划总消耗图谱 折线图
  269. * @param data
  270. * @returns
  271. */
  272. export async function getCostTrendListApi(data: ListType) {
  273. Object.keys(data).forEach(key => {
  274. if (!data[key as keyof typeof data]) {
  275. delete data[key as keyof typeof data]
  276. }
  277. })
  278. return request(`${api}/tencentMonitor/adData/costTrend`, {
  279. method: 'POST',
  280. data
  281. })
  282. }
  283. /**
  284. * NEW 3.0 广告消耗趋势 获取今日计划总消耗图谱 折线图
  285. * @param data
  286. * @returns
  287. */
  288. export async function getCostTrendV3ListApi(data: ListType) {
  289. Object.keys(data).forEach(key => {
  290. if (!data[key as keyof typeof data]) {
  291. delete data[key as keyof typeof data]
  292. }
  293. })
  294. return request(`${api}/tencentMonitor/adV3Data/costTrend`, {
  295. method: 'POST',
  296. data
  297. })
  298. }
  299. /**
  300. * NEW 广告起量排行
  301. * @param params
  302. * @returns
  303. */
  304. export async function getCostTopListApi(data: ListType) {
  305. Object.keys(data).forEach(key => {
  306. if (!data[key as keyof typeof data]) {
  307. delete data[key as keyof typeof data]
  308. }
  309. })
  310. return request(`${api}/tencentMonitor/adData/costTop`, {
  311. method: 'POST',
  312. data
  313. })
  314. }
  315. /**
  316. * NEW3.0 广告起量排行
  317. * @param params
  318. * @returns
  319. */
  320. export async function getCostTopV3ListApi(data: ListType) {
  321. Object.keys(data).forEach(key => {
  322. if (!data[key as keyof typeof data]) {
  323. delete data[key as keyof typeof data]
  324. }
  325. })
  326. return request(`${api}/tencentMonitor/adV3Data/costTop`, {
  327. method: 'POST',
  328. data
  329. })
  330. }
  331. export interface GetColumnTrendProps {
  332. accountId: number
  333. adgroupId: number
  334. timeUnit: 'day' | 'hour' | 'minute'
  335. trendColumns: string[]
  336. dataTimeMin?: string
  337. dataTimeMax?: string
  338. }
  339. /**
  340. * NEW 广告指标趋势
  341. * @param data
  342. * @returns
  343. */
  344. export async function getColumnTrendApi(data: GetColumnTrendProps) {
  345. return request(`${api}/tencentMonitor/adData/columnTrend`, {
  346. method: 'POST',
  347. data
  348. })
  349. }
  350. /**
  351. * NEW3.0 广告指标趋势
  352. * @param data
  353. * @returns
  354. */
  355. export async function getColumnTrendV3Api(data: GetColumnTrendProps) {
  356. return request(`${api}/tencentMonitor/adV3Data/columnTrend`, {
  357. method: 'POST',
  358. data
  359. })
  360. }
  361. /**
  362. * NEW 广告数据-指定广告的总数据
  363. * @param data
  364. * @returns
  365. */
  366. export async function getAdTotalDataApi(data: { accountId: number, adgroupId: number, columns: string[] }) {
  367. return request(`${api}/tencentMonitor/adData/adTotalData`, {
  368. method: 'POST',
  369. data
  370. })
  371. }
  372. /**
  373. * NEW3.0 广告数据-指定广告的总数据
  374. * @param data
  375. * @returns
  376. */
  377. export async function getAdTotalDataV3Api(data: { accountId: number, adgroupId: number, columns: string[] }) {
  378. return request(`${api}/tencentMonitor/adV3Data/adTotalData`, {
  379. method: 'POST',
  380. data
  381. })
  382. }
  383. export interface GetListForAdProps {
  384. accountId: number,
  385. adgroupId: number,
  386. columns: string[],
  387. pageNum: number,
  388. pageSize: number,
  389. timeUnit: 'day' | 'hour' | 'minute'
  390. sortAsc?: boolean
  391. dataTimeMin?: string
  392. dataTimeMax?: string
  393. }
  394. /**
  395. * NEW 广告数据列表-指定广告的所有数据
  396. * @param data
  397. * @returns
  398. */
  399. export async function getListForAdApi(data: GetListForAdProps) {
  400. return request(`${api}/tencentMonitor/adData/listForAd`, {
  401. method: 'POST',
  402. data
  403. })
  404. }
  405. /**
  406. * NEW3.0 广告数据列表-指定广告的所有数据
  407. * @param data
  408. * @returns
  409. */
  410. export async function getListForAdV3Api(data: GetListForAdProps) {
  411. return request(`${api}/tencentMonitor/adV3Data/listForAd`, {
  412. method: 'POST',
  413. data
  414. })
  415. }
  416. /**
  417. * 广告列表指标趋势
  418. */
  419. export interface GetAdColumnTrendProps {
  420. timeUnit: 'day' | 'hour',
  421. pageParams: AdListProps,
  422. trendColumns: string[]
  423. dataTimeMin?: string,
  424. dataTimeMax?: string,
  425. }
  426. export async function getAdColumnTrendApi(data: GetAdColumnTrendProps) {
  427. return request(`${api}/tencentMonitor/ad/columnTrend`, {
  428. method: 'POST',
  429. data
  430. })
  431. }
  432. /**
  433. * v3指标趋势
  434. * @param data
  435. * @returns
  436. */
  437. export async function getAdV3ColumnTrendApi(data: GetAdColumnTrendProps) {
  438. return request(`${api}/tencentMonitor/adV3/columnTrend`, {
  439. method: 'POST',
  440. data
  441. })
  442. }
  443. export interface AdListProps {
  444. pageNum: number
  445. pageSize: number
  446. columns: string[]
  447. adCreateTimeMax?: string
  448. adCreateTimeMin?: string
  449. conversionsCountDayMin?: number
  450. conversionsCountTotalMin?: number,
  451. costDayMin?: number
  452. costTotalMin?: number
  453. thousandDisplayPriceDayMin?: number
  454. thousandDisplayPriceTotalMin?: number
  455. promotedObjectName?: string
  456. accountIdStr?: string,
  457. accountMemo?: string,
  458. accountRemark?: string,
  459. adgroupIdStr?: string,
  460. adgroupName?: string
  461. isDeepConversionSpec?: boolean
  462. isDeleted?: boolean
  463. optimizationGoal?: string
  464. promotedObjectType?: string
  465. sortAsc?: boolean
  466. sortColumn?: string
  467. status?: string
  468. sysUserIds?: number
  469. putDateBegin?: string,
  470. putDateEnd?: string
  471. groupAccountIds?: number[]
  472. dataTimeMin?: string
  473. dataTimeMax?: string
  474. }
  475. export async function getAdListApi(data: AdListProps) {
  476. return request(`${api}/tencentMonitor/ad/list`, {
  477. method: 'POST',
  478. data
  479. })
  480. }
  481. /**
  482. * 3.0
  483. * @param data
  484. * @returns
  485. */
  486. export async function getAdV3ListApi(data: AdListProps) {
  487. return request(`${api}/tencentMonitor/adV3/list`, {
  488. method: 'POST',
  489. data
  490. })
  491. }
  492. /**
  493. * 广告详情
  494. * @param param0
  495. * @returns
  496. */
  497. export async function getAdgroupsDetailsApi({ accountId, adgroupId }: { accountId: any, adgroupId: any }) {
  498. return request(`${api}/adq/adgroups/detail/${accountId}/${adgroupId}`, {
  499. method: 'POST'
  500. })
  501. }
  502. /**
  503. * 广告详情3.0
  504. * @param param0
  505. * @returns
  506. */
  507. export async function getAdgroupDetailsApi({ accountId, adgroupId }: { accountId: any, adgroupId: any }) {
  508. return request(`${api}/adq/adgroup/detail/${accountId}/${adgroupId}`, {
  509. method: 'GET'
  510. })
  511. }
  512. /**
  513. * 移除广告的告警规则---广告告警规则表的操作
  514. * @param param0
  515. * @returns
  516. */
  517. export async function delAdWarningRuleApi({ accountId, adgroupId, ruleId }: { accountId: any, adgroupId: any, ruleId: number }) {
  518. return request(`${api}/adq/sysWarningRule/removeAdgroup/${accountId}/${adgroupId}/${ruleId}`, {
  519. method: 'PUT'
  520. })
  521. }
  522. /**
  523. * 将指定广告加入规则黑名单---默认列表 + 广告账号列表的操作
  524. * @param param0
  525. * @returns
  526. */
  527. export async function addAdToRuleBlackListApi({ accountId, adgroupId, ruleId }: { accountId: any, adgroupId: any, ruleId: number }) {
  528. return request(`${api}/adq/sysWarningRule/configRuleBlackList/${accountId}/${adgroupId}/${ruleId}`, {
  529. method: 'PUT'
  530. })
  531. }
  532. /**
  533. * 将广告移出告警规则的黑名单---黑名单列表的操作
  534. * @param param0
  535. * @returns
  536. */
  537. export async function delAdToRuleBlackListApi({ accountId, adgroupId, ruleId }: { accountId: any, adgroupId: any, ruleId: number }) {
  538. return request(`${api}/adq/sysWarningRule/removeBlackList/${accountId}/${adgroupId}/${ruleId}`, {
  539. method: 'PUT'
  540. })
  541. }
  542. /**
  543. * 配置广告的告警规则
  544. * @param param0
  545. * @returns
  546. */
  547. export async function configAdWarningRuleApi({ accountId, adgroupId, ruleIds }: { accountId: any, adgroupId: any, ruleIds: string }) {
  548. return request(`${api}/adq/sysWarningRule/configRuleAdgroup/${accountId}/${adgroupId}/${ruleIds}`, {
  549. method: 'PUT'
  550. })
  551. }
  552. /**
  553. * 配置账号下告警
  554. * @param param0
  555. * @returns
  556. */
  557. export async function configRuleAccountApi({ accountIds, ruleId }: { accountIds: string, ruleId: string }) {
  558. return request(`${api}/adq/sysWarningRule/configRuleAccount/${accountIds}/${ruleId}`, {
  559. method: 'PUT'
  560. })
  561. }
  562. export interface GetDynamicCreativeMonitorProps {
  563. pageNum: number
  564. pageSize: number
  565. columns: string[]
  566. sortAsc?: boolean
  567. sortColumn?: string
  568. accountIdStr?: string,
  569. adgroupIds?: string[], // 广告id
  570. adgroupName?: string, // 广告名称
  571. configuredStatus?: string[] // 创意启用状态
  572. conversionsCountTotalMin?: number, // 最低转化数
  573. costTotalMin?: number // 最小总消耗
  574. createdTimeMax?: string, // 创意创建时间 max
  575. createdTimeMin?: string, // 创意创建时间 min
  576. dataTimeMin?: string // 创意数据时间(end)
  577. dataTimeMax?: string // 创意数据时间(begin)
  578. deliveryMode?: string // 投放模式
  579. dynamicCreativeId?: string[], // 创意id
  580. dynamicCreativeName?: string // 创意名称
  581. groupAccountIds?: number[], // 广告分组
  582. isDeleted?: boolean, // 是否删除
  583. sysUserIds?: number // 投手ID
  584. thousandDisplayPriceTotalMin?: number // 最低总千次曝光成本
  585. }
  586. /**
  587. * 创意数据
  588. * @param data
  589. * @returns
  590. */
  591. export async function getDynamicCreativeMonitorListApi(data: GetDynamicCreativeMonitorProps) {
  592. return request(`${api}/tencentMonitor/dynamicCreativeMonitor/list`, {
  593. method: 'POST',
  594. data
  595. })
  596. }