Explorar el Código

feat:创意日报

pudongliang hace 3 meses
padre
commit
782c8fc6dc
Se han modificado 44 ficheros con 140 adiciones y 34 borrados
  1. 1 1
      portal/dist/assets/accountGroup-v3r0H1CD.js
  2. 1 1
      portal/dist/assets/adAutoConf-Dj4ye5ZZ.js
  3. 0 1
      portal/dist/assets/adPlanConf-DYAfLFrA.js
  4. 1 0
      portal/dist/assets/adPlanConf-D_c4iGM3.js
  5. 1 1
      portal/dist/assets/auth-BJKslpjZ.js
  6. 1 1
      portal/dist/assets/conversion-CoHryZbR.js
  7. 0 0
      portal/dist/assets/detail-D6sOXoPK.js
  8. 1 1
      portal/dist/assets/drama-Biplb52o.js
  9. 0 0
      portal/dist/assets/edit-lAY5dHln.js
  10. 0 0
      portal/dist/assets/index-259Gu2or.js
  11. 0 0
      portal/dist/assets/index-ApTBmTjn.js
  12. 0 0
      portal/dist/assets/index-B1cslr_k.js
  13. 0 0
      portal/dist/assets/index-Bk4DkawS.js
  14. 0 0
      portal/dist/assets/index-Brju-kLq.js
  15. 0 0
      portal/dist/assets/index-C0ZHpecc.js
  16. 1 1
      portal/dist/assets/index-CMO_aamX.js
  17. 0 0
      portal/dist/assets/index-CTMVq2dr.js
  18. 0 0
      portal/dist/assets/index-CknIOw0r.js
  19. 0 0
      portal/dist/assets/index-CsiF6xkY.js
  20. 0 0
      portal/dist/assets/index-DIX7zQyD.js
  21. 0 0
      portal/dist/assets/index-DQrgRlws.js
  22. 0 0
      portal/dist/assets/index-DYLOcK4Q.js
  23. 0 0
      portal/dist/assets/index-D_PcYCSR.js
  24. 0 0
      portal/dist/assets/index-Dde3-_Gk.js
  25. 0 0
      portal/dist/assets/index-Dqeg2YZR.js
  26. 0 0
      portal/dist/assets/index-InfflNVo.js
  27. 0 0
      portal/dist/assets/index-QSMAZlds.js
  28. 0 0
      portal/dist/assets/index-u3PBca_p.js
  29. 0 0
      portal/dist/assets/index-xVIXaHMr.js
  30. 1 1
      portal/dist/assets/loadPageConf-BVoPbaND.js
  31. 1 1
      portal/dist/assets/ossFile-B1p_LnA1.js
  32. 0 0
      portal/dist/assets/request-BSQsKCsT.js
  33. 1 1
      portal/dist/assets/user-BaTJcJ6w.js
  34. 1 1
      portal/dist/index.html
  35. 7 0
      portal/src/api/adPlanConf.js
  36. 41 4
      portal/src/views/daily-adgroup-report/index.vue
  37. 39 3
      portal/src/views/daily-creative-report/index.vue
  38. 11 0
      src/main/java/com/moka/gdtauto/controller/AdPlanConfController.java
  39. 3 2
      src/main/java/com/moka/gdtauto/controller/DailyAdgroupReportController.java
  40. 3 2
      src/main/java/com/moka/gdtauto/controller/DailyCreativeReportController.java
  41. 11 5
      src/main/java/com/moka/gdtauto/service/DailyAdgroupReportService.java
  42. 11 5
      src/main/java/com/moka/gdtauto/service/DailyCreativeReportService.java
  43. 2 1
      src/main/java/com/moka/gdtauto/task/DailyCreativeReportSyncTask.java
  44. 1 1
      src/test/java/com/moka/gdtauto/service/AdPlanDailyReportSyncTest.java

+ 1 - 1
portal/dist/assets/accountGroup-0-mwX8vR.js → portal/dist/assets/accountGroup-v3r0H1CD.js

@@ -1 +1 @@
-import{r as u}from"./request-DoD-XwtY.js";function c(t){return u({url:"/api/account-group/create",method:"post",data:t})}function e(t){return u({url:"/api/account-group/update",method:"post",data:t})}function n(t){return u({url:`/api/account-group/${t}`,method:"delete"})}function a(t=1,o=10){return u({url:"/api/account-group/list",method:"get",params:{pageNum:t,pageSize:o}})}function p(){return u({url:"/api/account-group/all",method:"get"})}function i(t){return u({url:`/api/account-group/${t}/accounts`,method:"get"})}export{i as a,p as b,c,n as d,a as g,e as u};
+import{r as u}from"./request-BSQsKCsT.js";function c(t){return u({url:"/api/account-group/create",method:"post",data:t})}function e(t){return u({url:"/api/account-group/update",method:"post",data:t})}function n(t){return u({url:`/api/account-group/${t}`,method:"delete"})}function a(t=1,o=10){return u({url:"/api/account-group/list",method:"get",params:{pageNum:t,pageSize:o}})}function p(){return u({url:"/api/account-group/all",method:"get"})}function i(t){return u({url:`/api/account-group/${t}/accounts`,method:"get"})}export{i as a,p as b,c,n as d,a as g,e as u};

+ 1 - 1
portal/dist/assets/adAutoConf-kogHWoCA.js → portal/dist/assets/adAutoConf-Dj4ye5ZZ.js

@@ -1 +1 @@
-import{r as e}from"./request-DoD-XwtY.js";function u(t){return e({url:"/api/ad-auto-conf/list",method:"get",params:t})}function n(t){return e({url:`/api/ad-auto-conf/${t}`,method:"get"})}function a(t){return e({url:"/api/ad-auto-conf",method:"post",data:t})}function r(t){return e({url:"/api/ad-auto-conf/update",method:"post",data:t})}function d(t){return e({url:`/api/ad-auto-conf/${t}`,method:"delete"})}function i(t){return e({url:`/api/ad-auto-conf/execute?id=${t}`,method:"post"})}function f(t){return e({url:"/api/execute-log/list",method:"get",params:t})}function c(t){return e({url:"/api/execute-log/getChildLog",method:"get",params:t})}export{c as a,f as b,n as c,d,i as e,u as g,a as s,r as u};
+import{r as e}from"./request-BSQsKCsT.js";function u(t){return e({url:"/api/ad-auto-conf/list",method:"get",params:t})}function n(t){return e({url:`/api/ad-auto-conf/${t}`,method:"get"})}function a(t){return e({url:"/api/ad-auto-conf",method:"post",data:t})}function r(t){return e({url:"/api/ad-auto-conf/update",method:"post",data:t})}function d(t){return e({url:`/api/ad-auto-conf/${t}`,method:"delete"})}function i(t){return e({url:`/api/ad-auto-conf/execute?id=${t}`,method:"post"})}function f(t){return e({url:"/api/execute-log/list",method:"get",params:t})}function c(t){return e({url:"/api/execute-log/getChildLog",method:"get",params:t})}export{c as a,f as b,n as c,d,i as e,u as g,a as s,r as u};

+ 0 - 1
portal/dist/assets/adPlanConf-DYAfLFrA.js

@@ -1 +0,0 @@
-import{r as a}from"./request-DoD-XwtY.js";function d(n){return a({url:"/api/ad-plan-conf/reCreate",method:"post",data:n})}function o(n){return a({url:"/api/ad-plan-conf/generate-plan",method:"post",data:n})}function u(n){return a({url:`/api/ad-plan-conf/reGeneratePlan/${n}`,method:"get"})}function l(n){return a({url:`/api/ad-plan-conf/syncSystemStatus/${n}`,method:"get"})}function p(n){return a({url:"/api/ad-plan-conf/create",method:"post",data:n})}function s(n){return a({url:"/api/ad-plan-conf/update",method:"post",data:n})}function i(n=1,e=10,t={}){return a({url:"/api/ad-plan-conf/list",method:"get",params:{pageNum:n,pageSize:e,...t}})}function f(n){return a({url:`/api/ad-plan-conf/${n}`,method:"get"})}function c(n){return a({url:"/api/ad-plan/list",method:"get",params:n})}function g(n){return a({url:`/api/ad-plan-creative/plan/${n}`,method:"get"})}function m(n){return a({url:"/api/ad-plan-conf/gdtSuspendByConfId",params:{confId:n},method:"get"})}function h(n){return a({url:"/api/ad-plan-conf/gdtDeleteByConfId",params:{confId:n},method:"get"})}function C(n,e){return a({url:`/api/ad-plan-conf/gdtSuspendByPlanIds/${n}`,method:"post",data:e})}function P(n,e){return a({url:`/api/ad-plan-conf/gdtDeleteByPlanIds/${n}`,method:"post",data:e})}function y(n=[]){return a({url:"/api/ad-plan-conf/getOneCreativeImage",method:"post",data:n})}function I(){return a({url:"/api/ad-plan-conf/getOneBrandImage",method:"get"})}function B(n=[]){return a({url:"/api/ad-plan-conf/getOneCreativeVideo",method:"post",data:n})}export{y as a,I as b,B as c,o as d,p as e,f,i as g,c as h,h as i,C as j,P as k,l,u as m,g as n,d as r,m as s,s as u};

+ 1 - 0
portal/dist/assets/adPlanConf-D_c4iGM3.js

@@ -0,0 +1 @@
+import{r as n}from"./request-BSQsKCsT.js";function o(e){return n({url:"/api/ad-plan-conf/reCreate",method:"post",data:e})}function d(e){return n({url:"/api/ad-plan-conf/generate-plan",method:"post",data:e})}function l(e){return n({url:`/api/ad-plan-conf/reGeneratePlan/${e}`,method:"get"})}function u(e){return n({url:`/api/ad-plan-conf/syncSystemStatus/${e}`,method:"get"})}function p(e){return n({url:"/api/ad-plan-conf/create",method:"post",data:e})}function s(e){return n({url:"/api/ad-plan-conf/update",method:"post",data:e})}function i(e=1,a=10,t={}){return n({url:"/api/ad-plan-conf/list",method:"get",params:{pageNum:e,pageSize:a,...t}})}function f(e){return n({url:`/api/ad-plan-conf/${e}`,method:"get"})}function c(e){return n({url:"/api/ad-plan/list",method:"get",params:e})}function g(e){return n({url:`/api/ad-plan-creative/plan/${e}`,method:"get"})}function m(e){return n({url:"/api/ad-plan-conf/gdtSuspendByConfId",params:{confId:e},method:"get"})}function h(e){return n({url:"/api/ad-plan-conf/gdtDeleteByConfId",params:{confId:e},method:"get"})}function C(e,a){return n({url:`/api/ad-plan-conf/gdtSuspendByPlanIds/${e}`,method:"post",data:a})}function P(e,a){return n({url:`/api/ad-plan-conf/gdtDeleteByPlanIds/${e}`,method:"post",data:a})}function y(e=[]){return n({url:"/api/ad-plan-conf/getOneCreativeImage",method:"post",data:e})}function I(){return n({url:"/api/ad-plan-conf/getOneBrandImage",method:"get"})}function B(e=[]){return n({url:"/api/ad-plan-conf/getOneCreativeVideo",method:"post",data:e})}function S(){return n({url:"/api/ad-plan-conf/allForSelect",method:"get"})}export{y as a,I as b,B as c,d,p as e,f,i as g,c as h,h as i,C as j,P as k,u as l,l as m,g as n,S as o,o as r,m as s,s as u};

+ 1 - 1
portal/dist/assets/auth-BGPBmseW.js → portal/dist/assets/auth-BJKslpjZ.js

@@ -1 +1 @@
-import{r as t}from"./request-DoD-XwtY.js";function i(){return t({url:"/api/gdt/auth/authorize-url",method:"get"})}function n(r){return t({url:"/api/gdt/auth/refresh",method:"post",params:r})}function u(){return t({url:"/api/gdt/auth/list",method:"get"})}function a(){return u()}function o(){return t({url:"/api/gdt/auth/expiring",method:"get"})}export{o as a,a as b,i as g,u as l,n as r};
+import{r as t}from"./request-BSQsKCsT.js";function i(){return t({url:"/api/gdt/auth/authorize-url",method:"get"})}function n(r){return t({url:"/api/gdt/auth/refresh",method:"post",params:r})}function u(){return t({url:"/api/gdt/auth/list",method:"get"})}function a(){return u()}function o(){return t({url:"/api/gdt/auth/expiring",method:"get"})}export{o as a,a as b,i as g,u as l,n as r};

+ 1 - 1
portal/dist/assets/conversion-KE15Tvl6.js → portal/dist/assets/conversion-CoHryZbR.js

@@ -1 +1 @@
-import{r as t}from"./request-DoD-XwtY.js";function e(n,o){return t({url:"/api/gdt/conversion/sync",method:"post",params:{orgAccountId:n,accountId:o}})}function s(n=1,o=20){return t({url:"/api/gdt/conversion/list",method:"get",params:{page:n,pageSize:o}})}function i(n){return t({url:"/api/gdt/conversion/detail",method:"get",params:{conversionId:n}})}function a(){return t({url:"/api/gdt/conversion/all",method:"get"})}export{s as a,i as b,a as g,e as s};
+import{r as t}from"./request-BSQsKCsT.js";function e(n,o){return t({url:"/api/gdt/conversion/sync",method:"post",params:{orgAccountId:n,accountId:o}})}function s(n=1,o=20){return t({url:"/api/gdt/conversion/list",method:"get",params:{page:n,pageSize:o}})}function i(n){return t({url:"/api/gdt/conversion/detail",method:"get",params:{conversionId:n}})}function a(){return t({url:"/api/gdt/conversion/all",method:"get"})}export{s as a,i as b,a as g,e as s};

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/detail-D6sOXoPK.js


+ 1 - 1
portal/dist/assets/drama-DWCsB2Ay.js → portal/dist/assets/drama-Biplb52o.js

@@ -1 +1 @@
-import{r as t}from"./request-DoD-XwtY.js";function n(a){return t({url:"/api/gdt/asset/drama/sync",method:"post",params:{accountId:a}})}function m(a=1,s=20,r=""){return t({url:"/api/gdt/asset/drama/list",method:"get",params:{dramaName:r,page:a,pageSize:s}})}function d(a){return t({url:"/api/gdt/asset/drama/myDramaAssets",method:"get",params:{dramaName:a}})}function o(){return t({url:"/api/gdt/asset/drama/sync/conf/myConf",method:"get"})}function u(a){return t({url:"/api/gdt/asset/drama/sync/conf/add",method:"post",data:a})}function i(a){return t({url:"/api/gdt/asset/drama/sync/conf/delete",method:"post",params:{id:a}})}export{o as a,u as b,i as d,m as g,d as m,n as s};
+import{r as t}from"./request-BSQsKCsT.js";function n(a){return t({url:"/api/gdt/asset/drama/sync",method:"post",params:{accountId:a}})}function m(a=1,s=20,r=""){return t({url:"/api/gdt/asset/drama/list",method:"get",params:{dramaName:r,page:a,pageSize:s}})}function d(a){return t({url:"/api/gdt/asset/drama/myDramaAssets",method:"get",params:{dramaName:a}})}function o(){return t({url:"/api/gdt/asset/drama/sync/conf/myConf",method:"get"})}function u(a){return t({url:"/api/gdt/asset/drama/sync/conf/add",method:"post",data:a})}function i(a){return t({url:"/api/gdt/asset/drama/sync/conf/delete",method:"post",params:{id:a}})}export{o as a,u as b,i as d,m as g,d as m,n as s};

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/edit-lAY5dHln.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-259Gu2or.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-ApTBmTjn.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-B1cslr_k.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-Bk4DkawS.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-Brju-kLq.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-C0ZHpecc.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1 - 1
portal/dist/assets/index-CMO_aamX.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-CTMVq2dr.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-CknIOw0r.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-CsiF6xkY.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-DIX7zQyD.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-DQrgRlws.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-DYLOcK4Q.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-D_PcYCSR.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-Dde3-_Gk.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-Dqeg2YZR.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-InfflNVo.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-QSMAZlds.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-u3PBca_p.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/index-xVIXaHMr.js


+ 1 - 1
portal/dist/assets/loadPageConf-CfvQH1Gs.js → portal/dist/assets/loadPageConf-BVoPbaND.js

@@ -1 +1 @@
-import{r as o}from"./request-DoD-XwtY.js";function t(a){return o({url:"/api/load-page-conf/list",method:"get",params:a})}function n(a){return o({url:`/api/load-page-conf/${a}`,method:"get"})}function r(a){return o({url:"/api/load-page-conf",method:"post",data:a})}function u(a){return o({url:"/api/load-page-conf",method:"put",data:a})}function d(){return o({url:"/api/load-page-conf/all",method:"get"})}export{t as a,n as b,r as c,d as g,u};
+import{r as o}from"./request-BSQsKCsT.js";function t(a){return o({url:"/api/load-page-conf/list",method:"get",params:a})}function n(a){return o({url:`/api/load-page-conf/${a}`,method:"get"})}function r(a){return o({url:"/api/load-page-conf",method:"post",data:a})}function u(a){return o({url:"/api/load-page-conf",method:"put",data:a})}function d(){return o({url:"/api/load-page-conf/all",method:"get"})}export{t as a,n as b,r as c,d as g,u};

+ 1 - 1
portal/dist/assets/ossFile-BtfxgtSx.js → portal/dist/assets/ossFile-B1p_LnA1.js

@@ -1 +1 @@
-import{r as t}from"./request-DoD-XwtY.js";function i(e){return t({timeout:12e5,url:"/api/oss-file/upload",method:"post",data:e,headers:{"Content-Type":"multipart/form-data"}})}function o(e){return t({url:"/api/oss-file/list",method:"get",params:e})}function r(e){return t({url:`/api/oss-file/${e}`,method:"delete"})}function l(e){return t({url:"/api/oss-file/batch",method:"delete",params:{fileIds:e}})}export{l as b,r as d,o as g,i as u};
+import{r as t}from"./request-BSQsKCsT.js";function i(e){return t({timeout:12e5,url:"/api/oss-file/upload",method:"post",data:e,headers:{"Content-Type":"multipart/form-data"}})}function o(e){return t({url:"/api/oss-file/list",method:"get",params:e})}function r(e){return t({url:`/api/oss-file/${e}`,method:"delete"})}function l(e){return t({url:"/api/oss-file/batch",method:"delete",params:{fileIds:e}})}export{l as b,r as d,o as g,i as u};

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
portal/dist/assets/request-BSQsKCsT.js


+ 1 - 1
portal/dist/assets/user-DIoef0NW.js → portal/dist/assets/user-BaTJcJ6w.js

@@ -1 +1 @@
-import{r as e}from"./request-DoD-XwtY.js";function t(){return e({url:"/api/user/list",method:"get"})}function u(r){return e({url:"/api/user/info",method:"get",params:r})}function n(r){return e({url:"/api/user/user-token-url",method:"get",params:r})}function o(r){return e({url:"/api/user/login",method:"post",params:r})}function a(r){return e({url:"/api/user/change-password",method:"post",params:r})}function i(r){return e({url:"/api/user/save",method:"post",params:r})}export{u as a,t as b,a as c,n as g,o as l,i as s};
+import{r as e}from"./request-BSQsKCsT.js";function t(){return e({url:"/api/user/list",method:"get"})}function u(r){return e({url:"/api/user/info",method:"get",params:r})}function n(r){return e({url:"/api/user/user-token-url",method:"get",params:r})}function o(r){return e({url:"/api/user/login",method:"post",params:r})}function a(r){return e({url:"/api/user/change-password",method:"post",params:r})}function i(r){return e({url:"/api/user/save",method:"post",params:r})}export{u as a,t as b,a as c,n as g,o as l,i as s};

+ 1 - 1
portal/dist/index.html

@@ -5,7 +5,7 @@
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
     <link rel="icon" type="image/svg+xml" href="/vite.svg" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <title>腾讯广告自动化管理后台</title>
     <title>腾讯广告自动化管理后台</title>
-    <script type="module" crossorigin src="/assets/index-B0FHiS-9.js"></script>
+    <script type="module" crossorigin src="/assets/index-CMO_aamX.js"></script>
     <link rel="stylesheet" crossorigin href="/assets/index-5iqyiYFJ.css">
     <link rel="stylesheet" crossorigin href="/assets/index-5iqyiYFJ.css">
   </head>
   </head>
   <body>
   <body>

+ 7 - 0
portal/src/api/adPlanConf.js

@@ -172,3 +172,10 @@ export function getOneCreativeVideo(ids = []) {
     data: ids
     data: ids
   })
   })
 }
 }
+
+export function allForSelect() {
+  return request({
+    url: '/api/ad-plan-conf/allForSelect',
+    method: 'get'
+  })
+}

+ 41 - 4
portal/src/views/daily-adgroup-report/index.vue

@@ -28,6 +28,22 @@
           </div>
           </div>
 
 
           <el-select
           <el-select
+            v-model="queryForm.confId"
+            placeholder="配置"
+            clearable
+            filterable
+            style="width: 180px"
+            @change="handleSearch"
+          >
+            <el-option
+              v-for="g in confOptions"
+              :key="g.id"
+              :label="g.name"
+              :value="g.id"
+            />
+          </el-select>
+
+          <el-select
             v-model="queryForm.groupId"
             v-model="queryForm.groupId"
             placeholder="账号组筛选"
             placeholder="账号组筛选"
             clearable
             clearable
@@ -94,7 +110,9 @@
         @sort-change="handleSortChange"
         @sort-change="handleSortChange"
       >
       >
         <!-- yyyy-MM-dd -->
         <!-- yyyy-MM-dd -->
-         <!-- <el-table-column prop="confId" label="配置ID" width="90" /> -->
+         <el-table-column prop="confId" label="配置ID" width="110" show-overflow-tooltip>
+           <template #default="{ row }">{{ getConfName(row.confId) }}</template>
+          </el-table-column>
          <el-table-column prop="groupId" label="账号组ID" width="110" show-overflow-tooltip >
          <el-table-column prop="groupId" label="账号组ID" width="110" show-overflow-tooltip >
           <template #default="{ row }">{{ getGroupName(row.groupId) }}</template>
           <template #default="{ row }">{{ getGroupName(row.groupId) }}</template>
           </el-table-column>
           </el-table-column>
@@ -202,6 +220,7 @@ import { Refresh, Search } from '@element-plus/icons-vue'
 import { useRoute } from 'vue-router'
 import { useRoute } from 'vue-router'
 import { getDailyAdgroupReportList } from '@/api/dailyAdgroupReport'
 import { getDailyAdgroupReportList } from '@/api/dailyAdgroupReport'
 import { getAccountGroupListAll } from '@/api/accountGroup'
 import { getAccountGroupListAll } from '@/api/accountGroup'
+import { allForSelect } from '@/api/adPlanConf'
 import dayjs from 'dayjs'
 import dayjs from 'dayjs'
 const route = useRoute()
 const route = useRoute()
 
 
@@ -212,7 +231,9 @@ const reportList = ref([])
 const groupOptions = ref([])
 const groupOptions = ref([])
 const groupNameMap = ref({})
 const groupNameMap = ref({})
 const getGroupName = (id) => groupNameMap.value[id] || ''
 const getGroupName = (id) => groupNameMap.value[id] || ''
-
+const confOptions = ref([])
+const confNameMap = ref({})
+const getConfName = (id) => confNameMap.value[id] || ''
 
 
 // 同步表单
 // 同步表单
 const syncForm = reactive({ accountId: '' })
 const syncForm = reactive({ accountId: '' })
@@ -358,9 +379,25 @@ const loadGroupOptions = async () => {
   }
   }
 }
 }
 
 
+const loadConfOptions = async () => {
+  try {
+    const res = await allForSelect()
+    if (res.success) {
+      confOptions.value = res.data || []
+      confNameMap.value = res.data.reduce((acc, cur) => {
+        acc[cur.id] = cur.name
+        return acc
+      }, {})
+    }
+  } catch (err) {
+    console.error('加载配置项失败:', err)
+  }
+}
+
 // ─── 初始化 ───────────────────────────────────────────────────────────────────
 // ─── 初始化 ───────────────────────────────────────────────────────────────────
-onMounted(() => {
-  loadGroupOptions()
+onMounted(async () => {
+  await loadGroupOptions()
+  await loadConfOptions()
   if (route.query.adgroupId) {
   if (route.query.adgroupId) {
     queryForm.adgroupId = String(route.query.adgroupId)
     queryForm.adgroupId = String(route.query.adgroupId)
   }
   }

+ 39 - 3
portal/src/views/daily-creative-report/index.vue

@@ -54,7 +54,21 @@
               <el-radio-button value="REPORTING_TIME">上报时间</el-radio-button>
               <el-radio-button value="REPORTING_TIME">上报时间</el-radio-button>
             </el-radio-group>
             </el-radio-group>
           </div>
           </div>
-
+<el-select
+            v-model="queryForm.confId"
+            placeholder="配置"
+            clearable
+            filterable
+            style="width: 180px"
+            @change="handleSearch"
+          >
+            <el-option
+              v-for="g in confOptions"
+              :key="g.id"
+              :label="g.name"
+              :value="g.id"
+            />
+          </el-select>
           <el-select
           <el-select
             v-model="queryForm.groupId"
             v-model="queryForm.groupId"
             placeholder="账号组筛选"
             placeholder="账号组筛选"
@@ -129,7 +143,9 @@
         @sort-change="handleSortChange"
         @sort-change="handleSortChange"
       >
       >
         <!-- yyyy-MM-dd -->
         <!-- yyyy-MM-dd -->
-         <!-- <el-table-column prop="confId" label="配置ID" width="90" /> -->
+         <el-table-column prop="confId" label="配置ID" width="110" show-overflow-tooltip>
+           <template #default="{ row }">{{ getConfName(row.confId) }}</template>
+          </el-table-column>
          <el-table-column prop="groupId" label="账号组ID" width="110" show-overflow-tooltip >
          <el-table-column prop="groupId" label="账号组ID" width="110" show-overflow-tooltip >
           <template #default="{ row }">{{ getGroupName(row.groupId) }}</template>
           <template #default="{ row }">{{ getGroupName(row.groupId) }}</template>
           </el-table-column>
           </el-table-column>
@@ -246,6 +262,7 @@ import { useRoute } from 'vue-router'
 import { getDailyReportList } from '@/api/dailyCreativeReport'
 import { getDailyReportList } from '@/api/dailyCreativeReport'
 import { getAccountGroupListAll } from '@/api/accountGroup'
 import { getAccountGroupListAll } from '@/api/accountGroup'
 import dayjs from 'dayjs'
 import dayjs from 'dayjs'
+import { allForSelect } from '@/api/adPlanConf'
 
 
 const route = useRoute()
 const route = useRoute()
 
 
@@ -255,8 +272,11 @@ const syncing = ref(false)
 const reportList = ref([])
 const reportList = ref([])
 const groupOptions = ref([])
 const groupOptions = ref([])
 const groupNameMap = ref({})
 const groupNameMap = ref({})
-
 const getGroupName = (id) => groupNameMap.value[id] || ''
 const getGroupName = (id) => groupNameMap.value[id] || ''
+const confOptions = ref([])
+const confNameMap = ref({})
+const getConfName = (id) => confNameMap.value[id] || ''
+
 
 
 // 同步表单
 // 同步表单
 const syncForm = reactive({ accountId: '' })
 const syncForm = reactive({ accountId: '' })
@@ -409,9 +429,25 @@ const loadGroupOptions = async () => {
   }
   }
 }
 }
 
 
+const loadConfOptions = async () => {
+  try {
+    const res = await allForSelect()
+    if (res.success) {
+      confOptions.value = res.data || []
+      confNameMap.value = res.data.reduce((acc, cur) => {
+        acc[cur.id] = cur.name
+        return acc
+      }, {})
+    }
+  } catch (err) {
+    console.error('加载配置失败:', err)
+  }
+}
+
 // ─── 初始化 ───────────────────────────────────────────────────────────────────
 // ─── 初始化 ───────────────────────────────────────────────────────────────────
 onMounted(async () => {
 onMounted(async () => {
   await loadGroupOptions()
   await loadGroupOptions()
+  await loadConfOptions()
   if (route.query.dynamicCreativeId) {
   if (route.query.dynamicCreativeId) {
     queryForm.dynamicCreativeId = String(route.query.dynamicCreativeId)
     queryForm.dynamicCreativeId = String(route.query.dynamicCreativeId)
   }
   }

+ 11 - 0
src/main/java/com/moka/gdtauto/controller/AdPlanConfController.java

@@ -747,4 +747,15 @@ public class AdPlanConfController {
             return Result.fail("查询品牌图片失败: " + e.getMessage());
             return Result.fail("查询品牌图片失败: " + e.getMessage());
         }
         }
     }
     }
+
+    @GetMapping("allForSelect")
+    public Result<List<AdPlanConf>>  allForSelect() {
+        List<AdPlanConf> adPlanConfs = adPlanConfService.
+        list(new LambdaQueryWrapper<AdPlanConf>()
+                .select(AdPlanConf::getId, AdPlanConf::getName)
+                .eq(AdPlanConf::getDeleted, 0)
+                .orderByDesc(AdPlanConf::getId));
+        return Result.success(adPlanConfs, "查询成功");
+    }
+    
 }
 }

+ 3 - 2
src/main/java/com/moka/gdtauto/controller/DailyAdgroupReportController.java

@@ -39,6 +39,7 @@ public class DailyAdgroupReportController {
     public Result<?> list(
     public Result<?> list(
             @Parameter(description = "时间口径 REQUEST_TIME / REPORTING_TIME")
             @Parameter(description = "时间口径 REQUEST_TIME / REPORTING_TIME")
             @RequestParam(defaultValue = "REQUEST_TIME") String timeLine,
             @RequestParam(defaultValue = "REQUEST_TIME") String timeLine,
+            @Parameter(description = "配置ID(可选)") @RequestParam(required = false) Long confId,
             @Parameter(description = "账号组ID(可选)") @RequestParam(required = false) Long groupId,
             @Parameter(description = "账号组ID(可选)") @RequestParam(required = false) Long groupId,
             @Parameter(description = "广告账户ID(可选)") @RequestParam(required = false) Long accountId,
             @Parameter(description = "广告账户ID(可选)") @RequestParam(required = false) Long accountId,
             @Parameter(description = "广告组ID(可选)") @RequestParam(required = false) Long adgroupId,
             @Parameter(description = "广告组ID(可选)") @RequestParam(required = false) Long adgroupId,
@@ -50,11 +51,11 @@ public class DailyAdgroupReportController {
             @Parameter(description = "每页数量") @RequestParam(defaultValue = "20") long pageSize) {
             @Parameter(description = "每页数量") @RequestParam(defaultValue = "20") long pageSize) {
         try {
         try {
             Page<? extends BaseDailyAdgroupReport> result =
             Page<? extends BaseDailyAdgroupReport> result =
-                    dailyReportService.listReports(timeLine, groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder, page, pageSize);
+                    dailyReportService.listReports(timeLine, confId, groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder, page, pageSize);
             return Result.success(result.getRecords(), "查询成功")
             return Result.success(result.getRecords(), "查询成功")
                     .withPage(page, pageSize, result.getTotal());
                     .withPage(page, pageSize, result.getTotal());
         } catch (Exception e) {
         } catch (Exception e) {
-            log.error("查询日报表失败 timeLine={} groupId={} accountId={} adgroupId={}", timeLine, groupId, accountId, adgroupId, e);
+            log.error("查询日报表失败 timeLine={} confId={} groupId={} accountId={} adgroupId={}", timeLine, confId, groupId, accountId, adgroupId, e);
             return Result.fail("查询失败:" + e.getMessage());
             return Result.fail("查询失败:" + e.getMessage());
         }
         }
     }
     }

+ 3 - 2
src/main/java/com/moka/gdtauto/controller/DailyCreativeReportController.java

@@ -39,6 +39,7 @@ public class DailyCreativeReportController {
     public Result<?> list(
     public Result<?> list(
             @Parameter(description = "时间口径 REQUEST_TIME / REPORTING_TIME")
             @Parameter(description = "时间口径 REQUEST_TIME / REPORTING_TIME")
             @RequestParam(defaultValue = "REQUEST_TIME") String timeLine,
             @RequestParam(defaultValue = "REQUEST_TIME") String timeLine,
+            @Parameter(description = "配置ID(可选)") @RequestParam(required = false) Long confId,
             @Parameter(description = "账号组ID(可选)") @RequestParam(required = false) Long groupId,
             @Parameter(description = "账号组ID(可选)") @RequestParam(required = false) Long groupId,
             @Parameter(description = "广告账户ID(可选)") @RequestParam(required = false) Long accountId,
             @Parameter(description = "广告账户ID(可选)") @RequestParam(required = false) Long accountId,
             @Parameter(description = "广告ID(可选)") @RequestParam(required = false) Long adgroupId,
             @Parameter(description = "广告ID(可选)") @RequestParam(required = false) Long adgroupId,
@@ -51,11 +52,11 @@ public class DailyCreativeReportController {
             @Parameter(description = "每页数量") @RequestParam(defaultValue = "20") long pageSize) {
             @Parameter(description = "每页数量") @RequestParam(defaultValue = "20") long pageSize) {
         try {
         try {
             Page<? extends BaseDailyCreativeReport> result =
             Page<? extends BaseDailyCreativeReport> result =
-                    dailyReportService.listReports(timeLine, groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder, page, pageSize);
+                    dailyReportService.listReports(timeLine, confId, groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder, page, pageSize);
             return Result.success(result.getRecords(), "查询成功")
             return Result.success(result.getRecords(), "查询成功")
                     .withPage(page, pageSize, result.getTotal());
                     .withPage(page, pageSize, result.getTotal());
         } catch (Exception e) {
         } catch (Exception e) {
-            log.error("查询日报表失败 timeLine={} groupId={} accountId={} dynamicCreativeId={}", timeLine, groupId, accountId, dynamicCreativeId, e);
+            log.error("查询日报表失败 timeLine={} confId={} groupId={} accountId={} dynamicCreativeId={}", timeLine, confId, groupId, accountId, dynamicCreativeId, e);
             return Result.fail("查询失败:" + e.getMessage());
             return Result.fail("查询失败:" + e.getMessage());
         }
         }
     }
     }

+ 11 - 5
src/main/java/com/moka/gdtauto/service/DailyAdgroupReportService.java

@@ -273,23 +273,26 @@ public class DailyAdgroupReportService {
      * @return 分页结果
      * @return 分页结果
      */
      */
     public Page<? extends BaseDailyAdgroupReport> listReports(
     public Page<? extends BaseDailyAdgroupReport> listReports(
-            String timeLine, Long groupId, Long accountId, Long adgroupId,
+            String timeLine, Long confId, Long groupId, Long accountId, Long adgroupId,
             String startDate, String endDate, String sortField, String sortOrder,
             String startDate, String endDate, String sortField, String sortOrder,
             long pageNum, long pageSize) {
             long pageNum, long pageSize) {
 
 
         if ("REPORTING_TIME".equals(timeLine)) {
         if ("REPORTING_TIME".equals(timeLine)) {
-            LambdaQueryWrapper<RepDailyAdgroupReport> wrapper = buildRepWrapper(groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder);
+            LambdaQueryWrapper<RepDailyAdgroupReport> wrapper = buildRepWrapper(confId, groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder);
             return repMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
             return repMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
         } else {
         } else {
-            LambdaQueryWrapper<ReqDailyAdgroupReport> wrapper = buildReqWrapper(groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder);
+            LambdaQueryWrapper<ReqDailyAdgroupReport> wrapper = buildReqWrapper(confId, groupId, accountId, adgroupId, startDate, endDate, sortField, sortOrder);
             return reqMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
             return reqMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
         }
         }
     }
     }
 
 
     private LambdaQueryWrapper<ReqDailyAdgroupReport> buildReqWrapper(
     private LambdaQueryWrapper<ReqDailyAdgroupReport> buildReqWrapper(
-            Long groupId, Long accountId, Long adgroupId, String startDate, String endDate,
+            Long confId, Long groupId, Long accountId, Long adgroupId, String startDate, String endDate,
             String sortField, String sortOrder) {
             String sortField, String sortOrder) {
         LambdaQueryWrapper<ReqDailyAdgroupReport> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<ReqDailyAdgroupReport> wrapper = new LambdaQueryWrapper<>();
+        if (confId != null) {
+            wrapper.eq(ReqDailyAdgroupReport::getConfId, confId);
+        }
         if (groupId != null) {
         if (groupId != null) {
             wrapper.eq(ReqDailyAdgroupReport::getGroupId, groupId);
             wrapper.eq(ReqDailyAdgroupReport::getGroupId, groupId);
         }
         }
@@ -311,9 +314,12 @@ public class DailyAdgroupReportService {
     }
     }
 
 
     private LambdaQueryWrapper<RepDailyAdgroupReport> buildRepWrapper(
     private LambdaQueryWrapper<RepDailyAdgroupReport> buildRepWrapper(
-            Long groupId, Long accountId, Long adgroupId, String startDate, String endDate,
+            Long confId, Long groupId, Long accountId, Long adgroupId, String startDate, String endDate,
             String sortField, String sortOrder) {
             String sortField, String sortOrder) {
         LambdaQueryWrapper<RepDailyAdgroupReport> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<RepDailyAdgroupReport> wrapper = new LambdaQueryWrapper<>();
+        if (confId != null) {
+            wrapper.eq(RepDailyAdgroupReport::getConfId, confId);
+        }
         if (groupId != null) {
         if (groupId != null) {
             wrapper.eq(RepDailyAdgroupReport::getGroupId, groupId);
             wrapper.eq(RepDailyAdgroupReport::getGroupId, groupId);
         }
         }

+ 11 - 5
src/main/java/com/moka/gdtauto/service/DailyCreativeReportService.java

@@ -282,23 +282,26 @@ public class DailyCreativeReportService {
      * @return 分页结果
      * @return 分页结果
      */
      */
     public Page<? extends BaseDailyCreativeReport> listReports(
     public Page<? extends BaseDailyCreativeReport> listReports(
-            String timeLine, Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId,
+            String timeLine, Long confId, Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId,
             String startDate, String endDate, String sortField, String sortOrder,
             String startDate, String endDate, String sortField, String sortOrder,
             long pageNum, long pageSize) {
             long pageNum, long pageSize) {
 
 
         if ("REPORTING_TIME".equals(timeLine)) {
         if ("REPORTING_TIME".equals(timeLine)) {
-            LambdaQueryWrapper<RepDailyCreativeReport> wrapper = buildRepWrapper(groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder);
+            LambdaQueryWrapper<RepDailyCreativeReport> wrapper = buildRepWrapper(confId, groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder);
             return repMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
             return repMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
         } else {
         } else {
-            LambdaQueryWrapper<ReqDailyCreativeReport> wrapper = buildReqWrapper(groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder);
+            LambdaQueryWrapper<ReqDailyCreativeReport> wrapper = buildReqWrapper(confId, groupId, accountId, adgroupId, dynamicCreativeId, startDate, endDate, sortField, sortOrder);
             return reqMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
             return reqMapper.selectPage(new Page<>(pageNum, pageSize), wrapper);
         }
         }
     }
     }
 
 
     private LambdaQueryWrapper<ReqDailyCreativeReport> buildReqWrapper(
     private LambdaQueryWrapper<ReqDailyCreativeReport> buildReqWrapper(
-            Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId, String startDate, String endDate,
+            Long confId, Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId, String startDate, String endDate,
             String sortField, String sortOrder) {
             String sortField, String sortOrder) {
         LambdaQueryWrapper<ReqDailyCreativeReport> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<ReqDailyCreativeReport> wrapper = new LambdaQueryWrapper<>();
+        if (confId != null) {
+            wrapper.eq(ReqDailyCreativeReport::getConfId, confId);
+        }
         if (groupId != null) {
         if (groupId != null) {
             wrapper.eq(ReqDailyCreativeReport::getGroupId, groupId);
             wrapper.eq(ReqDailyCreativeReport::getGroupId, groupId);
         }
         }
@@ -323,9 +326,12 @@ public class DailyCreativeReportService {
     }
     }
 
 
     private LambdaQueryWrapper<RepDailyCreativeReport> buildRepWrapper(
     private LambdaQueryWrapper<RepDailyCreativeReport> buildRepWrapper(
-            Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId, String startDate, String endDate,
+            Long confId, Long groupId, Long accountId, Long adgroupId, Long dynamicCreativeId, String startDate, String endDate,
             String sortField, String sortOrder) {
             String sortField, String sortOrder) {
         LambdaQueryWrapper<RepDailyCreativeReport> wrapper = new LambdaQueryWrapper<>();
         LambdaQueryWrapper<RepDailyCreativeReport> wrapper = new LambdaQueryWrapper<>();
+        if (confId != null) {
+            wrapper.eq(RepDailyCreativeReport::getConfId, confId);
+        }
         if (groupId != null) {
         if (groupId != null) {
             wrapper.eq(RepDailyCreativeReport::getGroupId, groupId);
             wrapper.eq(RepDailyCreativeReport::getGroupId, groupId);
         }
         }

+ 2 - 1
src/main/java/com/moka/gdtauto/task/DailyCreativeReportSyncTask.java

@@ -4,6 +4,7 @@ import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeFormatter;
 
 
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
 
 
 import com.moka.gdtauto.service.DailyCreativeReportService;
 import com.moka.gdtauto.service.DailyCreativeReportService;
 import com.tencent.ads.model.v3.TimeLine;
 import com.tencent.ads.model.v3.TimeLine;
@@ -20,7 +21,7 @@ import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
  * @since 2026-03-03
  * @since 2026-03-03
  */
  */
 @Slf4j
 @Slf4j
-//@Component
+@Component
 @RequiredArgsConstructor
 @RequiredArgsConstructor
 public class DailyCreativeReportSyncTask {
 public class DailyCreativeReportSyncTask {
 
 

+ 1 - 1
src/test/java/com/moka/gdtauto/service/AdPlanDailyReportSyncTest.java

@@ -59,7 +59,7 @@ public class AdPlanDailyReportSyncTest {
     @Test
     @Test
     public void testSyncTenDaysDailyCreativeReport() {
     public void testSyncTenDaysDailyCreativeReport() {
         DateTimeFormatter FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-            String start = LocalDate.now().plusDays(-10).format(FMT);
+            String start = LocalDate.now().plusDays(-5).format(FMT);
             String end = LocalDate.now().format(FMT);
             String end = LocalDate.now().format(FMT);
             dailyCreativeReportService.syncAllAccounts(null, start, end, TimeLine.REQUEST_TIME.getValue());
             dailyCreativeReportService.syncAllAccounts(null, start, end, TimeLine.REQUEST_TIME.getValue());
             dailyCreativeReportService.syncAllAccounts(null, start, end, TimeLine.REPORTING_TIME.getValue());
             dailyCreativeReportService.syncAllAccounts(null, start, end, TimeLine.REPORTING_TIME.getValue());

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio