Parcourir la source

:zap: 精力手表旧版本

Twelve615 il y a 1 an
Parent
commit
9835c8ed42
62 fichiers modifiés avec 1540 ajouts et 889 suppressions
  1. 1 1
      jlsb-vue/.env
  2. 2 1
      jlsb-vue/.env.development
  3. 1 1
      jlsb-vue/.env.production
  4. 1 1
      jlsb-vue/.env.test
  5. 3 3
      jlsb-vue/public/index.html
  6. BIN
      jlsb-vue/public/logo.png
  7. BIN
      jlsb-vue/src/assets/logo-white.png
  8. BIN
      jlsb-vue/src/assets/logo-white1.png
  9. BIN
      jlsb-vue/src/assets/logo.png
  10. 0 1
      jlsb-vue/src/assets/logo.svg
  11. BIN
      jlsb-vue/src/assets/logo1.png
  12. 0 172
      jlsb-vue/src/assets/logo1.svg
  13. 5 0
      jlsb-vue/src/components/jeecg/JFormContainer.vue
  14. 28 1
      jlsb-vue/src/components/jeecg/JTreeSelect.vue
  15. 15 3
      jlsb-vue/src/components/jeecg/JUpload.vue
  16. 1 1
      jlsb-vue/src/components/layouts/TabLayout.vue
  17. 1 1
      jlsb-vue/src/components/page/GlobalHeader.vue
  18. 1 1
      jlsb-vue/src/components/tools/Logo.vue
  19. 2 2
      jlsb-vue/src/defaultSettings.js
  20. 1 1
      jlsb-vue/src/utils/request.js
  21. 8 2
      jlsb-vue/src/views/aa/AaCommodityFlList.vue
  22. 2 2
      jlsb-vue/src/views/aa/AaCommodityList.vue
  23. 7 7
      jlsb-vue/src/views/aa/AaNewsFlList.vue
  24. 4 4
      jlsb-vue/src/views/aa/AaNewsList.vue
  25. 30 25
      jlsb-vue/src/views/aa/AaPosterList.vue
  26. 124 26
      jlsb-vue/src/views/aa/AaSlideshowList.vue
  27. 4 4
      jlsb-vue/src/views/aa/DB.vue
  28. 12 3
      jlsb-vue/src/views/aa/LXWM.vue
  29. 2 2
      jlsb-vue/src/views/aa/PZ.vue
  30. 24 4
      jlsb-vue/src/views/aa/modules/AaCommodityFlModal.vue
  31. 23 8
      jlsb-vue/src/views/aa/modules/AaCommodityForm.vue
  32. 4 4
      jlsb-vue/src/views/aa/modules/AaNewsFlModal.vue
  33. 22 12
      jlsb-vue/src/views/aa/modules/AaNewsForm.vue
  34. 24 8
      jlsb-vue/src/views/aa/modules/AaPosterForm.vue
  35. 58 23
      jlsb-vue/src/views/aa/modules/AaSlideshowForm.vue
  36. 1 1
      jlsb-vue/vue.config.js
  37. 339 339
      jlsb-vue/yarn.lock
  38. 1 1
      jlsb/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
  39. 6 2
      jlsb/jeecg-boot-base/jeecg-boot-base-tools/pom.xml
  40. 5 1
      jlsb/jeecg-boot-module-system/pom.xml
  41. 253 56
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/APIIndexenterController.java
  42. 9 8
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaNewsController.java
  43. 14 3
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaPlatFormParameterController.java
  44. 45 22
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaSlideshowController.java
  45. 4 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaCommodity.java
  46. 31 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaCommodityFl.java
  47. 12 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaNews.java
  48. 12 1
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaPlatformParameter.java
  49. 14 10
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaPoster.java
  50. 42 32
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaSlideshow.java
  51. 1 1
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/mapper/xml/AaSlideshowMapper.xml
  52. 9 4
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaCommodityFlService.java
  53. 8 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaCommodityService.java
  54. 11 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaNewsService.java
  55. 45 5
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaCommodityFlServiceImpl.java
  56. 9 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaCommodityServiceImpl.java
  57. 38 0
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaNewsServiceImpl.java
  58. 125 8
      jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java
  59. 2 1
      jlsb/jeecg-boot-module-system/src/main/resources/application-dev.yml
  60. 12 10
      jlsb/jeecg-boot-module-system/src/main/resources/application-prod.yml
  61. 69 58
      jlsb/jeecg-boot-module-system/src/main/resources/application-test.yml
  62. 13 2
      jlsb/pom.xml

+ 1 - 1
jlsb-vue/.env

@@ -1,5 +1,5 @@
 NODE_ENV=production
 NODE_ENV=production
-VUE_APP_PLATFORM_NAME=精利手表平台
+VUE_APP_PLATFORM_NAME=巴博斯手表平台
 # 开启单点登录
 # 开启单点登录
 VUE_APP_SSO=false
 VUE_APP_SSO=false
 # 开启微应用模式
 # 开启微应用模式

+ 2 - 1
jlsb-vue/.env.development

@@ -1,5 +1,6 @@
 NODE_ENV=development
 NODE_ENV=development
-VUE_APP_API_BASE_URL=http://localhost:9999/
+# VUE_APP_API_BASE_URL=http://localhost:9999/
+VUE_APP_API_BASE_URL=http://120.79.86.50:9999/
 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
 
 

+ 1 - 1
jlsb-vue/.env.production

@@ -1,4 +1,4 @@
 NODE_ENV=production
 NODE_ENV=production
-VUE_APP_API_BASE_URL=http://8.134.179.70:9999/
+VUE_APP_API_BASE_URL=http://127.0.0.1:9999/
 VUE_APP_CAS_BASE_URL=http://127.0.0.1:8888/cas
 VUE_APP_CAS_BASE_URL=http://127.0.0.1:8888/cas
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview

+ 1 - 1
jlsb-vue/.env.test

@@ -1,4 +1,4 @@
 NODE_ENV=production
 NODE_ENV=production
-VUE_APP_API_BASE_URL=http://boot.jeecg.com:8080/jeecg-boot
+VUE_APP_API_BASE_URL=http://120.79.86.50:9999/
 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview

+ 3 - 3
jlsb-vue/public/index.html

@@ -5,8 +5,8 @@
   <meta charset="utf-8">
   <meta charset="utf-8">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
   <meta name="viewport" content="width=device-width,initial-scale=1.0">
-  <title>精利手表平台</title>
-<!--  <link rel="icon" href="<%= BASE_URL %>logo.png">-->
+  <title>巴博斯手表平台</title>
+  <link rel="icon" href="<%= BASE_URL %>logo.png">
   <script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
   <script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
   <style>
   <style>
     html,
     html,
@@ -249,7 +249,7 @@
     <div id="loader"></div>
     <div id="loader"></div>
     <div class="loader-section section-left"></div>
     <div class="loader-section section-left"></div>
     <div class="loader-section section-right"></div>
     <div class="loader-section section-right"></div>
-    <div class="load_title">正在加载 精利手表平台,请耐心等待
+    <div class="load_title">正在加载 巴博斯手表平台,请耐心等待
 
 
     </div>
     </div>
   </div>
   </div>

BIN
jlsb-vue/public/logo.png


BIN
jlsb-vue/src/assets/logo-white.png


BIN
jlsb-vue/src/assets/logo-white1.png


BIN
jlsb-vue/src/assets/logo.png


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
jlsb-vue/src/assets/logo.svg


BIN
jlsb-vue/src/assets/logo1.png


+ 0 - 172
jlsb-vue/src/assets/logo1.svg

@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="293px" height="293px" viewBox="0 0 293 293" enable-background="new 0 0 293 293" xml:space="preserve">  <image id="image0" width="293" height="293" x="0" y="0"
-    href="data:image/png;base64,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
-OjAwP26CAAAAAABJRU5ErkJggg==" />
-</svg>

+ 5 - 0
jlsb-vue/src/components/jeecg/JFormContainer.vue

@@ -37,6 +37,7 @@
 <style>
 <style>
   .jeecg-form-container-disabled{
   .jeecg-form-container-disabled{
     cursor: not-allowed;
     cursor: not-allowed;
+    z-index: 20;
   }
   }
   .jeecg-form-container-disabled fieldset[disabled] {
   .jeecg-form-container-disabled fieldset[disabled] {
     -ms-pointer-events: none;
     -ms-pointer-events: none;
@@ -58,4 +59,8 @@
   .jeecg-form-container-disabled .ant-upload-list-item .anticon-close{
   .jeecg-form-container-disabled .ant-upload-list-item .anticon-close{
     display: none;
     display: none;
   }
   }
+  /*解决tinymce富文本编辑器在禁用状态下无法滚动文本框的问题*/
+  .jeecg-form-container-disabled .tox .tox-sidebar-wrap {
+    z-index: 25;
+  }
 </style>
 </style>

+ 28 - 1
jlsb-vue/src/components/jeecg/JTreeSelect.vue

@@ -74,7 +74,12 @@
         type: Boolean,
         type: Boolean,
         default: false,
         default: false,
         required:false
         required:false
-      }
+      },
+      // 是否只选择子节点,为True时只有叶子节点可以选择
+      chooseChild: {
+        type: Boolean,
+        default: false,
+      },
     },
     },
     data () {
     data () {
       return {
       return {
@@ -156,8 +161,14 @@
                 i.value = i.key
                 i.value = i.key
                 if(i.leaf==false){
                 if(i.leaf==false){
                   i.isLeaf=false
                   i.isLeaf=false
+                  if(this.chooseChild) {
+                    i.selectable = false;
+                  }
                 }else if(i.leaf==true){
                 }else if(i.leaf==true){
                   i.isLeaf=true
                   i.isLeaf=true
+                  if(this.chooseChild && i.parentId ==='0') {
+                    i.selectable = false;
+                  }
                 }
                 }
               }
               }
               this.addChildren(pid,res.result,this.treeData)
               this.addChildren(pid,res.result,this.treeData)
@@ -173,14 +184,24 @@
             if(item.key == pid){
             if(item.key == pid){
               if(!children || children.length==0){
               if(!children || children.length==0){
                 item.isLeaf=true
                 item.isLeaf=true
+                if(this.chooseChild && item.parentId ==='0') {
+                  children.selectable = false;
+                }
               }else{
               }else{
                 item.children = children
                 item.children = children
+                if(this.chooseChild) {
+                  item.selectable = false;
+                }
               }
               }
               break
               break
             }else{
             }else{
               this.addChildren(pid,children,item.children)
               this.addChildren(pid,children,item.children)
             }
             }
           }
           }
+        } else {
+          if(this.chooseChild && children.parentId ==='0') {
+            children.selectable = false;
+          }
         }
         }
       },
       },
       loadRoot(){
       loadRoot(){
@@ -199,8 +220,14 @@
               i.value = i.key
               i.value = i.key
               if(i.leaf==false){
               if(i.leaf==false){
                 i.isLeaf=false
                 i.isLeaf=false
+                if(this.chooseChild) {
+                  i.selectable = false;
+                }
               }else if(i.leaf==true){
               }else if(i.leaf==true){
                 i.isLeaf=true
                 i.isLeaf=true
+                if(this.chooseChild && i.parentId ==='0') {
+                  i.selectable = false;
+                }
               }
               }
             }
             }
             this.treeData = [...res.result]
             this.treeData = [...res.result]

+ 15 - 3
jlsb-vue/src/components/jeecg/JUpload.vue

@@ -130,6 +130,12 @@
         required:false,
         required:false,
         default: 0
         default: 0
       },
       },
+      //返回最新的文件
+      reNewFile:{
+        type:Boolean,
+        required:false,
+        default: false
+      },
       buttonVisible:{
       buttonVisible:{
         type:Boolean,
         type:Boolean,
         required:false,
         required:false,
@@ -240,8 +246,14 @@
           }
           }
           // update-end-author:lvdandan date:20200603 for:【TESTA-514】【开源issue】多个文件同时上传时,控制台报错
           // update-end-author:lvdandan date:20200603 for:【TESTA-514】【开源issue】多个文件同时上传时,控制台报错
         }
         }
-        if(arr.length>0){
-          path = arr.join(",")
+        if (!this.reNewFile){
+          if(arr.length>0){
+            path = arr.join(",")
+          }
+        } else {
+          if(arr.length>0){
+            path = arr[arr.length - 1];
+          }
         }
         }
         this.$emit('change', path);
         this.$emit('change', path);
       },
       },
@@ -394,7 +406,7 @@
           this.moveDisplay = 'none';
           this.moveDisplay = 'none';
         });
         });
       }
       }
-    
+
       let picList = document.getElementById(this.containerId)?document.getElementById(this.containerId).getElementsByClassName('ant-upload-list-picture-card'):[];
       let picList = document.getElementById(this.containerId)?document.getElementById(this.containerId).getElementsByClassName('ant-upload-list-picture-card'):[];
       if(picList && picList.length>0){
       if(picList && picList.length>0){
         picList[0].addEventListener('mouseover',(ev)=>{
         picList[0].addEventListener('mouseover',(ev)=>{

+ 1 - 1
jlsb-vue/src/components/layouts/TabLayout.vue

@@ -177,7 +177,7 @@
 
 
       // update-begin-author:sunjianlei date:20200120 for: 动态更改页面标题
       // update-begin-author:sunjianlei date:20200120 for: 动态更改页面标题
       changeTitle(title) {
       changeTitle(title) {
-        let projectTitle = "精利手表平台"
+        let projectTitle = "巴博斯手表平台"
         // 首页特殊处理
         // 首页特殊处理
         if (this.$route.path === indexKey) {
         if (this.$route.path === indexKey) {
           document.title = projectTitle
           document.title = projectTitle

+ 1 - 1
jlsb-vue/src/components/page/GlobalHeader.vue

@@ -17,7 +17,7 @@
         :type="collapsed ? 'menu-unfold' : 'menu-fold'"
         :type="collapsed ? 'menu-unfold' : 'menu-fold'"
         @click="toggle"/>
         @click="toggle"/>
 
 
-      <span v-if="device === 'desktop'">欢迎进入 精利手表 平台</span>
+      <span v-if="device === 'desktop'">欢迎进入 巴博斯手表 平台</span>
 <!--      <span v-else>Jeecg-Boot</span>-->
 <!--      <span v-else>Jeecg-Boot</span>-->
 
 
       <user-menu :theme="theme"/>
       <user-menu :theme="theme"/>

+ 1 - 1
jlsb-vue/src/components/tools/Logo.vue

@@ -21,7 +21,7 @@
     props: {
     props: {
       title: {
       title: {
         type: String,
         type: String,
-        default: '精利手表',
+        default: '巴博斯手表',
         required: false
         required: false
       },
       },
       showTitle: {
       showTitle: {

+ 2 - 2
jlsb-vue/src/defaultSettings.js

@@ -14,8 +14,8 @@
  */
  */
 
 
 export default {
 export default {
-  primaryColor: '#1890FF', // primary color of ant design
-  navTheme: 'light', // theme for nav menu
+  primaryColor: '#bf242b', // primary color of ant design
+  navTheme: 'dark', // theme for nav menu
   layout: 'sidemenu', // nav menu position: sidemenu or topmenu
   layout: 'sidemenu', // nav menu position: sidemenu or topmenu
   contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu
   contentWidth: 'Fixed', // layout of content: Fluid or Fixed, only works when layout is topmenu
   fixedHeader: false, // sticky header
   fixedHeader: false, // sticky header

+ 1 - 1
jlsb-vue/src/utils/request.js

@@ -18,7 +18,7 @@ const service = axios.create({
   //baseURL: '/jeecg-boot',
   //baseURL: '/jeecg-boot',
   baseURL: apiBaseUrl, // api base_url
   baseURL: apiBaseUrl, // api base_url
   // timeout: 9000 // 请求超时时间
   // timeout: 9000 // 请求超时时间
-  timeout: 15000 // 请求超时时间
+  timeout: 30000 // 请求超时时间
 })
 })
 
 
 const err = (error) => {
 const err = (error) => {

+ 8 - 2
jlsb-vue/src/views/aa/AaCommodityFlList.vue

@@ -135,11 +135,11 @@
             align:"left",
             align:"left",
             dataIndex: 'nameEnglish'
             dataIndex: 'nameEnglish'
           },
           },
-          {
+/*           {
             title:'分类名称德语',
             title:'分类名称德语',
             align:"left",
             align:"left",
             dataIndex: 'nameGerman'
             dataIndex: 'nameGerman'
-          },
+          }, */
           {
           {
             title:'分类图片',
             title:'分类图片',
             align:"left",
             align:"left",
@@ -147,6 +147,12 @@
             scopedSlots: {customRender: 'imgSlot'}
             scopedSlots: {customRender: 'imgSlot'}
           },
           },
           {
           {
+            title:'顶部背景资源',
+            align:"left",
+            dataIndex: 'assets',
+            scopedSlots: {customRender: 'fileSlot'}
+          },
+          {
             title:'创建时间',
             title:'创建时间',
             align:"left",
             align:"left",
             dataIndex: 'createTime'
             dataIndex: 'createTime'

+ 2 - 2
jlsb-vue/src/views/aa/AaCommodityList.vue

@@ -232,8 +232,8 @@
         fieldList.push({type:'BigDecimal',value:'price',text:'价格',dictCode:''})
         fieldList.push({type:'BigDecimal',value:'price',text:'价格',dictCode:''})
         fieldList.push({type:'string',value:'typeId',text:'分类'})
         fieldList.push({type:'string',value:'typeId',text:'分类'})
         fieldList.push({type:'Text',value:'introduce',text:'介绍',dictCode:''})
         fieldList.push({type:'Text',value:'introduce',text:'介绍',dictCode:''})
-        fieldList.push({type:'string',value:'introducePic',text:'介绍图片',dictCode:''})
-        fieldList.push({type:'string',value:'pics',text:'图片集',dictCode:''})
+        // fieldList.push({type:'string',value:'introducePic',text:'介绍图片',dictCode:''})
+        // fieldList.push({type:'string',value:'pics',text:'图片集',dictCode:''})
         fieldList.push({type:'string',value:'modelNumber',text:'型号',dictCode:''})
         fieldList.push({type:'string',value:'modelNumber',text:'型号',dictCode:''})
         fieldList.push({type:'Text',value:'copyWriter',text:'文案',dictCode:''})
         fieldList.push({type:'Text',value:'copyWriter',text:'文案',dictCode:''})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})

+ 7 - 7
jlsb-vue/src/views/aa/AaNewsFlList.vue

@@ -27,12 +27,12 @@
     <!-- 操作按钮区域 -->
     <!-- 操作按钮区域 -->
     <div class="table-operator">
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增一级</a-button>
       <a-button @click="handleAdd" type="primary" icon="plus">新增一级</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('新闻分类')">导出</a-button>
+<!--      <a-button type="primary" icon="download" @click="handleExportXls('新闻分类')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--      </a-upload>-->
 <!--      </a-upload>-->
       <!-- 高级查询区域 -->
       <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+<!--      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
       <a-dropdown v-if="selectedRowKeys.length > 0">
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
@@ -130,22 +130,22 @@
             align:"left",
             align:"left",
             dataIndex: 'name'
             dataIndex: 'name'
           },
           },
-          {
+/*           {
             title:'分类图片',
             title:'分类图片',
             align:"left",
             align:"left",
             dataIndex: 'pic',
             dataIndex: 'pic',
             scopedSlots: {customRender: 'imgSlot'}
             scopedSlots: {customRender: 'imgSlot'}
-          },
+          }, */
           {
           {
             title:'分类名称英语',
             title:'分类名称英语',
             align:"left",
             align:"left",
             dataIndex: 'nameEnglish'
             dataIndex: 'nameEnglish'
           },
           },
-          {
+/*           {
             title:'分类名称德语',
             title:'分类名称德语',
             align:"left",
             align:"left",
             dataIndex: 'nameGerman'
             dataIndex: 'nameGerman'
-          },
+          }, */
           {
           {
             title:'创建时间',
             title:'创建时间',
             align:"left",
             align:"left",
@@ -374,7 +374,7 @@
         fieldList.push({type:'string',value:'pic',text:'分类图片',dictCode:''})
         fieldList.push({type:'string',value:'pic',text:'分类图片',dictCode:''})
         fieldList.push({type:'string',value:'name',text:'分类名称',dictCode:''})
         fieldList.push({type:'string',value:'name',text:'分类名称',dictCode:''})
         fieldList.push({type:'string',value:'nameEnglish',text:'分类名称英语',dictCode:''})
         fieldList.push({type:'string',value:'nameEnglish',text:'分类名称英语',dictCode:''})
-        fieldList.push({type:'string',value:'nameGerman',text:'分类名称德语',dictCode:''})
+        // fieldList.push({type:'string',value:'nameGerman',text:'分类名称德语',dictCode:''})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
         this.superFieldList = fieldList
         this.superFieldList = fieldList
       }
       }

+ 4 - 4
jlsb-vue/src/views/aa/AaNewsList.vue

@@ -34,12 +34,12 @@
     <!-- 操作按钮区域 -->
     <!-- 操作按钮区域 -->
     <div class="table-operator">
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('新闻列表')">导出</a-button>
+<!--      <a-button type="primary" icon="download" @click="handleExportXls('新闻列表')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--      </a-upload>-->
 <!--      </a-upload>-->
       <!-- 高级查询区域 -->
       <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+<!--      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
       <a-dropdown v-if="selectedRowKeys.length > 0">
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
@@ -206,10 +206,10 @@
         fieldList.push({type:'string',value:'pic',text:'新闻缩略图',dictCode:''})
         fieldList.push({type:'string',value:'pic',text:'新闻缩略图',dictCode:''})
         fieldList.push({type:'string',value:'title',text:'新闻标题',dictCode:''})
         fieldList.push({type:'string',value:'title',text:'新闻标题',dictCode:''})
         fieldList.push({type:'string',value:'titleEnglish',text:'新闻标题英语',dictCode:''})
         fieldList.push({type:'string',value:'titleEnglish',text:'新闻标题英语',dictCode:''})
-        fieldList.push({type:'string',value:'titleGerman',text:'新闻标题德语',dictCode:''})
+        // fieldList.push({type:'string',value:'titleGerman',text:'新闻标题德语',dictCode:''})
         fieldList.push({type:'Text',value:'content',text:'新闻内容',dictCode:''})
         fieldList.push({type:'Text',value:'content',text:'新闻内容',dictCode:''})
         fieldList.push({type:'Text',value:'contentEnglish',text:'新闻内容英语',dictCode:''})
         fieldList.push({type:'Text',value:'contentEnglish',text:'新闻内容英语',dictCode:''})
-        fieldList.push({type:'Text',value:'contentGerman',text:'新闻内容德语',dictCode:''})
+        // fieldList.push({type:'Text',value:'contentGerman',text:'新闻内容德语',dictCode:''})
         fieldList.push({type:'int',value:'weight',text:'权重',dictCode:''})
         fieldList.push({type:'int',value:'weight',text:'权重',dictCode:''})
         fieldList.push({type:'string',value:'typeId',text:'分类'})
         fieldList.push({type:'string',value:'typeId',text:'分类'})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
         fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})

+ 30 - 25
jlsb-vue/src/views/aa/AaPosterList.vue

@@ -5,8 +5,8 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
         <a-row :gutter="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="海报名称">
-              <a-input placeholder="请输入海报名称" v-model="queryParam.name"></a-input>
+            <a-form-item label="资源名称">
+              <a-input placeholder="请输入资源名称" v-model="queryParam.name"></a-input>
             </a-form-item>
             </a-form-item>
           </a-col>
           </a-col>
           <a-col :xl="10" :lg="11" :md="12" :sm="24">
           <a-col :xl="10" :lg="11" :md="12" :sm="24">
@@ -34,26 +34,26 @@
     <!-- 操作按钮区域 -->
     <!-- 操作按钮区域 -->
     <div class="table-operator">
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('海报管理')">导出</a-button>
+<!--      <a-button type="primary" icon="download" @click="handleExportXls('海报管理')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--      </a-upload>-->
 <!--      </a-upload>-->
       <!-- 高级查询区域 -->
       <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
-      <a-dropdown v-if="selectedRowKeys.length > 0">
-        <a-menu slot="overlay">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
-        </a-menu>
-        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
-      </a-dropdown>
+<!--      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
+<!--      <a-dropdown v-if="selectedRowKeys.length > 0">-->
+<!--        <a-menu slot="overlay">-->
+<!--          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>-->
+<!--        </a-menu>-->
+<!--        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>-->
+<!--      </a-dropdown>-->
     </div>
     </div>
 
 
     <!-- table区域-begin -->
     <!-- table区域-begin -->
     <div>
     <div>
-      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+<!--      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
         <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
         <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
         <a style="margin-left: 24px" @click="onClearSelected">清空</a>
-      </div>
+      </div>-->
 
 
       <a-table
       <a-table
         ref="table"
         ref="table"
@@ -65,10 +65,9 @@
         :dataSource="dataSource"
         :dataSource="dataSource"
         :pagination="ipagination"
         :pagination="ipagination"
         :loading="loading"
         :loading="loading"
-        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
         class="j-table-force-nowrap"
         class="j-table-force-nowrap"
         @change="handleTableChange">
         @change="handleTableChange">
-
+        <!--        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"-->
         <template slot="htmlSlot" slot-scope="text">
         <template slot="htmlSlot" slot-scope="text">
           <div v-html="text"></div>
           <div v-html="text"></div>
         </template>
         </template>
@@ -99,7 +98,7 @@
               <a-menu-item>
               <a-menu-item>
                 <a @click="handleDetail(record)">详情</a>
                 <a @click="handleDetail(record)">详情</a>
               </a-menu-item>
               </a-menu-item>
-              <a-menu-item>
+              <a-menu-item v-if="staticId.indexOf(record.id)<0">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
                   <a>删除</a>
                   <a>删除</a>
                 </a-popconfirm>
                 </a-popconfirm>
@@ -130,7 +129,8 @@
     },
     },
     data () {
     data () {
       return {
       return {
-        description: '海报管理管理页面',
+        staticId: ['1734144586119450625'],
+        description: '页面顶部资源管理页面',
         // 表头
         // 表头
         columns: [
         columns: [
           {
           {
@@ -144,17 +144,22 @@
             }
             }
           },
           },
           {
           {
-            title:'海报名称',
+            title:'资源名称',
             align:"center",
             align:"center",
             dataIndex: 'name'
             dataIndex: 'name'
           },
           },
           {
           {
-            title:'海报图',
+            title:'资源名称英文',
             align:"center",
             align:"center",
-            dataIndex: 'cover',
-            scopedSlots: {customRender: 'imgSlot'}
+            dataIndex: 'nameEnglish'
           },
           },
           {
           {
+            title:'资源连接',
+            align:"center",
+            dataIndex: 'cover',
+            scopedSlots: {customRender: 'fileSlot'}
+          },
+/*           {
             title:'链接',
             title:'链接',
             align:"center",
             align:"center",
             dataIndex: 'link'
             dataIndex: 'link'
@@ -163,7 +168,7 @@
             title:'权重',
             title:'权重',
             align:"center",
             align:"center",
             dataIndex: 'sort'
             dataIndex: 'sort'
-          },
+          }, */
           {
           {
             title:'创建时间',
             title:'创建时间',
             align:"center",
             align:"center",
@@ -204,10 +209,10 @@
       },
       },
       getSuperFieldList(){
       getSuperFieldList(){
         let fieldList=[];
         let fieldList=[];
-        fieldList.push({type:'string',value:'name',text:'海报名称',dictCode:''})
-        fieldList.push({type:'string',value:'cover',text:'海报图',dictCode:''})
-        fieldList.push({type:'string',value:'link',text:'链接',dictCode:''})
-        fieldList.push({type:'int',value:'sort',text:'权重',dictCode:''})
+        fieldList.push({type:'string',value:'name',text:'资源名称',dictCode:''})
+        fieldList.push({type:'string',value:'cover',text:'资源链接',dictCode:''})
+        // fieldList.push({type:'string',value:'link',text:'链接',dictCode:''})
+        // fieldList.push({type:'int',value:'sort',text:'权重',dictCode:''})
         fieldList.push({type:'date',value:'createTime',text:'创建时间'})
         fieldList.push({type:'date',value:'createTime',text:'创建时间'})
         this.superFieldList = fieldList
         this.superFieldList = fieldList
       }
       }

+ 124 - 26
jlsb-vue/src/views/aa/AaSlideshowList.vue

@@ -5,17 +5,24 @@
       <a-form layout="inline" @keyup.enter.native="searchQuery">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
         <a-row :gutter="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
-            <a-form-item label="腕表介绍图名称">
-              <a-input placeholder="请输入轮播名称" v-model="queryParam.name"></a-input>
+            <a-form-item label="轮播页名称">
+              <a-input placeholder="请输入轮播名称" v-model="queryParam.name"></a-input>
             </a-form-item>
             </a-form-item>
           </a-col>
           </a-col>
-          <a-col :xl="10" :lg="11" :md="12" :sm="24">
-            <a-form-item label="创建时间">
-              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间" class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
-              <span class="query-group-split-cust"></span>
-              <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间" class="query-group-cust" v-model="queryParam.createTime_end"></j-date>
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="所属系列">
+              <j-dict-select-tag placeholder="请选择所属系列" v-model="queryParam.seriesId" dictCode="aa_commodity_fl,name,id"/>
             </a-form-item>
             </a-form-item>
           </a-col>
           </a-col>
+          <template v-if="toggleSearchStatus">
+            <a-col :xl="10" :lg="11" :md="12" :sm="24">
+              <a-form-item label="创建时间">
+                <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择开始时间" class="query-group-cust" v-model="queryParam.createTime_begin"></j-date>
+                <span class="query-group-split-cust"></span>
+                <j-date :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择结束时间" class="query-group-cust" v-model="queryParam.createTime_end"></j-date>
+              </a-form-item>
+            </a-col>
+          </template>
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
           <a-col :xl="6" :lg="7" :md="8" :sm="24">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
@@ -34,12 +41,18 @@
     <!-- 操作按钮区域 -->
     <!-- 操作按钮区域 -->
     <div class="table-operator">
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
       <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
-      <a-button type="primary" icon="download" @click="handleExportXls('腕表介绍图管理')">导出</a-button>
+      <a-popconfirm v-has="'aa:slideshow:clear:cache'" placement="top" ok-text="确定" cancel-text="取消" @confirm="()=>handleClearCache()">
+        <template slot="title">
+          <p>确认清理首页缓存数据吗?</p>
+        </template>
+        <a-button :loading="loadingCleanCacheBtn"  type="danger" icon="warning">清理缓存</a-button>
+      </a-popconfirm>
+<!--      <a-button type="primary" icon="download" @click="handleExportXls('轮播页管理')">导出</a-button>-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--      <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--        <a-button type="primary" icon="import">导入</a-button>-->
 <!--      </a-upload>-->
 <!--      </a-upload>-->
       <!-- 高级查询区域 -->
       <!-- 高级查询区域 -->
-      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>
+<!--      <j-super-query :fieldList="superFieldList" ref="superQueryModal" @handleSuperQuery="handleSuperQuery"></j-super-query>-->
       <a-dropdown v-if="selectedRowKeys.length > 0">
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay">
         <a-menu slot="overlay">
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
           <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
@@ -72,6 +85,12 @@
         <template slot="htmlSlot" slot-scope="text">
         <template slot="htmlSlot" slot-scope="text">
           <div v-html="text"></div>
           <div v-html="text"></div>
         </template>
         </template>
+        <template slot="enableSlot" slot-scope="text">
+          <div v-html=""></div>
+          <a-tag :color="text === '已启用'?'blue':'red'">
+            {{text}}
+          </a-tag>
+        </template>
         <template slot="imgSlot" slot-scope="text">
         <template slot="imgSlot" slot-scope="text">
           <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
           <span v-if="!text" style="font-size: 12px;font-style: italic;">无图片</span>
           <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
           <img v-else :src="getImgView(text)" height="25px" alt="" style="max-width:80px;font-size: 12px;font-style: italic;"/>
@@ -90,6 +109,7 @@
         </template>
         </template>
 
 
         <span slot="action" slot-scope="text, record">
         <span slot="action" slot-scope="text, record">
+          <a @click="handleEnable(record)" :style="{color:record.enable==='0'?'':'red'}">{{record.enable==='0'?'启用':'禁用'}}</a>&nbsp;&nbsp;
           <a @click="handleEdit(record)">编辑</a>
           <a @click="handleEdit(record)">编辑</a>
 
 
           <a-divider type="vertical" />
           <a-divider type="vertical" />
@@ -121,6 +141,9 @@
   import { mixinDevice } from '@/utils/mixin'
   import { mixinDevice } from '@/utils/mixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import { JeecgListMixin } from '@/mixins/JeecgListMixin'
   import AaSlideshowModal from './modules/AaSlideshowModal'
   import AaSlideshowModal from './modules/AaSlideshowModal'
+  import {filterMultiDictText} from '@/components/dict/JDictSelectUtil'
+  import { getAction, postAction, putAction } from '@/api/manage'
+
 
 
   export default {
   export default {
     name: 'AaSlideshowList',
     name: 'AaSlideshowList',
@@ -130,7 +153,7 @@
     },
     },
     data () {
     data () {
       return {
       return {
-        description: '腕表介绍管理管理页面',
+        description: '轮播页管理管理页面',
         // 表头
         // 表头
         columns: [
         columns: [
           {
           {
@@ -144,31 +167,72 @@
             }
             }
           },
           },
           {
           {
-            title:'腕表介绍名称',
+            title:'轮播页名称',
             align:"center",
             align:"center",
+            sorter: true,
             dataIndex: 'name'
             dataIndex: 'name'
           },
           },
           {
           {
-            title:'腕表介绍图',
+            title:'轮播资源',
             align:"center",
             align:"center",
             dataIndex: 'cover',
             dataIndex: 'cover',
-            scopedSlots: {customRender: 'imgSlot'}
+            scopedSlots: {customRender: 'fileSlot'}
           },
           },
           {
           {
-            title:'链接',
+            title:'所属系列',
             align:"center",
             align:"center",
-            dataIndex: 'link'
+            sorter: true,
+            dataIndex: 'seriesId_dictText'
           },
           },
           {
           {
-            title:'权重',
+            title:'是否启用',
             align:"center",
             align:"center",
-            dataIndex: 'sort'
+            sorter: true,
+            dataIndex: 'enable_dictText',
+            scopedSlots: {customRender: 'enableSlot'}
+          },
+          {
+            title:'排序',
+            align:"center",
+            sorter: true,
+            dataIndex: 'sort',
+            width:60,
           },
           },
+          // {
+          //   title:'轮播页名称英语',
+          //   align:"center",
+          //   dataIndex: 'nameEnglish'
+          // },
+          // {
+          //   title:'轮播页名称德语',
+          //   align:"center",
+          //   dataIndex: 'nameGerman'
+          // },
           {
           {
-            title:'创建时间',
+            title:'描述',
             align:"center",
             align:"center",
-            dataIndex: 'createTime'
+            dataIndex: 'description'
           },
           },
+          // {
+          //   title:'描述英语',
+          //   align:"center",
+          //   dataIndex: 'descriptionEnglish'
+          // },
+          // {
+          //   title:'描述德语',
+          //   align:"center",
+          //   dataIndex: 'descriptionGerman'
+          // },
+          // {
+          //   title:'修改时间',
+          //   align:"center",
+          //   dataIndex: 'updateTime'
+          // },
+          // {
+          //   title:'创建时间',
+          //   align:"center",
+          //   dataIndex: 'createTime'
+          // },
           {
           {
             title: '操作',
             title: '操作',
             dataIndex: 'action',
             dataIndex: 'action',
@@ -181,13 +245,15 @@
         url: {
         url: {
           list: "/aa/aaSlideshow/list",
           list: "/aa/aaSlideshow/list",
           delete: "/aa/aaSlideshow/delete",
           delete: "/aa/aaSlideshow/delete",
+          update: "/aa/aaSlideshow/edit",
           deleteBatch: "/aa/aaSlideshow/deleteBatch",
           deleteBatch: "/aa/aaSlideshow/deleteBatch",
           exportXlsUrl: "/aa/aaSlideshow/exportXls",
           exportXlsUrl: "/aa/aaSlideshow/exportXls",
           importExcelUrl: "aa/aaSlideshow/importExcel",
           importExcelUrl: "aa/aaSlideshow/importExcel",
-
+          clearCache: "aa/aaSlideshow/clearCache",
         },
         },
         dictOptions:{},
         dictOptions:{},
         superFieldList:[],
         superFieldList:[],
+        loadingCleanCacheBtn: false
       }
       }
     },
     },
     created() {
     created() {
@@ -203,13 +269,45 @@
       },
       },
       getSuperFieldList(){
       getSuperFieldList(){
         let fieldList=[];
         let fieldList=[];
-        fieldList.push({type:'string',value:'name',text:'腕表介绍名称',dictCode:''})
-        fieldList.push({type:'string',value:'cover',text:'腕表介绍图',dictCode:''})
-        fieldList.push({type:'string',value:'link',text:'链接',dictCode:''})
-        fieldList.push({type:'int',value:'sort',text:'权重',dictCode:''})
-        fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
+        fieldList.push({type:'string',value:'name',text:'轮播页名称',dictCode:''})
+        fieldList.push({type:'string',value:'cover',text:'轮播资源',dictCode:''})
+        fieldList.push({type:'string',value:'seriesId',text:'所属系列',dictCode:"aa_commodity_fl,name,id"})
+        fieldList.push({type:'int',value:'sort',text:'排序',dictCode:''})
+        fieldList.push({type:'string',value:'nameEnglish',text:'轮播页名称英语',dictCode:''})
+        // fieldList.push({type:'string',value:'nameGerman',text:'轮播页名称德语',dictCode:''})
+        fieldList.push({type:'string',value:'description',text:'描述',dictCode:''})
+        fieldList.push({type:'string',value:'descriptionEnglish',text:'描述英语',dictCode:''})
+        // fieldList.push({type:'string',value:'descriptionGerman',text:'描述德语',dictCode:''})
+        // fieldList.push({type:'datetime',value:'updateTime',text:'修改时间'})
+        // fieldList.push({type:'datetime',value:'createTime',text:'创建时间'})
         this.superFieldList = fieldList
         this.superFieldList = fieldList
-      }
+      },
+      handleEnable(record){
+        this.loading = true
+        let param = { id: record['id'], enable: record['enable'] === '0' ? '1' : '0' }
+        postAction(this.url.update, param).then(res => {
+          if (res.success) {
+            this.$message.success(param.enable === '1' ? '启用成功!' : '禁用成功!')
+          } else {
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
+          this.searchQuery();
+        })
+      },
+      handleClearCache(){
+        this.loadingCleanCacheBtn = true
+        getAction(this.url.clearCache, {}).then(res => {
+          if (res.success) {
+            this.$message.success(res.message)
+          } else {
+            this.$message.warning(res.message)
+          }
+        }).finally(() => {
+          this.loadingCleanCacheBtn = false
+        })
+      },
     }
     }
   }
   }
 </script>
 </script>

+ 4 - 4
jlsb-vue/src/views/aa/DB.vue

@@ -35,13 +35,13 @@
           </a-col>
           </a-col>
         </a-row>
         </a-row>
 
 
-        <a-row :gutter='24'>
+<!--        <a-row :gutter='24'>
           <a-col :span='24'>
           <a-col :span='24'>
             <a-form-model-item label='手表列表顶部标题德语' style='min-height: 60px'>
             <a-form-model-item label='手表列表顶部标题德语' style='min-height: 60px'>
               <a-input v-model='commodityTitleGerman' placeholder='请输入手表列表顶部标题德语'></a-input>
               <a-input v-model='commodityTitleGerman' placeholder='请输入手表列表顶部标题德语'></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-        </a-row>
+        </a-row>-->
 
 
         <a-row :gutter='24'>
         <a-row :gutter='24'>
           <a-col :span='24'>
           <a-col :span='24'>
@@ -59,13 +59,13 @@
           </a-col>
           </a-col>
         </a-row>
         </a-row>
 
 
-        <a-row :gutter='24'>
+<!--        <a-row :gutter='24'>
           <a-col :span='24'>
           <a-col :span='24'>
             <a-form-model-item label='手表列表顶部文案德语' style='min-height: 60px'>
             <a-form-model-item label='手表列表顶部文案德语' style='min-height: 60px'>
               <a-input v-model='commodityWaGerman' placeholder='请输入手表列表顶部文案德语'></a-input>
               <a-input v-model='commodityWaGerman' placeholder='请输入手表列表顶部文案德语'></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-        </a-row>
+        </a-row>-->
 
 
 
 
 
 

+ 12 - 3
jlsb-vue/src/views/aa/LXWM.vue

@@ -35,15 +35,22 @@
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
         </a-row>
         </a-row>
+        <a-row :gutter='24'>
+          <a-col :span='24'>
+            <a-form-model-item label='微信二维码' style='min-height: 60px'>
+              <j-image-upload v-model="wechatQrCode"></j-image-upload>
+            </a-form-model-item>
+          </a-col>
+        </a-row>
 
 
 
 
-        <a-row :gutter='24'>
+<!--        <a-row :gutter='24'>
           <a-col :span='24'>
           <a-col :span='24'>
             <a-form-model-item label='备注文案德语' style='min-height: 60px'>
             <a-form-model-item label='备注文案德语' style='min-height: 60px'>
               <a-input v-model='remarkWenanGerman' placeholder='请输入备注文案德语'></a-input>
               <a-input v-model='remarkWenanGerman' placeholder='请输入备注文案德语'></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-        </a-row>
+        </a-row>-->
         <a-button type='primary' @click='subButt()'>保存配置</a-button>
         <a-button type='primary' @click='subButt()'>保存配置</a-button>
       </a-form-model>
       </a-form-model>
     </div>
     </div>
@@ -94,7 +101,7 @@ export default {
       remarkWenan: '',
       remarkWenan: '',
       remarkWenanEnglish: '',
       remarkWenanEnglish: '',
       remarkWenanGerman: '',
       remarkWenanGerman: '',
-
+      wechatQrCode:'',
 
 
       selectList: [],
       selectList: [],
       selectedDepUsers: '',
       selectedDepUsers: '',
@@ -124,6 +131,7 @@ export default {
         that.remarkWenan = res.result.remarkWenan
         that.remarkWenan = res.result.remarkWenan
         that.remarkWenanEnglish = res.result.remarkWenanEnglish
         that.remarkWenanEnglish = res.result.remarkWenanEnglish
         that.remarkWenanGerman = res.result.remarkWenanGerman
         that.remarkWenanGerman = res.result.remarkWenanGerman
+        that.wechatQrCode = res.result.wechatQrCode
 
 
 
 
         that.pid = res.result.id
         that.pid = res.result.id
@@ -145,6 +153,7 @@ export default {
         remarkWenan: that.remarkWenan,
         remarkWenan: that.remarkWenan,
         remarkWenanEnglish: that.remarkWenanEnglish,
         remarkWenanEnglish: that.remarkWenanEnglish,
         remarkWenanGerman: that.remarkWenanGerman,
         remarkWenanGerman: that.remarkWenanGerman,
+        wechatQrCode: that.wechatQrCode,
 
 
       }, 'post').then((res) => {
       }, 'post').then((res) => {
         if (res.success) {
         if (res.success) {

+ 2 - 2
jlsb-vue/src/views/aa/PZ.vue

@@ -58,7 +58,7 @@
         <a-divider>英语END</a-divider>
         <a-divider>英语END</a-divider>
 
 
 
 
-        <a-row :gutter="24">
+<!--        <a-row :gutter="24">
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="使用条款德语" style="min-height: 300px" prop="jEditor">
             <a-form-model-item label="使用条款德语" style="min-height: 300px" prop="jEditor">
               <j-editor v-model="formData.jEditor111"/>
               <j-editor v-model="formData.jEditor111"/>
@@ -83,7 +83,7 @@
           </a-col>
           </a-col>
         </a-row>
         </a-row>
         <a-divider>德语END</a-divider>
         <a-divider>德语END</a-divider>
-
+-->
         <a-button type="primary" @click='subButt()'>保存配置</a-button>
         <a-button type="primary" @click='subButt()'>保存配置</a-button>
       </a-form-model>
       </a-form-model>
     </div>
     </div>

+ 24 - 4
jlsb-vue/src/views/aa/modules/AaCommodityFlModal.vue

@@ -11,7 +11,7 @@
     <a-spin :spinning="confirmLoading">
     <a-spin :spinning="confirmLoading">
       <a-form-model ref="form" :model="model" :rules="validatorRules">
       <a-form-model ref="form" :model="model" :rules="validatorRules">
         <a-form-model-item label="分类图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
         <a-form-model-item label="分类图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
-          <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
+          <j-image-upload isMultiple :number="2"  v-model="model.pic" ></j-image-upload>
         </a-form-model-item>
         </a-form-model-item>
         <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
         <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
           <a-input v-model="model.name" placeholder="请输入分类名称" ></a-input>
           <a-input v-model="model.name" placeholder="请输入分类名称" ></a-input>
@@ -19,8 +19,20 @@
         <a-form-model-item label="分类名称-英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
         <a-form-model-item label="分类名称-英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
           <a-input v-model="model.nameEnglish" placeholder="请输入分类名称" ></a-input>
           <a-input v-model="model.nameEnglish" placeholder="请输入分类名称" ></a-input>
         </a-form-model-item>
         </a-form-model-item>
-        <a-form-model-item label="分类名称-德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
+<!--        <a-form-model-item label="分类名称-德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
           <a-input v-model="model.nameGerman" placeholder="请输入分类名称" ></a-input>
           <a-input v-model="model.nameGerman" placeholder="请输入分类名称" ></a-input>
+        </a-form-model-item>-->
+        <a-form-model-item label="分类描述" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="des">
+          <a-input v-model="model.des" placeholder="分类描述" ></a-input>
+        </a-form-model-item>
+        <a-form-model-item label="分类描述-英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="des">
+          <a-input v-model="model.desEnglish" placeholder="分类描述" ></a-input>
+        </a-form-model-item>
+        <a-form-model-item v-if="!model.pid || model.pid === '0'" label="顶部背景资源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="assets">
+          <j-upload v-model="model.assets" :reNewFile="true" :multiple="false" :beforeUpload="this.beforeUploadHandler" ></j-upload>
+          <template slot="extra">
+            <span>推荐比例16:9</span>
+          </template>
         </a-form-model-item>
         </a-form-model-item>
       </a-form-model>
       </a-form-model>
     </a-spin>
     </a-spin>
@@ -53,6 +65,7 @@
 
 
         confirmLoading: false,
         confirmLoading: false,
         validatorRules: {
         validatorRules: {
+          des: { pattern: /^.{0,500}$/, message: '不能超过500个字符' }
         },
         },
         url: {
         url: {
           add: "/aa/aaCommodityFl/add",
           add: "/aa/aaCommodityFl/add",
@@ -141,8 +154,15 @@
             }
             }
           }
           }
         }
         }
-      }
-
+      },
+      beforeUploadHandler(file) {
+        let fileType = file.type;
+        if(fileType.indexOf('image')<0 && fileType.indexOf('video')<0){
+          this.$message.warning('请上传图片或视频');
+          return false;
+        }
+        return true;
+      },
 
 
     }
     }
   }
   }

+ 23 - 8
jlsb-vue/src/views/aa/modules/AaCommodityForm.vue

@@ -13,22 +13,27 @@
               <a-input v-model="model.nameEnglish" placeholder="请输入名称"  ></a-input>
               <a-input v-model="model.nameEnglish" placeholder="请输入名称"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
+<!--          <a-col :span="24">
             <a-form-model-item label="名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
             <a-form-model-item label="名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
               <a-input v-model="model.nameGerman" placeholder="请输入名称"  ></a-input>
               <a-input v-model="model.nameGerman" placeholder="请输入名称"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
-          <a-col :span="24">
+          </a-col>-->
+<!--          <a-col :span="24">
             <a-form-model-item label="防伪码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="securityCode">
             <a-form-model-item label="防伪码" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="securityCode">
               <a-input v-model="model.securityCode" placeholder="请输入防伪码"  ></a-input>
               <a-input v-model="model.securityCode" placeholder="请输入防伪码"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
             <a-form-model-item label="图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
               <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
               <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
+            <a-form-model-item label="视频" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="video">
+              <j-upload v-model="model.video" :reNewFile="true" :multiple="false" :beforeUpload="this.beforeUploadHandler" ></j-upload>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
             <a-form-model-item label="价格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="price">
             <a-form-model-item label="价格" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="price">
               <a-input-number v-model="model.price" placeholder="请输入价格" style="width: 100%" />
               <a-input-number v-model="model.price" placeholder="请输入价格" style="width: 100%" />
             </a-form-model-item>
             </a-form-model-item>
@@ -36,10 +41,12 @@
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="分类" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="typeId">
             <a-form-model-item label="分类" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="typeId">
   	          <j-tree-select
   	          <j-tree-select
+                :choose-child="true"
                 ref="treeSelect"
                 ref="treeSelect"
                 placeholder="请选择分类"
                 placeholder="请选择分类"
                 v-model="model.typeId"
                 v-model="model.typeId"
                 dict="aa_commodity_fl,name,id"
                 dict="aa_commodity_fl,name,id"
+                :hasChildField="'has_child'"
                 pidValue="0"
                 pidValue="0"
                 >
                 >
               </j-tree-select>
               </j-tree-select>
@@ -55,11 +62,11 @@
               <a-textarea v-model="model.introduceEnglish" rows="4" placeholder="请输入介绍" />
               <a-textarea v-model="model.introduceEnglish" rows="4" placeholder="请输入介绍" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
+<!--          <a-col :span="24">
             <a-form-model-item label="介绍德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="introduce">
             <a-form-model-item label="介绍德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="introduce">
               <a-textarea v-model="model.introduceGerman" rows="4" placeholder="请输入介绍" />
               <a-textarea v-model="model.introduceGerman" rows="4" placeholder="请输入介绍" />
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="介绍图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="introducePic">
             <a-form-model-item label="介绍图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="introducePic">
               <j-image-upload isMultiple  v-model="model.introducePic" ></j-image-upload>
               <j-image-upload isMultiple  v-model="model.introducePic" ></j-image-upload>
@@ -85,11 +92,11 @@
               <j-editor v-model="model.copyWriterEnglish" />
               <j-editor v-model="model.copyWriterEnglish" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
+<!--          <a-col :span="24">
             <a-form-model-item label="文案德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="copyWriter">
             <a-form-model-item label="文案德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="copyWriter">
               <j-editor v-model="model.copyWriterGerman" />
               <j-editor v-model="model.copyWriterGerman" />
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
         </a-row>
         </a-row>
       </a-form-model>
       </a-form-model>
     </j-form-container>
     </j-form-container>
@@ -211,6 +218,14 @@
 
 
         })
         })
       },
       },
+      beforeUploadHandler(file) {
+        let fileType = file.type;
+        if(fileType.indexOf('video')<0){
+          this.$message.warning('请上传视频文件');
+          return false;
+        }
+        return true;
+      },
     }
     }
   }
   }
 </script>
 </script>

+ 4 - 4
jlsb-vue/src/views/aa/modules/AaNewsFlModal.vue

@@ -10,18 +10,18 @@
     cancelText="关闭">
     cancelText="关闭">
     <a-spin :spinning="confirmLoading">
     <a-spin :spinning="confirmLoading">
       <a-form-model ref="form" :model="model" :rules="validatorRules">
       <a-form-model ref="form" :model="model" :rules="validatorRules">
-        <a-form-model-item label="分类图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
+<!--        <a-form-model-item label="分类图片" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
           <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
           <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
-        </a-form-model-item>
+        </a-form-model-item>-->
         <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
         <a-form-model-item label="分类名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
           <a-input v-model="model.name" placeholder="请输入分类名称" ></a-input>
           <a-input v-model="model.name" placeholder="请输入分类名称" ></a-input>
         </a-form-model-item>
         </a-form-model-item>
         <a-form-model-item label="分类名称英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameEnglish">
         <a-form-model-item label="分类名称英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameEnglish">
           <a-input v-model="model.nameEnglish" placeholder="请输入分类名称英语" ></a-input>
           <a-input v-model="model.nameEnglish" placeholder="请输入分类名称英语" ></a-input>
         </a-form-model-item>
         </a-form-model-item>
-        <a-form-model-item label="分类名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameGerman">
+<!--        <a-form-model-item label="分类名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameGerman">
           <a-input v-model="model.nameGerman" placeholder="请输入分类名称德语" ></a-input>
           <a-input v-model="model.nameGerman" placeholder="请输入分类名称德语" ></a-input>
-        </a-form-model-item>
+        </a-form-model-item>-->
 
 
       </a-form-model>
       </a-form-model>
     </a-spin>
     </a-spin>

+ 22 - 12
jlsb-vue/src/views/aa/modules/AaNewsForm.vue

@@ -5,7 +5,7 @@
         <a-row>
         <a-row>
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="新闻缩略图" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
             <a-form-model-item label="新闻缩略图" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="pic">
-              <j-image-upload isMultiple  v-model="model.pic" ></j-image-upload>
+              <j-image-upload isMultiple :number="1"  v-model="model.pic" ></j-image-upload>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
@@ -18,11 +18,11 @@
               <a-input v-model="model.titleEnglish" placeholder="请输入新闻标题英语"  ></a-input>
               <a-input v-model="model.titleEnglish" placeholder="请输入新闻标题英语"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
+<!--          <a-col :span="24">
             <a-form-model-item label="新闻标题德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="titleGerman">
             <a-form-model-item label="新闻标题德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="titleGerman">
               <a-input v-model="model.titleGerman" placeholder="请输入新闻标题德语"  ></a-input>
               <a-input v-model="model.titleGerman" placeholder="请输入新闻标题德语"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="新闻内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="content">
             <a-form-model-item label="新闻内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="content">
               <j-editor v-model="model.content" />
               <j-editor v-model="model.content" />
@@ -33,11 +33,11 @@
               <j-editor v-model="model.contentEnglish" />
               <j-editor v-model="model.contentEnglish" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
+<!--          <a-col :span="24">
             <a-form-model-item label="新闻内容德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentGerman">
             <a-form-model-item label="新闻内容德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="contentGerman">
               <j-editor v-model="model.contentGerman" />
               <j-editor v-model="model.contentGerman" />
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
           <a-col :span="24">
           <a-col :span="24">
             <a-form-model-item label="权重" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weight">
             <a-form-model-item label="权重" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="weight">
               <a-input-number v-model="model.weight" placeholder="请输入权重" style="width: 100%" />
               <a-input-number v-model="model.weight" placeholder="请输入权重" style="width: 100%" />
@@ -64,7 +64,7 @@
 <script>
 <script>
 
 
   import { httpAction, getAction } from '@/api/manage'
   import { httpAction, getAction } from '@/api/manage'
-  import { validateDuplicateValue } from '@/utils/util'
+  import { pushIfNotExist, validateDuplicateValue } from '@/utils/util'
 
 
   export default {
   export default {
     name: 'AaNewsForm',
     name: 'AaNewsForm',
@@ -101,18 +101,18 @@
            titleEnglish: [
            titleEnglish: [
               { required: true, message: '请输入新闻标题英语!'},
               { required: true, message: '请输入新闻标题英语!'},
            ],
            ],
-           titleGerman: [
+/*            titleGerman: [
               { required: true, message: '请输入新闻标题德语!'},
               { required: true, message: '请输入新闻标题德语!'},
-           ],
+           ], */
            content: [
            content: [
               { required: true, message: '请输入新闻内容!'},
               { required: true, message: '请输入新闻内容!'},
            ],
            ],
            contentEnglish: [
            contentEnglish: [
               { required: true, message: '请输入新闻内容英语!'},
               { required: true, message: '请输入新闻内容英语!'},
            ],
            ],
-           contentGerman: [
+/*            contentGerman: [
               { required: true, message: '请输入新闻内容德语!'},
               { required: true, message: '请输入新闻内容德语!'},
-           ],
+           ], */
            typeId: [
            typeId: [
               { required: true, message: '请输入分类!'},
               { required: true, message: '请输入分类!'},
            ],
            ],
@@ -138,7 +138,17 @@
         this.edit(this.modelDefault);
         this.edit(this.modelDefault);
       },
       },
       edit (record) {
       edit (record) {
-        this.model = Object.assign({}, record);
+        if (record.id) {
+          getAction(this.url.queryById,{id:record.id}).then(res=>{
+            if (res.success) {
+              this.model = res.result;
+            } else {
+              this.model = Object.assign({}, record);
+            }
+          })
+        } else {
+          this.model = Object.assign({}, record);
+        }
         this.visible = true;
         this.visible = true;
       },
       },
       submitForm () {
       submitForm () {
@@ -167,7 +177,7 @@
               that.confirmLoading = false;
               that.confirmLoading = false;
             })
             })
           }
           }
-         
+
         })
         })
       },
       },
     }
     }

+ 24 - 8
jlsb-vue/src/views/aa/modules/AaPosterForm.vue

@@ -4,16 +4,24 @@
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
         <a-row>
         <a-row>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="海报名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
-              <a-input v-model="model.name" placeholder="请输入海报名称"  ></a-input>
+            <a-form-model-item label="资源名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
+              <a-input v-model="model.name" placeholder="请输入资源名称"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="海报图" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cover">
-              <j-image-upload isMultiple  v-model="model.cover" ></j-image-upload>
+            <a-form-model-item label="资源名称英文" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
+              <a-input v-model="model.nameEnglish" placeholder="请输入资源名称"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
+            <a-form-model-item label="资源文件" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cover">
+              <j-upload v-model="model.cover" :reNewFile="true" :multiple="false" :beforeUpload="this.beforeUploadHandler" ></j-upload>
+              <template slot="extra">
+                <span>推荐比例16:9</span>
+              </template>
+            </a-form-model-item>
+          </a-col>
+<!--          <a-col :span="24">
             <a-form-model-item label="链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="link">
             <a-form-model-item label="链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="link">
               <a-input v-model="model.link" placeholder="请输入链接"  ></a-input>
               <a-input v-model="model.link" placeholder="请输入链接"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
@@ -22,7 +30,7 @@
             <a-form-model-item label="权重" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">
             <a-form-model-item label="权重" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">
               <a-input-number v-model="model.sort" placeholder="请输入权重" style="width: 100%" />
               <a-input-number v-model="model.sort" placeholder="请输入权重" style="width: 100%" />
             </a-form-model-item>
             </a-form-model-item>
-          </a-col>
+          </a-col>-->
         </a-row>
         </a-row>
       </a-form-model>
       </a-form-model>
     </j-form-container>
     </j-form-container>
@@ -61,10 +69,10 @@
         confirmLoading: false,
         confirmLoading: false,
         validatorRules: {
         validatorRules: {
            name: [
            name: [
-              { required: true, message: '请输入海报名称!'},
+              { required: true, message: '请输入资源名称!'},
            ],
            ],
            cover: [
            cover: [
-              { required: true, message: '请输入海报图!'},
+              { required: true, message: '请上传资源文件!'},
            ],
            ],
         },
         },
         url: {
         url: {
@@ -117,9 +125,17 @@
               that.confirmLoading = false;
               that.confirmLoading = false;
             })
             })
           }
           }
-         
+
         })
         })
       },
       },
+      beforeUploadHandler(file) {
+        let fileType = file.type;
+        if(fileType.indexOf('image')<0 && fileType.indexOf('video')<0){
+          this.$message.warning('请上传图片或视频');
+          return false;
+        }
+        return true;
+      },
     }
     }
   }
   }
 </script>
 </script>

+ 58 - 23
jlsb-vue/src/views/aa/modules/AaSlideshowForm.vue

@@ -4,48 +4,66 @@
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
       <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
         <a-row>
         <a-row>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍图名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
-              <a-input v-model="model.name" placeholder="请输入轮播名称"  ></a-input>
+            <a-form-model-item label="轮播页名称" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
+              <a-input v-model="model.name" placeholder="请输入轮播名称"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍图名称英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
-              <a-input v-model="model.nameEnglish" placeholder="请输入轮播图名称"  ></a-input>
+            <a-form-model-item label="轮播资源" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cover">
+              <j-upload v-model="model.cover" :reNewFile="true" :multiple="false" :beforeUpload="this.beforeUploadHandler" ></j-upload>
+              <template slot="extra">
+                <span>推荐比例16:9</span>
+              </template>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍图名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="name">
-              <a-input v-model="model.nameGerman" placeholder="请输入轮播图名称"  ></a-input>
+            <a-form-model-item label="所属系列" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="seriesId">
+              <j-dict-select-tag type="list" v-model="model.seriesId" dictCode="aa_commodity_fl,name,id" placeholder="请选择所属系列" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍描述" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input v-model="model.description" placeholder="请输入描述"  ></a-input>
+            <a-form-model-item label="排序" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">
+              <a-input-number v-model="model.sort" placeholder="请输入排序" style="width: 100%" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍描述英语" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input v-model="model.descriptionEnglish" placeholder="请输入描述英语"  ></a-input>
+            <a-form-model-item label="轮播页名称英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameEnglish">
+              <a-input v-model="model.nameEnglish" placeholder="请输入轮播页名称英语"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
+<!--          <a-col :span="24">
+            <a-form-model-item label="轮播页名称德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="nameGerman">
+              <a-input v-model="model.nameGerman" placeholder="请输入轮播页名称德语"  ></a-input>
+            </a-form-model-item>
+          </a-col>-->
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍描述德语" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input v-model="model.descriptionGerman" placeholder="请输入描述德语"  ></a-input>
+            <a-form-model-item label="描述" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="description">
+              <a-input v-model="model.description" placeholder="请输入描述"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="腕表介绍图" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="cover">
-              <j-image-upload isMultiple  v-model="model.cover" ></j-image-upload>
+            <a-form-model-item label="描述英语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="descriptionEnglish">
+              <a-input v-model="model.descriptionEnglish" placeholder="请输入描述英语"  ></a-input>
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
-          <a-col :span="24">
-            <a-form-model-item label="链接" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="link">
-              <a-input v-model="model.link" placeholder="请输入链接"  ></a-input>
+<!--          <a-col :span="24">
+            <a-form-model-item label="描述德语" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="descriptionGerman">
+              <a-input v-model="model.descriptionGerman" placeholder="请输入描述德语"  ></a-input>
+            </a-form-model-item>
+          </a-col>-->
+<!--          <a-col :span="24">
+            <a-form-model-item label="修改时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="updateTime">
+              <j-date placeholder="请选择修改时间"  v-model="model.updateTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
           <a-col :span="24">
           <a-col :span="24">
-            <a-form-model-item label="权重" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="sort">
-              <a-input-number v-model="model.sort" placeholder="请输入权重" style="width: 100%" />
+            <a-form-model-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="createTime">
+              <j-date placeholder="请选择创建时间"  v-model="model.createTime" :show-time="true" date-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
+            </a-form-model-item>
+          </a-col>-->
+          <a-col :span="24">
+            <a-form-model-item label="是否使用" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="enable">
+              <a-switch checked-children="是" un-checked-children="否" @change="this.enableChange" v-model:checked="model.enable==='1'" />
             </a-form-model-item>
             </a-form-model-item>
           </a-col>
           </a-col>
         </a-row>
         </a-row>
@@ -56,8 +74,7 @@
 
 
 <script>
 <script>
 
 
-  import { httpAction, getAction } from '@/api/manage'
-  import { validateDuplicateValue } from '@/utils/util'
+  import { httpAction } from '@/api/manage'
 
 
   export default {
   export default {
     name: 'AaSlideshowForm',
     name: 'AaSlideshowForm',
@@ -86,10 +103,13 @@
         confirmLoading: false,
         confirmLoading: false,
         validatorRules: {
         validatorRules: {
            name: [
            name: [
-              { required: true, message: '请输入轮播名称!'},
+              { required: true, message: '请输入轮播名称!'},
            ],
            ],
            cover: [
            cover: [
-              { required: true, message: '请输入轮播图!'},
+              { required: true, message: '请输入轮播资源!'},
+           ],
+           seriesId: [
+              { required: true, message: '请输入所属系列!'},
            ],
            ],
         },
         },
         url: {
         url: {
@@ -145,6 +165,21 @@
 
 
         })
         })
       },
       },
+      beforeUploadHandler(file) {
+        let fileType = file.type;
+        if(fileType.indexOf('image')<0 && fileType.indexOf('video')<0){
+          this.$message.warning('请上传图片或视频');
+          return false;
+        }
+        return true;
+      },
+      enableChange(checked, event){
+        if(checked) {
+          this.model.enable = '1';
+        } else {
+          this.model.enable = '0';
+        }
+      }
     }
     }
   }
   }
 </script>
 </script>

+ 1 - 1
jlsb-vue/vue.config.js

@@ -86,7 +86,7 @@ module.exports = {
   },
   },
 
 
   devServer: {
   devServer: {
-    port: 3000,
+    port: 3100,
     // hot: true,
     // hot: true,
     // disableHostCheck: true,
     // disableHostCheck: true,
     // overlay: {
     // overlay: {

Fichier diff supprimé car celui-ci est trop grand
+ 339 - 339
jlsb-vue/yarn.lock


+ 1 - 1
jlsb/jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java

@@ -103,7 +103,7 @@ public class Swagger2Config implements WebMvcConfigurer {
     private ApiInfo apiInfo() {
     private ApiInfo apiInfo() {
         return new ApiInfoBuilder()
         return new ApiInfoBuilder()
                 // //大标题
                 // //大标题
-                .title("精利手表 后台服务API接口文档")
+                .title("巴博斯手表 后台服务API接口文档")
                 // 版本号
                 // 版本号
                 .version("1.0")
                 .version("1.0")
 //				.termsOfServiceUrl("NO terms of service")
 //				.termsOfServiceUrl("NO terms of service")

+ 6 - 2
jlsb/jeecg-boot-base/jeecg-boot-base-tools/pom.xml

@@ -29,12 +29,16 @@
         <!--加载hutool-->
         <!--加载hutool-->
         <dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
             <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+        </dependency>
+<!--        <dependency>
+            <groupId>cn.hutool</groupId>
             <artifactId>hutool-core</artifactId>
             <artifactId>hutool-core</artifactId>
         </dependency>
         </dependency>
         <dependency>
         <dependency>
             <groupId>cn.hutool</groupId>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-crypto</artifactId>
             <artifactId>hutool-crypto</artifactId>
-        </dependency>
+        </dependency>-->
         <!--加载beanutils-->
         <!--加载beanutils-->
         <dependency>
         <dependency>
             <groupId>commons-beanutils</groupId>
             <groupId>commons-beanutils</groupId>
@@ -42,4 +46,4 @@
         </dependency>
         </dependency>
     </dependencies>
     </dependencies>
 
 
-</project>
+</project>

+ 5 - 1
jlsb/jeecg-boot-module-system/pom.xml

@@ -69,6 +69,10 @@
             <version>1.4.32</version>
             <version>1.4.32</version>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>org.jsoup</groupId>
+            <artifactId>jsoup</artifactId>
+        </dependency>
 
 
     </dependencies>
     </dependencies>
 
 
@@ -111,4 +115,4 @@
     <!--			</plugin>-->
     <!--			</plugin>-->
     <!--		</plugins>-->
     <!--		</plugins>-->
     <!--	</build>-->
     <!--	</build>-->
-</project>
+</project>

+ 253 - 56
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/APIIndexenterController.java

@@ -1,27 +1,34 @@
 package org.jeecg.modules.aa.controller;
 package org.jeecg.modules.aa.controller;
 
 
 
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.google.common.base.Strings;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.CommonConstant;
+import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.util.RedisUtil;
 import org.jeecg.common.util.RedisUtil;
-import org.jeecg.modules.aa.dto.AaCommodityDTO;
-import org.jeecg.modules.aa.dto.AaCommodityDTO2;
-import org.jeecg.modules.aa.dto.SMDTO;
+import org.jeecg.modules.aa.dto.*;
 import org.jeecg.modules.aa.entity.*;
 import org.jeecg.modules.aa.entity.*;
 import org.jeecg.modules.aa.service.*;
 import org.jeecg.modules.aa.service.*;
 import org.jeecg.modules.base.service.BaseCommonService;
 import org.jeecg.modules.base.service.BaseCommonService;
 
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.websocket.server.PathParam;
 import java.math.BigInteger;
 import java.math.BigInteger;
 import java.text.SimpleDateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.ArrayList;
@@ -61,15 +68,81 @@ public class APIIndexenterController {
     @Autowired
     @Autowired
     private AaPlatFormParameterService aaPlatFormParameterService;
     private AaPlatFormParameterService aaPlatFormParameterService;
 
 
+    @Autowired
+    private IAaCommodityCodeService aaCommodityCodeService;
+
+    @Autowired
+    private IAaCommonProblemService aaCommonProblemService;
+
+    @Value("${jeecg.path.upload}")
+    private String upLoadPath;
+
+    @Value("${server.system.host}")
+    private String host;
+
+    @ApiOperationSupport(order = 10)
+    @ApiOperation(value = "轮播管理-查询要展示的轮播内容", notes = "轮播管理-查询要展示的轮播内容")
+    @GetMapping(value = "/getSlideshowEnableList")
+    public Result<List<AaSlideshow>> getEnableList() {
+        LambdaQueryWrapper<AaSlideshow> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AaSlideshow::getEnable, "1");
+        queryWrapper.orderByAsc(AaSlideshow::getSort);
+        List<AaSlideshow> list = aaSlideshowService.list(queryWrapper);
+        if (list != null && list.size() > 0) {
+            for (AaSlideshow aaSlideshow : list) {
+                // temp/介绍图_1669645664094.jpg
+                String cover = aaSlideshow.getCover();
+                aaSlideshow.setCover(host + "/sys/common/static/" + cover);
+            }
+        }
+        return Result.OK(list);
+    }
+
+    @ApiOperationSupport(order = 27)
+    @ApiOperation(value = "防伪检测查询", notes = "防伪检测查询")
+    @GetMapping(value = "/authenticityTesting/{securityCode}")
+    public Result<AaCommodity> authenticityTesting(@PathVariable("securityCode") String securityCode) {
+        if (Strings.isNullOrEmpty(securityCode)){
+            return Result.error("请输入防伪码");
+        }
+        LambdaQueryWrapper<AaCommodityCode> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(AaCommodityCode::getSecurityCode, securityCode);
+        AaCommodityCode aaCommodityCode = aaCommodityCodeService.getOne(queryWrapper);
+        if (aaCommodityCode == null) {
+            return Result.OK("查询不存在,请核实防伪码",null);
+        }
+        AaCommodity byId = aaCommodityService.getById(aaCommodityCode.getCommodityId());
+        return Result.OK("您好,您所查询的是由巴博斯品牌生产的德国手表,该产品经验证为正品",byId);
+    }
 
 
+    @ApiOperationSupport(order = 50)
+    @ApiOperation(value = "获取常见问题", notes = "仅获取常见问题名称列表,查询常见问题答案详见 [Index首页、详情 → 获取常见问题答案](###获取常见问题答案) ")
+    @GetMapping(value = "/getAllCommonProblem")
+    public Result<List<AaCommonProblem>> getAllCommonProblem() {
+        QueryWrapper<AaCommonProblem> aaCommonProblemQueryWrapper = new QueryWrapper<>();
+        aaCommonProblemQueryWrapper.select("id,problem_name,problem_name_english,problem_name_german");
+        List<AaCommonProblem> list = aaCommonProblemService.list(aaCommonProblemQueryWrapper);
+        return Result.OK("成功",list);
+    }
+
+    @ApiOperationSupport(order = 50)
+    @ApiOperation(value = "获取常见问题答案", notes = "获取常见问题答案")
+    @GetMapping(value = "/getProblemAnswer/{id}")
+    public Result<AaCommonProblem> getProblemAnswer(@ApiParam(name="id",value="问题id") @PathVariable("id")String id) {
+        AaCommonProblem byId = aaCommonProblemService.getById(id);
+        return Result.OK("成功", byId);
+    }
+
+    @ApiOperationSupport(order = 900)
     @ApiOperation(value = "获取轮播图", notes = "获取轮播图")
     @ApiOperation(value = "获取轮播图", notes = "获取轮播图")
     @PostMapping(value = "/getBanner")
     @PostMapping(value = "/getBanner")
+    @Deprecated
     public Result<List<AaSlideshow>> getBanner() {
     public Result<List<AaSlideshow>> getBanner() {
         Result<List<AaSlideshow>> result = new Result<List<AaSlideshow>>();
         Result<List<AaSlideshow>> result = new Result<List<AaSlideshow>>();
         try {
         try {
             List<AaSlideshow> list = aaSlideshowService.list();
             List<AaSlideshow> list = aaSlideshowService.list();
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setCover( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getCover() );
+                list.get( i ).setCover( host + "/sys/common/static/"+list.get( i ).getCover() );
             }
             }
 
 
             result.setMessage( "获取轮播图成功" );
             result.setMessage( "获取轮播图成功" );
@@ -84,6 +157,7 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 60)
     @ApiOperation(value = "获取海报图", notes = "获取海报图")
     @ApiOperation(value = "获取海报图", notes = "获取海报图")
     @PostMapping(value = "/getPoster")
     @PostMapping(value = "/getPoster")
     public Result<List<AaPoster>> getPoster() {
     public Result<List<AaPoster>> getPoster() {
@@ -91,7 +165,7 @@ public class APIIndexenterController {
         try {
         try {
             List<AaPoster> list = aaPosterService.list();
             List<AaPoster> list = aaPosterService.list();
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setCover( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getCover() );
+                list.get( i ).setCover( host + "/sys/common/static/"+list.get( i ).getCover() );
             }
             }
             result.setMessage( "获取海报图成功" );
             result.setMessage( "获取海报图成功" );
             result.setResult( list );
             result.setResult( list );
@@ -104,8 +178,54 @@ public class APIIndexenterController {
             return result;
             return result;
         }
         }
     }
     }
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "搜索商品", notes = "按商品名称模糊搜索商品")
+    @GetMapping(value = "/queryCommpdity")
+    public Result<List<AaCommodity>> getCommpdityD(@ApiParam(name="name",value="商品名称")String name,@ApiParam(name="nameEnglish",value="商品名称英文") String nameEnglish) {
+        LambdaQueryWrapper<AaCommodity> queryMapper = new LambdaQueryWrapper<>();
+        if(!Strings.isNullOrEmpty(name)) {
+            queryMapper.like(AaCommodity::getName,name);
+        }
+        if(!Strings.isNullOrEmpty(nameEnglish)) {
+            queryMapper.like(AaCommodity::getNameEnglish,nameEnglish);
+        }
+        List<AaCommodity> list = aaCommodityService.list(queryMapper);
+        return Result.OK(list);
+    }
+
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "根据系列id获取子系列及其商品", notes = "获取系列及其商品")
+    @GetMapping(value = "/queryCommodityFl")
+    public Result<AaCommodityFl> queryCommodityFl(@ApiParam(name="commodityFlId",value="商品分类id")String commodityFlId) {
+        // 判断分类是几级获取分类的顶级父类id
+        AaCommodityFl topNode = aaCommodityFlService.findTopNode(commodityFlId);
+        if (topNode == null){
+            return Result.error("找不到此系列");
+        }
+        List<AaCommodityFl> allChild = aaCommodityFlService.findAllChild(topNode);
+        topNode.setCommodities(aaCommodityService.getCommodityByFl(topNode.getId()));
+        if (allChild !=null && !allChild.isEmpty()) {
+            // 设置系列树中的商品
+            setTreeCommodity(allChild);
+        }
+        return Result.OK(topNode);
+    }
 
 
+    /**
+     * 根据系列树查询商品
+     * @param allChild
+     */
+    private void setTreeCommodity(List<AaCommodityFl> allChild) {
+        if (allChild==null || allChild.isEmpty()){
+            return;
+        }
+        for (AaCommodityFl aaCommodityFl : allChild) {
+            aaCommodityFl.setCommodities(aaCommodityService.getCommodityByFl(aaCommodityFl.getId()));
+            setTreeCommodity(aaCommodityFl.getChildren());
+        }
+    }
 
 
+    @ApiOperationSupport(order = 21)
     @ApiOperation(value = "获取商品展示", notes = "获取商品展示")
     @ApiOperation(value = "获取商品展示", notes = "获取商品展示")
     @PostMapping(value = "/getShowC")
     @PostMapping(value = "/getShowC")
     public Result<List<AaShow>> getShowC() {
     public Result<List<AaShow>> getShowC() {
@@ -113,7 +233,7 @@ public class APIIndexenterController {
         try {
         try {
             List<AaShow> list = aaShowService.list();
             List<AaShow> list = aaShowService.list();
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setCover( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getCover() );
+                list.get( i ).setCover( host + "/sys/common/static/"+list.get( i ).getCover() );
             }
             }
             result.setMessage( "获取商品展示成功" );
             result.setMessage( "获取商品展示成功" );
             result.setResult( list );
             result.setResult( list );
@@ -127,7 +247,7 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
-
+    @ApiOperationSupport(order = 22)
     @ApiOperation(value = "获取商品列表", notes = "获取商品列表")
     @ApiOperation(value = "获取商品列表", notes = "获取商品列表")
     @PostMapping(value = "/getCommpdityList")
     @PostMapping(value = "/getCommpdityList")
     public Result<List<AaCommodity>> getCommpdityList(@RequestBody AaCommodityDTO2 aaCommodityDTO) {
     public Result<List<AaCommodity>> getCommpdityList(@RequestBody AaCommodityDTO2 aaCommodityDTO) {
@@ -179,9 +299,9 @@ public class APIIndexenterController {
                 }
                 }
             }
             }
 
 
-            for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
-            }
+            //for (int i = 0;i<list.size();i++){
+            //    list.get( i ).setPic( host + "/sys/common/static/"+list.get( i ).getPic() );
+            //}
             result.setMessage( "获取商品列表成功" );
             result.setMessage( "获取商品列表成功" );
             result.setResult( list );
             result.setResult( list );
             result.setCode( 200 );
             result.setCode( 200 );
@@ -194,14 +314,15 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
-
+    @ApiOperationSupport(order = 23)
     @ApiOperation(value = "获取商品详细", notes = "获取商品详细")
     @ApiOperation(value = "获取商品详细", notes = "获取商品详细")
     @PostMapping(value = "/getCommpdityD")
     @PostMapping(value = "/getCommpdityD")
     public Result<AaCommodity> getCommpdityD(@RequestBody AaCommodityDTO aaCommodityDTO) {
     public Result<AaCommodity> getCommpdityD(@RequestBody AaCommodityDTO aaCommodityDTO) {
         Result<AaCommodity> result = new Result<AaCommodity>();
         Result<AaCommodity> result = new Result<AaCommodity>();
         try {
         try {
             AaCommodity byId = aaCommodityService.getById( aaCommodityDTO.getId() );
             AaCommodity byId = aaCommodityService.getById( aaCommodityDTO.getId() );
-            byId.setPic( "http://8.134.179.70:9999/sys/common/static/"+byId.getPic() );
+            //byId.setPic( host + "/sys/common/static/"+byId.getPic() );
+            byId.setVideo( host + "/sys/common/static/"+byId.getVideo() );
             result.setMessage( "获取商品详细成功" );
             result.setMessage( "获取商品详细成功" );
             result.setResult( byId );
             result.setResult( byId );
             result.setCode( 200 );
             result.setCode( 200 );
@@ -215,8 +336,10 @@ public class APIIndexenterController {
     }
     }
 
 
 
 
+    @ApiOperationSupport(order = 902)
     @ApiOperation(value = "防伪监测", notes = "防伪监测")
     @ApiOperation(value = "防伪监测", notes = "防伪监测")
     @PostMapping(value = "/securityMonitoring")
     @PostMapping(value = "/securityMonitoring")
+    @Deprecated
     public Result<Boolean> securityMonitoring(@RequestBody SMDTO smdto) {
     public Result<Boolean> securityMonitoring(@RequestBody SMDTO smdto) {
         Result<Boolean> result = new Result<Boolean>();
         Result<Boolean> result = new Result<Boolean>();
         try {
         try {
@@ -243,8 +366,8 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
-
-    @ApiOperation(value="获取系统配置", notes="获取系统配置")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value="获取使用条款、隐私协议、关于我们配置", notes="获取使用条款、隐私协议、关于我们配置")
     @PostMapping(value = "/configInfo")
     @PostMapping(value = "/configInfo")
     public Result<PlatformParameter> configInfo(){
     public Result<PlatformParameter> configInfo(){
         Result<PlatformParameter> result = new Result<PlatformParameter>();
         Result<PlatformParameter> result = new Result<PlatformParameter>();
@@ -263,16 +386,23 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
-    @ApiOperation(value="获取首页配置", notes="获取首页配置")
+    @ApiOperationSupport(order = 12)
+    @ApiOperation(value="获取联系方式信息", notes="获取联系方式信息")
     @PostMapping(value = "/indexInfo")
     @PostMapping(value = "/indexInfo")
     public Result<AaPlatformParameter> indexInfo(){
     public Result<AaPlatformParameter> indexInfo(){
         Result<AaPlatformParameter> result = new Result<AaPlatformParameter>();
         Result<AaPlatformParameter> result = new Result<AaPlatformParameter>();
         try {
         try {
 
 
             List<AaPlatformParameter> list = aaPlatFormParameterService.list();
             List<AaPlatformParameter> list = aaPlatFormParameterService.list();
-            list.get( 0 ).setAaa( "http://8.134.179.70:9999/sys/common/static/"+ list.get( 0 ).getAaa() );
-            list.get( 0 ).setBbb( "http://8.134.179.70:9999/sys/common/static/"+ list.get( 0 ).getBbb() );
-            list.get( 0 ).setCcc( "http://8.134.179.70:9999/sys/common/static/"+ list.get( 0 ).getCcc() );
+            //list.get( 0 ).setAaa( host + "/sys/common/static/"+ list.get( 0 ).getAaa() );
+            //list.get( 0 ).setBbb( host + "/sys/common/static/"+ list.get( 0 ).getBbb() );
+            //list.get( 0 ).setCcc( host + "/sys/common/static/"+ list.get( 0 ).getCcc() );
+            if (!list.isEmpty()){
+                AaPlatformParameter aaPlatformParameter = list.get(0);
+                if (!Strings.isNullOrEmpty(aaPlatformParameter.getWechatQrCode()) && !aaPlatformParameter.getWechatQrCode().startsWith("http")){
+                    aaPlatformParameter.setWechatQrCode(host + "/" + aaPlatformParameter.getWechatQrCode());
+                }
+            }
             result.setMessage("获取首页配置成功");
             result.setMessage("获取首页配置成功");
             result.setResult( list.get( 0 ) );
             result.setResult( list.get( 0 ) );
             result.setCode( 200 );
             result.setCode( 200 );
@@ -285,8 +415,10 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 31)
     @ApiOperation(value = "获取新闻列表", notes = "获取新闻列表")
     @ApiOperation(value = "获取新闻列表", notes = "获取新闻列表")
     @PostMapping(value = "/getNewsList")
     @PostMapping(value = "/getNewsList")
+    @Deprecated
     public Result<List<AaNews>> getNewsList(@RequestBody AaCommodityDTO2 aaCommodityDTO) {
     public Result<List<AaNews>> getNewsList(@RequestBody AaCommodityDTO2 aaCommodityDTO) {
         Result<List<AaNews>> result = new Result<List<AaNews>>();
         Result<List<AaNews>> result = new Result<List<AaNews>>();
         try {
         try {
@@ -301,7 +433,7 @@ public class APIIndexenterController {
             List<AaNews> list = aaNewsService.list( query );
             List<AaNews> list = aaNewsService.list( query );
 
 
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
+                list.get( i ).setPic( host + "/sys/common/static/"+list.get( i ).getPic() );
             }
             }
             result.setMessage( "获取新闻列表成功" );
             result.setMessage( "获取新闻列表成功" );
             result.setResult( list );
             result.setResult( list );
@@ -314,15 +446,49 @@ public class APIIndexenterController {
             return result;
             return result;
         }
         }
     }
     }
+    @ApiOperationSupport(order = 31)
+    @ApiOperation(value = "获取新闻页顶部资源", notes = "获取新闻页顶部资源")
+    @PostMapping(value = "/getNewsHeadAssets")
+    public Result<AaPoster> getNewsHeadAssets() {
+        AaPoster byId = aaPosterService.getById("1734144586119450625");
+        byId.setCover(host + "/sys/common/static/" + byId.getCover());
+        return Result.OK(byId);
+    }
+
+
+    @ApiOperationSupport(order = 30)
+    @ApiOperation(value="获取新闻分页列表", notes="获取新闻分页列表")
+    @PostMapping(value = "/getNewsPageList")
+    public Result<IPage<AaNews>> queryPageList(@RequestBody AaNewsDTO aaNews,
+                                               HttpServletRequest req) {
+        Integer pageNo = aaNews.getPageNo();
+        if (pageNo ==null) {
+            pageNo = 1;
+        }
+        Integer pageSize = aaNews.getPageSize();
+        if (pageSize == null) {
+            pageSize = 10;
+        }
+        QueryWrapper<AaNews> queryWrapper = new QueryWrapper<>();
+        if (!Strings.isNullOrEmpty(aaNews.getTypeId())){
+            queryWrapper.eq("type_id",aaNews.getTypeId());
+        }
+        queryWrapper.select("id,pic,title,title_english,des,des_english,weight,type_id,create_time");
+        queryWrapper.orderByDesc("create_time");
+        Page<AaNews> page = new Page<AaNews>(pageNo, pageSize);
+        IPage<AaNews> pageList = aaNewsService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
 
 
 
 
+    @ApiOperationSupport(order = 31)
     @ApiOperation(value = "获取新闻详细", notes = "获取新闻详细")
     @ApiOperation(value = "获取新闻详细", notes = "获取新闻详细")
     @PostMapping(value = "/getNewsD")
     @PostMapping(value = "/getNewsD")
     public Result<AaNews> getNewsD(@RequestBody AaCommodityDTO aaCommodityDTO) {
     public Result<AaNews> getNewsD(@RequestBody AaCommodityDTO aaCommodityDTO) {
         Result<AaNews> result = new Result<AaNews>();
         Result<AaNews> result = new Result<AaNews>();
         try {
         try {
             AaNews byId = aaNewsService.getById( aaCommodityDTO.getId() );
             AaNews byId = aaNewsService.getById( aaCommodityDTO.getId() );
-            byId.setPic( "http://8.134.179.70:9999/sys/common/static/"+byId.getPic() );
+            byId.setPic( host + "/sys/common/static/"+byId.getPic() );
             result.setMessage( "获取新闻详细成功" );
             result.setMessage( "获取新闻详细成功" );
             result.setResult( byId );
             result.setResult( byId );
             result.setCode( 200 );
             result.setCode( 200 );
@@ -335,6 +501,7 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 25)
     @ApiOperation(value = "获取商品一级分类", notes = "获取商品一级分类")
     @ApiOperation(value = "获取商品一级分类", notes = "获取商品一级分类")
     @PostMapping(value = "/gety")
     @PostMapping(value = "/gety")
     public Result<List<AaCommodityFl>> gety() {
     public Result<List<AaCommodityFl>> gety() {
@@ -344,7 +511,22 @@ public class APIIndexenterController {
             query.eq( "pid",0 );
             query.eq( "pid",0 );
             List<AaCommodityFl> list = aaCommodityFlService.list(query);
             List<AaCommodityFl> list = aaCommodityFlService.list(query);
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
+                AaCommodityFl aaCommodityFl = list.get(i);
+                String pic = aaCommodityFl.getPic();
+                if (!Strings.isNullOrEmpty(pic)) {
+                    if (pic.contains(",")) {
+                        String[] split = pic.split(",");
+                        if (split.length >=2){
+                            aaCommodityFl.setPic(host + "/sys/common/static/"+split[0]);
+                            aaCommodityFl.setPic2(host + "/sys/common/static/"+split[1]);
+                        } else if (split.length == 1){
+                            aaCommodityFl.setPic(host + "/sys/common/static/"+split[0]);
+                        }
+                    } else {
+                        aaCommodityFl.setPic(host + "/sys/common/static/"+aaCommodityFl.getPic());
+                    }
+                }
+                aaCommodityFl.setAssets( host + "/sys/common/static/"+ aaCommodityFl.getAssets() );
             }
             }
             result.setMessage( "获取商品一级分类成功" );
             result.setMessage( "获取商品一级分类成功" );
             result.setResult( list );
             result.setResult( list );
@@ -358,6 +540,7 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 26)
     @ApiOperation(value = "获取商品二级分类", notes = "获取商品二级分类")
     @ApiOperation(value = "获取商品二级分类", notes = "获取商品二级分类")
     @PostMapping(value = "/gete")
     @PostMapping(value = "/gete")
     public Result< List<AaCommodityFl>> gete(@RequestBody AaCommodityDTO aaCommodityDTO) {
     public Result< List<AaCommodityFl>> gete(@RequestBody AaCommodityDTO aaCommodityDTO) {
@@ -367,7 +550,8 @@ public class APIIndexenterController {
             query.eq( "pid",aaCommodityDTO.getId() );
             query.eq( "pid",aaCommodityDTO.getId() );
             List<AaCommodityFl> list = aaCommodityFlService.list(query);
             List<AaCommodityFl> list = aaCommodityFlService.list(query);
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
+                list.get( i ).setPic( host + "/sys/common/static/"+list.get( i ).getPic() );
+                list.get( i ).setAssets( host + "/sys/common/static/"+list.get( i ).getAssets() );
             }
             }
             result.setMessage( "获取商品二级分类成功" );
             result.setMessage( "获取商品二级分类成功" );
             result.setResult( list );
             result.setResult( list );
@@ -381,14 +565,15 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
-    @ApiOperation(value = "获取新闻分类", notes = "获取商品二级分类")
+    @ApiOperationSupport(order = 32)
+    @ApiOperation(value = "获取新闻分类", notes = "获取新闻分类")
     @PostMapping(value = "/getNewsfl")
     @PostMapping(value = "/getNewsfl")
     public Result<List<AaNewsFl>> getNewsfl() {
     public Result<List<AaNewsFl>> getNewsfl() {
         Result<List<AaNewsFl>> result = new Result<List<AaNewsFl>>();
         Result<List<AaNewsFl>> result = new Result<List<AaNewsFl>>();
         try {
         try {
             List<AaNewsFl> list = aaNewsFlService.list();
             List<AaNewsFl> list = aaNewsFlService.list();
             for (int i = 0;i<list.size();i++){
             for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
+                list.get( i ).setPic( host + "/sys/common/static/"+list.get( i ).getPic() );
             }
             }
             result.setMessage( "获取新闻分类成功" );
             result.setMessage( "获取新闻分类成功" );
             result.setResult( list );
             result.setResult( list );
@@ -402,45 +587,57 @@ public class APIIndexenterController {
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 31)
     @ApiOperation(value = "下一篇新闻", notes = "下一篇新闻")
     @ApiOperation(value = "下一篇新闻", notes = "下一篇新闻")
     @PostMapping(value = "/getNast")
     @PostMapping(value = "/getNast")
-    public Result<List<AaNewsFl>> getNast() {
-        Result<List<AaNewsFl>> result = new Result<List<AaNewsFl>>();
-        try {
-            List<AaNewsFl> list = aaNewsFlService.list();
-            for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
-            }
-            result.setMessage( "获取新闻分类成功" );
-            result.setResult( list );
-            result.setCode( 200 );
-            return result;
-        } catch (Exception e) {
-            result.setMessage( "获取新闻分类失败" );
-            result.setResult( null );
-            result.setCode( 0 );
-            return result;
+    public Result<AaNews> getNast(@RequestBody AaNewsQueryDTO aaNewsQueryDTO) {
+        if (aaNewsQueryDTO == null || Strings.isNullOrEmpty(aaNewsQueryDTO.getId())) {
+            return Result.error("找不到新闻编码!");
+        }
+        AaNews byId = aaNewsService.getById(aaNewsQueryDTO.getId());
+        if (byId == null){
+            return Result.error("没有查询到新闻!");
+        }
+        LambdaQueryWrapper<AaNews> aaNewsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if (aaNewsQueryDTO.getTypeId() != null && !Strings.isNullOrEmpty(aaNewsQueryDTO.getTypeId())) {
+            aaNewsLambdaQueryWrapper.eq(AaNews::getTypeId,aaNewsQueryDTO.getTypeId());
+        }
+        aaNewsLambdaQueryWrapper.lt(AaNews::getCreateTime,byId.getCreateTime())
+                .orderByDesc(AaNews::getCreateTime);
+        List<AaNews> list1 = aaNewsService.list(aaNewsLambdaQueryWrapper);
+        if (list1!=null && list1.size() > 0 ){
+            AaNews aaNews = list1.get(0);
+            aaNews.setPic(host + "/sys/common/static/"+ aaNews.getPic());
+            return Result.OK("成功!", aaNews);
+        } else {
+            return Result.OK("没有下一篇了", null);
         }
         }
     }
     }
 
 
+    @ApiOperationSupport(order = 31)
     @ApiOperation(value = "上一篇新闻", notes = "上一篇新闻")
     @ApiOperation(value = "上一篇新闻", notes = "上一篇新闻")
     @PostMapping(value = "/getLast")
     @PostMapping(value = "/getLast")
-    public Result<List<AaNewsFl>> getLast() {
-        Result<List<AaNewsFl>> result = new Result<List<AaNewsFl>>();
-        try {
-            List<AaNewsFl> list = aaNewsFlService.list();
-            for (int i = 0;i<list.size();i++){
-                list.get( i ).setPic( "http://8.134.179.70:9999/sys/common/static/"+list.get( i ).getPic() );
-            }
-            result.setMessage( "获取新闻分类成功" );
-            result.setResult( list );
-            result.setCode( 200 );
-            return result;
-        } catch (Exception e) {
-            result.setMessage( "获取新闻分类失败" );
-            result.setResult( null );
-            result.setCode( 0 );
-            return result;
+    public Result<AaNews> getLast(@RequestBody AaNewsQueryDTO aaNewsQueryDTO) {
+        if (aaNewsQueryDTO == null || Strings.isNullOrEmpty(aaNewsQueryDTO.getId())) {
+            return Result.error("找不到新闻编码!");
+        }
+        AaNews byId = aaNewsService.getById(aaNewsQueryDTO.getId());
+        if (byId == null){
+            return Result.error("没有查询到新闻!");
+        }
+        LambdaQueryWrapper<AaNews> aaNewsLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if (aaNewsQueryDTO.getTypeId() != null && !Strings.isNullOrEmpty(aaNewsQueryDTO.getTypeId())) {
+            aaNewsLambdaQueryWrapper.eq(AaNews::getTypeId,aaNewsQueryDTO.getTypeId());
+        }
+        aaNewsLambdaQueryWrapper.gt(AaNews::getCreateTime,byId.getCreateTime())
+                .orderByAsc(AaNews::getCreateTime);
+        List<AaNews> list1 = aaNewsService.list(aaNewsLambdaQueryWrapper);
+        if (list1!=null && list1.size() > 0 ){
+            AaNews aaNews = list1.get(0);
+            aaNews.setPic(host + "/sys/common/static/"+ aaNews.getPic());
+            return Result.OK("成功!", aaNews);
+        } else {
+            return Result.OK("没有上一篇了", null);
         }
         }
     }
     }
 
 

+ 9 - 8
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaNewsController.java

@@ -49,7 +49,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 	@Autowired
 	@Autowired
 	private IAaNewsService aaNewsService;
 	private IAaNewsService aaNewsService;
-	
+
 	/**
 	/**
 	 * 分页列表查询
 	 * 分页列表查询
 	 *
 	 *
@@ -67,11 +67,12 @@ public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 								   HttpServletRequest req) {
 		QueryWrapper<AaNews> queryWrapper = QueryGenerator.initQueryWrapper(aaNews, req.getParameterMap());
 		QueryWrapper<AaNews> queryWrapper = QueryGenerator.initQueryWrapper(aaNews, req.getParameterMap());
+		queryWrapper.select("id,pic,title,weight,type_id,create_time");
 		Page<AaNews> page = new Page<AaNews>(pageNo, pageSize);
 		Page<AaNews> page = new Page<AaNews>(pageNo, pageSize);
 		IPage<AaNews> pageList = aaNewsService.page(page, queryWrapper);
 		IPage<AaNews> pageList = aaNewsService.page(page, queryWrapper);
 		return Result.OK(pageList);
 		return Result.OK(pageList);
 	}
 	}
-	
+
 	/**
 	/**
 	 *   添加
 	 *   添加
 	 *
 	 *
@@ -82,10 +83,10 @@ public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 	@ApiOperation(value="新闻列表-添加", notes="新闻列表-添加")
 	@ApiOperation(value="新闻列表-添加", notes="新闻列表-添加")
 	@PostMapping(value = "/add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody AaNews aaNews) {
 	public Result<String> add(@RequestBody AaNews aaNews) {
-		aaNewsService.save(aaNews);
+		aaNewsService.saveNews(aaNews);
 		return Result.OK("添加成功!");
 		return Result.OK("添加成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *  编辑
 	 *  编辑
 	 *
 	 *
@@ -96,10 +97,10 @@ public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 	@ApiOperation(value="新闻列表-编辑", notes="新闻列表-编辑")
 	@ApiOperation(value="新闻列表-编辑", notes="新闻列表-编辑")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody AaNews aaNews) {
 	public Result<String> edit(@RequestBody AaNews aaNews) {
-		aaNewsService.updateById(aaNews);
+		aaNewsService.updateNewsById(aaNews);
 		return Result.OK("编辑成功!");
 		return Result.OK("编辑成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *   通过id删除
 	 *   通过id删除
 	 *
 	 *
@@ -113,7 +114,7 @@ public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 		aaNewsService.removeById(id);
 		aaNewsService.removeById(id);
 		return Result.OK("删除成功!");
 		return Result.OK("删除成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *  批量删除
 	 *  批量删除
 	 *
 	 *
@@ -127,7 +128,7 @@ public class AaNewsController extends JeecgController<AaNews, IAaNewsService> {
 		this.aaNewsService.removeByIds(Arrays.asList(ids.split(",")));
 		this.aaNewsService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 		return Result.OK("批量删除成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 * 通过id查询
 	 * 通过id查询
 	 *
 	 *

+ 14 - 3
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaPlatFormParameterController.java

@@ -1,5 +1,7 @@
 package org.jeecg.modules.aa.controller;
 package org.jeecg.modules.aa.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.base.Strings;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -11,6 +13,7 @@ import org.jeecg.modules.aa.entity.PlatformParameter;
 import org.jeecg.modules.aa.service.AaPlatFormParameterService;
 import org.jeecg.modules.aa.service.AaPlatFormParameterService;
 import org.jeecg.modules.aa.service.PlatFormParameterService;
 import org.jeecg.modules.aa.service.PlatFormParameterService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.util.List;
 import java.util.List;
@@ -24,13 +27,21 @@ public class AaPlatFormParameterController extends JeecgController<AaPlatformPar
 
 
     @Autowired
     @Autowired
     private AaPlatFormParameterService aaPlatFormParameterService;
     private AaPlatFormParameterService aaPlatFormParameterService;
-
+    @Value("${server.system.host}")
+    private String host;
 
 
 
 
     @PostMapping(value = "/one")
     @PostMapping(value = "/one")
     public Result<AaPlatformParameter> queryPageList() {
     public Result<AaPlatformParameter> queryPageList() {
-
-        List<AaPlatformParameter> list = aaPlatFormParameterService.list();
+        QueryWrapper<AaPlatformParameter> aaPlatformParameterQueryWrapper = new QueryWrapper<>();
+        aaPlatformParameterQueryWrapper.select("id,phone,mailbox,remark_wenan,remark_wenan_english,remark_wenan_german,wechat_qr_code");
+        List<AaPlatformParameter> list = aaPlatFormParameterService.list(aaPlatformParameterQueryWrapper);
+/*        if (!list.isEmpty()){
+            AaPlatformParameter aaPlatformParameter = list.get(0);
+            if (!Strings.isNullOrEmpty(aaPlatformParameter.getWechatQrCode()) && !aaPlatformParameter.getWechatQrCode().startsWith("http")){
+                aaPlatformParameter.setWechatQrCode(host + "/" + aaPlatformParameter.getWechatQrCode());
+            }
+        }*/
         return Result.OK(list.get( 0 ));
         return Result.OK(list.get( 0 ));
     }
     }
 
 

+ 45 - 22
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/controller/AaSlideshowController.java

@@ -9,6 +9,10 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.google.common.base.Strings;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.common.util.oConvertUtils;
@@ -20,6 +24,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 
 
+import org.jeecg.modules.system.service.ISysFileCacheService;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ExportParams;
@@ -37,19 +42,34 @@ import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.aspect.annotation.AutoLog;
 
 
  /**
  /**
- * @Description: 轮播管理
+ * @Description: 轮播管理
  * @Author: jeecg-boot
  * @Author: jeecg-boot
- * @Date:   2022-10-11
+ * @Date:   2023-12-04
  * @Version: V1.0
  * @Version: V1.0
  */
  */
-@Api(tags="轮播管理")
+@Api(tags="首页轮播管理")
 @RestController
 @RestController
 @RequestMapping("/aa/aaSlideshow")
 @RequestMapping("/aa/aaSlideshow")
 @Slf4j
 @Slf4j
 public class AaSlideshowController extends JeecgController<AaSlideshow, IAaSlideshowService> {
 public class AaSlideshowController extends JeecgController<AaSlideshow, IAaSlideshowService> {
 	@Autowired
 	@Autowired
 	private IAaSlideshowService aaSlideshowService;
 	private IAaSlideshowService aaSlideshowService;
-	
+
+	@Autowired
+	private ISysFileCacheService sysFileCacheService;
+
+	 /**
+	  * 清理缓存
+	  *
+	  * @return
+	  */
+	 @ApiOperation(value="轮播管理-清理轮播页缓存", notes="轮播管理-清理轮播页缓存")
+	 @GetMapping(value = "/clearCache")
+	 public Result<IPage<AaSlideshow>> queryPageList() {
+		 sysFileCacheService.getDefaultLFUFileCache().clear();
+		 return Result.OK("缓存清理成功");
+	 }
+
 	/**
 	/**
 	 * 分页列表查询
 	 * 分页列表查询
 	 *
 	 *
@@ -59,83 +79,86 @@ public class AaSlideshowController extends JeecgController<AaSlideshow, IAaSlide
 	 * @param req
 	 * @param req
 	 * @return
 	 * @return
 	 */
 	 */
-	//@AutoLog(value = "轮播管理-分页列表查询")
-	@ApiOperation(value="轮播管理-分页列表查询", notes="轮播管理-分页列表查询")
+	//@AutoLog(value = "轮播管理-分页列表查询")
+	@ApiOperation(value="轮播管理-分页列表查询", notes="轮播管理-分页列表查询")
 	@GetMapping(value = "/list")
 	@GetMapping(value = "/list")
 	public Result<IPage<AaSlideshow>> queryPageList(AaSlideshow aaSlideshow,
 	public Result<IPage<AaSlideshow>> queryPageList(AaSlideshow aaSlideshow,
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
 								   HttpServletRequest req) {
 								   HttpServletRequest req) {
+		if (!Strings.isNullOrEmpty(aaSlideshow.getName())) {
+			aaSlideshow.setName("*"+aaSlideshow.getName()+"*");
+		}
 		QueryWrapper<AaSlideshow> queryWrapper = QueryGenerator.initQueryWrapper(aaSlideshow, req.getParameterMap());
 		QueryWrapper<AaSlideshow> queryWrapper = QueryGenerator.initQueryWrapper(aaSlideshow, req.getParameterMap());
 		Page<AaSlideshow> page = new Page<AaSlideshow>(pageNo, pageSize);
 		Page<AaSlideshow> page = new Page<AaSlideshow>(pageNo, pageSize);
 		IPage<AaSlideshow> pageList = aaSlideshowService.page(page, queryWrapper);
 		IPage<AaSlideshow> pageList = aaSlideshowService.page(page, queryWrapper);
 		return Result.OK(pageList);
 		return Result.OK(pageList);
 	}
 	}
-	
+
 	/**
 	/**
 	 *   添加
 	 *   添加
 	 *
 	 *
 	 * @param aaSlideshow
 	 * @param aaSlideshow
 	 * @return
 	 * @return
 	 */
 	 */
-	@AutoLog(value = "轮播管理-添加")
-	@ApiOperation(value="轮播管理-添加", notes="轮播管理-添加")
+	@AutoLog(value = "轮播管理-添加")
+	@ApiOperation(value="轮播管理-添加", notes="轮播管理-添加")
 	@PostMapping(value = "/add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody AaSlideshow aaSlideshow) {
 	public Result<String> add(@RequestBody AaSlideshow aaSlideshow) {
 		aaSlideshowService.save(aaSlideshow);
 		aaSlideshowService.save(aaSlideshow);
 		return Result.OK("添加成功!");
 		return Result.OK("添加成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *  编辑
 	 *  编辑
 	 *
 	 *
 	 * @param aaSlideshow
 	 * @param aaSlideshow
 	 * @return
 	 * @return
 	 */
 	 */
-	@AutoLog(value = "轮播管理-编辑")
-	@ApiOperation(value="轮播管理-编辑", notes="轮播管理-编辑")
+	@AutoLog(value = "轮播管理-编辑")
+	@ApiOperation(value="轮播管理-编辑", notes="轮播管理-编辑")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody AaSlideshow aaSlideshow) {
 	public Result<String> edit(@RequestBody AaSlideshow aaSlideshow) {
 		aaSlideshowService.updateById(aaSlideshow);
 		aaSlideshowService.updateById(aaSlideshow);
 		return Result.OK("编辑成功!");
 		return Result.OK("编辑成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *   通过id删除
 	 *   通过id删除
 	 *
 	 *
 	 * @param id
 	 * @param id
 	 * @return
 	 * @return
 	 */
 	 */
-	@AutoLog(value = "轮播管理-通过id删除")
-	@ApiOperation(value="轮播管理-通过id删除", notes="轮播管理-通过id删除")
+	@AutoLog(value = "轮播管理-通过id删除")
+	@ApiOperation(value="轮播管理-通过id删除", notes="轮播管理-通过id删除")
 	@DeleteMapping(value = "/delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		aaSlideshowService.removeById(id);
 		aaSlideshowService.removeById(id);
 		return Result.OK("删除成功!");
 		return Result.OK("删除成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 *  批量删除
 	 *  批量删除
 	 *
 	 *
 	 * @param ids
 	 * @param ids
 	 * @return
 	 * @return
 	 */
 	 */
-	@AutoLog(value = "轮播管理-批量删除")
-	@ApiOperation(value="轮播管理-批量删除", notes="轮播管理-批量删除")
+	@AutoLog(value = "轮播管理-批量删除")
+	@ApiOperation(value="轮播管理-批量删除", notes="轮播管理-批量删除")
 	@DeleteMapping(value = "/deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.aaSlideshowService.removeByIds(Arrays.asList(ids.split(",")));
 		this.aaSlideshowService.removeByIds(Arrays.asList(ids.split(",")));
 		return Result.OK("批量删除成功!");
 		return Result.OK("批量删除成功!");
 	}
 	}
-	
+
 	/**
 	/**
 	 * 通过id查询
 	 * 通过id查询
 	 *
 	 *
 	 * @param id
 	 * @param id
 	 * @return
 	 * @return
 	 */
 	 */
-	//@AutoLog(value = "轮播管理-通过id查询")
-	@ApiOperation(value="轮播管理-通过id查询", notes="轮播管理-通过id查询")
+	//@AutoLog(value = "轮播管理-通过id查询")
+	@ApiOperation(value="轮播管理-通过id查询", notes="轮播管理-通过id查询")
 	@GetMapping(value = "/queryById")
 	@GetMapping(value = "/queryById")
 	public Result<AaSlideshow> queryById(@RequestParam(name="id",required=true) String id) {
 	public Result<AaSlideshow> queryById(@RequestParam(name="id",required=true) String id) {
 		AaSlideshow aaSlideshow = aaSlideshowService.getById(id);
 		AaSlideshow aaSlideshow = aaSlideshowService.getById(id);
@@ -153,7 +176,7 @@ public class AaSlideshowController extends JeecgController<AaSlideshow, IAaSlide
     */
     */
     @RequestMapping(value = "/exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, AaSlideshow aaSlideshow) {
     public ModelAndView exportXls(HttpServletRequest request, AaSlideshow aaSlideshow) {
-        return super.exportXls(request, aaSlideshow, AaSlideshow.class, "轮播管理");
+        return super.exportXls(request, aaSlideshow, AaSlideshow.class, "轮播管理");
     }
     }
 
 
     /**
     /**

+ 4 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaCommodity.java

@@ -51,6 +51,10 @@ public class AaCommodity implements Serializable {
 	@Excel(name = "图片", width = 15)
 	@Excel(name = "图片", width = 15)
     @ApiModelProperty(value = "图片")
     @ApiModelProperty(value = "图片")
     private String pic;
     private String pic;
+    /**视频*/
+    @Excel(name = "视频", width = 15)
+    @ApiModelProperty(value = "视频")
+    private String video;
 	/**价格*/
 	/**价格*/
 	@Excel(name = "价格", width = 15)
 	@Excel(name = "价格", width = 15)
     @ApiModelProperty(value = "价格")
     @ApiModelProperty(value = "价格")

+ 31 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaCommodityFl.java

@@ -4,16 +4,19 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.Date;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.Data;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.experimental.Accessors;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.springframework.format.annotation.DateTimeFormat;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecgframework.poi.excel.annotation.Excel;
 import org.jeecg.common.aspect.annotation.Dict;
 import org.jeecg.common.aspect.annotation.Dict;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import java.io.UnsupportedEncodingException;
 import java.io.UnsupportedEncodingException;
+import java.util.List;
 
 
 /**
 /**
  * @Description: 商品分类
  * @Description: 商品分类
@@ -23,6 +26,7 @@ import java.io.UnsupportedEncodingException;
  */
  */
 @Data
 @Data
 @TableName("aa_commodity_fl")
 @TableName("aa_commodity_fl")
+@Accessors(chain = true)
 @ApiModel(value="aa_commodity_fl对象", description="商品分类")
 @ApiModel(value="aa_commodity_fl对象", description="商品分类")
 public class AaCommodityFl implements Serializable {
 public class AaCommodityFl implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
@@ -39,6 +43,16 @@ public class AaCommodityFl implements Serializable {
 	@Excel(name = "分类图片", width = 15)
 	@Excel(name = "分类图片", width = 15)
     @ApiModelProperty(value = "分类图片")
     @ApiModelProperty(value = "分类图片")
     private String pic;
     private String pic;
+    /**分类图片*/
+    @ApiModelProperty(value = "分类图片2")
+    @TableField(exist = false)
+    private String pic2;
+
+    /**系列详情页顶部视频或动图*/
+    @Excel(name = "系列详情页顶部视频或动图", width = 15)
+    @ApiModelProperty(value = "系列详情页顶部视频或动图")
+    private String assets;
+
 	/**分类名称*/
 	/**分类名称*/
 	@Excel(name = "分类名称", width = 15)
 	@Excel(name = "分类名称", width = 15)
     @ApiModelProperty(value = "分类名称")
     @ApiModelProperty(value = "分类名称")
@@ -51,6 +65,15 @@ public class AaCommodityFl implements Serializable {
     @Excel(name = "分类名称德语", width = 15)
     @Excel(name = "分类名称德语", width = 15)
     @ApiModelProperty(value = "分类名称德语")
     @ApiModelProperty(value = "分类名称德语")
     private String nameGerman;
     private String nameGerman;
+
+    /**分类描述*/
+    @Excel(name = "分类描述", width = 100)
+    @ApiModelProperty(value = "分类名称")
+    private String des;
+
+    @Excel(name = "分类描述英语", width = 100)
+    @ApiModelProperty(value = "分类名称英语")
+    private String desEnglish;
 	/**是否有子节点列*/
 	/**是否有子节点列*/
 	@Excel(name = "是否有子节点列", width = 15)
 	@Excel(name = "是否有子节点列", width = 15)
     @ApiModelProperty(value = "是否有子节点列")
     @ApiModelProperty(value = "是否有子节点列")
@@ -60,4 +83,12 @@ public class AaCommodityFl implements Serializable {
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "创建时间")
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
     private Date createTime;
+
+    @ApiModelProperty(value = "下级分类")
+    @TableField(exist = false)
+    private List<AaCommodityFl> children;
+
+    @ApiModelProperty(value = "商品列表")
+    @TableField(exist = false)
+    private List<AaCommodity> commodities;
 }
 }

+ 12 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaNews.java

@@ -51,6 +51,18 @@ public class AaNews implements Serializable {
 	@Excel(name = "新闻标题德语", width = 15)
 	@Excel(name = "新闻标题德语", width = 15)
     @ApiModelProperty(value = "新闻标题德语")
     @ApiModelProperty(value = "新闻标题德语")
     private String titleGerman;
     private String titleGerman;
+    /**新闻内容*/
+    @Excel(name = "新闻摘要", width = 15)
+    @ApiModelProperty(value = "新闻摘要")
+    private String des;
+    /**新闻内容英语*/
+    @Excel(name = "新闻摘要英语", width = 15)
+    @ApiModelProperty(value = "新闻摘要英语")
+    private String desEnglish;
+    ///**新闻内容德语*/
+    //@Excel(name = "新闻内容德语", width = 15)
+    //@ApiModelProperty(value = "新闻内容德语")
+    //private String desGerman;
 	/**新闻内容*/
 	/**新闻内容*/
 	@Excel(name = "新闻内容", width = 15)
 	@Excel(name = "新闻内容", width = 15)
     @ApiModelProperty(value = "新闻内容")
     @ApiModelProperty(value = "新闻内容")

+ 12 - 1
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaPlatformParameter.java

@@ -3,6 +3,7 @@ package org.jeecg.modules.aa.entity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -26,6 +27,7 @@ public class AaPlatformParameter implements Serializable {
     private String id;
     private String id;
 
 
 
 
+    /* 不再使用 这idiot的命名
     private String aaa;
     private String aaa;
 
 
     private String aaaTitle;
     private String aaaTitle;
@@ -73,17 +75,25 @@ public class AaPlatformParameter implements Serializable {
     private String bbbLink;
     private String bbbLink;
 
 
     private String cccLink;
     private String cccLink;
+    */
 
 
 
 
     //联系我们
     //联系我们
+    @ApiModelProperty(value = "联系我们手机号")
     private String phone;
     private String phone;
+    @ApiModelProperty(value = "联系我们邮箱")
     private String mailbox;
     private String mailbox;
-
+    @ApiModelProperty(value = "备注文案")
     private String remarkWenan;
     private String remarkWenan;
+    @ApiModelProperty(value = "备注文案英语")
     private String remarkWenanEnglish;
     private String remarkWenanEnglish;
+    @ApiModelProperty(value = "备注文案德语")
     private String remarkWenanGerman;
     private String remarkWenanGerman;
+    @ApiModelProperty(value = "微信二维码")
+    private String wechatQrCode;
 
 
     //手表列表顶部
     //手表列表顶部
+/*
 
 
     private String commodityPic;
     private String commodityPic;
 
 
@@ -98,5 +108,6 @@ public class AaPlatformParameter implements Serializable {
     private String commodityWaEnglish;
     private String commodityWaEnglish;
 
 
     private String commodityWaGerman;
     private String commodityWaGerman;
+*/
 
 
 }
 }

+ 14 - 10
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaPoster.java

@@ -27,7 +27,7 @@ import lombok.experimental.Accessors;
 @TableName("aa_poster")
 @TableName("aa_poster")
 @Accessors(chain = true)
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
-@ApiModel(value="aa_poster对象", description="海报管理")
+@ApiModel(value="aa_poster对象", description="页面资源管理")
 public class AaPoster implements Serializable {
 public class AaPoster implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
@@ -35,22 +35,26 @@ public class AaPoster implements Serializable {
 	@TableId(type = IdType.ASSIGN_ID)
 	@TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "id")
     @ApiModelProperty(value = "id")
     private String id;
     private String id;
-	/**海报名称*/
-	@Excel(name = "海报名称", width = 15)
-    @ApiModelProperty(value = "海报名称")
+	/**资源名称*/
+	@Excel(name = "资源名称", width = 15)
+    @ApiModelProperty(value = "资源名称")
     private String name;
     private String name;
-	/**海报图*/
-	@Excel(name = "海报图", width = 15)
+    /**资源名称英文*/
+	@Excel(name = "资源名称英文", width = 15)
+    @ApiModelProperty(value = "资源名称英文")
+    private String nameEnglish;
+	/**资源连接*/
+	@Excel(name = "资源连接", width = 15)
     @ApiModelProperty(value = "海报图")
     @ApiModelProperty(value = "海报图")
     private String cover;
     private String cover;
 	/**链接*/
 	/**链接*/
-	@Excel(name = "链接", width = 15)
+/*	@Excel(name = "链接", width = 15)
     @ApiModelProperty(value = "链接")
     @ApiModelProperty(value = "链接")
-    private String link;
+    private String link;*/
 	/**权重*/
 	/**权重*/
-	@Excel(name = "权重", width = 15)
+/*	@Excel(name = "权重", width = 15)
     @ApiModelProperty(value = "权重")
     @ApiModelProperty(value = "权重")
-    private Integer sort;
+    private Integer sort;*/
 	/**创建时间*/
 	/**创建时间*/
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

+ 42 - 32
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/entity/AaSlideshow.java

@@ -18,59 +18,69 @@ import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
 /**
 /**
- * @Description: 腕表介绍管理
+ * @Description: 轮播管理
  * @Author: jeecg-boot
  * @Author: jeecg-boot
- * @Date:   2022-10-11
+ * @Date:   2023-12-04
  * @Version: V1.0
  * @Version: V1.0
  */
  */
 @Data
 @Data
 @TableName("aa_slideshow")
 @TableName("aa_slideshow")
 @Accessors(chain = true)
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @EqualsAndHashCode(callSuper = false)
-@ApiModel(value="aa_slideshow对象", description="腕表介绍管理")
+@ApiModel(value="aa_slideshow对象", description="轮播管理")
 public class AaSlideshow implements Serializable {
 public class AaSlideshow implements Serializable {
     private static final long serialVersionUID = 1L;
     private static final long serialVersionUID = 1L;
 
 
 	/**id*/
 	/**id*/
 	@TableId(type = IdType.ASSIGN_ID)
 	@TableId(type = IdType.ASSIGN_ID)
     @ApiModelProperty(value = "id")
     @ApiModelProperty(value = "id")
-    private String id;
+    private java.lang.String id;
 	/**轮播图名称*/
 	/**轮播图名称*/
 	@Excel(name = "轮播图名称", width = 15)
 	@Excel(name = "轮播图名称", width = 15)
     @ApiModelProperty(value = "轮播图名称")
     @ApiModelProperty(value = "轮播图名称")
-    private String name;
-    @Excel(name = "轮播图名称英语", width = 15)
+    private java.lang.String name;
+	/**轮播资源*/
+	@Excel(name = "轮播资源", width = 15)
+    @ApiModelProperty(value = "轮播资源")
+    private java.lang.String cover;
+	/**所属系列*/
+	@Excel(name = "所属系列", width = 15, dictTable = "aa_commodity_fl", dicText = "name", dicCode = "id")
+	@Dict(dictTable = "aa_commodity_fl", dicText = "name", dicCode = "id")
+    @ApiModelProperty(value = "所属系列")
+    private java.lang.String seriesId;
+	/**排序*/
+	@Excel(name = "排序", width = 15)
+    @ApiModelProperty(value = "排序")
+    private java.lang.Integer sort;
+	/**轮播图名称英语*/
+	@Excel(name = "轮播图名称英语", width = 15)
     @ApiModelProperty(value = "轮播图名称英语")
     @ApiModelProperty(value = "轮播图名称英语")
-    private String nameEnglish;
-    @Excel(name = "轮播图名称德语", width = 15)
+    private java.lang.String nameEnglish;
+	/**轮播图名称德语*/
+	@Excel(name = "轮播图名称德语", width = 15)
     @ApiModelProperty(value = "轮播图名称德语")
     @ApiModelProperty(value = "轮播图名称德语")
-    private String nameGerman;
-
-    //描述
-    @Excel(name = "描述", width = 15)
+    private java.lang.String nameGerman;
+	/**描述*/
+	@Excel(name = "描述", width = 15)
     @ApiModelProperty(value = "描述")
     @ApiModelProperty(value = "描述")
-    private String description;
-    @Excel(name = "描述英语", width = 15)
+    private java.lang.String description;
+	/**描述英语*/
+	@Excel(name = "描述英语", width = 15)
     @ApiModelProperty(value = "描述英语")
     @ApiModelProperty(value = "描述英语")
-    private String descriptionEnglish;
-    @Excel(name = "描述德语", width = 15)
+    private java.lang.String descriptionEnglish;
+	/**描述德语*/
+	@Excel(name = "描述德语", width = 15)
     @ApiModelProperty(value = "描述德语")
     @ApiModelProperty(value = "描述德语")
-    private String descriptionGerman;
-
-
-	/**轮播图*/
-	@Excel(name = "轮播图", width = 15)
-    @ApiModelProperty(value = "轮播图")
-    private String cover;
-	/**链接*/
-	@Excel(name = "链接", width = 15)
-    @ApiModelProperty(value = "链接")
-    private String link;
-	/**权重*/
-	@Excel(name = "权重", width = 15)
-    @ApiModelProperty(value = "权重")
-    private Integer sort;
+    private java.lang.String descriptionGerman;
+	/**修改时间*/
+    @ApiModelProperty(value = "修改时间")
+    private java.util.Date updateTime;
 	/**创建时间*/
 	/**创建时间*/
     @ApiModelProperty(value = "创建时间")
     @ApiModelProperty(value = "创建时间")
-    private Date createTime;
+    private java.util.Date createTime;
+    /**是否使用*/
+    @ApiModelProperty(value = "是否使用 1:是 0:否")
+    @Excel(name = "是否使用", width = 15, dicCode = "aa_slideshow_enable")
+    @Dict(dicCode = "aa_slideshow_enable")
+    private java.lang.String enable;
 }
 }

+ 1 - 1
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/mapper/xml/AaSlideshowMapper.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?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">
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.jeecg.modules.aa.mapper.AaSlideshowMapper">
+<mapper namespace="org.jeecg.modules.demo.aa.mapper.AaSlideshowMapper">
 
 
 </mapper>
 </mapper>

+ 9 - 4
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaCommodityFlService.java

@@ -16,23 +16,28 @@ public interface IAaCommodityFlService extends IService<AaCommodityFl> {
 
 
 	/**根节点父ID的值*/
 	/**根节点父ID的值*/
 	public static final String ROOT_PID_VALUE = "0";
 	public static final String ROOT_PID_VALUE = "0";
-	
+
 	/**树节点有子节点状态值*/
 	/**树节点有子节点状态值*/
 	public static final String HASCHILD = "1";
 	public static final String HASCHILD = "1";
-	
+
 	/**树节点无子节点状态值*/
 	/**树节点无子节点状态值*/
 	public static final String NOCHILD = "0";
 	public static final String NOCHILD = "0";
 
 
 	/**新增节点*/
 	/**新增节点*/
 	void addAaCommodityFl(AaCommodityFl aaCommodityFl);
 	void addAaCommodityFl(AaCommodityFl aaCommodityFl);
-	
+
 	/**修改节点*/
 	/**修改节点*/
 	void updateAaCommodityFl(AaCommodityFl aaCommodityFl) throws JeecgBootException;
 	void updateAaCommodityFl(AaCommodityFl aaCommodityFl) throws JeecgBootException;
-	
+
 	/**删除节点*/
 	/**删除节点*/
 	void deleteAaCommodityFl(String id) throws JeecgBootException;
 	void deleteAaCommodityFl(String id) throws JeecgBootException;
 
 
 	/**查询所有数据,无分页*/
 	/**查询所有数据,无分页*/
     List<AaCommodityFl> queryTreeListNoPage(QueryWrapper<AaCommodityFl> queryWrapper);
     List<AaCommodityFl> queryTreeListNoPage(QueryWrapper<AaCommodityFl> queryWrapper);
 
 
+	/**查询所有子节点*/
+	List<AaCommodityFl> findAllChild(AaCommodityFl parent);
+
+	/**根据分类id查询它的顶级父类,如果自己就是顶级父类则返回自己*/
+	AaCommodityFl findTopNode(String id);
 }
 }

+ 8 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaCommodityService.java

@@ -3,6 +3,8 @@ package org.jeecg.modules.aa.service;
 import org.jeecg.modules.aa.entity.AaCommodity;
 import org.jeecg.modules.aa.entity.AaCommodity;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 
+import java.util.List;
+
 /**
 /**
  * @Description: 商品列表
  * @Description: 商品列表
  * @Author: jeecg-boot
  * @Author: jeecg-boot
@@ -11,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface IAaCommodityService extends IService<AaCommodity> {
 public interface IAaCommodityService extends IService<AaCommodity> {
 
 
+    /**
+     * 根据分类id查询商品
+     * @param commodityFlId
+     * @return
+     */
+    List<AaCommodity> getCommodityByFl(String commodityFlId);
 }
 }

+ 11 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/IAaNewsService.java

@@ -11,4 +11,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
  */
 public interface IAaNewsService extends IService<AaNews> {
 public interface IAaNewsService extends IService<AaNews> {
 
 
+    /**
+     * 保存新闻
+     * @param aaNews
+     */
+    void saveNews(AaNews aaNews);
+
+    /**
+     * 修改新闻
+     * @param aaNews
+     */
+    void updateNewsById(AaNews aaNews);
 }
 }

+ 45 - 5
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaCommodityFlServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.aa.service.impl;
 package org.jeecg.modules.aa.service.impl;
 
 
+import com.google.common.base.Strings;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.aa.entity.AaCommodityFl;
 import org.jeecg.modules.aa.entity.AaCommodityFl;
@@ -39,7 +40,7 @@ public class AaCommodityFlServiceImpl extends ServiceImpl<AaCommodityFlMapper, A
 		}
 		}
 		baseMapper.insert(aaCommodityFl);
 		baseMapper.insert(aaCommodityFl);
 	}
 	}
-	
+
 	@Override
 	@Override
 	public void updateAaCommodityFl(AaCommodityFl aaCommodityFl) {
 	public void updateAaCommodityFl(AaCommodityFl aaCommodityFl) {
 		AaCommodityFl entity = this.getById(aaCommodityFl.getId());
 		AaCommodityFl entity = this.getById(aaCommodityFl.getId());
@@ -59,7 +60,7 @@ public class AaCommodityFlServiceImpl extends ServiceImpl<AaCommodityFlMapper, A
 		}
 		}
 		baseMapper.updateById(aaCommodityFl);
 		baseMapper.updateById(aaCommodityFl);
 	}
 	}
-	
+
 	@Override
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@Transactional(rollbackFor = Exception.class)
 	public void deleteAaCommodityFl(String id) throws JeecgBootException {
 	public void deleteAaCommodityFl(String id) throws JeecgBootException {
@@ -97,7 +98,7 @@ public class AaCommodityFlServiceImpl extends ServiceImpl<AaCommodityFlMapper, A
             baseMapper.deleteById(id);
             baseMapper.deleteById(id);
         }
         }
 	}
 	}
-	
+
 	@Override
 	@Override
     public List<AaCommodityFl> queryTreeListNoPage(QueryWrapper<AaCommodityFl> queryWrapper) {
     public List<AaCommodityFl> queryTreeListNoPage(QueryWrapper<AaCommodityFl> queryWrapper) {
         List<AaCommodityFl> dataList = baseMapper.selectList(queryWrapper);
         List<AaCommodityFl> dataList = baseMapper.selectList(queryWrapper);
@@ -118,8 +119,47 @@ public class AaCommodityFlServiceImpl extends ServiceImpl<AaCommodityFlMapper, A
         }
         }
         return mapList;
         return mapList;
     }
     }
-	
-	/**
+
+    /**
+     * 查询父节点下的所有子节点,并设置到 org.jeecg.modules.aa.entity.AaCommodityFl#children 属性上
+     * @param parent 父节点
+     * @return 字节点列表
+     */
+    @Override
+    public List<AaCommodityFl> findAllChild(AaCommodityFl parent) {
+        if (Strings.isNullOrEmpty(parent.getHasChild()) || parent.getHasChild().equals("0")) {
+            return new ArrayList<>();
+        }
+        QueryWrapper<AaCommodityFl> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq( "pid", parent.getId());
+        List<AaCommodityFl> child = this.list( queryWrapper );
+        parent.setChildren(child);
+        if (child !=null && !child.isEmpty()) {
+            child.forEach(this::findAllChild);
+        }
+        return child;
+    }
+
+    /**
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public AaCommodityFl findTopNode(String id) {
+        AaCommodityFl byId = getById(id);
+        if (byId == null) {
+            return null;
+        }
+        if ("0".equals(byId.getPid())) {
+            // 自己就是顶级
+            return byId;
+        } else {
+            return this.findTopNode(byId.getPid());
+        }
+    }
+
+    /**
 	 * 根据所传pid查询旧的父级节点的子节点并修改相应状态值
 	 * 根据所传pid查询旧的父级节点的子节点并修改相应状态值
 	 * @param pid
 	 * @param pid
 	 */
 	 */

+ 9 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaCommodityServiceImpl.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.aa.service.impl;
 package org.jeecg.modules.aa.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.jeecg.modules.aa.entity.AaCommodity;
 import org.jeecg.modules.aa.entity.AaCommodity;
 import org.jeecg.modules.aa.mapper.AaCommodityMapper;
 import org.jeecg.modules.aa.mapper.AaCommodityMapper;
 import org.jeecg.modules.aa.service.IAaCommodityService;
 import org.jeecg.modules.aa.service.IAaCommodityService;
@@ -7,6 +8,8 @@ import org.springframework.stereotype.Service;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
 
+import java.util.List;
+
 /**
 /**
  * @Description: 商品列表
  * @Description: 商品列表
  * @Author: jeecg-boot
  * @Author: jeecg-boot
@@ -16,4 +19,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 @Service
 public class AaCommodityServiceImpl extends ServiceImpl<AaCommodityMapper, AaCommodity> implements IAaCommodityService {
 public class AaCommodityServiceImpl extends ServiceImpl<AaCommodityMapper, AaCommodity> implements IAaCommodityService {
 
 
+    @Override
+    public List<AaCommodity> getCommodityByFl(String commodityFlId) {
+        LambdaQueryWrapper<AaCommodity> aaCommodityLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        aaCommodityLambdaQueryWrapper.eq(AaCommodity::getTypeId, commodityFlId);
+        return this.list(aaCommodityLambdaQueryWrapper);
+    }
 }
 }

+ 38 - 0
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/aa/service/impl/AaNewsServiceImpl.java

@@ -1,8 +1,11 @@
 package org.jeecg.modules.aa.service.impl;
 package org.jeecg.modules.aa.service.impl;
 
 
+import cn.hutool.http.HtmlUtil;
+import com.google.common.base.Strings;
 import org.jeecg.modules.aa.entity.AaNews;
 import org.jeecg.modules.aa.entity.AaNews;
 import org.jeecg.modules.aa.mapper.AaNewsMapper;
 import org.jeecg.modules.aa.mapper.AaNewsMapper;
 import org.jeecg.modules.aa.service.IAaNewsService;
 import org.jeecg.modules.aa.service.IAaNewsService;
+import org.jsoup.Jsoup;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,4 +19,39 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 @Service
 @Service
 public class AaNewsServiceImpl extends ServiceImpl<AaNewsMapper, AaNews> implements IAaNewsService {
 public class AaNewsServiceImpl extends ServiceImpl<AaNewsMapper, AaNews> implements IAaNewsService {
 
 
+    @Override
+    public void saveNews(AaNews aaNews) {
+        aaNews.setDes(getDes(aaNews.getContent()));
+        aaNews.setDesEnglish(getDes(aaNews.getContentEnglish()));
+        save(aaNews);
+    }
+
+    @Override
+    public void updateNewsById(AaNews aaNews) {
+        aaNews.setDes(getDes(aaNews.getContent()));
+        aaNews.setDesEnglish(getDes(aaNews.getContentEnglish()));
+        updateById(aaNews);
+    }
+
+    /**
+     * 获取摘要
+     * 将html标签换行等内容去除,只留下纯文本内容
+     * @param content 富文本
+     * @return 文本字符
+     */
+    private String getDes(String content) {
+        if (Strings.isNullOrEmpty(content)) {
+            return null;
+        }
+        String text = Jsoup.parse(content).text();
+        if (Strings.isNullOrEmpty(text)) {
+            return null;
+        } else {
+            if (text.length() > 200) {
+                return text.substring(0,200);
+            } else {
+                return text;
+            }
+        }
+    }
 }
 }

+ 125 - 8
jlsb/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java

@@ -1,7 +1,13 @@
 package org.jeecg.modules.system.controller;
 package org.jeecg.modules.system.controller;
 
 
+import cn.hutool.cache.file.LFUFileCache;
+import cn.hutool.http.HtmlUtil;
+import cn.hutool.http.useragent.Browser;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentParser;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.base.Strings;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.CommonConstant;
@@ -11,6 +17,7 @@ import org.jeecg.common.util.CommonUtils;
 import org.jeecg.common.util.RestUtil;
 import org.jeecg.common.util.RestUtil;
 import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.TokenUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.system.service.ISysFileCacheService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpHeaders;
@@ -25,10 +32,13 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.HandlerMapping;
 import org.springframework.web.servlet.HandlerMapping;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.ModelAndView;
 
 
+import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.io.*;
 import java.net.URLDecoder;
 import java.net.URLDecoder;
+import java.util.Date;
+
 /**
 /**
  * <p>
  * <p>
  * 用户表 前端控制器
  * 用户表 前端控制器
@@ -42,9 +52,15 @@ import java.net.URLDecoder;
 @RequestMapping("/sys/common")
 @RequestMapping("/sys/common")
 public class CommonController {
 public class CommonController {
 
 
+    // 图片缓存key
+    private static final String CACHE_IMG_NAME = "sys_common_static_images_cache";
+
     @Autowired
     @Autowired
     private ISysBaseAPI sysBaseAPI;
     private ISysBaseAPI sysBaseAPI;
 
 
+    @Autowired
+    private ISysFileCacheService sysFileCacheService;
+
     @Value(value = "${jeecg.path.upload}")
     @Value(value = "${jeecg.path.upload}")
     private String uploadpath;
     private String uploadpath;
 
 
@@ -214,6 +230,8 @@ public class CommonController {
         if(oConvertUtils.isEmpty(imgPath) || imgPath=="null"){
         if(oConvertUtils.isEmpty(imgPath) || imgPath=="null"){
             return;
             return;
         }
         }
+        String userAgent = request.getHeader("User-Agent");
+        UserAgent parse = UserAgentParser.parse(userAgent);
         // 其余处理略
         // 其余处理略
         InputStream inputStream = null;
         InputStream inputStream = null;
         OutputStream outputStream = null;
         OutputStream outputStream = null;
@@ -230,18 +248,45 @@ public class CommonController {
             }
             }
             response.setContentType("application/force-download");// 设置强制下载不打开
             response.setContentType("application/force-download");// 设置强制下载不打开
             response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));
             response.addHeader("Content-Disposition", "attachment;fileName=" + new String(file.getName().getBytes("UTF-8"),"iso-8859-1"));
-            inputStream = new BufferedInputStream(new FileInputStream(filePath));
-            outputStream = response.getOutputStream();
-            byte[] buf = new byte[1024];
-            int len;
-            while ((len = inputStream.read(buf)) > 0) {
-                outputStream.write(buf, 0, len);
+            // 优化本地文件使用缓存
+            //outputStream = response.getOutputStream();
+            if (imgPath.endsWith(".mp4") || imgPath.endsWith(".wmv") || imgPath.endsWith(".mpg")||imgPath.endsWith(".mov")||imgPath.endsWith(".avi")||imgPath.endsWith(".flv")){
+                byte[] cacheFile = sysFileCacheService.getDefCacheFile(filePath);
+                //outputStream.write(cacheFile, 0, cacheFile.length);
+                inputStream = new ByteArrayInputStream(cacheFile);
+                log.info("视频缓存");
+                String browserName = parse.getBrowser().getName();
+                String osName = parse.getOs().getName();
+                if ((!Strings.isNullOrEmpty(browserName) && browserName.startsWith("Safari")) || (!Strings.isNullOrEmpty(osName) && osName.startsWith("iPhone"))) {
+                    sendVideo(request, response, file, file.getName());
+                } else {
+                    outputStream = response.getOutputStream();
+                    byte[] buf = new byte[512000];
+                    int len;
+                    while ((len = inputStream.read(buf)) > 0) {
+                        outputStream.write(buf, 0, len);
+                    }
+                    response.flushBuffer();
+                }
+            } else {
+                // 内存使用太多不使用缓存
+/*                LFUFileCache fileCache = sysFileCacheService.getFileCache(CACHE_IMG_NAME);
+                byte[] fileBytes = fileCache.getFileBytes(file);
+                //outputStream.write(fileBytes, 0, fileBytes.length);
+                inputStream = new ByteArrayInputStream(fileBytes);
+                log.info("其他文件缓存");*/
+                inputStream = new BufferedInputStream(new FileInputStream(filePath));
+                outputStream = response.getOutputStream();
+                byte[] buf = new byte[4096];
+                int len;
+                while ((len = inputStream.read(buf)) > 0) {
+                    outputStream.write(buf, 0, len);
+                }
+                response.flushBuffer();
             }
             }
-            response.flushBuffer();
         } catch (IOException e) {
         } catch (IOException e) {
             log.error("预览文件失败" + e.getMessage());
             log.error("预览文件失败" + e.getMessage());
             response.setStatus(404);
             response.setStatus(404);
-            e.printStackTrace();
         } finally {
         } finally {
             if (inputStream != null) {
             if (inputStream != null) {
                 try {
                 try {
@@ -261,6 +306,78 @@ public class CommonController {
 
 
     }
     }
 
 
+    private void sendVideo(HttpServletRequest request, HttpServletResponse response, File file, String fileName) throws FileNotFoundException, IOException {
+        RandomAccessFile randomFile = new RandomAccessFile(file, "r");//只读模式
+        long contentLength = randomFile.length();
+        String range = request.getHeader("Range");
+        int start = 0, end = 0;
+        if(range != null && range.startsWith("bytes=")){
+            String[] values = range.split("=")[1].split("-");
+            start = Integer.parseInt(values[0]);
+            if(values.length > 1){
+                end = Integer.parseInt(values[1]);
+            }
+        }
+        int requestSize = 0;
+        if(end != 0 && end > start){
+            requestSize = end - start + 1;
+        } else {
+            requestSize = Integer.MAX_VALUE;
+        }
+
+        response.setContentType("video/mp4");
+        response.setHeader("Accept-Ranges", "bytes");
+        response.setHeader("ETag", fileName);
+        response.setHeader("Last-Modified", new Date().toString());
+        //第一次请求只返回content length来让客户端请求多次实际数据
+        if(range == null){
+            response.setHeader("Content-length", contentLength + "");
+        }else{
+            //以后的多次以断点续传的方式来返回视频数据
+            response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);//206
+            long requestStart = 0, requestEnd = 0;
+            String[] ranges = range.split("=");
+            if(ranges.length > 1){
+                String[] rangeDatas = ranges[1].split("-");
+                requestStart = Integer.parseInt(rangeDatas[0]);
+                if(rangeDatas.length > 1){
+                    requestEnd = Integer.parseInt(rangeDatas[1]);
+                }
+            }
+            long length = 0;
+            if(requestEnd > 0){
+                length = requestEnd - requestStart + 1;
+                response.setHeader("Content-length", "" + length);
+                response.setHeader("Content-Range", "bytes " + requestStart + "-" + requestEnd + "/" + contentLength);
+            }else{
+                length = contentLength - requestStart;
+                response.setHeader("Content-length", "" + length);
+                response.setHeader("Content-Range", "bytes "+ requestStart + "-" + (contentLength - 1) + "/" + contentLength);
+            }
+        }
+        ServletOutputStream out = response.getOutputStream();
+        int needSize = requestSize;
+        randomFile.seek(start);
+        while(needSize > 0){
+            byte[] buffer = new byte[512000];
+            int len = randomFile.read(buffer);
+            if(needSize < buffer.length){
+                out.write(buffer, 0, needSize);
+            } else {
+                out.write(buffer, 0, len);
+                if(len < buffer.length){
+                    break;
+                }
+            }
+            needSize -= buffer.length;
+        }
+        randomFile.close();
+        out.close();
+    }
+
+
+
+
 //	/**
 //	/**
 //	 * 下载文件
 //	 * 下载文件
 //	 * 请求地址:http://localhost:8080/common/download/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}
 //	 * 请求地址:http://localhost:8080/common/download/{user/20190119/e1fe9925bc315c60addea1b98eb1cb1349547719_1547866868179.jpg}

+ 2 - 1
jlsb/jeecg-boot-module-system/src/main/resources/application-dev.yml

@@ -13,7 +13,8 @@ server:
     enabled: true
     enabled: true
     min-response-size: 1024
     min-response-size: 1024
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
-
+  system:
+    host: http://127.0.0.1:9999
 management:
 management:
   endpoints:
   endpoints:
     web:
     web:

+ 12 - 10
jlsb/jeecg-boot-module-system/src/main/resources/application-prod.yml

@@ -13,6 +13,8 @@ server:
     enabled: true
     enabled: true
     min-response-size: 1024
     min-response-size: 1024
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
+  system:
+    host: http://www.bruboses.com
 
 
 management:
 management:
   endpoints:
   endpoints:
@@ -135,9 +137,9 @@ spring:
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
       datasource:
         master:
         master:
-          url: jdbc:mysql://8.134.179.70:3306/jlsb?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-          username: jlsb
-          password: ehnkyX7LYYiCYTyj
+          url: jdbc:mysql://127.0.0.1:3306/bruboses?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: bruboses
+          password: mRhwWPmEbkRPn2yr
           driver-class-name: com.mysql.cj.jdbc.Driver
           driver-class-name: com.mysql.cj.jdbc.Driver
           # 多数据源配置
           # 多数据源配置
   #        multi-datasource1:
   #        multi-datasource1:
@@ -148,7 +150,7 @@ spring:
   #redis 配置
   #redis 配置
   redis:
   redis:
     database: 0
     database: 0
-    host: 8.134.179.70
+    host: 120.26.90.253
     lettuce:
     lettuce:
       pool:
       pool:
         max-active: 8   #最大连接数据库连接数,设 -1 为没有限制
         max-active: 8   #最大连接数据库连接数,设 -1 为没有限制
@@ -156,7 +158,7 @@ spring:
         max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
         max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
         min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
         min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
       shutdown-timeout: 100ms
       shutdown-timeout: 100ms
-    password: 'jlsb'
+    password: 'bruboses2023'
     port: 6379
     port: 6379
 #  redis:
 #  redis:
 #    database: 0
 #    database: 0
@@ -200,9 +202,9 @@ jeecg :
   uploadType: local
   uploadType: local
   path :
   path :
     #文件上传根目录 设置
     #文件上传根目录 设置
-    upload: /usr/java/AJeecgBootFiles
+    upload: /www/wwwroot/www.bruboses.com/brubosesTempFile
     #webapp文件路径
     #webapp文件路径
-    webapp: /usr/java/AJeecgBootFiles
+    webapp: /www/wwwroot/www.bruboses.com/brubosesTempFile
   shiro:
   shiro:
     excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
     excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
   #阿里云oss存储和大鱼短信秘钥配置
   #阿里云oss存储和大鱼短信秘钥配置
@@ -289,9 +291,9 @@ knife4j:
   #开启生产环境屏蔽
   #开启生产环境屏蔽
   production: false
   production: false
   basic:
   basic:
-    enable: false
-    username: jeecg
-    password: jeecg1314
+    enable: true
+    username: bbs
+    password: bbs@2024!
 #第三方登录
 #第三方登录
 justauth:
 justauth:
   enabled: true
   enabled: true

+ 69 - 58
jlsb/jeecg-boot-module-system/src/main/resources/application-test.yml

@@ -1,5 +1,5 @@
 server:
 server:
-  port: 8080
+  port: 9999
   tomcat:
   tomcat:
     max-swallow-size: -1
     max-swallow-size: -1
   error:
   error:
@@ -7,12 +7,14 @@ server:
     include-stacktrace: ALWAYS
     include-stacktrace: ALWAYS
     include-message: ALWAYS
     include-message: ALWAYS
   servlet:
   servlet:
-    context-path: /jeecg-boot
+    context-path:
+  #    context-path: /jeecg-boot
   compression:
   compression:
     enabled: true
     enabled: true
     min-response-size: 1024
     min-response-size: 1024
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
     mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
-
+  system:
+    host: http://120.79.86.50:9999
 management:
 management:
   endpoints:
   endpoints:
     web:
     web:
@@ -22,8 +24,8 @@ management:
 spring:
 spring:
   servlet:
   servlet:
     multipart:
     multipart:
-      max-file-size: 10MB
-      max-request-size: 10MB
+      max-file-size: 500MB
+      max-request-size: 500MB
   mail:
   mail:
     host: smtp.163.com
     host: smtp.163.com
     username: jeecgos@163.com
     username: jeecgos@163.com
@@ -56,6 +58,7 @@ spring:
             isClustered: true
             isClustered: true
             misfireThreshold: 60000
             misfireThreshold: 60000
             clusterCheckinInterval: 10000
             clusterCheckinInterval: 10000
+            selectWithLockSQL: SELECT* FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?
           threadPool:
           threadPool:
             class: org.quartz.simpl.SimpleThreadPool
             class: org.quartz.simpl.SimpleThreadPool
             threadCount: 10
             threadCount: 10
@@ -65,16 +68,17 @@ spring:
   jackson:
   jackson:
     date-format:   yyyy-MM-dd HH:mm:ss
     date-format:   yyyy-MM-dd HH:mm:ss
     time-zone:   GMT+8
     time-zone:   GMT+8
-  aop:
-    proxy-target-class: true
+  jpa:
+    open-in-view: false
+  #    database-platform: org.hibernate.dialect.SQLServerDialect
   activiti:
   activiti:
     check-process-definitions: false
     check-process-definitions: false
     #启用作业执行器
     #启用作业执行器
     async-executor-activate: false
     async-executor-activate: false
     #启用异步执行器
     #启用异步执行器
     job-executor-activate: false
     job-executor-activate: false
-  jpa:
-    open-in-view: false
+  aop:
+    proxy-target-class: true
   #配置freemarker
   #配置freemarker
   freemarker:
   freemarker:
     # 设置模板后缀名
     # 设置模板后缀名
@@ -104,7 +108,7 @@ spring:
         loginPassword: 123456
         loginPassword: 123456
         allow:
         allow:
       web-stat-filter:
       web-stat-filter:
-        enabled: true
+        enabled: false
     dynamic:
     dynamic:
       druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
       druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
         # 连接池的配置信息
         # 连接池的配置信息
@@ -118,7 +122,7 @@ spring:
         timeBetweenEvictionRunsMillis: 60000
         timeBetweenEvictionRunsMillis: 60000
         # 配置一个连接在池中最小生存的时间,单位是毫秒
         # 配置一个连接在池中最小生存的时间,单位是毫秒
         minEvictableIdleTimeMillis: 300000
         minEvictableIdleTimeMillis: 300000
-        validationQuery: SELECT 1 FROM DUAL
+        validationQuery: SELECT 1
         testWhileIdle: true
         testWhileIdle: true
         testOnBorrow: false
         testOnBorrow: false
         testOnReturn: false
         testOnReturn: false
@@ -126,53 +130,56 @@ spring:
         poolPreparedStatements: true
         poolPreparedStatements: true
         maxPoolPreparedStatementPerConnectionSize: 20
         maxPoolPreparedStatementPerConnectionSize: 20
         # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
         # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
-        filters: stat,wall,slf4j
+        filters: stat,slf4j
+        #          filters: stat,wall,slf4j
         # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
         # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
       datasource:
-          master:
-            url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-            username: root
-            password: root
-            driver-class-name: com.mysql.cj.jdbc.Driver
+        master:
+          url: jdbc:mysql://120.79.86.50:3306/jlsb?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          username: root
+          password: b610a50f4cc1971e
+          driver-class-name: com.mysql.cj.jdbc.Driver
           # 多数据源配置
           # 多数据源配置
-          #multi-datasource1:
-            #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
-            #username: root
-            #password: root
-            #driver-class-name: com.mysql.cj.jdbc.Driver
+  #        multi-datasource1:
+  #          url: jdbc:mysql://rm-hp3e7229635pu7ktn2o.mysql.huhehaote.rds.aliyuncs.com:3306/javacc?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+  #          username: chuangchi
+  #          password: ChuangChi@2022!@#
+  #          driver-class-name: com.mysql.cj.jdbc.Driver
   #redis 配置
   #redis 配置
   redis:
   redis:
-     database: 0
-     host: 192.168.1.199
-     lettuce:
-       pool:
-         max-active: 8   #最大连接数据库连接数,设 -1 为没有限制
-         max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
-         max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
-         min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
-       shutdown-timeout: 100ms
-     password: ''
-     port: 6379
+    database: 1
+    host: 120.79.86.50
+    lettuce:
+      pool:
+        max-active: 8   #最大连接数据库连接数,设 -1 为没有限制
+        max-idle: 8     #最大等待连接中的数量,设 0 为没有限制
+        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+        min-idle: 0     #最小等待连接中的数量,设 0 为没有限制
+      shutdown-timeout: 100ms
+    password: 'hdl2022'
+    port: 6379
 #mybatis plus 设置
 #mybatis plus 设置
 mybatis-plus:
 mybatis-plus:
-   mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
-   global-config:
+  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
+  global-config:
     # 关闭MP3.0自带的banner
     # 关闭MP3.0自带的banner
     banner: false
     banner: false
     db-config:
     db-config:
-      #主键类型
+      #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
       id-type: ASSIGN_ID
       id-type: ASSIGN_ID
       # 默认数据库表下划线命名
       # 默认数据库表下划线命名
       table-underline: true
       table-underline: true
-   configuration:
+  configuration:
     # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
     # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    #    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     # 返回类型为Map,显示null对应的字段
     # 返回类型为Map,显示null对应的字段
     call-setters-on-nulls: true
     call-setters-on-nulls: true
 #jeecg专用配置
 #jeecg专用配置
 minidao :
 minidao :
   base-package: org.jeecg.modules.jmreport.*
   base-package: org.jeecg.modules.jmreport.*
+  #DB类型(mysql | postgresql | oracle | sqlserver| other)
+  db-type: mysql
 jeecg :
 jeecg :
   # 是否启用安全模式
   # 是否启用安全模式
   safeMode: false
   safeMode: false
@@ -182,22 +189,26 @@ jeecg :
   uploadType: local
   uploadType: local
   path :
   path :
     #文件上传根目录 设置
     #文件上传根目录 设置
-    upload: D://opt//upFiles
+    upload: /www/wwwroot/babosi_shoubiao/jlsbTempFile
     #webapp文件路径
     #webapp文件路径
-    webapp: D://opt//webapp
+    webapp: /www/wwwroot/babosi_shoubiao/jlsbTempFile
   shiro:
   shiro:
-     excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
+    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**
   #阿里云oss存储和大鱼短信秘钥配置
   #阿里云oss存储和大鱼短信秘钥配置
   oss:
   oss:
-    accessKey: ??
-    secretKey: ??
-    endpoint: oss-cn-beijing.aliyuncs.com
-    bucketName: jeecgdev
-    staticDomain: https://static.jeecg.com
-  # ElasticSearch 设置
+    #    accessKey: LTAI5tFnJ8DuTrEkWYEhkHPF
+    #    secretKey: rmKqTVykEYRAAK1xgNW30HqVkR5m2A
+    #    endpoint: oss-cn-beijing.aliyuncs.com
+    #    bucketName: jybl
+    #    创持
+    accessKey:
+    secretKey:
+    endpoint:
+    bucketName:
+  # ElasticSearch 6设置
   elasticsearch:
   elasticsearch:
     cluster-name: jeecg-ES
     cluster-name: jeecg-ES
-    cluster-nodes: 81.70.47.128:9200
+    cluster-nodes: 127.0.0.1:9200
     check-enabled: false
     check-enabled: false
   # 表单设计器配置
   # 表单设计器配置
   desform:
   desform:
@@ -209,20 +220,20 @@ jeecg :
       # 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home
       # 配置百度地图的AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home
       baidu: ??
       baidu: ??
   # 在线预览文件服务器地址配置
   # 在线预览文件服务器地址配置
-  file-view-domain: http://127.0.0.1:8012
+  file-view-domain: 127.0.0.1:9999
   # minio文件上传
   # minio文件上传
   minio:
   minio:
     minio_url: http://minio.jeecg.com
     minio_url: http://minio.jeecg.com
     minio_name: ??
     minio_name: ??
     minio_pass: ??
     minio_pass: ??
-    bucketName: ??
+    bucketName: otatest
   #大屏报表参数设置
   #大屏报表参数设置
   jmreport:
   jmreport:
-    mode: prod
+    mode: dev
     #数据字典是否进行saas数据隔离,自己看自己的字典
     #数据字典是否进行saas数据隔离,自己看自己的字典
     saas: false
     saas: false
     #是否需要校验token
     #是否需要校验token
-    is_verify_token: false
+    is_verify_token: true
     #必须校验方法
     #必须校验方法
     verify_methods: remove,delete,save,add,update
     verify_methods: remove,delete,save,add,update
   #Wps在线文档
   #Wps在线文档
@@ -250,16 +261,16 @@ jeecg :
   #分布式锁配置
   #分布式锁配置
   redisson:
   redisson:
     address: 127.0.0.1:6379
     address: 127.0.0.1:6379
-    password:
+    password: '1805845723'
     type: STANDALONE
     type: STANDALONE
     enabled: true
     enabled: true
+#cas单点登录
+cas:
+  prefixUrl: http://cas.example.org:8443/cas
 #Mybatis输出sql日志
 #Mybatis输出sql日志
 logging:
 logging:
   level:
   level:
     org.jeecg.modules.system.mapper : info
     org.jeecg.modules.system.mapper : info
-#cas单点登录
-cas:
-  prefixUrl: http://cas.example.org:8443/cas
 #swagger
 #swagger
 knife4j:
 knife4j:
   #开启增强配置
   #开启增强配置
@@ -267,7 +278,7 @@ knife4j:
   #开启生产环境屏蔽
   #开启生产环境屏蔽
   production: false
   production: false
   basic:
   basic:
-    enable: true
+    enable: false
     username: jeecg
     username: jeecg
     password: jeecg1314
     password: jeecg1314
 #第三方登录
 #第三方登录
@@ -317,4 +328,4 @@ third-app:
       client-id: ??
       client-id: ??
       # appSecret
       # appSecret
       client-secret: ??
       client-secret: ??
-      agent-id: ??
+      agent-id: ??

+ 13 - 2
jlsb/pom.xml

@@ -4,7 +4,7 @@
   <artifactId>jeecg-boot-parent</artifactId>
   <artifactId>jeecg-boot-parent</artifactId>
   <version>3.1.0</version>
   <version>3.1.0</version>
   <packaging>pom</packaging>
   <packaging>pom</packaging>
-  
+
   	<parent>
   	<parent>
 	    <groupId>org.springframework.boot</groupId>
 	    <groupId>org.springframework.boot</groupId>
 	    <artifactId>spring-boot-starter-parent</artifactId>
 	    <artifactId>spring-boot-starter-parent</artifactId>
@@ -50,6 +50,7 @@
 		<!-- Log4j2爆雷漏洞 -->
 		<!-- Log4j2爆雷漏洞 -->
 		<log4j2.version>2.17.0</log4j2.version>
 		<log4j2.version>2.17.0</log4j2.version>
 		<logback.version>1.2.9</logback.version>
 		<logback.version>1.2.9</logback.version>
+		<jsoup.version>1.10.2</jsoup.version>
 	</properties>
 	</properties>
 
 
 	<modules>
 	<modules>
@@ -226,6 +227,11 @@
 			<!-- hutool工具类-->
 			<!-- hutool工具类-->
 			<dependency>
 			<dependency>
 				<groupId>cn.hutool</groupId>
 				<groupId>cn.hutool</groupId>
+				<artifactId>hutool-all</artifactId>
+				<version>${hutool.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>cn.hutool</groupId>
 				<artifactId>hutool-core</artifactId>
 				<artifactId>hutool-core</artifactId>
 				<version>${hutool.version}</version>
 				<version>${hutool.version}</version>
 			</dependency>
 			</dependency>
@@ -291,6 +297,11 @@
 					</exclusion>
 					</exclusion>
 				</exclusions>
 				</exclusions>
 			</dependency>
 			</dependency>
+			<dependency>
+				<groupId>org.jsoup</groupId>
+				<artifactId>jsoup</artifactId>
+				<version>${jsoup.version}</version>
+			</dependency>
 		</dependencies>
 		</dependencies>
 	</dependencyManagement>
 	</dependencyManagement>
 
 
@@ -429,4 +440,4 @@
             </properties>
             </properties>
         </profile>
         </profile>
     </profiles>
     </profiles>
-</project>
+</project>

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff