Procházet zdrojové kódy

Merge branch 'master' of git.dev.advichcloud.com:wangfan/okki-oms

Neo před 10 měsíci
rodič
revize
018a002df2
100 změnil soubory, kde provedl 3463 přidání a 125 odebrání
  1. 1 1
      .idea/inspectionProfiles/Project_Default.xml
  2. 76 11
      .idea/workspace.xml
  3. 1 0
      jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
  4. 0 5
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/common/service/IUploadService.java
  5. 0 53
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/common/service/impl/UploadServiceImpl.java
  6. 0 5
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/site/mapper/xml/OkkiSiteStatusChangeLogMapper.xml
  7. 13 6
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/controller/OkkiAccountApiController.java
  8. 3 3
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/controller/OkkiAccountController.java
  9. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/entity/OkkiAccount.java
  10. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/mapper/OkkiAccountMapper.java
  11. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/mapper/xml/OkkiAccountMapper.xml
  12. 27 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/param/OkkiAccountParam.java
  13. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/IOkkiAccountService.java
  14. 4 4
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/impl/OkkiAccountServiceImpl.java
  15. 3 3
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/controller/OkkiBlogController.java
  16. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/entity/OkkiBlog.java
  17. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/mapper/OkkiBlogMapper.java
  18. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/mapper/xml/OkkiBlogMapper.xml
  19. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/service/IOkkiBlogService.java
  20. 5 7
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/service/impl/OkkiBlogServiceImpl.java
  21. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/controller/UploadController.java
  22. 8 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/service/IUploadService.java
  23. 94 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/service/impl/UploadServiceImpl.java
  24. 3 3
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/controller/OkkiExternalLinkController.java
  25. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/entity/OkkiExternalLink.java
  26. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/mapper/OkkiExternalLinkMapper.java
  27. 1 1
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/mapper/xml/OkkiExternalLinkMapper.xml
  28. 2 2
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/service/IOkkiExternalLinkService.java
  29. 5 5
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/service/impl/OkkiExternalLinkServiceImpl.java
  30. 37 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountApiController.java
  31. 162 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountController.java
  32. 77 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/entity/OkkiGoogleAdsAccount.java
  33. 14 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/OkkiGoogleAdsAccountMapper.java
  34. 5 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/xml/OkkiGoogleAdsAccountMapper.xml
  35. 21 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/param/OkkiGoogleAdsAccountParam.java
  36. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/IOkkiGoogleAdsAccountService.java
  37. 54 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/impl/OkkiGoogleAdsAccountServiceImpl.java
  38. 276 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/controller/OkkiLinkedinMarketingDataController.java
  39. 59 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/entity/OkkiLinkedinMarketingData.java
  40. 64 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/entity/OkkiLinkedinMarketingDataDetail.java
  41. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/OkkiLinkedinMarketingDataDetailMapper.java
  42. 14 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/OkkiLinkedinMarketingDataMapper.java
  43. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/xml/OkkiLinkedinMarketingDataDetailMapper.xml
  44. 5 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/xml/OkkiLinkedinMarketingDataMapper.xml
  45. 13 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/param/LinkedinMarketingDataParam.java
  46. 15 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/param/LinkedinReportListParam.java
  47. 22 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/IOkkiLinkedinMarketingDataDetailService.java
  48. 49 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/IOkkiLinkedinMarketingDataService.java
  49. 28 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/impl/OkkiLinkedinMarketingDataDetailServiceImpl.java
  50. 141 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/impl/OkkiLinkedinMarketingDataServiceImpl.java
  51. 59 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/vo/OkkiLinkedinMarketingDataPage.java
  52. 428 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/controller/OkkiShowlistController.java
  53. 72 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiAdvantage.java
  54. 60 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiFaq.java
  55. 72 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiHighlight.java
  56. 60 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiKeywords.java
  57. 72 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiKeywordsSeries.java
  58. 76 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiOverview.java
  59. 72 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiProductList.java
  60. 72 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiRecommendedProducts.java
  61. 64 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiReview.java
  62. 166 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlist.java
  63. 68 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlistBlog.java
  64. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiAdvantageMapper.java
  65. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiFaqMapper.java
  66. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiHighlightMapper.java
  67. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiKeywordsMapper.java
  68. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiKeywordsSeriesMapper.java
  69. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiOverviewMapper.java
  70. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiProductListMapper.java
  71. 31 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiRecommendedProductsMapper.java
  72. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiReviewMapper.java
  73. 32 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiShowlistBlogMapper.java
  74. 14 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiShowlistMapper.java
  75. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiAdvantageMapper.xml
  76. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiFaqMapper.xml
  77. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiHighlightMapper.xml
  78. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiKeywordsMapper.xml
  79. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiKeywordsSeriesMapper.xml
  80. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiOverviewMapper.xml
  81. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiProductListMapper.xml
  82. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiRecommendedProductsMapper.xml
  83. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiReviewMapper.xml
  84. 16 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiShowlistBlogMapper.xml
  85. 5 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiShowlistMapper.xml
  86. 17 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/AdvantageParam.java
  87. 15 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlockParam.java
  88. 13 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlogParam.java
  89. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ButtonParam.java
  90. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqListParam.java
  91. 15 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqParam.java
  92. 17 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/HighlightParam.java
  93. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordListParam.java
  94. 15 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordSeriesParam.java
  95. 13 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordsParam.java
  96. 11 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/LayoutParam.java
  97. 17 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/OverviewParam.java
  98. 17 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ProductParam.java
  99. 46 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/PushShowlistParam.java
  100. 13 0
      jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ReviewListParam.java

+ 1 - 1
.idea/inspectionProfiles/Project_Default.xml

@@ -1,7 +1,7 @@
 <component name="InspectionProjectProfileManager">
   <profile version="1.0">
     <option name="myName" value="Project Default" />
-    <inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="ES6UnusedImports" enabled="false" level="WARNING" enabled_by_default="false" />
     <inspection_tool class="JsonStandardCompliance" enabled="false" level="ERROR" enabled_by_default="false" />
     <inspection_tool class="Stylelint" enabled="true" level="ERROR" enabled_by_default="true" />
   </profile>

+ 76 - 11
.idea/workspace.xml

@@ -4,7 +4,21 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="ed63665b-8c5d-41ac-a75b-7a0cfc2d6ec5" name="Default Changelist" comment="新增状态变更记录">
+    <list default="true" id="ed63665b-8c5d-41ac-a75b-7a0cfc2d6ec5" name="Default Changelist" comment="网站质量检查结果功能完善联调测试通过">
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountApiController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/entity/OkkiGoogleAdsAccount.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/OkkiGoogleAdsAccountMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/xml/OkkiGoogleAdsAccountMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/param/OkkiGoogleAdsAccountParam.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/IOkkiGoogleAdsAccountService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/impl/OkkiGoogleAdsAccountServiceImpl.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/OkkiGoogleAdsAccount.api.ts" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/OkkiGoogleAdsAccount.data.ts" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/OkkiGoogleAdsAccountList.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/V20240517_1__menu_insert_OkkiGoogleAdsAccount.sql" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/components/OkkiGoogleAdsAccountForm.vue" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/jeecgboot-vue3/src/views/okki/google/components/OkkiGoogleAdsAccountModal.vue" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
@@ -21,6 +35,7 @@
   <component name="FileTemplateManagerImpl">
     <option name="RECENT_TEMPLATES">
       <list>
+        <option value="Vue Composition API Component" />
         <option value="Class" />
       </list>
     </option>
@@ -44,6 +59,9 @@
   &quot;associatedIndex&quot;: 3
 }</component>
   <component name="ProjectId" id="2fdDRc9jjrc8nqAXwCaxoJQEE5f" />
+  <component name="ProjectLevelVcsManager">
+    <ConfirmationsSetting value="2" id="Add" />
+  </component>
   <component name="ProjectViewState">
     <option name="hideEmptyMiddlePackages" value="true" />
     <option name="showLibraryContents" value="true" />
@@ -51,6 +69,8 @@
   <component name="PropertiesComponent"><![CDATA[{
   "keyToString": {
     "Application.AESUtils.executor": "Run",
+    "Maven.jeecg-boot-base-core [clean].executor": "Run",
+    "Maven.jeecg-boot-base-core [install].executor": "Run",
     "Maven.jeecg-boot-parent [install].executor": "Run",
     "Maven.jeecg-module-system [clean].executor": "Run",
     "Maven.jeecg-module-system [install].executor": "Run",
@@ -61,10 +81,10 @@
     "RequestMappingsPanelWidth0": "75",
     "RequestMappingsPanelWidth1": "75",
     "RunOnceActivity.ShowReadmeOnStart": "true",
-    "Spring Boot.JeecgSystemApplication.executor": "Run",
+    "Spring Boot.JeecgSystemApplication.executor": "Debug",
     "git-widget-placeholder": "master",
     "kotlin-language-version-configured": "true",
-    "last_opened_file_path": "D:/ProjectsCode/okki-oms/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/site/mapper/xml",
+    "last_opened_file_path": "D:/ProjectsCode/okki-oms/jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/entity",
     "node.js.detected.package.eslint": "true",
     "node.js.detected.package.stylelint": "true",
     "node.js.detected.package.tslint": "true",
@@ -75,9 +95,14 @@
     "project.structure.last.edited": "Modules",
     "project.structure.proportion": "0.15",
     "project.structure.side.proportion": "0.2",
-    "settings.editor.selected.configurable": "editor.preferences.import",
+    "settings.editor.selected.configurable": "preferences.pluginManager",
     "ts.external.directory.path": "D:\\ProjectsCode\\okki-oms\\jeecgboot-vue3\\node_modules\\typescript\\lib",
     "vue.rearranger.settings.migration": "true"
+  },
+  "keyToStringList": {
+    "vue.recent.templates": [
+      "Vue Composition API Component"
+    ]
   }
 }]]></component>
   <component name="ReactorSettings">
@@ -85,13 +110,14 @@
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\api\okki\site\mapper\xml" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\site" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\site\components" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\public\resource\img" />
-      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\assets\images" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\google\entity" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\google" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\google" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecg-boot\jeecg-module-system\jeecg-system-biz\src\main\java\org\jeecg\modules\okki\linkedin" />
+      <recent name="D:\ProjectsCode\okki-oms\jeecgboot-vue3\src\views\okki\linkedin" />
     </key>
     <key name="CopyClassDialog.RECENTS_KEY">
+      <recent name="org.jeecg.modules.okki.websitequality.param" />
       <recent name="org.jeecg.modules.api.okki.site.service" />
       <recent name="org.jeecg.modules.api.okki.site.mapper" />
       <recent name="org.jeecg.modules.api.okki.site.entity" />
@@ -149,6 +175,10 @@
       <workItem from="1714369560719" duration="12569000" />
       <workItem from="1714438904130" duration="33587000" />
       <workItem from="1714957905106" duration="25834000" />
+      <workItem from="1715333910993" duration="2376000" />
+      <workItem from="1715391022847" duration="21115000" />
+      <workItem from="1715648405916" duration="53955000" />
+      <workItem from="1715907931997" duration="3509000" />
     </task>
     <task id="LOCAL-00001" summary="增加添加站点对外接口">
       <option name="closed" value="true" />
@@ -278,7 +308,39 @@
       <option name="project" value="LOCAL" />
       <updated>1714988973801</updated>
     </task>
-    <option name="localTasksCounter" value="17" />
+    <task id="LOCAL-00017" summary="新增showlist功能">
+      <option name="closed" value="true" />
+      <created>1715678301632</created>
+      <option name="number" value="00017" />
+      <option name="presentableId" value="LOCAL-00017" />
+      <option name="project" value="LOCAL" />
+      <updated>1715678301632</updated>
+    </task>
+    <task id="LOCAL-00018" summary="showlist功能完善联调测试通过">
+      <option name="closed" value="true" />
+      <created>1715766634432</created>
+      <option name="number" value="00018" />
+      <option name="presentableId" value="LOCAL-00018" />
+      <option name="project" value="LOCAL" />
+      <updated>1715766634432</updated>
+    </task>
+    <task id="LOCAL-00019" summary="网站质量检查结果功能完善联调测试通过">
+      <option name="closed" value="true" />
+      <created>1715828313692</created>
+      <option name="number" value="00019" />
+      <option name="presentableId" value="LOCAL-00019" />
+      <option name="project" value="LOCAL" />
+      <updated>1715828313692</updated>
+    </task>
+    <task id="LOCAL-00020" summary="网站质量检查结果功能完善联调测试通过">
+      <option name="closed" value="true" />
+      <created>1715843752405</created>
+      <option name="number" value="00020" />
+      <option name="presentableId" value="LOCAL-00020" />
+      <option name="project" value="LOCAL" />
+      <updated>1715843752405</updated>
+    </task>
+    <option name="localTasksCounter" value="21" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -298,7 +360,10 @@
   <component name="VcsManagerConfiguration">
     <MESSAGE value="增加添加站点对外接口" />
     <MESSAGE value="新增状态变更记录" />
-    <option name="LAST_COMMIT_MESSAGE" value="新增状态变更记录" />
+    <MESSAGE value="新增showlist功能" />
+    <MESSAGE value="showlist功能完善联调测试通过" />
+    <MESSAGE value="网站质量检查结果功能完善联调测试通过" />
+    <option name="LAST_COMMIT_MESSAGE" value="网站质量检查结果功能完善联调测试通过" />
   </component>
   <component name="XSLT-Support.FileAssociations.UIState">
     <expand />

+ 1 - 0
jeecg-boot/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java

@@ -218,6 +218,7 @@ public interface CommonConstant {
     String UPLOAD_TYPE_LOCAL = "local";
     String UPLOAD_TYPE_MINIO = "minio";
     String UPLOAD_TYPE_OSS = "alioss";
+    String UPLOAD_TYPE_THIRD = "third";
 
     /**
      * 文档上传自定义桶名称

+ 0 - 5
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/common/service/IUploadService.java

@@ -1,5 +0,0 @@
-package org.jeecg.modules.api.okki.common.service;
-
-public interface IUploadService {
-
-}

+ 0 - 53
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/common/service/impl/UploadServiceImpl.java

@@ -1,53 +0,0 @@
-package org.jeecg.modules.api.okki.common.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import lombok.extern.slf4j.Slf4j;
-import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.api.okki.common.service.IUploadService;
-import org.jeecg.modules.api.okki.utils.HttpClientUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
-
-@Slf4j
-@Service
-public class UploadServiceImpl implements IUploadService {
-
-    @Value("${OKKI.BASE_URL}")
-    private String URL;
-
-    @Value("${OKKI.CLIENT_SECRET}")
-    private String CLIENT_SECRET;
-
-    public Result upload(Integer siteId, MultipartFile file) {
-        // 请求okki平台接口
-        Map<String, String> query = new TreeMap<>();
-        query.put("sign_method", "hmac-md5");
-        query.put("timestamp", String.valueOf(System.currentTimeMillis()));
-        query.put("site_id", String.valueOf(siteId));
-        query.put("method", "upload_file");
-        Map<String, Object> postData = new HashMap<>();
-        try {
-            String queryStr = HttpClientUtils.buildQueryString(query);
-            String body = HttpClientUtils.toJsonString(postData);
-            String signStr = queryStr + body;
-            query.put("signature", HttpClientUtils.generateHmacMD5(signStr, CLIENT_SECRET));
-            String okkiUrl = URL + "?" + HttpClientUtils.buildQueryString(query);
-            log.info("url:" + okkiUrl + ",body:" + body);
-            String res = HttpClientUtils.doPost(okkiUrl, body);
-            log.info(res);
-            JSONObject jsonObject= JSONObject.parseObject(res);
-            if (jsonObject.get("code").equals(0)) {
-                return Result.ok(jsonObject.get("msg"));
-            }else {
-                throw new RuntimeException(jsonObject.get("msg").toString());
-            }
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
-    }
-}

+ 0 - 5
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/site/mapper/xml/OkkiSiteStatusChangeLogMapper.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.api.okki.site.mapper.OkkiSiteStatusChangeLogMapper">
-
-</mapper>

+ 13 - 6
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/controller/OkkiAccountApiController.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/controller/OkkiAccountApiController.java

@@ -1,10 +1,11 @@
-package org.jeecg.modules.api.okki.account.controller;
+package org.jeecg.modules.okki.account.controller;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.http.HttpHeaders;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.api.okki.account.entity.OkkiAccount;
-import org.jeecg.modules.api.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.param.OkkiAccountParam;
+import org.jeecg.modules.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.entity.OkkiAccount;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -17,13 +18,19 @@ public class OkkiAccountApiController {
     @Resource
     private IOkkiAccountService okkiAccountService;
 
-    @PostMapping(value = "/account/store")
-    public Result<String> add(@RequestBody OkkiAccount okkiAccount, @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
-        log.info("请求参数 param" + okkiAccount.toString() + "authorization" + authorization);
+    @PostMapping(value = "/xiaoerAccount/store")
+    public Result<String> add(@RequestBody OkkiAccountParam okkiAccountParam, @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
+        log.info("请求参数 param" + okkiAccountParam.toString() + "authorization" + authorization);
         String Authorization = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImRlYW4iLCJleHAiOjE3MTQ0NjU5Njl9.QdCBYR8mioXcKGi1n5RdMQ5RbJHCSGbE8dkdwYuOXh4";
         if (!authorization.equals(Authorization)) {
             return Result.error("sign 验证不通过");
         }
+        OkkiAccount okkiAccount = new OkkiAccount();
+        okkiAccount.setAccount(okkiAccountParam.getAccount());
+        okkiAccount.setPassword(okkiAccountParam.getPassword());
+        okkiAccount.setSiteId(okkiAccountParam.getSite_id());
+        okkiAccount.setCompanyName(okkiAccountParam.getCompany_name());
+        okkiAccount.setTcName(okkiAccountParam.getTc_name());
         boolean result = okkiAccountService.insertAccount(okkiAccount);
         log.info("请求成功,返回结果" + result);
         if (result) {

+ 3 - 3
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/controller/OkkiAccountController.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/controller/OkkiAccountController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.account.controller;
+package org.jeecg.modules.okki.account.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,8 +11,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.api.okki.account.entity.OkkiAccount;
-import org.jeecg.modules.api.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.entity.OkkiAccount;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/entity/OkkiAccount.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/entity/OkkiAccount.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.account.entity;
+package org.jeecg.modules.okki.account.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/mapper/OkkiAccountMapper.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/mapper/OkkiAccountMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.api.okki.account.mapper;
+package org.jeecg.modules.okki.account.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.api.okki.account.entity.OkkiAccount;
+import org.jeecg.modules.okki.account.entity.OkkiAccount;
 
 /**
  * @Description: 小二账号

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/mapper/xml/OkkiAccountMapper.xml → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/mapper/xml/OkkiAccountMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.demo.account.mapper.OkkiAccountMapper">
+<mapper namespace="org.jeecg.modules.okki.account.mapper.OkkiAccountMapper">
 
 </mapper>

+ 27 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/param/OkkiAccountParam.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.okki.account.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 小二账号
+ * @Author: jeecg-boot
+ * @Date:   2024-05-10
+ * @Version: V1.0
+ */
+@Data
+public class OkkiAccountParam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**站点ID*/
+    private Integer site_id;
+	/**账号*/
+    private String account;
+	/**密码*/
+    private String password;
+	/**公司名称*/
+    private String company_name;
+	/**套餐名称*/
+    private String tc_name;
+}

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/service/IOkkiAccountService.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/IOkkiAccountService.java

@@ -1,6 +1,6 @@
-package org.jeecg.modules.api.okki.account.service;
+package org.jeecg.modules.okki.account.service;
 
-import org.jeecg.modules.api.okki.account.entity.OkkiAccount;
+import org.jeecg.modules.okki.account.entity.OkkiAccount;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 4 - 4
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/account/service/impl/OkkiAccountServiceImpl.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/account/service/impl/OkkiAccountServiceImpl.java

@@ -1,9 +1,9 @@
-package org.jeecg.modules.api.okki.account.service.impl;
+package org.jeecg.modules.okki.account.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.jeecg.modules.api.okki.account.entity.OkkiAccount;
-import org.jeecg.modules.api.okki.account.mapper.OkkiAccountMapper;
-import org.jeecg.modules.api.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.service.IOkkiAccountService;
+import org.jeecg.modules.okki.account.entity.OkkiAccount;
+import org.jeecg.modules.okki.account.mapper.OkkiAccountMapper;
 import org.springframework.stereotype.Service;
 
 

+ 3 - 3
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/controller/OkkiBlogController.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/controller/OkkiBlogController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.blog.controller;
+package org.jeecg.modules.okki.blog.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,8 +11,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.api.okki.blog.entity.OkkiBlog;
-import org.jeecg.modules.api.okki.blog.service.IOkkiBlogService;
+import org.jeecg.modules.okki.blog.service.IOkkiBlogService;
+import org.jeecg.modules.okki.blog.entity.OkkiBlog;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/entity/OkkiBlog.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/entity/OkkiBlog.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.blog.entity;
+package org.jeecg.modules.okki.blog.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/mapper/OkkiBlogMapper.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/mapper/OkkiBlogMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.api.okki.blog.mapper;
+package org.jeecg.modules.okki.blog.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.api.okki.blog.entity.OkkiBlog;
+import org.jeecg.modules.okki.blog.entity.OkkiBlog;
 
 /**
  * @Description: 博客

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/mapper/xml/OkkiBlogMapper.xml → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/mapper/xml/OkkiBlogMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.demo.blog.mapper.OkkiBlogMapper">
+<mapper namespace="org.jeecg.modules.okki.blog.mapper.OkkiBlogMapper">
 
 </mapper>

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/service/IOkkiBlogService.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/service/IOkkiBlogService.java

@@ -1,6 +1,6 @@
-package org.jeecg.modules.api.okki.blog.service;
+package org.jeecg.modules.okki.blog.service;
 
-import org.jeecg.modules.api.okki.blog.entity.OkkiBlog;
+import org.jeecg.modules.okki.blog.entity.OkkiBlog;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 5 - 7
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/blog/service/impl/OkkiBlogServiceImpl.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/blog/service/impl/OkkiBlogServiceImpl.java

@@ -1,12 +1,12 @@
-package org.jeecg.modules.api.okki.blog.service.impl;
+package org.jeecg.modules.okki.blog.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.jeecg.modules.api.okki.blog.entity.OkkiBlog;
-import org.jeecg.modules.api.okki.blog.mapper.OkkiBlogMapper;
-import org.jeecg.modules.api.okki.blog.service.IOkkiBlogService;
-import org.jeecg.modules.api.okki.utils.HttpClientUtils;
+import org.jeecg.modules.okki.blog.entity.OkkiBlog;
+import org.jeecg.modules.okki.blog.mapper.OkkiBlogMapper;
+import org.jeecg.modules.okki.blog.service.IOkkiBlogService;
+import org.jeecg.modules.okki.utils.HttpClientUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -50,8 +50,6 @@ public class OkkiBlogServiceImpl extends ServiceImpl<OkkiBlogMapper, OkkiBlog> i
             String queryStr = HttpClientUtils.buildQueryString(query);
             postData.put("title", okkiBlog1.getTitle());
             postData.put("pic", okkiBlog1.getPic());
-            // 图片处理
-
             postData.put("url", okkiBlog1.getUrl());
             postData.put("content", okkiBlog1.getContent());
             // 时间转换

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/common/controller/UploadController.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/controller/UploadController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.common.controller;
+package org.jeecg.modules.okki.common.controller;
 
 import org.jeecg.common.system.base.controller.JeecgController;
 

+ 8 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/service/IUploadService.java

@@ -0,0 +1,8 @@
+package org.jeecg.modules.okki.common.service;
+
+import org.springframework.web.multipart.MultipartFile;
+
+public interface IUploadService {
+
+    String upload(MultipartFile file) throws Exception;
+}

+ 94 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/common/service/impl/UploadServiceImpl.java

@@ -0,0 +1,94 @@
+package org.jeecg.modules.okki.common.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.okki.utils.HttpClientUtils;
+import org.jeecg.modules.okki.common.service.IUploadService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class UploadServiceImpl implements IUploadService {
+
+    @Value("${OKKI.CLIENT_SECRET}")
+    private String CLIENT_SECRET;
+
+    @Value("${OKKI.BASE_URL}")
+    private String BASE_URL;
+
+    @Override
+    public String upload(MultipartFile mf) throws Exception {
+        Map<String, String> query = new HashMap<>();
+        query.put("sign_method", "hmac-md5"); // 签名方式
+        query.put("timestamp", String.valueOf(System.currentTimeMillis())); // 时间戳
+        query.put("site_id", "1000147"); // 小满站点id
+        query.put("method", "upload_file"); // 上传文件
+        String queryStr = HttpClientUtils.buildQueryString(query);
+        query.put("signature", HttpClientUtils.generateHmacMD5(queryStr, CLIENT_SECRET)); // 签名
+        String okkiUrl = BASE_URL + "?" + HttpClientUtils.buildQueryString(query);
+//        // 第一步
+//        String encoder = URLEncoder(url, "UTF-8");
+////第二步
+//        String decoder = URLDecoder(encoder, "UTF-8");
+//
+//        URL url = new URL (decoder);
+
+//        String tmpName = mf.getName(); // 从$_FILE['file']['tmp_name']读取文件路径
+//        File file = new File(tmpName);
+        String fileName = mf.getOriginalFilename(); // 从$_FILE['file']['name']获取
+        String fileType = mf.getContentType(); // 从$_FILE['file']['type']获取
+        byte[] fileContent = mf.getBytes();
+        String delimiter = "-------------" + System.currentTimeMillis();
+        String boundary = delimiter;
+        String crlf = "\r\n";
+        String twoHyphens = "--";
+        System.out.println(okkiUrl);
+        HttpURLConnection connection = (HttpURLConnection) new URL(okkiUrl).openConnection();
+        connection.setDoOutput(true);
+        connection.setRequestMethod("POST");
+        connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
+
+        OutputStream outputStream = connection.getOutputStream();
+        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
+        dataOutputStream.writeBytes(twoHyphens + boundary + crlf);
+        dataOutputStream
+                .writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\"" + fileName + "\"" + crlf);
+        dataOutputStream.writeBytes("Content-Type: " + fileType + crlf);
+        dataOutputStream.writeBytes(crlf);
+        dataOutputStream.write(fileContent);
+        dataOutputStream.writeBytes(crlf);
+        dataOutputStream.writeBytes(twoHyphens + boundary + twoHyphens);
+        dataOutputStream.flush();
+        dataOutputStream.close();
+        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+        StringBuilder response = new StringBuilder();
+        String line;
+        while ((line = bufferedReader.readLine()) != null) {
+            response.append(line);
+        }
+        bufferedReader.close();
+        JSONObject jsonObject = JSONObject.parseObject(response.toString());
+        if ("0".equals(jsonObject.get("code").toString())) {
+            return JSONObject.parseObject(jsonObject.get("data").toString()).get("url").toString();
+        }else {
+            throw new RuntimeException(jsonObject.get("msg").toString());
+        }
+
+//        System.out.println(response.toString());
+//        return response.toString();
+//        String res = HttpClientUtils.doPost(okkiUrl, body);
+    }
+
+
+}

+ 3 - 3
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/controller/OkkiExternalLinkController.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/controller/OkkiExternalLinkController.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.externallink.controller;
+package org.jeecg.modules.okki.externallink.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,8 +11,8 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.modules.api.okki.externallink.entity.OkkiExternalLink;
-import org.jeecg.modules.api.okki.externallink.service.IOkkiExternalLinkService;
+import org.jeecg.modules.okki.externallink.service.IOkkiExternalLinkService;
+import org.jeecg.modules.okki.externallink.entity.OkkiExternalLink;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/entity/OkkiExternalLink.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/entity/OkkiExternalLink.java

@@ -1,4 +1,4 @@
-package org.jeecg.modules.api.okki.externallink.entity;
+package org.jeecg.modules.okki.externallink.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/mapper/OkkiExternalLinkMapper.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/mapper/OkkiExternalLinkMapper.java

@@ -1,7 +1,7 @@
-package org.jeecg.modules.api.okki.externallink.mapper;
+package org.jeecg.modules.okki.externallink.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.jeecg.modules.api.okki.externallink.entity.OkkiExternalLink;
+import org.jeecg.modules.okki.externallink.entity.OkkiExternalLink;
 
 /**
  * @Description: SEO数据外链

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/mapper/xml/OkkiExternalLinkMapper.xml → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/mapper/xml/OkkiExternalLinkMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.demo.externallink.mapper.OkkiExternalLinkMapper">
+<mapper namespace="org.jeecg.modules.okki.externallink.mapper.OkkiExternalLinkMapper">
 
 </mapper>

+ 2 - 2
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/service/IOkkiExternalLinkService.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/service/IOkkiExternalLinkService.java

@@ -1,6 +1,6 @@
-package org.jeecg.modules.api.okki.externallink.service;
+package org.jeecg.modules.okki.externallink.service;
 
-import org.jeecg.modules.api.okki.externallink.entity.OkkiExternalLink;
+import org.jeecg.modules.okki.externallink.entity.OkkiExternalLink;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 /**

+ 5 - 5
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/api/okki/externallink/service/impl/OkkiExternalLinkServiceImpl.java → jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/externallink/service/impl/OkkiExternalLinkServiceImpl.java

@@ -1,12 +1,12 @@
-package org.jeecg.modules.api.okki.externallink.service.impl;
+package org.jeecg.modules.okki.externallink.service.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.jeecg.modules.api.okki.externallink.entity.OkkiExternalLink;
-import org.jeecg.modules.api.okki.externallink.mapper.OkkiExternalLinkMapper;
-import org.jeecg.modules.api.okki.externallink.service.IOkkiExternalLinkService;
-import org.jeecg.modules.api.okki.utils.HttpClientUtils;
+import org.jeecg.modules.okki.externallink.service.IOkkiExternalLinkService;
+import org.jeecg.modules.okki.utils.HttpClientUtils;
+import org.jeecg.modules.okki.externallink.entity.OkkiExternalLink;
+import org.jeecg.modules.okki.externallink.mapper.OkkiExternalLinkMapper;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 

+ 37 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountApiController.java

@@ -0,0 +1,37 @@
+package org.jeecg.modules.okki.google.controller;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpHeaders;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.modules.okki.google.param.OkkiGoogleAdsAccountParam;
+import org.jeecg.modules.okki.google.service.IOkkiGoogleAdsAccountService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@Slf4j
+@RequestMapping("/website")
+public class OkkiGoogleAdsAccountApiController {
+
+    @Resource
+    private IOkkiGoogleAdsAccountService okkiGoogleAdsAccountService;
+    /**
+     *   小满推送数据
+     *
+     * @param okkiGoogleAdsAccountParam
+     * @return
+     */
+    @AutoLog(value = "Google Ads账号-小满推送数据")
+    @PostMapping(value = "/googleAdsAccount")
+    public Result<String> add(@RequestBody OkkiGoogleAdsAccountParam okkiGoogleAdsAccountParam, @RequestHeader(HttpHeaders.AUTHORIZATION) String authorization) {
+        log.info("请求参数 param" + okkiGoogleAdsAccountParam.toString() + "authorization" + authorization);
+        String Authorization = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImRlYW4iLCJleHAiOjE3MTQ0NjU5Njl9.QdCBYR8mioXcKGi1n5RdMQ5RbJHCSGbE8dkdwYuOXh4";
+        if (!authorization.equals(Authorization)) {
+            return Result.error("sign 验证不通过");
+        }
+        okkiGoogleAdsAccountService.okkiSave(okkiGoogleAdsAccountParam);
+        return Result.OK("添加成功!");
+    }
+}

+ 162 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/controller/OkkiGoogleAdsAccountController.java

@@ -0,0 +1,162 @@
+package org.jeecg.modules.okki.google.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.modules.okki.google.entity.OkkiGoogleAdsAccount;
+import org.jeecg.modules.okki.google.service.IOkkiGoogleAdsAccountService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+
+ /**
+ * @Description: Google Ads账号管理
+ * @Author: jeecg-boot
+ * @Date:   2024-05-17
+ * @Version: V1.0
+ */
+@Api(tags="Google Ads账号管理")
+@RestController
+@RequestMapping("/google/okkiGoogleAdsAccount")
+@Slf4j
+public class OkkiGoogleAdsAccountController extends JeecgController<OkkiGoogleAdsAccount, IOkkiGoogleAdsAccountService> {
+	@Autowired
+	private IOkkiGoogleAdsAccountService okkiGoogleAdsAccountService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param okkiGoogleAdsAccount
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "Google Ads账号管理-分页列表查询")
+	@ApiOperation(value="Google Ads账号管理-分页列表查询", notes="Google Ads账号管理-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OkkiGoogleAdsAccount>> queryPageList(OkkiGoogleAdsAccount okkiGoogleAdsAccount,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OkkiGoogleAdsAccount> queryWrapper = QueryGenerator.initQueryWrapper(okkiGoogleAdsAccount, req.getParameterMap());
+		Page<OkkiGoogleAdsAccount> page = new Page<OkkiGoogleAdsAccount>(pageNo, pageSize);
+		IPage<OkkiGoogleAdsAccount> pageList = okkiGoogleAdsAccountService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param okkiGoogleAdsAccount
+	 * @return
+	 */
+	@AutoLog(value = "Google Ads账号管理-添加")
+	@ApiOperation(value="Google Ads账号管理-添加", notes="Google Ads账号管理-添加")
+	@RequiresPermissions("google:okki_google_ads_account:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OkkiGoogleAdsAccount okkiGoogleAdsAccount) {
+		okkiGoogleAdsAccountService.save(okkiGoogleAdsAccount);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param okkiGoogleAdsAccount
+	 * @return
+	 */
+	@AutoLog(value = "Google Ads账号管理-编辑")
+	@ApiOperation(value="Google Ads账号管理-编辑", notes="Google Ads账号管理-编辑")
+	@RequiresPermissions("google:okki_google_ads_account:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OkkiGoogleAdsAccount okkiGoogleAdsAccount) {
+		okkiGoogleAdsAccountService.updateById(okkiGoogleAdsAccount);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "Google Ads账号管理-通过id删除")
+	@ApiOperation(value="Google Ads账号管理-通过id删除", notes="Google Ads账号管理-通过id删除")
+	@RequiresPermissions("google:okki_google_ads_account:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		okkiGoogleAdsAccountService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "Google Ads账号管理-批量删除")
+	@ApiOperation(value="Google Ads账号管理-批量删除", notes="Google Ads账号管理-批量删除")
+	@RequiresPermissions("google:okki_google_ads_account:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.okkiGoogleAdsAccountService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "Google Ads账号管理-通过id查询")
+	@ApiOperation(value="Google Ads账号管理-通过id查询", notes="Google Ads账号管理-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<OkkiGoogleAdsAccount> queryById(@RequestParam(name="id",required=true) String id) {
+		OkkiGoogleAdsAccount okkiGoogleAdsAccount = okkiGoogleAdsAccountService.getById(id);
+		if(okkiGoogleAdsAccount==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(okkiGoogleAdsAccount);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param okkiGoogleAdsAccount
+    */
+    @RequiresPermissions("google:okki_google_ads_account:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OkkiGoogleAdsAccount okkiGoogleAdsAccount) {
+        return super.exportXls(request, okkiGoogleAdsAccount, OkkiGoogleAdsAccount.class, "Google Ads账号管理");
+    }
+
+    /**
+      * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("google:okki_google_ads_account:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+        return super.importExcel(request, response, OkkiGoogleAdsAccount.class);
+    }
+
+}

+ 77 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/entity/OkkiGoogleAdsAccount.java

@@ -0,0 +1,77 @@
+package org.jeecg.modules.okki.google.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @Description: Google Ads账号管理
+ * @Author: jeecg-boot
+ * @Date:   2024-05-17
+ * @Version: V1.0
+ */
+@Data
+@TableName("okki_google_ads_account")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="okki_google_ads_account对象", description="Google Ads账号管理")
+public class OkkiGoogleAdsAccount implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**站点id*/
+	@Excel(name = "站点id", width = 15)
+    @ApiModelProperty(value = "站点id")
+    private String siteId;
+	/**google广告账号id */
+	@Excel(name = "google广告账号id ", width = 15)
+    @ApiModelProperty(value = "google广告账号id ")
+    private String cid;
+	/**业务金额(人民币)*/
+	@Excel(name = "业务金额(人民币)", width = 15)
+    @ApiModelProperty(value = "业务金额(人民币)")
+    private BigDecimal amount;
+	/**google广告账号*/
+	@Excel(name = "google广告账号", width = 15)
+    @ApiModelProperty(value = "google广告账号")
+    private String googleAccount;
+	/** 1--新签 2--续充 */
+	@Excel(name = " 1--新签 2--续充 ", width = 15)
+    @ApiModelProperty(value = " 1--新签 2--续充 ")
+    private Integer type;
+	/**公司名称*/
+	@Excel(name = "公司名称", width = 15)
+    @ApiModelProperty(value = "公司名称")
+    private String companyName;
+}

+ 14 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/OkkiGoogleAdsAccountMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.okki.google.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.google.entity.OkkiGoogleAdsAccount;
+
+/**
+ * @Description: Google Ads账号管理
+ * @Author: jeecg-boot
+ * @Date:   2024-05-17
+ * @Version: V1.0
+ */
+public interface OkkiGoogleAdsAccountMapper extends BaseMapper<OkkiGoogleAdsAccount> {
+
+}

+ 5 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/mapper/xml/OkkiGoogleAdsAccountMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.google.mapper.OkkiGoogleAdsAccountMapper">
+
+</mapper>

+ 21 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/param/OkkiGoogleAdsAccountParam.java

@@ -0,0 +1,21 @@
+package org.jeecg.modules.okki.google.param;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OkkiGoogleAdsAccountParam {
+
+    private String site_id;
+
+    private String cid;
+
+    private BigDecimal amount;
+
+    private String google_account;
+
+    private Integer type;
+
+    private String company_name;
+}

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/IOkkiGoogleAdsAccountService.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.okki.google.service;
+
+import org.jeecg.modules.okki.google.entity.OkkiGoogleAdsAccount;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.okki.google.param.OkkiGoogleAdsAccountParam;
+
+/**
+ * @Description: Google Ads账号管理
+ * @Author: jeecg-boot
+ * @Date:   2024-05-17
+ * @Version: V1.0
+ */
+public interface IOkkiGoogleAdsAccountService extends IService<OkkiGoogleAdsAccount> {
+
+    void okkiSave(OkkiGoogleAdsAccountParam okkiGoogleAdsAccountParam);
+}

+ 54 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/google/service/impl/OkkiGoogleAdsAccountServiceImpl.java

@@ -0,0 +1,54 @@
+package org.jeecg.modules.okki.google.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.okki.google.entity.OkkiGoogleAdsAccount;
+import org.jeecg.modules.okki.google.mapper.OkkiGoogleAdsAccountMapper;
+import org.jeecg.modules.okki.google.param.OkkiGoogleAdsAccountParam;
+import org.jeecg.modules.okki.google.service.IOkkiGoogleAdsAccountService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * @Description: Google Ads账号管理
+ * @Author: jeecg-boot
+ * @Date:   2024-05-17
+ * @Version: V1.0
+ */
+@Service
+public class OkkiGoogleAdsAccountServiceImpl extends ServiceImpl<OkkiGoogleAdsAccountMapper, OkkiGoogleAdsAccount> implements IOkkiGoogleAdsAccountService {
+
+    @Resource
+    private OkkiGoogleAdsAccountMapper okkiGoogleAdsAccountMapper;
+
+    @Override
+    public void okkiSave(OkkiGoogleAdsAccountParam okkiGoogleAdsAccountParam){
+        LambdaUpdateWrapper<OkkiGoogleAdsAccount> okkiGoogleAdsAccountLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
+        okkiGoogleAdsAccountLambdaUpdateWrapper.eq(OkkiGoogleAdsAccount::getCid, okkiGoogleAdsAccountParam.getCid())
+                        .last("limit 1");
+        try {
+            OkkiGoogleAdsAccount okkiGoogleAdsAccount = okkiGoogleAdsAccountMapper.selectOne(okkiGoogleAdsAccountLambdaUpdateWrapper);
+            if (okkiGoogleAdsAccount == null) {
+                okkiGoogleAdsAccount = new OkkiGoogleAdsAccount();
+                okkiGoogleAdsAccount.setSiteId(okkiGoogleAdsAccountParam.getSite_id());
+                okkiGoogleAdsAccount.setCid(okkiGoogleAdsAccountParam.getCid());
+                okkiGoogleAdsAccount.setAmount(okkiGoogleAdsAccountParam.getAmount());
+                okkiGoogleAdsAccount.setGoogleAccount(okkiGoogleAdsAccountParam.getGoogle_account());
+                okkiGoogleAdsAccount.setType(okkiGoogleAdsAccountParam.getType());
+                okkiGoogleAdsAccount.setCompanyName(okkiGoogleAdsAccountParam.getCompany_name());
+                okkiGoogleAdsAccountMapper.insert(okkiGoogleAdsAccount);
+            }else {
+                okkiGoogleAdsAccount.setSiteId(okkiGoogleAdsAccountParam.getSite_id());
+                okkiGoogleAdsAccount.setAmount(okkiGoogleAdsAccountParam.getAmount());
+                okkiGoogleAdsAccount.setGoogleAccount(okkiGoogleAdsAccountParam.getGoogle_account());
+                okkiGoogleAdsAccount.setType(okkiGoogleAdsAccountParam.getType());
+                okkiGoogleAdsAccount.setCompanyName(okkiGoogleAdsAccountParam.getCompany_name());
+                okkiGoogleAdsAccountMapper.updateById(okkiGoogleAdsAccount);
+            }
+        }catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+}

+ 276 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/controller/OkkiLinkedinMarketingDataController.java

@@ -0,0 +1,276 @@
+package org.jeecg.modules.okki.linkedin.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingData;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import org.jeecg.modules.okki.linkedin.service.IOkkiLinkedinMarketingDataDetailService;
+import org.jeecg.modules.okki.linkedin.service.IOkkiLinkedinMarketingDataService;
+import org.jeecg.modules.okki.linkedin.vo.OkkiLinkedinMarketingDataPage;
+import org.jeecg.modules.okki.youtube.entity.OkkiYoutubeMarketingData;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+ /**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Api(tags="Linkedin营销效果数据")
+@RestController
+@RequestMapping("/linkedin/okkiLinkedinMarketingData")
+@Slf4j
+public class OkkiLinkedinMarketingDataController {
+	@Autowired
+	private IOkkiLinkedinMarketingDataService okkiLinkedinMarketingDataService;
+	@Autowired
+	private IOkkiLinkedinMarketingDataDetailService okkiLinkedinMarketingDataDetailService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param okkiLinkedinMarketingData
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "Linkedin营销效果数据-分页列表查询")
+	@ApiOperation(value="Linkedin营销效果数据-分页列表查询", notes="Linkedin营销效果数据-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OkkiLinkedinMarketingData>> queryPageList(OkkiLinkedinMarketingData okkiLinkedinMarketingData,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OkkiLinkedinMarketingData> queryWrapper = QueryGenerator.initQueryWrapper(okkiLinkedinMarketingData, req.getParameterMap());
+		Page<OkkiLinkedinMarketingData> page = new Page<OkkiLinkedinMarketingData>(pageNo, pageSize);
+		IPage<OkkiLinkedinMarketingData> pageList = okkiLinkedinMarketingDataService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param okkiLinkedinMarketingDataPage
+	 * @return
+	 */
+	@AutoLog(value = "Linkedin营销效果数据-添加")
+	@ApiOperation(value="Linkedin营销效果数据-添加", notes="Linkedin营销效果数据-添加")
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OkkiLinkedinMarketingDataPage okkiLinkedinMarketingDataPage) {
+		OkkiLinkedinMarketingData okkiLinkedinMarketingData = new OkkiLinkedinMarketingData();
+		BeanUtils.copyProperties(okkiLinkedinMarketingDataPage, okkiLinkedinMarketingData);
+		okkiLinkedinMarketingDataService.saveMain(okkiLinkedinMarketingData, okkiLinkedinMarketingDataPage.getOkkiLinkedinMarketingDataDetailList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param okkiLinkedinMarketingDataPage
+	 * @return
+	 */
+	@AutoLog(value = "Linkedin营销效果数据-编辑")
+	@ApiOperation(value="Linkedin营销效果数据-编辑", notes="Linkedin营销效果数据-编辑")
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OkkiLinkedinMarketingDataPage okkiLinkedinMarketingDataPage) {
+		OkkiLinkedinMarketingData okkiLinkedinMarketingData = new OkkiLinkedinMarketingData();
+		BeanUtils.copyProperties(okkiLinkedinMarketingDataPage, okkiLinkedinMarketingData);
+		OkkiLinkedinMarketingData okkiLinkedinMarketingDataEntity = okkiLinkedinMarketingDataService.getById(okkiLinkedinMarketingData.getId());
+		if(okkiLinkedinMarketingDataEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		okkiLinkedinMarketingDataService.updateMain(okkiLinkedinMarketingData, okkiLinkedinMarketingDataPage.getOkkiLinkedinMarketingDataDetailList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "Linkedin营销效果数据-通过id删除")
+	@ApiOperation(value="Linkedin营销效果数据-通过id删除", notes="Linkedin营销效果数据-通过id删除")
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		okkiLinkedinMarketingDataService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "Linkedin营销效果数据-批量删除")
+	@ApiOperation(value="Linkedin营销效果数据-批量删除", notes="Linkedin营销效果数据-批量删除")
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.okkiLinkedinMarketingDataService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "Linkedin营销效果数据-通过id查询")
+	@ApiOperation(value="Linkedin营销效果数据-通过id查询", notes="Linkedin营销效果数据-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<OkkiLinkedinMarketingData> queryById(@RequestParam(name="id",required=true) String id) {
+		OkkiLinkedinMarketingData okkiLinkedinMarketingData = okkiLinkedinMarketingDataService.getById(id);
+		if(okkiLinkedinMarketingData==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(okkiLinkedinMarketingData);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "Linkedin营销效果数据详情通过主表ID查询")
+	@ApiOperation(value="Linkedin营销效果数据详情主表ID查询", notes="Linkedin营销效果数据详情-通主表ID查询")
+	@GetMapping(value = "/queryOkkiLinkedinMarketingDataDetailByMainId")
+	public Result<List<OkkiLinkedinMarketingDataDetail>> queryOkkiLinkedinMarketingDataDetailListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList = okkiLinkedinMarketingDataDetailService.selectByMainId(id);
+		return Result.OK(okkiLinkedinMarketingDataDetailList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param okkiLinkedinMarketingData
+    */
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OkkiLinkedinMarketingData okkiLinkedinMarketingData) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<OkkiLinkedinMarketingData> queryWrapper = QueryGenerator.initQueryWrapper(okkiLinkedinMarketingData, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+       String selections = request.getParameter("selections");
+       if(oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id",selectionList);
+       }
+       //Step.2 获取导出数据
+       List<OkkiLinkedinMarketingData> okkiLinkedinMarketingDataList = okkiLinkedinMarketingDataService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<OkkiLinkedinMarketingDataPage> pageList = new ArrayList<OkkiLinkedinMarketingDataPage>();
+      for (OkkiLinkedinMarketingData main : okkiLinkedinMarketingDataList) {
+          OkkiLinkedinMarketingDataPage vo = new OkkiLinkedinMarketingDataPage();
+          BeanUtils.copyProperties(main, vo);
+          List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList = okkiLinkedinMarketingDataDetailService.selectByMainId(main.getId());
+          vo.setOkkiLinkedinMarketingDataDetailList(okkiLinkedinMarketingDataDetailList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "Linkedin营销效果数据列表");
+      mv.addObject(NormalExcelConstants.CLASS, OkkiLinkedinMarketingDataPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("Linkedin营销效果数据数据", "导出人:"+sysUser.getRealname(), "Linkedin营销效果数据"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("linkedin:okki_linkedin_marketing_data:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<OkkiLinkedinMarketingDataPage> list = ExcelImportUtil.importExcel(file.getInputStream(), OkkiLinkedinMarketingDataPage.class, params);
+              for (OkkiLinkedinMarketingDataPage page : list) {
+                  OkkiLinkedinMarketingData po = new OkkiLinkedinMarketingData();
+                  BeanUtils.copyProperties(page, po);
+                  okkiLinkedinMarketingDataService.saveMain(po, page.getOkkiLinkedinMarketingDataDetailList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+	 /**
+	  * 变更状态
+	  * @param okkiLinkedinMarketingData
+	  * @return
+	  */
+	 @PostMapping(value = "/status")
+	 public Result<String> changeStatus(@RequestBody OkkiLinkedinMarketingData okkiLinkedinMarketingData) throws Exception {
+		 boolean result = okkiLinkedinMarketingDataService.changeStatus(okkiLinkedinMarketingData);
+		 if (result) {
+			 return Result.OK("操作成功");
+		 }else {
+			 return Result.error("操作失败");
+		 }
+	 }
+}

+ 59 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/entity/OkkiLinkedinMarketingData.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.okki.linkedin.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_linkedin_marketing_data对象", description="Linkedin营销效果数据")
+@Data
+@TableName("okki_linkedin_marketing_data")
+public class OkkiLinkedinMarketingData implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**站点id*/
+	@Excel(name = "站点id", width = 15)
+    @ApiModelProperty(value = "站点id")
+    private String siteId;
+	/**同步状态*/
+	@Excel(name = "同步状态", width = 15, dicCode = "blog_status")
+    @Dict(dicCode = "blog_status")
+    @ApiModelProperty(value = "同步状态")
+    private Integer status;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+}

+ 64 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/entity/OkkiLinkedinMarketingDataDetail.java

@@ -0,0 +1,64 @@
+package org.jeecg.modules.okki.linkedin.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: Linkedin营销效果数据详情
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_linkedin_marketing_data_detail对象", description="Linkedin营销效果数据详情")
+@Data
+@TableName("okki_linkedin_marketing_data_detail")
+public class OkkiLinkedinMarketingDataDetail implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**关联id*/
+    @ApiModelProperty(value = "关联id")
+    private String okkiLinkedinMarketingDataId;
+	/**文章id*/
+	@Excel(name = "文章id", width = 15)
+    @ApiModelProperty(value = "文章id")
+    private String articleId;
+	/**标题*/
+	@Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String title;
+	/**链接*/
+	@Excel(name = "链接", width = 15)
+    @ApiModelProperty(value = "链接")
+    private String url;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/OkkiLinkedinMarketingDataDetailMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.linkedin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+
+import java.util.List;
+
+/**
+ * @Description: Linkedin营销效果数据详情
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface OkkiLinkedinMarketingDataDetailMapper extends BaseMapper<OkkiLinkedinMarketingDataDetail> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiLinkedinMarketingDataDetail>
+   */
+	public List<OkkiLinkedinMarketingDataDetail> selectByMainId(@Param("mainId") String mainId);
+}

+ 14 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/OkkiLinkedinMarketingDataMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.okki.linkedin.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingData;
+
+/**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface OkkiLinkedinMarketingDataMapper extends BaseMapper<OkkiLinkedinMarketingData> {
+
+}

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/xml/OkkiLinkedinMarketingDataDetailMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.linkedin.mapper.OkkiLinkedinMarketingDataDetailMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_linkedin_marketing_data_detail 
+		WHERE
+			 okki_linkedin_marketing_data_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail">
+		SELECT * 
+		FROM  okki_linkedin_marketing_data_detail
+		WHERE
+			 okki_linkedin_marketing_data_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/mapper/xml/OkkiLinkedinMarketingDataMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.linkedin.mapper.OkkiLinkedinMarketingDataMapper">
+
+</mapper>

+ 13 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/param/LinkedinMarketingDataParam.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.okki.linkedin.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class LinkedinMarketingDataParam {
+
+    private List<LinkedinReportListParam> report_list;
+
+    private Integer count;
+}

+ 15 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/param/LinkedinReportListParam.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.okki.linkedin.param;
+
+import lombok.Data;
+
+@Data
+public class LinkedinReportListParam {
+
+    private String id;
+
+    private String title;
+
+    private String url;
+
+    private String create_time;
+}

+ 22 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/IOkkiLinkedinMarketingDataDetailService.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.okki.linkedin.service;
+
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.util.List;
+
+/**
+ * @Description: Linkedin营销效果数据详情
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface IOkkiLinkedinMarketingDataDetailService extends IService<OkkiLinkedinMarketingDataDetail> {
+
+	/**
+	 * 通过主表id查询子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return List<OkkiLinkedinMarketingDataDetail>
+	 */
+	public List<OkkiLinkedinMarketingDataDetail> selectByMainId(String mainId);
+}

+ 49 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/IOkkiLinkedinMarketingDataService.java

@@ -0,0 +1,49 @@
+package org.jeecg.modules.okki.linkedin.service;
+
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingData;
+import com.baomidou.mybatisplus.extension.service.IService;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+public interface IOkkiLinkedinMarketingDataService extends IService<OkkiLinkedinMarketingData> {
+
+	/**
+	 * 添加一对多
+	 *
+	 * @param okkiLinkedinMarketingData
+	 * @param okkiLinkedinMarketingDataDetailList
+	 */
+	public void saveMain(OkkiLinkedinMarketingData okkiLinkedinMarketingData,List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList) ;
+	
+	/**
+	 * 修改一对多
+	 *
+	 * @param okkiLinkedinMarketingData
+	 * @param okkiLinkedinMarketingDataDetailList
+	 */
+	public void updateMain(OkkiLinkedinMarketingData okkiLinkedinMarketingData,List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList);
+	
+	/**
+	 * 删除一对多
+	 *
+	 * @param id
+	 */
+	public void delMain (String id);
+	
+	/**
+	 * 批量删除一对多
+	 *
+	 * @param idList
+	 */
+	public void delBatchMain (Collection<? extends Serializable> idList);
+
+	boolean changeStatus(OkkiLinkedinMarketingData okkiLinkedinMarketingData);
+}

+ 28 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/impl/OkkiLinkedinMarketingDataDetailServiceImpl.java

@@ -0,0 +1,28 @@
+package org.jeecg.modules.okki.linkedin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import org.jeecg.modules.okki.linkedin.mapper.OkkiLinkedinMarketingDataDetailMapper;
+import org.jeecg.modules.okki.linkedin.service.IOkkiLinkedinMarketingDataDetailService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @Description: Linkedin营销效果数据详情
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Service
+public class OkkiLinkedinMarketingDataDetailServiceImpl extends ServiceImpl<OkkiLinkedinMarketingDataDetailMapper, OkkiLinkedinMarketingDataDetail> implements IOkkiLinkedinMarketingDataDetailService {
+	
+	@Autowired
+	private OkkiLinkedinMarketingDataDetailMapper okkiLinkedinMarketingDataDetailMapper;
+	
+	@Override
+	public List<OkkiLinkedinMarketingDataDetail> selectByMainId(String mainId) {
+		return okkiLinkedinMarketingDataDetailMapper.selectByMainId(mainId);
+	}
+}

+ 141 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/service/impl/OkkiLinkedinMarketingDataServiceImpl.java

@@ -0,0 +1,141 @@
+package org.jeecg.modules.okki.linkedin.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingData;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import org.jeecg.modules.okki.linkedin.mapper.OkkiLinkedinMarketingDataDetailMapper;
+import org.jeecg.modules.okki.linkedin.mapper.OkkiLinkedinMarketingDataMapper;
+import org.jeecg.modules.okki.linkedin.param.LinkedinMarketingDataParam;
+import org.jeecg.modules.okki.linkedin.param.LinkedinReportListParam;
+import org.jeecg.modules.okki.linkedin.service.IOkkiLinkedinMarketingDataService;
+import org.jeecg.modules.okki.utils.HttpClientUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+/**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Slf4j
+@Service
+public class OkkiLinkedinMarketingDataServiceImpl extends ServiceImpl<OkkiLinkedinMarketingDataMapper, OkkiLinkedinMarketingData> implements IOkkiLinkedinMarketingDataService {
+
+	@Value("${OKKI.BASE_URL}")
+	private String URL;
+
+	@Value("${OKKI.CLIENT_SECRET}")
+	private String CLIENT_SECRET;
+
+	@Autowired
+	private OkkiLinkedinMarketingDataMapper okkiLinkedinMarketingDataMapper;
+	@Autowired
+	private OkkiLinkedinMarketingDataDetailMapper okkiLinkedinMarketingDataDetailMapper;
+	
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void saveMain(OkkiLinkedinMarketingData okkiLinkedinMarketingData, List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList) {
+		okkiLinkedinMarketingDataMapper.insert(okkiLinkedinMarketingData);
+		if(okkiLinkedinMarketingDataDetailList!=null && okkiLinkedinMarketingDataDetailList.size()>0) {
+			for(OkkiLinkedinMarketingDataDetail entity:okkiLinkedinMarketingDataDetailList) {
+				//外键设置
+				entity.setOkkiLinkedinMarketingDataId(okkiLinkedinMarketingData.getId());
+				okkiLinkedinMarketingDataDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void updateMain(OkkiLinkedinMarketingData okkiLinkedinMarketingData,List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList) {
+		okkiLinkedinMarketingDataMapper.updateById(okkiLinkedinMarketingData);
+		
+		//1.先删除子表数据
+		okkiLinkedinMarketingDataDetailMapper.deleteByMainId(okkiLinkedinMarketingData.getId());
+		
+		//2.子表数据重新插入
+		if(okkiLinkedinMarketingDataDetailList!=null && okkiLinkedinMarketingDataDetailList.size()>0) {
+			for(OkkiLinkedinMarketingDataDetail entity:okkiLinkedinMarketingDataDetailList) {
+				//外键设置
+				entity.setOkkiLinkedinMarketingDataId(okkiLinkedinMarketingData.getId());
+				okkiLinkedinMarketingDataDetailMapper.insert(entity);
+			}
+		}
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delMain(String id) {
+		okkiLinkedinMarketingDataDetailMapper.deleteByMainId(id);
+		okkiLinkedinMarketingDataMapper.deleteById(id);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public void delBatchMain(Collection<? extends Serializable> idList) {
+		for(Serializable id:idList) {
+			okkiLinkedinMarketingDataDetailMapper.deleteByMainId(id.toString());
+			okkiLinkedinMarketingDataMapper.deleteById(id);
+		}
+	}
+
+	@Override
+	public boolean changeStatus(OkkiLinkedinMarketingData param) {
+		OkkiLinkedinMarketingData okkiLinkedinMarketingData = okkiLinkedinMarketingDataMapper.selectById(param.getId());
+		// 请求okki平台接口
+		Map<String, String> query = new TreeMap<>();
+		query.put("sign_method", "hmac-md5");
+		query.put("timestamp", String.valueOf(System.currentTimeMillis()));
+		query.put("site_id", String.valueOf(okkiLinkedinMarketingData.getSiteId()));
+		query.put("method", "linkedin_report");
+		okkiLinkedinMarketingData.setStatus(1);
+		LinkedinMarketingDataParam linkedinMarketingDataParam  = new LinkedinMarketingDataParam();
+		try {
+			String queryStr = HttpClientUtils.buildQueryString(query);
+			List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetails = okkiLinkedinMarketingDataDetailMapper.selectByMainId(okkiLinkedinMarketingData.getId());
+			ArrayList<LinkedinReportListParam> linkedinReportListParams = new ArrayList<>();
+			for (OkkiLinkedinMarketingDataDetail okkiLinkedinMarketingDataDetail : okkiLinkedinMarketingDataDetails) {
+				LinkedinReportListParam linkedinReportListParam = new LinkedinReportListParam();
+				linkedinReportListParam.setId(okkiLinkedinMarketingDataDetail.getId());
+				linkedinReportListParam.setTitle(okkiLinkedinMarketingDataDetail.getTitle());
+				linkedinReportListParam.setUrl(okkiLinkedinMarketingDataDetail.getUrl());
+				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+				linkedinReportListParam.setCreate_time(format.format(okkiLinkedinMarketingDataDetail.getCreateTime()));
+				linkedinReportListParams.add(linkedinReportListParam);
+			}
+			linkedinMarketingDataParam.setReport_list(linkedinReportListParams);
+			linkedinMarketingDataParam.setCount(linkedinReportListParams.size());
+			String body = HttpClientUtils.toJsonString(linkedinMarketingDataParam);
+			String signStr = queryStr + body;
+			query.put("signature", HttpClientUtils.generateHmacMD5(signStr, CLIENT_SECRET));
+			String okkiUrl = URL + "?" + HttpClientUtils.buildQueryString(query);
+			log.info("url:" + okkiUrl + ",body:" + body);
+			String res = HttpClientUtils.doPost(okkiUrl, body);
+			log.info(res);
+			// {"code":0,"msg":"success","now":"2024-05-06 15:34:54","data":[]}
+			JSONObject jsonObject= JSONObject.parseObject(res);
+			if (jsonObject.get("code").equals(0)) {
+				int result = okkiLinkedinMarketingDataMapper.updateById(okkiLinkedinMarketingData);
+				if (result == 0) {
+					return false;
+				}else {
+					return true;
+				}
+			}else {
+				throw new RuntimeException(jsonObject.get("msg").toString());
+			}
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+}

+ 59 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/linkedin/vo/OkkiLinkedinMarketingDataPage.java

@@ -0,0 +1,59 @@
+package org.jeecg.modules.okki.linkedin.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecg.modules.okki.linkedin.entity.OkkiLinkedinMarketingDataDetail;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecgframework.poi.excel.annotation.ExcelCollection;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description: Linkedin营销效果数据
+ * @Author: jeecg-boot
+ * @Date:   2024-05-16
+ * @Version: V1.0
+ */
+@Data
+@ApiModel(value="okki_linkedin_marketing_dataPage对象", description="Linkedin营销效果数据")
+public class OkkiLinkedinMarketingDataPage {
+
+	/**主键*/
+	@ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+	@ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**更新人*/
+	@ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**站点id*/
+	@Excel(name = "站点id", width = 15)
+	@ApiModelProperty(value = "站点id")
+    private String siteId;
+	/**同步状态*/
+	@Excel(name = "同步状态", width = 15, dicCode = "blog_status")
+    @Dict(dicCode = "blog_status")
+	@ApiModelProperty(value = "同步状态")
+    private Integer status;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	@ApiModelProperty(value = "创建日期")
+    private Date createTime;
+
+	@ExcelCollection(name="Linkedin营销效果数据详情")
+	@ApiModelProperty(value = "Linkedin营销效果数据详情")
+	private List<OkkiLinkedinMarketingDataDetail> okkiLinkedinMarketingDataDetailList;
+
+}

+ 428 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/controller/OkkiShowlistController.java

@@ -0,0 +1,428 @@
+package org.jeecg.modules.okki.showlist.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.okki.blog.entity.OkkiBlog;
+import org.jeecg.modules.okki.showlist.entity.*;
+import org.jeecg.modules.okki.showlist.service.*;
+import org.jeecg.modules.okki.showlist.vo.OkkiShowlistPage;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+ /**
+ * @Description: showlist
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@Api(tags="showlist")
+@RestController
+@RequestMapping("/showlist/okkiShowlist")
+@Slf4j
+public class OkkiShowlistController {
+	@Autowired
+	private IOkkiShowlistService okkiShowlistService;
+	@Autowired
+	private IOkkiOverviewService okkiOverviewService;
+	@Autowired
+	private IOkkiProductListService okkiProductListService;
+	@Autowired
+	private IOkkiHighlightService okkiHighlightService;
+	@Autowired
+	private IOkkiAdvantageService okkiAdvantageService;
+	@Autowired
+	private IOkkiRecommendedProductsService okkiRecommendedProductsService;
+	@Autowired
+	private IOkkiKeywordsService okkiKeywordsService;
+	@Autowired
+	private IOkkiKeywordsSeriesService okkiKeywordsSeriesService;
+	@Autowired
+	private IOkkiReviewService okkiReviewService;
+	@Autowired
+	private IOkkiFaqService okkiFaqService;
+	@Autowired
+	private IOkkiShowlistBlogService okkiShowlistBlogService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param okkiShowlist
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	//@AutoLog(value = "showlist-分页列表查询")
+	@ApiOperation(value="showlist-分页列表查询", notes="showlist-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<IPage<OkkiShowlist>> queryPageList(OkkiShowlist okkiShowlist,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<OkkiShowlist> queryWrapper = QueryGenerator.initQueryWrapper(okkiShowlist, req.getParameterMap());
+		Page<OkkiShowlist> page = new Page<OkkiShowlist>(pageNo, pageSize);
+		IPage<OkkiShowlist> pageList = okkiShowlistService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 *   添加
+	 *
+	 * @param okkiShowlistPage
+	 * @return
+	 */
+	@AutoLog(value = "showlist-添加")
+	@ApiOperation(value="showlist-添加", notes="showlist-添加")
+    @RequiresPermissions("showlist:okki_showlist:add")
+	@PostMapping(value = "/add")
+	public Result<String> add(@RequestBody OkkiShowlistPage okkiShowlistPage) {
+		OkkiShowlist okkiShowlist = new OkkiShowlist();
+		BeanUtils.copyProperties(okkiShowlistPage, okkiShowlist);
+		okkiShowlistService.saveMain(okkiShowlist, okkiShowlistPage.getOkkiOverviewList(),okkiShowlistPage.getOkkiProductListList(),okkiShowlistPage.getOkkiHighlightList(),okkiShowlistPage.getOkkiAdvantageList(),okkiShowlistPage.getOkkiRecommendedProductsList(),okkiShowlistPage.getOkkiKeywordsList(),okkiShowlistPage.getOkkiKeywordsSeriesList(),okkiShowlistPage.getOkkiReviewList(),okkiShowlistPage.getOkkiFaqList(),okkiShowlistPage.getOkkiShowlistBlogList());
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 *  编辑
+	 *
+	 * @param okkiShowlistPage
+	 * @return
+	 */
+	@AutoLog(value = "showlist-编辑")
+	@ApiOperation(value="showlist-编辑", notes="showlist-编辑")
+    @RequiresPermissions("showlist:okki_showlist:edit")
+	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
+	public Result<String> edit(@RequestBody OkkiShowlistPage okkiShowlistPage) {
+		OkkiShowlist okkiShowlist = new OkkiShowlist();
+		BeanUtils.copyProperties(okkiShowlistPage, okkiShowlist);
+		OkkiShowlist okkiShowlistEntity = okkiShowlistService.getById(okkiShowlist.getId());
+		if(okkiShowlistEntity==null) {
+			return Result.error("未找到对应数据");
+		}
+		okkiShowlistService.updateMain(okkiShowlist, okkiShowlistPage.getOkkiOverviewList(),okkiShowlistPage.getOkkiProductListList(),okkiShowlistPage.getOkkiHighlightList(),okkiShowlistPage.getOkkiAdvantageList(),okkiShowlistPage.getOkkiRecommendedProductsList(),okkiShowlistPage.getOkkiKeywordsList(),okkiShowlistPage.getOkkiKeywordsSeriesList(),okkiShowlistPage.getOkkiReviewList(),okkiShowlistPage.getOkkiFaqList(),okkiShowlistPage.getOkkiShowlistBlogList());
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 *   通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "showlist-通过id删除")
+	@ApiOperation(value="showlist-通过id删除", notes="showlist-通过id删除")
+    @RequiresPermissions("showlist:okki_showlist:delete")
+	@DeleteMapping(value = "/delete")
+	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
+		okkiShowlistService.delMain(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 *  批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "showlist-批量删除")
+	@ApiOperation(value="showlist-批量删除", notes="showlist-批量删除")
+    @RequiresPermissions("showlist:okki_showlist:deleteBatch")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.okkiShowlistService.delBatchMain(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "showlist-通过id查询")
+	@ApiOperation(value="showlist-通过id查询", notes="showlist-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<OkkiShowlist> queryById(@RequestParam(name="id",required=true) String id) {
+		OkkiShowlist okkiShowlist = okkiShowlistService.getById(id);
+		if(okkiShowlist==null) {
+			return Result.error("未找到对应数据");
+		}
+		return Result.OK(okkiShowlist);
+
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "概览通过主表ID查询")
+	@ApiOperation(value="概览主表ID查询", notes="概览-通主表ID查询")
+	@GetMapping(value = "/queryOkkiOverviewByMainId")
+	public Result<List<OkkiOverview>> queryOkkiOverviewListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiOverview> okkiOverviewList = okkiOverviewService.selectByMainId(id);
+		return Result.OK(okkiOverviewList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "产品通过主表ID查询")
+	@ApiOperation(value="产品主表ID查询", notes="产品-通主表ID查询")
+	@GetMapping(value = "/queryOkkiProductListByMainId")
+	public Result<List<OkkiProductList>> queryOkkiProductListListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiProductList> okkiProductListList = okkiProductListService.selectByMainId(id);
+		return Result.OK(okkiProductListList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "亮点通过主表ID查询")
+	@ApiOperation(value="亮点主表ID查询", notes="亮点-通主表ID查询")
+	@GetMapping(value = "/queryOkkiHighlightByMainId")
+	public Result<List<OkkiHighlight>> queryOkkiHighlightListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiHighlight> okkiHighlightList = okkiHighlightService.selectByMainId(id);
+		return Result.OK(okkiHighlightList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "优势通过主表ID查询")
+	@ApiOperation(value="优势主表ID查询", notes="优势-通主表ID查询")
+	@GetMapping(value = "/queryOkkiAdvantageByMainId")
+	public Result<List<OkkiAdvantage>> queryOkkiAdvantageListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiAdvantage> okkiAdvantageList = okkiAdvantageService.selectByMainId(id);
+		return Result.OK(okkiAdvantageList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "推荐商品列表通过主表ID查询")
+	@ApiOperation(value="推荐商品列表主表ID查询", notes="推荐商品列表-通主表ID查询")
+	@GetMapping(value = "/queryOkkiRecommendedProductsByMainId")
+	public Result<List<OkkiRecommendedProducts>> queryOkkiRecommendedProductsListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiRecommendedProducts> okkiRecommendedProductsList = okkiRecommendedProductsService.selectByMainId(id);
+		return Result.OK(okkiRecommendedProductsList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "关键词通过主表ID查询")
+	@ApiOperation(value="关键词主表ID查询", notes="关键词-通主表ID查询")
+	@GetMapping(value = "/queryOkkiKeywordsByMainId")
+	public Result<List<OkkiKeywords>> queryOkkiKeywordsListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiKeywords> okkiKeywordsList = okkiKeywordsService.selectByMainId(id);
+		return Result.OK(okkiKeywordsList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "关键词系列通过主表ID查询")
+	@ApiOperation(value="关键词系列主表ID查询", notes="关键词系列-通主表ID查询")
+	@GetMapping(value = "/queryOkkiKeywordsSeriesByMainId")
+	public Result<List<OkkiKeywordsSeries>> queryOkkiKeywordsSeriesListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiKeywordsSeries> okkiKeywordsSeriesList = okkiKeywordsSeriesService.selectByMainId(id);
+		return Result.OK(okkiKeywordsSeriesList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "评价通过主表ID查询")
+	@ApiOperation(value="评价主表ID查询", notes="评价-通主表ID查询")
+	@GetMapping(value = "/queryOkkiReviewByMainId")
+	public Result<List<OkkiReview>> queryOkkiReviewListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiReview> okkiReviewList = okkiReviewService.selectByMainId(id);
+		return Result.OK(okkiReviewList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "常见问题通过主表ID查询")
+	@ApiOperation(value="常见问题主表ID查询", notes="常见问题-通主表ID查询")
+	@GetMapping(value = "/queryOkkiFaqByMainId")
+	public Result<List<OkkiFaq>> queryOkkiFaqListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiFaq> okkiFaqList = okkiFaqService.selectByMainId(id);
+		return Result.OK(okkiFaqList);
+	}
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	//@AutoLog(value = "博客通过主表ID查询")
+	@ApiOperation(value="博客主表ID查询", notes="博客-通主表ID查询")
+	@GetMapping(value = "/queryOkkiShowlistBlogByMainId")
+	public Result<List<OkkiShowlistBlog>> queryOkkiShowlistBlogListByMainId(@RequestParam(name="id",required=true) String id) {
+		List<OkkiShowlistBlog> okkiShowlistBlogList = okkiShowlistBlogService.selectByMainId(id);
+		return Result.OK(okkiShowlistBlogList);
+	}
+
+    /**
+    * 导出excel
+    *
+    * @param request
+    * @param okkiShowlist
+    */
+    @RequiresPermissions("showlist:okki_showlist:exportXls")
+    @RequestMapping(value = "/exportXls")
+    public ModelAndView exportXls(HttpServletRequest request, OkkiShowlist okkiShowlist) {
+      // Step.1 组装查询条件查询数据
+      QueryWrapper<OkkiShowlist> queryWrapper = QueryGenerator.initQueryWrapper(okkiShowlist, request.getParameterMap());
+      LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+
+      //配置选中数据查询条件
+       String selections = request.getParameter("selections");
+       if(oConvertUtils.isNotEmpty(selections)) {
+            List<String> selectionList = Arrays.asList(selections.split(","));
+            queryWrapper.in("id",selectionList);
+       }
+       //Step.2 获取导出数据
+       List<OkkiShowlist> okkiShowlistList = okkiShowlistService.list(queryWrapper);
+
+      // Step.3 组装pageList
+      List<OkkiShowlistPage> pageList = new ArrayList<OkkiShowlistPage>();
+      for (OkkiShowlist main : okkiShowlistList) {
+          OkkiShowlistPage vo = new OkkiShowlistPage();
+          BeanUtils.copyProperties(main, vo);
+          List<OkkiOverview> okkiOverviewList = okkiOverviewService.selectByMainId(main.getId());
+          vo.setOkkiOverviewList(okkiOverviewList);
+          List<OkkiProductList> okkiProductListList = okkiProductListService.selectByMainId(main.getId());
+          vo.setOkkiProductListList(okkiProductListList);
+          List<OkkiHighlight> okkiHighlightList = okkiHighlightService.selectByMainId(main.getId());
+          vo.setOkkiHighlightList(okkiHighlightList);
+          List<OkkiAdvantage> okkiAdvantageList = okkiAdvantageService.selectByMainId(main.getId());
+          vo.setOkkiAdvantageList(okkiAdvantageList);
+          List<OkkiRecommendedProducts> okkiRecommendedProductsList = okkiRecommendedProductsService.selectByMainId(main.getId());
+          vo.setOkkiRecommendedProductsList(okkiRecommendedProductsList);
+          List<OkkiKeywords> okkiKeywordsList = okkiKeywordsService.selectByMainId(main.getId());
+          vo.setOkkiKeywordsList(okkiKeywordsList);
+          List<OkkiKeywordsSeries> okkiKeywordsSeriesList = okkiKeywordsSeriesService.selectByMainId(main.getId());
+          vo.setOkkiKeywordsSeriesList(okkiKeywordsSeriesList);
+          List<OkkiReview> okkiReviewList = okkiReviewService.selectByMainId(main.getId());
+          vo.setOkkiReviewList(okkiReviewList);
+          List<OkkiFaq> okkiFaqList = okkiFaqService.selectByMainId(main.getId());
+          vo.setOkkiFaqList(okkiFaqList);
+          List<OkkiShowlistBlog> okkiShowlistBlogList = okkiShowlistBlogService.selectByMainId(main.getId());
+          vo.setOkkiShowlistBlogList(okkiShowlistBlogList);
+          pageList.add(vo);
+      }
+
+      // Step.4 AutoPoi 导出Excel
+      ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+      mv.addObject(NormalExcelConstants.FILE_NAME, "showlist列表");
+      mv.addObject(NormalExcelConstants.CLASS, OkkiShowlistPage.class);
+      mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("showlist数据", "导出人:"+sysUser.getRealname(), "showlist"));
+      mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
+      return mv;
+    }
+
+    /**
+    * 通过excel导入数据
+    *
+    * @param request
+    * @param response
+    * @return
+    */
+    @RequiresPermissions("showlist:okki_showlist:importExcel")
+    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
+      Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
+      for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
+          // 获取上传文件对象
+          MultipartFile file = entity.getValue();
+          ImportParams params = new ImportParams();
+          params.setTitleRows(2);
+          params.setHeadRows(1);
+          params.setNeedSave(true);
+          try {
+              List<OkkiShowlistPage> list = ExcelImportUtil.importExcel(file.getInputStream(), OkkiShowlistPage.class, params);
+              for (OkkiShowlistPage page : list) {
+                  OkkiShowlist po = new OkkiShowlist();
+                  BeanUtils.copyProperties(page, po);
+                  okkiShowlistService.saveMain(po, page.getOkkiOverviewList(),page.getOkkiProductListList(),page.getOkkiHighlightList(),page.getOkkiAdvantageList(),page.getOkkiRecommendedProductsList(),page.getOkkiKeywordsList(),page.getOkkiKeywordsSeriesList(),page.getOkkiReviewList(),page.getOkkiFaqList(),page.getOkkiShowlistBlogList());
+              }
+              return Result.OK("文件导入成功!数据行数:" + list.size());
+          } catch (Exception e) {
+              log.error(e.getMessage(),e);
+              return Result.error("文件导入失败:"+e.getMessage());
+          } finally {
+              try {
+                  file.getInputStream().close();
+              } catch (IOException e) {
+                  e.printStackTrace();
+              }
+          }
+      }
+      return Result.OK("文件导入失败!");
+    }
+
+
+	 /**
+	  * 变更状态
+	  * @param okkiShowlist
+	  * @return
+	  */
+	 @PostMapping(value = "/status")
+	 public Result<String> changeStatus(@RequestBody OkkiShowlist okkiShowlist) throws Exception {
+		 boolean result = okkiShowlistService.changeStatus(okkiShowlist);
+		 if (result) {
+			 return Result.OK("操作成功");
+		 }else {
+			 return Result.error("操作失败");
+		 }
+	 }
+}

+ 72 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiAdvantage.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 优势
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_advantage对象", description="优势")
+@Data
+@TableName("okki_advantage")
+public class OkkiAdvantage implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**组件标题*/
+	@Excel(name = "组件标题", width = 15)
+    @ApiModelProperty(value = "组件标题")
+    private String blockTitle;
+	/**组件内容*/
+	@Excel(name = "组件内容", width = 15)
+    @ApiModelProperty(value = "组件内容")
+    private String blockContent;
+	/**组件图片*/
+	@Excel(name = "组件图片", width = 15)
+    @ApiModelProperty(value = "组件图片")
+    private String blockPic;
+	/**按钮文字*/
+	@Excel(name = "按钮文字", width = 15)
+    @ApiModelProperty(value = "按钮文字")
+    private String buttonName;
+	/**按钮跳转链接*/
+	@Excel(name = "按钮跳转链接", width = 15)
+    @ApiModelProperty(value = "按钮跳转链接")
+    private String buttonUrl;
+}

+ 60 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiFaq.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 常见问题
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_faq对象", description="常见问题")
+@Data
+@TableName("okki_faq")
+public class OkkiFaq implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**问题*/
+	@Excel(name = "问题", width = 15)
+    @ApiModelProperty(value = "问题")
+    private String question;
+	/**答案*/
+	@Excel(name = "答案", width = 15)
+    @ApiModelProperty(value = "答案")
+    private String answer;
+}

+ 72 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiHighlight.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 亮点
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_highlight对象", description="亮点")
+@Data
+@TableName("okki_highlight")
+public class OkkiHighlight implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**组件标题*/
+	@Excel(name = "组件标题", width = 15)
+    @ApiModelProperty(value = "组件标题")
+    private String blockTitle;
+	/**组件内容*/
+	@Excel(name = "组件内容", width = 15)
+    @ApiModelProperty(value = "组件内容")
+    private String blockContent;
+	/**组件图片*/
+	@Excel(name = "组件图片", width = 15)
+    @ApiModelProperty(value = "组件图片")
+    private String blockPic;
+	/**按钮文字*/
+	@Excel(name = "按钮文字", width = 15)
+    @ApiModelProperty(value = "按钮文字")
+    private String buttonName;
+	/**按钮跳转链接*/
+	@Excel(name = "按钮跳转链接", width = 15)
+    @ApiModelProperty(value = "按钮跳转链接")
+    private String buttonUrl;
+}

+ 60 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiKeywords.java

@@ -0,0 +1,60 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 关键词
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_keywords对象", description="关键词")
+@Data
+@TableName("okki_keywords")
+public class OkkiKeywords implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**关键词名*/
+	@Excel(name = "关键词名", width = 15)
+    @ApiModelProperty(value = "关键词名")
+    private String keywordListName;
+	/**关键词链接*/
+	@Excel(name = "关键词链接", width = 15)
+    @ApiModelProperty(value = "关键词链接")
+    private String keywordListLinkUrl;
+}

+ 72 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiKeywordsSeries.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 关键词系列
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_keywords_series对象", description="关键词系列")
+@Data
+@TableName("okki_keywords_series")
+public class OkkiKeywordsSeries implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**关键词标题*/
+	@Excel(name = "关键词标题", width = 15)
+    @ApiModelProperty(value = "关键词标题")
+    private String keywordsTitle;
+	/**关键词名1*/
+	@Excel(name = "关键词名1", width = 15)
+    @ApiModelProperty(value = "关键词名1")
+    private String keywordListName1;
+	/**关键词链接1*/
+	@Excel(name = "关键词链接1", width = 15)
+    @ApiModelProperty(value = "关键词链接1")
+    private String keywordListLinkUrl1;
+	/**关键词名2*/
+	@Excel(name = "关键词名2", width = 15)
+    @ApiModelProperty(value = "关键词名2")
+    private String keywordListName2;
+	/**关键词链接2*/
+	@Excel(name = "关键词链接2", width = 15)
+    @ApiModelProperty(value = "关键词链接2")
+    private String keywordListLinkUrl2;
+}

+ 76 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiOverview.java

@@ -0,0 +1,76 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 概览
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_overview对象", description="概览")
+@Data
+@TableName("okki_overview")
+public class OkkiOverview implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**概览类型*/
+	@Excel(name = "概览类型", width = 15, dicCode = "overview_type")
+    @ApiModelProperty(value = "概览类型")
+    private Integer overviewType;
+	/**概览标题*/
+	@Excel(name = "概览标题", width = 15)
+    @ApiModelProperty(value = "概览标题")
+    private String title;
+	/**概览内容*/
+	@Excel(name = "概览内容", width = 15)
+    @ApiModelProperty(value = "概览内容")
+    private String content;
+	/**概览图片链接*/
+	@Excel(name = "概览图片链接", width = 15)
+    @ApiModelProperty(value = "概览图片链接")
+    private String pic;
+	/**按钮文字*/
+	@Excel(name = "按钮文字", width = 15)
+    @ApiModelProperty(value = "按钮文字")
+    private String buttonName;
+	/**按钮跳转链接*/
+	@Excel(name = "按钮跳转链接", width = 15)
+    @ApiModelProperty(value = "按钮跳转链接")
+    private String buttonUrl;
+}

+ 72 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiProductList.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 产品
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_product_list对象", description="产品")
+@Data
+@TableName("okki_product_list")
+public class OkkiProductList implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**产品列表类型*/
+	@Excel(name = "产品列表类型", width = 15, dicCode = "product_list_type")
+    @ApiModelProperty(value = "产品列表类型")
+    private Integer productListType;
+	/**标题*/
+	@Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String title;
+	/**字幕*/
+	@Excel(name = "字幕", width = 15)
+    @ApiModelProperty(value = "字幕")
+    private String subtitles;
+	/**商品pid*/
+	@Excel(name = "商品pid", width = 15)
+    @ApiModelProperty(value = "商品pid")
+    private String pidList;
+	/**商品分类sid*/
+	@Excel(name = "商品分类sid", width = 15)
+    @ApiModelProperty(value = "商品分类sid")
+    private Integer sid;
+}

+ 72 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiRecommendedProducts.java

@@ -0,0 +1,72 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 推荐商品列表
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_recommended_products对象", description="推荐商品列表")
+@Data
+@TableName("okki_recommended_products")
+public class OkkiRecommendedProducts implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属shouwlist*/
+    @ApiModelProperty(value = "所属shouwlist")
+    private String okkiShowlistId;
+	/**类型*/
+	@Excel(name = "类型", width = 15, dicCode = "product_list_type")
+    @ApiModelProperty(value = "类型")
+    private Integer productListType;
+	/**标题*/
+	@Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String title;
+	/**字幕*/
+	@Excel(name = "字幕", width = 15)
+    @ApiModelProperty(value = "字幕")
+    private String subtitles;
+	/**商品pid*/
+	@Excel(name = "商品pid", width = 15)
+    @ApiModelProperty(value = "商品pid")
+    private String pidList;
+	/**商品分类sid*/
+	@Excel(name = "商品分类sid", width = 15)
+    @ApiModelProperty(value = "商品分类sid")
+    private Integer sid;
+}

+ 64 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiReview.java

@@ -0,0 +1,64 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 评价
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_review对象", description="评价")
+@Data
+@TableName("okki_review")
+public class OkkiReview implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**评价内容*/
+	@Excel(name = "评价内容", width = 15)
+    @ApiModelProperty(value = "评价内容")
+    private String reviewListContent;
+	/**头像*/
+	@Excel(name = "头像", width = 15)
+    @ApiModelProperty(value = "头像")
+    private String reviewListAvatarUrl;
+	/**评价人*/
+	@Excel(name = "评价人", width = 15)
+    @ApiModelProperty(value = "评价人")
+    private String reviewListName;
+}

+ 166 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlist.java

@@ -0,0 +1,166 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: showlist
+ * @Author: jeecg-boot
+ * @Date:   2024-05-15
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_showlist对象", description="showlist")
+@Data
+@TableName("okki_showlist")
+public class OkkiShowlist implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**站点id*/
+	@Excel(name = "站点id", width = 15)
+    @ApiModelProperty(value = "站点id")
+    private Integer siteId;
+	/**页面路径*/
+	@Excel(name = "页面路径", width = 15)
+    @ApiModelProperty(value = "页面路径")
+    private String url;
+	/**结构化数据*/
+	@Excel(name = "结构化数据", width = 15)
+    @ApiModelProperty(value = "结构化数据")
+    private String jsonLd;
+	/**询盘的板式*/
+	@Excel(name = "询盘的板式", width = 15, dicCode = "inquiry_type")
+    @Dict(dicCode = "inquiry_type")
+    @ApiModelProperty(value = "询盘的板式")
+    private Integer inquiryType;
+	/**ai检测分数*/
+	@Excel(name = "ai检测分数", width = 15)
+    @ApiModelProperty(value = "ai检测分数")
+    private Integer reportScore;
+	/**ai检测报告地址*/
+	@Excel(name = "ai检测报告地址", width = 15)
+    @ApiModelProperty(value = "ai检测报告地址")
+    private Integer reportLink;
+	/**亮点标题*/
+	@Excel(name = "亮点标题", width = 15)
+    @ApiModelProperty(value = "亮点标题")
+    private String highlightTitle;
+	/**亮点简介*/
+	@Excel(name = "亮点简介", width = 15)
+    @ApiModelProperty(value = "亮点简介")
+    private String highlightContent;
+	/**亮点布局文字对齐方式*/
+	@Excel(name = "亮点布局文字对齐方式", width = 15, dicCode = "layout_alignment")
+    @Dict(dicCode = "layout_alignment")
+    @ApiModelProperty(value = "亮点布局文字对齐方式")
+    private Integer highlightLayoutAlignment;
+	/**亮点布局每行列数*/
+	@Excel(name = "亮点布局每行列数", width = 15, dicCode = "layout_columns_per_row")
+    @Dict(dicCode = "layout_columns_per_row")
+    @ApiModelProperty(value = "亮点布局每行列数")
+    private Integer highlightLayoutColumnsPerRow;
+	/**优势标题*/
+	@Excel(name = "优势标题", width = 15)
+    @ApiModelProperty(value = "优势标题")
+    private String advantageTitle;
+	/**优势内容*/
+	@Excel(name = "优势内容", width = 15)
+    @ApiModelProperty(value = "优势内容")
+    private String advantageContent;
+	/**优势布局文字对齐方式*/
+	@Excel(name = "优势布局文字对齐方式", width = 15, dicCode = "layout_alignment")
+    @Dict(dicCode = "layout_alignment")
+    @ApiModelProperty(value = "优势布局文字对齐方式")
+    private Integer advantageLayoutAlignment;
+	/**优势布局每行列数*/
+	@Excel(name = "优势布局每行列数", width = 15, dicCode = "layout_columns_per_row")
+    @Dict(dicCode = "layout_columns_per_row")
+    @ApiModelProperty(value = "优势布局每行列数")
+    private Integer advantageLayoutColumnsPerRow;
+	/**关键词标题*/
+	@Excel(name = "关键词标题", width = 15)
+    @ApiModelProperty(value = "关键词标题")
+    private String keywordsTitle;
+	/**关键词系列标题*/
+	@Excel(name = "关键词系列标题", width = 15)
+    @ApiModelProperty(value = "关键词系列标题")
+    private String keywordsSeriesTitle;
+	/**关键词系列排版结构*/
+	@Excel(name = "关键词系列排版结构", width = 15, dicCode = "layout_type")
+    @Dict(dicCode = "layout_type")
+    @ApiModelProperty(value = "关键词系列排版结构")
+    private Integer keywordsSeriesLayoutType;
+	/**评价标题*/
+	@Excel(name = "评价标题", width = 15)
+    @ApiModelProperty(value = "评价标题")
+    private String reviewTitle;
+	/**评价字幕*/
+	@Excel(name = "评价字幕", width = 15)
+    @ApiModelProperty(value = "评价字幕")
+    private String reviewSubtitles;
+	/**评价布局文字对齐方式*/
+	@Excel(name = "评价布局文字对齐方式", width = 15, dicCode = "layout_alignment")
+    @Dict(dicCode = "layout_alignment")
+    @ApiModelProperty(value = "评价布局文字对齐方式")
+    private Integer reviewLayoutAlignment;
+	/**评价布局每行列数*/
+	@Excel(name = "评价布局每行列数", width = 15, dicCode = "layout_columns_per_row")
+    @Dict(dicCode = "layout_columns_per_row")
+    @ApiModelProperty(value = "评价布局每行列数")
+    private Integer reviewLayoutColumnsPerRow;
+	/**faq标题*/
+	@Excel(name = "faq标题", width = 15)
+    @ApiModelProperty(value = "faq标题")
+    private String faqTitle;
+	/**faq字幕*/
+	@Excel(name = "faq字幕", width = 15)
+    @ApiModelProperty(value = "faq字幕")
+    private String faqSubtitles;
+	/**showlist标题*/
+	@Excel(name = "showlist标题", width = 15)
+    @ApiModelProperty(value = "showlist标题")
+    private String tdkTitle;
+	/**showlist描述*/
+	@Excel(name = "showlist描述", width = 15)
+    @ApiModelProperty(value = "showlist描述")
+    private String tdkDescription;
+	/**showlist关键词*/
+	@Excel(name = "showlist关键词", width = 15)
+    @ApiModelProperty(value = "showlist关键词")
+    private String tdkKeywords;
+	/**同步状态*/
+	@Excel(name = "同步状态", width = 15, dicCode = "blog_status")
+    @Dict(dicCode = "blog_status")
+    @ApiModelProperty(value = "同步状态")
+    private Integer status;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+}

+ 68 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/entity/OkkiShowlistBlog.java

@@ -0,0 +1,68 @@
+package org.jeecg.modules.okki.showlist.entity;
+
+import java.io.Serializable;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import java.io.UnsupportedEncodingException;
+
+/**
+ * @Description: 博客
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+@ApiModel(value="okki_showlist_blog对象", description="博客")
+@Data
+@TableName("okki_showlist_blog")
+public class OkkiShowlistBlog implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+	/**主键*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键")
+    private String id;
+	/**创建人*/
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+	/**创建日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "创建日期")
+    private Date createTime;
+	/**更新人*/
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+	/**更新日期*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "更新日期")
+    private Date updateTime;
+	/**所属showlist*/
+    @ApiModelProperty(value = "所属showlist")
+    private String okkiShowlistId;
+	/**标题*/
+	@Excel(name = "标题", width = 15)
+    @ApiModelProperty(value = "标题")
+    private String title;
+	/**文字对齐方式*/
+	@Excel(name = "文字对齐方式", width = 15, dicCode = "layout_alignment")
+    @ApiModelProperty(value = "文字对齐方式")
+    private Integer layoutAlignment;
+	/**每行列数*/
+	@Excel(name = "每行列数", width = 15, dicCode = "layout_columns_per_row")
+    @ApiModelProperty(value = "每行列数")
+    private Integer layoutColumnsPerRow;
+	/**博客列表*/
+	@Excel(name = "博客列表", width = 15)
+    @ApiModelProperty(value = "博客列表")
+    private String blogList;
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiAdvantageMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiAdvantage;
+
+import java.util.List;
+
+/**
+ * @Description: 优势
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiAdvantageMapper extends BaseMapper<OkkiAdvantage> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiAdvantage>
+   */
+	public List<OkkiAdvantage> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiFaqMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiFaq;
+
+import java.util.List;
+
+/**
+ * @Description: 常见问题
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiFaqMapper extends BaseMapper<OkkiFaq> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiFaq>
+   */
+	public List<OkkiFaq> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiHighlightMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiHighlight;
+
+import java.util.List;
+
+/**
+ * @Description: 亮点
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiHighlightMapper extends BaseMapper<OkkiHighlight> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiHighlight>
+   */
+	public List<OkkiHighlight> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiKeywordsMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiKeywords;
+
+import java.util.List;
+
+/**
+ * @Description: 关键词
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiKeywordsMapper extends BaseMapper<OkkiKeywords> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiKeywords>
+   */
+	public List<OkkiKeywords> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiKeywordsSeriesMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiKeywordsSeries;
+
+import java.util.List;
+
+/**
+ * @Description: 关键词系列
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiKeywordsSeriesMapper extends BaseMapper<OkkiKeywordsSeries> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiKeywordsSeries>
+   */
+	public List<OkkiKeywordsSeries> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiOverviewMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiOverview;
+
+import java.util.List;
+
+/**
+ * @Description: 概览
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiOverviewMapper extends BaseMapper<OkkiOverview> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiOverview>
+   */
+	public List<OkkiOverview> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiProductListMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiProductList;
+
+import java.util.List;
+
+/**
+ * @Description: 产品
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiProductListMapper extends BaseMapper<OkkiProductList> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiProductList>
+   */
+	public List<OkkiProductList> selectByMainId(@Param("mainId") String mainId);
+}

+ 31 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiRecommendedProductsMapper.java

@@ -0,0 +1,31 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import java.util.List;
+import org.jeecg.modules.okki.showlist.entity.OkkiRecommendedProducts;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @Description: 推荐商品列表
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiRecommendedProductsMapper extends BaseMapper<OkkiRecommendedProducts> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiRecommendedProducts>
+   */
+	public List<OkkiRecommendedProducts> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiReviewMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiReview;
+
+import java.util.List;
+
+/**
+ * @Description: 评价
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiReviewMapper extends BaseMapper<OkkiReview> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiReview>
+   */
+	public List<OkkiReview> selectByMainId(@Param("mainId") String mainId);
+}

+ 32 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiShowlistBlogMapper.java

@@ -0,0 +1,32 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.okki.showlist.entity.OkkiShowlistBlog;
+
+import java.util.List;
+
+/**
+ * @Description: 博客
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiShowlistBlogMapper extends BaseMapper<OkkiShowlistBlog> {
+
+	/**
+	 * 通过主表id删除子表数据
+	 *
+	 * @param mainId 主表id
+	 * @return boolean
+	 */
+	public boolean deleteByMainId(@Param("mainId") String mainId);
+
+  /**
+   * 通过主表id查询子表数据
+   *
+   * @param mainId 主表id
+   * @return List<OkkiShowlistBlog>
+   */
+	public List<OkkiShowlistBlog> selectByMainId(@Param("mainId") String mainId);
+}

+ 14 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/OkkiShowlistMapper.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.okki.showlist.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.okki.showlist.entity.OkkiShowlist;
+
+/**
+ * @Description: showlist
+ * @Author: jeecg-boot
+ * @Date:   2024-05-14
+ * @Version: V1.0
+ */
+public interface OkkiShowlistMapper extends BaseMapper<OkkiShowlist> {
+
+}

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiAdvantageMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiAdvantageMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_advantage 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiAdvantage">
+		SELECT * 
+		FROM  okki_advantage
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiFaqMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiFaqMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_faq 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiFaq">
+		SELECT * 
+		FROM  okki_faq
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiHighlightMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiHighlightMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_highlight 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiHighlight">
+		SELECT * 
+		FROM  okki_highlight
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiKeywordsMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiKeywordsMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_keywords 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiKeywords">
+		SELECT * 
+		FROM  okki_keywords
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiKeywordsSeriesMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiKeywordsSeriesMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_keywords_series 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiKeywordsSeries">
+		SELECT * 
+		FROM  okki_keywords_series
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiOverviewMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiOverviewMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_overview 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiOverview">
+		SELECT * 
+		FROM  okki_overview
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiProductListMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiProductListMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_product_list 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiProductList">
+		SELECT * 
+		FROM  okki_product_list
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiRecommendedProductsMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiRecommendedProductsMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_recommended_products 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiRecommendedProducts">
+		SELECT * 
+		FROM  okki_recommended_products
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiReviewMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiReviewMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_review 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiReview">
+		SELECT * 
+		FROM  okki_review
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 16 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiShowlistBlogMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiShowlistBlogMapper">
+
+	<delete id="deleteByMainId" parameterType="java.lang.String">
+		DELETE 
+		FROM  okki_showlist_blog 
+		WHERE
+			 okki_showlist_id = #{mainId} 	</delete>
+	
+	<select id="selectByMainId" parameterType="java.lang.String" resultType="org.jeecg.modules.okki.showlist.entity.OkkiShowlistBlog">
+		SELECT * 
+		FROM  okki_showlist_blog
+		WHERE
+			 okki_showlist_id = #{mainId} 	</select>
+</mapper>

+ 5 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/mapper/xml/OkkiShowlistMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.okki.showlist.mapper.OkkiShowlistMapper">
+
+</mapper>

+ 17 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/AdvantageParam.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AdvantageParam {
+
+    private String title;
+
+    private String content;
+
+    private LayoutParam layout;
+
+    private List<BlockParam> block;
+}

+ 15 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlockParam.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class BlockParam {
+
+    private String title;
+
+    private String content;
+
+    private String pic;
+
+    private ButtonParam button;
+}

+ 13 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/BlogParam.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class BlogParam {
+
+    private String title;
+
+    private LayoutParam layout;
+
+    private String[] blog_list;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ButtonParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class ButtonParam {
+
+    private String name;
+
+    private String url;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqListParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class FaqListParam {
+
+    private String question;
+
+    private String answer;
+}

+ 15 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/FaqParam.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class FaqParam {
+
+    private String title;
+
+    private String subtitles;
+
+    private List<FaqListParam> faq_list;
+}

+ 17 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/HighlightParam.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class HighlightParam {
+
+    private String title;
+
+    private String content;
+
+    private LayoutParam layout;
+
+    private List<BlockParam> block;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordListParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class KeywordListParam {
+
+    private String name;
+
+    private String link_url;
+}

+ 15 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordSeriesParam.java

@@ -0,0 +1,15 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class KeywordSeriesParam {
+
+    private String title;
+
+    private Integer layout_type;
+
+    private List<KeywordsParam> keywords;
+}

+ 13 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/KeywordsParam.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class KeywordsParam {
+
+    private String title;
+
+    private List<KeywordListParam> keyword_list;
+}

+ 11 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/LayoutParam.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class LayoutParam {
+
+    private Integer alignment;
+
+    private Integer columns_per_row;
+}

+ 17 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/OverviewParam.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class OverviewParam {
+
+    private Integer overview_type;
+
+    private String title;
+
+    private String content;
+
+    private String pic;
+
+    private ButtonParam button;
+}

+ 17 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ProductParam.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class ProductParam {
+
+    private Integer product_list_type;
+
+    private String title;
+
+    private String subtitles;
+
+    private String[] pid_list;
+
+    private Integer sid;
+}

+ 46 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/PushShowlistParam.java

@@ -0,0 +1,46 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PushShowlistParam {
+
+    /** 主键id,小满根据此字段判断是插入还是更新*/
+    private String showlist_id;
+
+    private String url;
+
+    private String json_ld;
+
+    private OverviewParam overview;
+
+    private ProductParam product_list;
+
+    private HighlightParam highlight;
+
+    private List<AdvantageParam> advantage;
+
+    private ProductParam recommended_products;
+
+    private KeywordsParam keywords;
+
+    private KeywordSeriesParam keyword_series;
+
+    private ReviewParam review;
+
+    private FaqParam faq;
+
+    private BlogParam blog;
+
+    private TdkParam tdk;
+
+    private Integer inquiry_type;
+
+    private Integer report_score;
+
+    private String report_link;
+
+
+}

+ 13 - 0
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/showlist/param/ReviewListParam.java

@@ -0,0 +1,13 @@
+package org.jeecg.modules.okki.showlist.param;
+
+import lombok.Data;
+
+@Data
+public class ReviewListParam {
+
+    private String content;
+
+    private String avatar_url;
+
+    private String name;
+}

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů