adMonitor.ts 16 KB

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