pudongliang 4 месяцев назад
Родитель
Сommit
400767b7ff
30 измененных файлов с 40 добавлено и 15 удалено
  1. 1 1
      portal/dist/assets/accountGroup-CsV7PgBZ.js
  2. 1 1
      portal/dist/assets/adPlanConf-CfESW9H5.js
  3. 1 1
      portal/dist/assets/auth-PPO_Q_Ws.js
  4. 1 1
      portal/dist/assets/conversion-DYiN6umm.js
  5. 0 0
      portal/dist/assets/detail-DU4pmLZZ.js
  6. 1 1
      portal/dist/assets/drama-k1LdRq3L.js
  7. 0 0
      portal/dist/assets/index-B6EHqqI3.js
  8. 0 0
      portal/dist/assets/index-BI5JI5hD.js
  9. 0 0
      portal/dist/assets/index-BOrewgX1.js
  10. 0 0
      portal/dist/assets/index-BRvsD5GZ.js
  11. 0 0
      portal/dist/assets/index-BeI5MTU7.css
  12. 0 0
      portal/dist/assets/index-Bea2Y3SC.js
  13. 0 0
      portal/dist/assets/index-CNOipJCW.js
  14. 0 0
      portal/dist/assets/index-C_pPuEip.js
  15. 0 0
      portal/dist/assets/index-CdDwsIxv.css
  16. 0 0
      portal/dist/assets/index-CtXM5CUz.js
  17. 0 0
      portal/dist/assets/index-D4JNbEDo.js
  18. 0 0
      portal/dist/assets/index-DB79gUDC.js
  19. 0 0
      portal/dist/assets/index-DE36DMkY.js
  20. 0 0
      portal/dist/assets/index-DcVY3ZAn.js
  21. 0 0
      portal/dist/assets/index-Dl_E1GF0.js
  22. 1 1
      portal/dist/assets/index-HWWOxLkr.js
  23. 1 1
      portal/dist/assets/ossFile-B9lWIgeT.js
  24. 0 0
      portal/dist/assets/request-94g2Q2zR.js
  25. 1 1
      portal/dist/assets/user-DCZ_sCvl.js
  26. 2 2
      portal/dist/index.html
  27. 1 1
      portal/src/views/ad-plan-conf/index.vue
  28. 20 2
      portal/src/views/dashboard/index.vue
  29. 3 1
      src/main/java/com/moka/gdtauto/common/AdPlanStatus.java
  30. 6 1
      src/main/java/com/moka/gdtauto/service/impl/DashboardServiceImpl.java

+ 1 - 1
portal/dist/assets/accountGroup-C1ELrLk6.js → portal/dist/assets/accountGroup-CsV7PgBZ.js

@@ -1 +1 @@
-import{r as u}from"./request-DJNp3pom.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-94g2Q2zR.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/adPlanConf-Cof0Eamh.js → portal/dist/assets/adPlanConf-CfESW9H5.js

@@ -1 +1 @@
-import{r as a}from"./request-DJNp3pom.js";function r(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 l(n){return a({url:`/api/ad-plan-conf/reGeneratePlan/${n}`,method:"get"})}function u(n){return a({url:`/api/ad-plan-conf/syncSystemStatus/${n}`,method:"get"})}function d(n){return a({url:"/api/ad-plan-conf/create",method:"post",data:n})}function p(n){return a({url:"/api/ad-plan-conf/update",method:"post",data:n})}function i(n){return a({url:`/api/ad-plan-conf/${n}`,method:"delete"})}function s(n=1,e=10){return a({url:"/api/ad-plan-conf/list",method:"get",params:{pageNum:n,pageSize:e}})}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 m(n){return a({url:`/api/ad-plan-creative/plan/${n}`,method:"get"})}export{o as a,f as b,d as c,i as d,c as e,l as f,s as g,m as h,r,u as s,p as u};
+import{r as a}from"./request-94g2Q2zR.js";function r(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 l(n){return a({url:`/api/ad-plan-conf/reGeneratePlan/${n}`,method:"get"})}function u(n){return a({url:`/api/ad-plan-conf/syncSystemStatus/${n}`,method:"get"})}function d(n){return a({url:"/api/ad-plan-conf/create",method:"post",data:n})}function p(n){return a({url:"/api/ad-plan-conf/update",method:"post",data:n})}function i(n){return a({url:`/api/ad-plan-conf/${n}`,method:"delete"})}function s(n=1,e=10){return a({url:"/api/ad-plan-conf/list",method:"get",params:{pageNum:n,pageSize:e}})}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 m(n){return a({url:`/api/ad-plan-creative/plan/${n}`,method:"get"})}export{o as a,f as b,d as c,i as d,c as e,l as f,s as g,m as h,r,u as s,p as u};

+ 1 - 1
portal/dist/assets/auth-C3io43Nr.js → portal/dist/assets/auth-PPO_Q_Ws.js

@@ -1 +1 @@
-import{r as t}from"./request-DJNp3pom.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-94g2Q2zR.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-BuuOE8pv.js → portal/dist/assets/conversion-DYiN6umm.js

@@ -1 +1 @@
-import{r as t}from"./request-DJNp3pom.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-94g2Q2zR.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};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/detail-DU4pmLZZ.js


+ 1 - 1
portal/dist/assets/drama-nnJEqG-p.js → portal/dist/assets/drama-k1LdRq3L.js

@@ -1 +1 @@
-import{r as t}from"./request-DJNp3pom.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-94g2Q2zR.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};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-B6EHqqI3.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-BI5JI5hD.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-BOrewgX1.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-BRvsD5GZ.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-BeI5MTU7.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-Bea2Y3SC.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-CNOipJCW.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-C_pPuEip.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-CdDwsIxv.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-CtXM5CUz.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-D4JNbEDo.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-DB79gUDC.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-DE36DMkY.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-DcVY3ZAn.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/index-Dl_E1GF0.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
portal/dist/assets/index-HWWOxLkr.js


+ 1 - 1
portal/dist/assets/ossFile-CxwLdBcS.js → portal/dist/assets/ossFile-B9lWIgeT.js

@@ -1 +1 @@
-import{r as t}from"./request-DJNp3pom.js";function i(e){return t({timeout:3e5,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-94g2Q2zR.js";function i(e){return t({timeout:3e5,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};

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
portal/dist/assets/request-94g2Q2zR.js


+ 1 - 1
portal/dist/assets/user-e3152-od.js → portal/dist/assets/user-DCZ_sCvl.js

@@ -1 +1 @@
-import{r as e}from"./request-DJNp3pom.js";function s(){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})}export{u as a,s as b,a as c,n as g,o as l};
+import{r as e}from"./request-94g2Q2zR.js";function s(){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})}export{u as a,s as b,a as c,n as g,o as l};

+ 2 - 2
portal/dist/index.html

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

+ 1 - 1
portal/src/views/ad-plan-conf/index.vue

@@ -258,7 +258,7 @@
             />
           </el-select>
         </el-form-item>
-
+        <p style="color: red;font-size: 12px; padding-left: 120px;" v-if="formData.adType === 2">*请确保【短剧资产列表】已同步短剧资产</p>
         <el-form-item label="每户几部剧" prop="dramaAmount" v-if="formData.adType === 2">
           <el-input-number
             v-model="formData.dramaAmount"

+ 20 - 2
portal/src/views/dashboard/index.vue

@@ -15,14 +15,14 @@
     <div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
       <h2 class="text-xl font-semibold text-gray-800 mb-6">快速开始</h2>
       <div class="grid grid-cols-2 md:grid-cols-4 gap-4">
-        <router-link to="/auth" class="flex flex-col items-center p-4 rounded-lg border border-gray-200 hover:border-blue-300 hover:bg-blue-50 transition-colors group">
+        <!-- <router-link to="/auth" class="flex flex-col items-center p-4 rounded-lg border border-gray-200 hover:border-blue-300 hover:bg-blue-50 transition-colors group">
           <div class="p-3 rounded-lg bg-blue-100 text-blue-600 mb-3 group-hover:bg-blue-200 transition-colors">
             <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
               <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z" />
             </svg>
           </div>
           <span class="text-gray-700 font-medium">OAuth</span>
-        </router-link>
+        </router-link> -->
         
         <router-link to="/user" class="flex flex-col items-center p-4 rounded-lg border border-gray-200 hover:border-green-300 hover:bg-green-50 transition-colors group">
           <div class="p-3 rounded-lg bg-green-100 text-green-600 mb-3 group-hover:bg-green-200 transition-colors">
@@ -50,6 +50,15 @@
           </div>
           <span class="text-gray-700 font-medium">广告计划</span>
         </router-link>
+
+         <router-link to="/drama" class="flex flex-col items-center p-4 rounded-lg border border-gray-200 hover:border-blue-300 hover:bg-blue-50 transition-colors group">
+          <div class="p-3 rounded-lg bg-blue-100 text-blue-600 mb-3 group-hover:bg-blue-200 transition-colors">
+            <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
+              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 4v16M17 4v16M3 8h4m10 0h4M3 12h18M3 16h4m10 0h4M4 20h16a1 1 0 001-1V5a1 1 0 00-1-1H4a1 1 0 00-1 1v14a1 1 0 001 1z" />
+            </svg>
+          </div>
+          <span class="text-gray-700 font-medium">短剧资产</span>
+        </router-link>
       </div>
     </div>
     
@@ -72,6 +81,7 @@
           class="flex items-start p-4 border rounded-lg transition-colors cursor-pointer"
           :class="{
             'border-green-200 bg-green-50 hover:bg-green-100': activity.status === 4,
+            'border-orange-200 bg-orange-50 hover:bg-orange-100': activity.status === 5,
             'border-red-200 bg-red-50 hover:bg-red-100': activity.status === 3,
             'border-blue-200 bg-blue-50 hover:bg-blue-100': activity.status === 2,
             'border-gray-200 bg-gray-50 hover:bg-gray-100': activity.status === 1 || !activity.status
@@ -80,6 +90,7 @@
         >
           <!-- 状态图标 -->
           <div class="p-2 rounded-lg mr-4 flex-shrink-0" :class="{
+            'bg-orange-200 text-orange-600': activity.status === 5,
             'bg-green-200 text-green-600': activity.status === 4,
             'bg-red-200 text-red-600': activity.status === 3,
             'bg-blue-200 text-blue-600': activity.status === 2,
@@ -93,6 +104,10 @@
             <svg v-else-if="activity.status === 3" xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
               <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
             </svg>
+            <!-- 部分失败图标 -->
+            <svg v-else-if="activity.status === 5" xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
+              <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
+            </svg>
             <!-- 执行中图标 -->
             <svg v-else-if="activity.status === 2" xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor">
               <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
@@ -110,12 +125,14 @@
                 <p class="font-medium" :class="{
                   'text-green-900': activity.status === 4,
                   'text-red-900': activity.status === 3,
+                  'text-orange-900': activity.status === 5,
                   'text-blue-900': activity.status === 2,
                   'text-gray-900': activity.status === 1 || !activity.status
                 }">{{ activity.description }}</p>
                 <div class="flex items-center gap-3 mt-2 text-sm" :class="{
                   'text-green-600': activity.status === 4,
                   'text-red-600': activity.status === 3,
+                  'text-orange-600': activity.status === 5,
                   'text-blue-600': activity.status === 2,
                   'text-gray-600': activity.status === 1 || !activity.status
                 }">
@@ -138,6 +155,7 @@
               <span class="ml-4 px-3 py-1 text-xs font-medium rounded-full flex-shrink-0" :class="{
                 'bg-green-100 text-green-700': activity.status === 4,
                 'bg-red-100 text-red-700': activity.status === 3,
+                'bg-orange-100 text-orange-700': activity.status === 5,
                 'bg-blue-100 text-blue-700': activity.status === 2,
                 'bg-gray-100 text-gray-700': activity.status === 1 || !activity.status
               }">

+ 3 - 1
src/main/java/com/moka/gdtauto/common/AdPlanStatus.java

@@ -53,8 +53,10 @@ public class AdPlanStatus {
                 return "执行中";
             case 3:
                 return "失败";
+            case 5:
+                return "部分失败";
             case 4:
-                return "已结束(成功)";
+                return "已提交(成功)";
             default:
                 return "未知(" + status + ")";
         }

+ 6 - 1
src/main/java/com/moka/gdtauto/service/impl/DashboardServiceImpl.java

@@ -263,7 +263,7 @@ public class DashboardServiceImpl implements DashboardService {
             LambdaQueryWrapper<AdPlanConf> queryWrapper = new LambdaQueryWrapper<>();
             queryWrapper.eq(AdPlanConf::getDeleted, 0)
                 .eq(AdPlanConf::getJobNumber, jobNumber)
-                    .orderByDesc(AdPlanConf::getUpdateTime)
+                    .orderByDesc(AdPlanConf::getUpdateTime, AdPlanConf::getCreateTime)
                     .last("LIMIT " + Math.min(limit, 100)); // 最多查询100条
             
             List<AdPlanConf> adPlanConfs = adPlanConfMapper.selectList(queryWrapper);
@@ -292,7 +292,12 @@ public class DashboardServiceImpl implements DashboardService {
                 } else if (AdPlanStatus.IN_PROGRESS.equals(status)) {
                     activityType = "ad_plan_in_progress";
                     description = String.format("广告计划配置《%s》执行中", conf.getName());
+                } else if (AdPlanStatus.PART_FAILED.equals(status)) {
+                    activityType = "ad_plan_part_failed";
+                    String failReason = conf.getFailReason() != null ? conf.getFailReason() : "未知原因";
+                    description = String.format("广告计划配置《%s》部分失败: %s", conf.getName(), failReason);
                 } else {
+                    activityType = "ad_plan_pending";
                     description = String.format("广告计划配置《%s》状态: %s", conf.getName(), statusDesc);
                 }
                 

Некоторые файлы не были показаны из-за большого количества измененных файлов