소스 검색

添加多表查询

wuweihao 3 년 전
부모
커밋
f25e374a58
27개의 변경된 파일600개의 추가작업 그리고 86개의 파일을 삭제
  1. 1 1
      gis_admin/src/main/java/com/gis/admin/service/impl/SysResourceServiceImpl.java
  2. 41 0
      gis_application/pom.xml
  3. 14 0
      gis_application/src/main/java/com/gis/GisApplication.java
  4. 73 0
      gis_application/src/main/resources/application-dev.properties
  5. 76 0
      gis_application/src/main/resources/application-sit.properties
  6. 46 0
      gis_application/src/main/resources/application.properties
  7. 156 0
      gis_application/src/main/resources/logback-spring.xml
  8. 11 0
      gis_application/src/main/resources/sh/shutdown.sh
  9. 11 0
      gis_application/src/main/resources/sh/startup.sh
  10. 0 3
      gis_cms/src/main/java/com/gis/cms/controller/BarrageController.java
  11. 2 1
      gis_cms/src/main/java/com/gis/cms/controller/GoodsController.java
  12. 1 1
      gis_cms/src/main/java/com/gis/cms/controller/QuestionGroupController.java
  13. 9 1
      gis_cms/src/main/java/com/gis/cms/controller/WebController.java
  14. 5 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/GoodsDto.java
  15. 23 0
      gis_cms/src/main/java/com/gis/cms/entity/dto/GoodsPageDateDto.java
  16. 4 0
      gis_cms/src/main/java/com/gis/cms/entity/po/GoodsEntity.java
  17. 0 31
      gis_cms/src/main/java/com/gis/cms/entity/vo/BarrageVo.java
  18. 30 0
      gis_cms/src/main/java/com/gis/cms/entity/vo/SearchVo.java
  19. 0 2
      gis_cms/src/main/java/com/gis/cms/mapper/BarrageMapper.java
  20. 8 1
      gis_cms/src/main/java/com/gis/cms/mapper/GoodsMapper.java
  21. 6 0
      gis_cms/src/main/java/com/gis/cms/mapper/QuestionGroupMapper.java
  22. 56 8
      gis_cms/src/main/java/com/gis/cms/mapper/provider/GoodsProvider.java
  23. 0 3
      gis_cms/src/main/java/com/gis/cms/service/BarrageService.java
  24. 6 1
      gis_cms/src/main/java/com/gis/cms/service/GoodsService.java
  25. 0 7
      gis_cms/src/main/java/com/gis/cms/service/impl/BarrageServiceImpl.java
  26. 9 1
      gis_cms/src/main/java/com/gis/cms/service/impl/GoodsServiceImpl.java
  27. 12 25
      gis_cms/src/main/java/com/gis/cms/service/impl/QuestionGroupServiceImpl.java

+ 1 - 1
gis_admin/src/main/java/com/gis/admin/service/impl/SysResourceServiceImpl.java

@@ -31,7 +31,7 @@ public class SysResourceServiceImpl extends IBaseServiceImpl<SysResourceEntity,
     @Autowired
     SysRoleService sysRoleService;
 
-    static String REDIS_RESOURCE_KEY = "army_xinjiang_resource";
+    static String REDIS_RESOURCE_KEY = "army:hospital:resource";
 
 
     @Override

+ 41 - 0
gis_application/pom.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>army_beijing_hospital</artifactId>
+        <groupId>com.gis</groupId>
+        <version>1.0.0</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>gis_application</artifactId>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.gis</groupId>
+            <artifactId>gis_admin</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.gis</groupId>
+            <artifactId>gis_scene</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.gis</groupId>
+            <artifactId>gis_cms</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+        <finalName>${parent.artifactId}</finalName>
+    </build>
+</project>

+ 14 - 0
gis_application/src/main/java/com/gis/GisApplication.java

@@ -0,0 +1,14 @@
+package com.gis;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+
+@SpringBootApplication
+public class GisApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(GisApplication.class, args);
+    }
+
+}

+ 73 - 0
gis_application/src/main/resources/application-dev.properties

@@ -0,0 +1,73 @@
+
+#DB
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.druid.username=root
+spring.datasource.druid.url=jdbc:mysql://8.135.106.227:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.druid.password=4dkk2021testproject%
+
+
+# \u521D\u59CB\u8FDE\u63A5\u6570
+spring.datasource.druid.initial-size=5
+# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
+spring.datasource.druid.min-idle=10
+# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
+spring.datasource.druid.max-active=20
+# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
+spring.datasource.druid.max-wait=60000
+# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.min-evictable-idle-time-millis=30000
+# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5927\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.max-evictable-idle-time-millis=90000
+# \u914D\u7F6E\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
+spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.web-stat-filter.enabled=true
+spring.datasource.druid.stat-view-servlet.enabled=true
+
+
+# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
+spring.redis.database=0
+spring.redis.host=127.0.0.1
+spring.redis.port=6379
+spring.redis.password=
+# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 \u5355\u4F4D ms\uFF08\u6BEB\u79D2\uFF09
+spring.redis.timeout=3000ms
+# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F8\u3002
+spring.redis.jedis.pool.max-idle=8
+#\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F0\u3002
+spring.redis.jedis.pool.min-idle=0
+# \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
+spring.redis.jedis.pool.max-active=8
+# \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
+spring.redis.jedis.pool.max-wait=-1ms
+
+
+#log
+logging.file.path=E:/log/${project.en}_log
+logging.config=classpath:logback-spring.xml
+logging.level.com.gis=debug
+
+# file info
+server.file.path=E:\\data\\${project.en}_data
+
+#
+spring.mvc.static-path-pattern=/**
+### \u5339\u914D\u8DEF\u5F84\uFF0C \u6CE8\u610Ffile\u540E\u9762\u7684/ \uFF0Cwindows:\\  , linxu:\u5168\u8DEF\u5F84, \u4E0D\u9700\u8981\u7279\u522B\u52A0\u659C\u6760
+spring.resources.static-locations=file:\\${server.file.path}
+
+# swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
+swagger.package=com.gis
+swagger.title=${project.sc}-dev
+swagger.description=${swagger.title}
+swagger.version=1.0
+
+
+
+
+
+

+ 76 - 0
gis_application/src/main/resources/application-sit.properties

@@ -0,0 +1,76 @@
+
+#DB
+spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
+spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
+spring.datasource.druid.username=root
+spring.datasource.druid.url=jdbc:mysql://8.135.106.227:3306/${project.en}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.druid.password=4dkk2021testproject%
+
+
+# \u521D\u59CB\u8FDE\u63A5\u6570
+spring.datasource.druid.initial-size=5
+# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
+spring.datasource.druid.min-idle=10
+# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF
+spring.datasource.druid.max-active=20
+# \u914D\u7F6E\u83B7\u53D6\u8FDE\u63A5\u7B49\u5F85\u8D85\u65F6\u7684\u65F6\u95F4
+spring.datasource.druid.max-wait=60000
+# \u914D\u7F6E\u95F4\u9694\u591A\u4E45\u624D\u8FDB\u884C\u4E00\u6B21\u68C0\u6D4B\uFF0C\u68C0\u6D4B\u9700\u8981\u5173\u95ED\u7684\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.time-between-eviction-runs-millis=60000
+# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5C0F\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.min-evictable-idle-time-millis=30000
+# \u914D\u7F6E\u4E00\u4E2A\u8FDE\u63A5\u5728\u6C60\u4E2D\u6700\u5927\u751F\u5B58\u7684\u65F6\u95F4\uFF0C\u5355\u4F4D\u662F\u6BEB\u79D2
+spring.datasource.druid.max-evictable-idle-time-millis=90000
+# \u914D\u7F6E\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
+spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
+spring.datasource.druid.test-while-idle=true
+spring.datasource.druid.test-on-borrow=false
+spring.datasource.druid.test-on-return=false
+spring.datasource.druid.web-stat-filter.enabled=true
+spring.datasource.druid.stat-view-servlet.enabled=true
+
+
+# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
+spring.redis.database=0
+spring.redis.host=127.0.0.1
+spring.redis.port=6379
+spring.redis.password=
+# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 \u5355\u4F4D ms\uFF08\u6BEB\u79D2\uFF09
+spring.redis.timeout=3000ms
+# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F8\u3002
+spring.redis.jedis.pool.max-idle=8
+#\u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5\uFF0C\u9ED8\u8BA4\u503C\u4E5F\u662F0\u3002
+spring.redis.jedis.pool.min-idle=0
+# \u5982\u679C\u8D4B\u503C\u4E3A-1\uFF0C\u5219\u8868\u793A\u4E0D\u9650\u5236\uFF1B\u5982\u679Cpool\u5DF2\u7ECF\u5206\u914D\u4E86maxActive\u4E2Ajedis\u5B9E\u4F8B\uFF0C\u5219\u6B64\u65F6pool\u7684\u72B6\u6001\u4E3Aexhausted(\u8017\u5C3D)\u3002
+spring.redis.jedis.pool.max-active=8
+# \u7B49\u5F85\u53EF\u7528\u8FDE\u63A5\u7684\u6700\u5927\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF0C\u9ED8\u8BA4\u503C\u4E3A-1\uFF0C\u8868\u793A\u6C38\u4E0D\u8D85\u65F6\u3002\u5982\u679C\u8D85\u8FC7\u7B49\u5F85\u65F6\u95F4\uFF0C\u5219\u76F4\u63A5\u629B\u51FAJedisConnectionException
+spring.redis.jedis.pool.max-wait=-1ms
+
+
+#log
+logging.file.path=D:/log/${project.en}_log
+logging.config=classpath:logback-spring.xml
+logging.level.com.gis=debug
+
+# file info
+server.file.path=D:\\data\\${project.en}_data
+
+# url info
+#server.url.prefix=/data/
+#spring.mvc.static-path-pattern=/${server.url.prefix}/**
+#
+spring.mvc.static-path-pattern=/**
+### \u5339\u914D\u8DEF\u5F84\uFF0C \u6CE8\u610Ffile\u540E\u9762\u7684/ \uFF0Cwindows:\\  , linxu:\u5168\u8DEF\u5F84, \u4E0D\u9700\u8981\u7279\u522B\u52A0\u659C\u6760
+spring.resources.static-locations=file:\\${server.file.path}
+
+# swagger2 \u8BBE\u7F6E\u5168\u5C40\u5B57\u4F53\u683C\u5F0F\u4E3Autf-8
+swagger.package=com.gis
+swagger.title=${project.sc}-sit
+swagger.description=${swagger.title}
+swagger.version=1.0
+
+
+
+
+
+

+ 46 - 0
gis_application/src/main/resources/application.properties

@@ -0,0 +1,46 @@
+server.port=8013
+
+spring.profiles.active=dev
+
+# \u9879\u76EE\u540D\u79F0
+project.en=army_beijing_hospital
+project.sc=\u5317\u4EAC\u89E3\u653E\u519B\u603B\u533B\u9662-\u519B\u53F2\u9986
+# redis token \u524D\u7F00
+redis.prefix=${project.en}_token_
+
+# \u5141\u8BB8\u4E0A\u4F20\u6587\u4EF6\u540E\u7F00
+server.file.allow=.jpg,.gif,.png,.ico,.bmp,.jpeg,.zip,.zp,.rar,.mp3,.mp4,.avi,.mov,.flv,.3gp,.rmvb,.4dage,.wav,.wma,.m4a,.obj,.pdf,.audio,.ppt,.pptx,.xls,.doc,.docx,.txt
+
+
+
+# \u8BBF\u95EE\u9759\u6001\u8D44\u6E90\u8BBE\u7F6E
+spring.resources.static-locations=classpath:templates/,classpath:static/,classpath:web/
+
+#\u4E0A\u4F20\u6587\u4EF6\u5927\u5C0F
+spring.servlet.multipart.enabled=true
+spring.servlet.multipart.max-file-size=2048MB
+spring.servlet.multipart.max-request-size=2048MB
+
+
+
+#\u914D\u7F6E\u81EA\u52A8\u8BC6\u522B\u5B57\u6BB5\u8F6C\u6362
+mybatis.configuration.mapUnderscoreToCamelCase=true
+mapper.identity=MYSQL
+mapper.mappers=tk.mybatis.mapper.common.Mapper
+#pager
+pagehelper.helper-dialect=mysql
+pagehelper.params=count=countSql
+pagehelper.reasonable=false
+pagehelper.support-methods-arguments=true
+
+
+
+
+
+
+
+
+
+
+
+

+ 156 - 0
gis_application/src/main/resources/logback-spring.xml

@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
+    <property name="LOG_MAX_HISTORY" value="180"/>
+    <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
+
+    <!-- 控制台输出 -->
+    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>${LOG_PATH}/%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{50} - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+    </appender>
+    <!-- 按照每天生成日志文件:主项目日志 -->
+    <appender name="file.all" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 追加日志到原文件结尾 -->
+        <Prudent>true</Prudent>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志文件输出的文件名 -->
+            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
+                <maxFileSize>10MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{500} - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+    </appender>
+
+    <!--info日志统一输出到这里-->
+    <appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <Prudent>true</Prudent>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志文件输出的文件名 每小时生成日志文件 -->
+            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info/console-info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
+            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
+                <maxFileSize>10MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
+            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>INFO</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--错误日志统一输出到这里-->
+    <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <Prudent>true</Prudent>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志文件输出的文件名-->
+            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/error/console-error.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
+                <maxFileSize>10MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
+            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+        <!-- 此日志文件只记录error级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--warn日志统一输出到这里-->
+    <appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <Prudent>true</Prudent>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志文件输出的文件名 按小时生成日志-->
+            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/warn/console-warn.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
+                <maxFileSize>10MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
+            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+        <!-- 此日志文件只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>WARN</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--debug级别日志统一输出到这里-->
+    <appender name="file.debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <Prudent>true</Prudent>
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!--日志文件输出的文件名 按小时生成日志-->
+            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/debug/console-debug.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
+            <!--日志文件保留天数-->
+            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <!-- 除按日志记录之外,还配置了日志文件不能超过5M,若超过5M,日志文件会以索引0开始,命名日志文件,例如console-debug.2018-08-24-09.1.log -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>10MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
+            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
+            <!--<charset>utf-8</charset>-->
+        </encoder>
+        <!-- 此日志文件只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>DEBUG</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY </onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
+    <appender name="file.async" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>256</queueSize>
+        <includeCallerData>true</includeCallerData>
+        <appender-ref ref="file.all" />
+    </appender>
+
+    <!--  日志输出级别 -->
+    <!-- TRACE\DEBUG\INFO\WARN\ERROR\FATAL\OFF -->
+    <root level="INFO">
+        <appender-ref ref="console" />
+        <appender-ref ref="file.async"/>
+        <appender-ref ref="file.error" />
+        <appender-ref ref="file.info" />
+        <appender-ref ref="file.debug" />
+        <appender-ref ref="file.warn" />
+    </root>
+
+</configuration>

+ 11 - 0
gis_application/src/main/resources/sh/shutdown.sh

@@ -0,0 +1,11 @@
+#!/bin/bash
+RESOURCE_NAME=army_beijing_hospital.jar
+   Pid=`awk '{print $1}' tpid`
+
+if [ ${Pid} ]; then
+kill -9 $Pid
+echo 'Kill Process!'
+else
+echo 'Stop failed!'
+fi
+

+ 11 - 0
gis_application/src/main/resources/sh/startup.sh

@@ -0,0 +1,11 @@
+#!/bin/sh
+RESOURCE_NAME=army_chongqing_college.jar
+APP_DEBUG=5005
+rm -f tpid
+nohup java -jar -Xmx3072M -Xms512M ./$RESOURCE_NAME --spring.profiles.active=sit --server.port=8005 & echo $! > tpid
+echo Start Success!
+
+
+
+
+

+ 0 - 3
gis_cms/src/main/java/com/gis/cms/controller/BarrageController.java

@@ -2,12 +2,9 @@ package com.gis.cms.controller;
 
 import com.gis.cms.entity.dto.BarrageDto;
 import com.gis.cms.entity.po.BarrageEntity;
-import com.gis.cms.entity.po.CommentEntity;
-import com.gis.cms.entity.vo.BarrageVo;
 import com.gis.common.base.aop.WebControllerLog;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.util.Result;
-import com.gis.cms.entity.dto.CommentDto;
 import com.gis.cms.service.BarrageService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;

+ 2 - 1
gis_cms/src/main/java/com/gis/cms/controller/GoodsController.java

@@ -1,5 +1,6 @@
 package com.gis.cms.controller;
 
+import com.gis.cms.entity.dto.GoodsPageDateDto;
 import com.gis.cms.entity.dto.TypePageDateDto;
 import com.gis.cms.entity.po.GoodsEntity;
 import com.gis.common.base.aop.WebControllerLog;
@@ -29,7 +30,7 @@ public class GoodsController  {
 
     @ApiOperation("列表")
     @PostMapping("list")
-    public Result<GoodsEntity> list(@RequestBody TypePageDateDto param) {
+    public Result<GoodsEntity> list(@RequestBody GoodsPageDateDto param) {
         return entityService.search(param, null);
     }
 

+ 1 - 1
gis_cms/src/main/java/com/gis/cms/controller/QuestionGroupController.java

@@ -80,7 +80,7 @@ public class QuestionGroupController  {
         return answerService.remove(questionAnswerId);
     }
 
-    @ApiOperation(value = "是否显示", notes = "display, 0:不显示, 1:显示")
+    @ApiOperation(value = "是否显示", notes = "互斥,有且只有一个显示")
     @GetMapping("display/{id}/{display}")
     public Result updateDisplay(@PathVariable Long id, @PathVariable Integer display) {
         return entityService.updateDisplay(id, display);

+ 9 - 1
gis_cms/src/main/java/com/gis/cms/controller/WebController.java

@@ -6,6 +6,7 @@ import com.gis.cms.entity.dto.*;
 import com.gis.admin.entity.dto.RegisterDto;
 import com.gis.cms.entity.po.*;
 import com.gis.cms.entity.vo.CommentVo;
+import com.gis.cms.entity.vo.SearchVo;
 import com.gis.cms.mapper.MyBaseMapper;
 import com.gis.cms.service.*;
 import com.gis.common.base.aop.WebControllerLog;
@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.transaction.Transactional;
 import javax.validation.Valid;
+import java.util.List;
 
 
 /**
@@ -123,7 +125,7 @@ public class WebController {
     @WebControllerLog(description = "门户网站-精品典藏列表(详情)")
     @ApiOperation("精品典藏-列表")
     @PostMapping("goods/list")
-    public Result<GoodsEntity> goodsList(@RequestBody TypePageDateDto param){
+    public Result<GoodsEntity> goodsList(@RequestBody GoodsPageDateDto param){
         return goodsService.search(param, 1);
     }
 
@@ -136,6 +138,12 @@ public class WebController {
         return goodsService.detail(id);
     }
 
+    @ApiOperation(value = "搜索", notes = "典藏、专家搜索")
+    @PostMapping("search")
+    public Result<SearchVo> search(@RequestBody PageDto param){
+        return goodsService.searchGlobal(param);
+    }
+
 
 
 //    @WebControllerLog(description = "门户网站-留言树列表")

+ 5 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/GoodsDto.java

@@ -50,6 +50,11 @@ public class GoodsDto {
     @ApiModelProperty(value = "封面图id")
     private Long indexId;
 
+    @NotNull(message = "单元不能为空")
+    @ApiModelProperty(value = "单元,1:第一单元, 2:第二单元", required = true)
+    private Integer zone;
+
+
 
 
 

+ 23 - 0
gis_cms/src/main/java/com/gis/cms/entity/dto/GoodsPageDateDto.java

@@ -0,0 +1,23 @@
+package com.gis.cms.entity.dto;
+
+import com.gis.common.base.entity.dto.PageDateDto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by owen on 2020/5/9 0009 12:20
+ */
+@Data
+public class GoodsPageDateDto extends PageDateDto {
+
+    @ApiModelProperty(value = "类型")
+    private String type;
+
+    @ApiModelProperty(value = "单元")
+    private Integer zone;
+
+
+
+
+
+}

+ 4 - 0
gis_cms/src/main/java/com/gis/cms/entity/po/GoodsEntity.java

@@ -35,6 +35,10 @@ public class GoodsEntity extends BaseEntity {
     @ApiModelProperty(value = "是否显示,1:显示, 0:不显示, 默认显示")
     private Integer display;
 
+    @ApiModelProperty(value = "单元,1:第一单元, 2:第二单元")
+    private Integer zone;
+
+
 
     @ApiModelProperty(value = "目录, img类型才会有值, 1对多图片放到目录里")
     private String code;

+ 0 - 31
gis_cms/src/main/java/com/gis/cms/entity/vo/BarrageVo.java

@@ -1,31 +0,0 @@
-package com.gis.cms.entity.vo;
-
-import com.gis.common.base.entity.po.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-/**
- * Created by owen on 202/6/24.
- * 弹幕用
- */
-@Data
-public class BarrageVo extends BaseEntity {
-
-
-    @ApiModelProperty(value = "真实姓名")
-    private String realName;
-
-    @ApiModelProperty(value = "单位")
-    private String unit;
-
-    @ApiModelProperty(value = "昵称")
-    private String nickName;
-
-    @ApiModelProperty(value = "内容")
-    private String content;
-
-    @ApiModelProperty(value = "是否显示,1:是, 0:否")
-    private Integer display;
-
-
-}

+ 30 - 0
gis_cms/src/main/java/com/gis/cms/entity/vo/SearchVo.java

@@ -0,0 +1,30 @@
+package com.gis.cms.entity.vo;
+
+import com.gis.common.base.entity.po.BaseEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by owen on 202/6/24.
+ * 全局搜索用
+ */
+@Data
+public class SearchVo extends BaseEntity {
+
+
+    @ApiModelProperty(value = "对象id")
+    private Long id;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "描述")
+    private String description;
+
+    @ApiModelProperty(value = "类型:goods:典藏, expert:专家")
+    private String type;
+
+
+
+
+}

+ 0 - 2
gis_cms/src/main/java/com/gis/cms/mapper/BarrageMapper.java

@@ -5,9 +5,7 @@ import com.gis.cms.entity.po.BarrageEntity;
 import com.gis.cms.mapper.provider.BarrageProvider;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
-import com.gis.cms.entity.vo.BarrageVo;
 import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.springframework.stereotype.Component;
 

+ 8 - 1
gis_cms/src/main/java/com/gis/cms/mapper/GoodsMapper.java

@@ -1,11 +1,15 @@
 package com.gis.cms.mapper;
 
 
+import com.gis.cms.entity.dto.GoodsPageDateDto;
 import com.gis.cms.entity.po.GoodsEntity;
+import com.gis.cms.entity.vo.SearchVo;
 import com.gis.cms.mapper.provider.GoodsProvider;
+import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.cms.entity.dto.TypePageDateDto;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
 import org.apache.ibatis.annotations.SelectProvider;
 import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Component;
@@ -19,8 +23,11 @@ public interface GoodsMapper extends IBaseMapper<GoodsEntity, Long> {
 
 
     @SelectProvider(type = GoodsProvider.class, method = "search")
-    List<GoodsEntity> search(TypePageDateDto param, Integer display);
+    List<GoodsEntity> search(GoodsPageDateDto param, Integer display);
 
     @Update("update tb_goods set visit = visit + 1 , update_time = NOW() where is_delete = 0  and id = #{id}")
     void addVisit(Long id);
+
+    @SelectProvider(type = GoodsProvider.class, method = "searchGlobal")
+    List<SearchVo> searchGlobal(PageDto param);
 }

+ 6 - 0
gis_cms/src/main/java/com/gis/cms/mapper/QuestionGroupMapper.java

@@ -4,10 +4,16 @@ package com.gis.cms.mapper;
 import com.gis.cms.entity.po.QuestionGroupEntity;
 import com.gis.common.base.mapper.IBaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Update;
 import org.springframework.stereotype.Component;
 
 @Component
 @Mapper
 public interface QuestionGroupMapper extends IBaseMapper<QuestionGroupEntity, Long> {
 
+    @Update("update tb_question_group set display=0 , update_time = NOW() where is_delete = 0")
+    void disable();
+
+    @Update("update tb_question_group set display=1 , update_time = NOW() where is_delete = 0 and id=#{id}")
+    void enabled(Long id);
 }

+ 56 - 8
gis_cms/src/main/java/com/gis/cms/mapper/provider/GoodsProvider.java

@@ -1,6 +1,8 @@
 package com.gis.cms.mapper.provider;
 
+import com.gis.cms.entity.dto.GoodsPageDateDto;
 import com.gis.cms.entity.dto.TypePageDateDto;
+import com.gis.common.base.entity.dto.PageDto;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 
@@ -12,30 +14,40 @@ import org.apache.commons.lang3.StringUtils;
 public class GoodsProvider {
 
 
-    public String search(TypePageDateDto param, Integer display) {
+    public String search(GoodsPageDateDto param, Integer display) {
         StringBuffer sql = new StringBuffer(
                 "select * from tb_goods where is_delete = '0' ");
 
+
+        if (display != null) {
+            sql.append(" and  display = ").append(display);
+        }
+
+        String type = param.getType();
+        if (StringUtils.isNotBlank(type)) {
+            sql.append(" and  type = '").append(type).append("'");
+        }
+
+        Integer zone = param.getZone();
+        if (zone != null){
+            sql.append(" and  zone = ").append(zone);
+        }
+
         if (StringUtils.isNotBlank(param.getStartTime()) && StringUtils.isNotBlank(param.getEndTime())) {
 
             sql.append(" and create_time >= ").append("'").append(param.getStartTime()).append("'");
             sql.append(" and create_time <= ").append("'").append(param.getEndTime()).append("'");
         }
 
+
+
         String searchKey = param.getSearchKey();
         if (!StringUtils.isAllBlank(searchKey)) {
             searchKey = StringUtils.trim(searchKey);
             sql.append(" and ( name like '%").append(searchKey).append("%' )");
         }
 
-        if (display != null) {
-            sql.append(" and  display = ").append(display);
-        }
 
-        String type = param.getType();
-        if (StringUtils.isNotBlank(type)) {
-            sql.append(" and  type = '").append(type).append("'");
-        }
 
 
         sql.append(" order by create_time desc");
@@ -43,6 +55,42 @@ public class GoodsProvider {
         return sql.toString();
     }
 
+    /**
+     * 'goods' as type 区分表类型
+     * @param param
+     * @return
+     */
+    public String searchGlobal(PageDto param) {
+        StringBuffer sql = new StringBuffer(
+                "(select a.id,a.name, a.description ,'goods' as type  from tb_goods a where (a.is_delete=0 and a.display=1)");
+
+
+        String searchKey = param.getSearchKey();
+        if (!StringUtils.isAllBlank(searchKey)) {
+            searchKey = StringUtils.trim(searchKey);
+            sql.append(" and (");
+            sql.append(" a.name like '%").append(searchKey).append("%'");
+            sql.append(" or a.description like '%").append(searchKey).append("%'");
+            sql.append("))");
+        }
+
+        sql.append(" UNION ALL");
+
+        sql.append(" (select b.id,b.name, b.description, 'expert' as type from tb_expert b where (b.is_delete=0 and b.display=1)");
+
+        if (!StringUtils.isAllBlank(searchKey)) {
+            searchKey = StringUtils.trim(searchKey);
+            sql.append(" and (");
+            sql.append(" b.name like '%").append(searchKey).append("%'");
+            sql.append(" or b.description like '%").append(searchKey).append("%'");
+            sql.append("))");
+        }
+//        sql.append(" order by a.create_time desc, b.create_time desc");
+        log.info("sql: {}", sql.toString());
+        return sql.toString();
+    }
+
+
 
 }
 

+ 0 - 3
gis_cms/src/main/java/com/gis/cms/service/BarrageService.java

@@ -2,10 +2,7 @@ package com.gis.cms.service;
 
 
 import com.gis.cms.entity.dto.BarrageDto;
-import com.gis.cms.entity.dto.CommentDto;
 import com.gis.cms.entity.po.BarrageEntity;
-import com.gis.cms.entity.po.CommentEntity;
-import com.gis.cms.entity.vo.BarrageVo;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.service.IBaseService;
 import com.gis.common.util.Result;

+ 6 - 1
gis_cms/src/main/java/com/gis/cms/service/GoodsService.java

@@ -2,8 +2,11 @@ package com.gis.cms.service;
 
 
 import com.gis.cms.entity.dto.GoodsDto;
+import com.gis.cms.entity.dto.GoodsPageDateDto;
 import com.gis.cms.entity.dto.TypePageDateDto;
 import com.gis.cms.entity.po.GoodsEntity;
+import com.gis.cms.entity.vo.SearchVo;
+import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.base.service.IBaseService;
 import com.gis.common.util.Result;
 import org.springframework.web.multipart.MultipartFile;
@@ -15,7 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
 public interface GoodsService extends IBaseService<GoodsEntity, Long> {
 
 
-    Result<GoodsEntity> search(TypePageDateDto param, Integer display);
+    Result<GoodsEntity> search(GoodsPageDateDto param, Integer display);
 
     Result saveEntity(GoodsDto param);
 
@@ -34,4 +37,6 @@ public interface GoodsService extends IBaseService<GoodsEntity, Long> {
     Result display(Long id, Integer display);
 
     void addVisit(Long id);
+
+    Result<SearchVo> searchGlobal(PageDto param);
 }

+ 0 - 7
gis_cms/src/main/java/com/gis/cms/service/impl/BarrageServiceImpl.java

@@ -1,17 +1,12 @@
 package com.gis.cms.service.impl;
 
 import com.gis.cms.entity.dto.BarrageDto;
-import com.gis.cms.entity.dto.CommentDto;
 import com.gis.cms.entity.po.BarrageEntity;
-import com.gis.cms.entity.po.CommentEntity;
-import com.gis.cms.entity.vo.BarrageVo;
-import com.gis.cms.entity.vo.MournVo;
 import com.gis.cms.mapper.BarrageMapper;
 import com.gis.cms.service.SensitiveService;
 import com.gis.common.base.entity.dto.PageDateDto;
 import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.common.base.service.impl.IBaseServiceImpl;
-import com.gis.common.util.MyStrUtil;
 import com.gis.common.util.Result;
 import com.gis.cms.service.BarrageService;
 import com.github.pagehelper.PageInfo;
@@ -20,8 +15,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
-import java.util.List;
-import java.util.Set;
 
 
 /**

+ 9 - 1
gis_cms/src/main/java/com/gis/cms/service/impl/GoodsServiceImpl.java

@@ -3,10 +3,13 @@ package com.gis.cms.service.impl;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import com.gis.cms.entity.dto.GoodsDto;
+import com.gis.cms.entity.dto.GoodsPageDateDto;
 import com.gis.cms.entity.dto.TypePageDateDto;
 import com.gis.cms.entity.po.FileEntity;
 import com.gis.cms.entity.po.GoodsEntity;
+import com.gis.cms.entity.vo.SearchVo;
 import com.gis.cms.mapper.GoodsMapper;
+import com.gis.common.base.entity.dto.PageDto;
 import com.gis.common.base.exception.BaseRuntimeException;
 import com.gis.common.base.mapper.IBaseMapper;
 import com.gis.common.base.service.impl.IBaseServiceImpl;
@@ -52,7 +55,7 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
 
 
     @Override
-    public Result<GoodsEntity> search(TypePageDateDto param, Integer display) {
+    public Result<GoodsEntity> search(GoodsPageDateDto param, Integer display) {
         startPage(param);
         return Result.success(new PageInfo<>(entityMapper.search(param, display)));
     }
@@ -220,6 +223,11 @@ public class GoodsServiceImpl extends IBaseServiceImpl<GoodsEntity, Long> implem
 
     }
 
+    @Override
+    public Result<SearchVo> searchGlobal(PageDto param) {
+        startPage(param);
+        return Result.success(new PageInfo<>(entityMapper.searchGlobal(param)));
+    }
 
 
     @Override

+ 12 - 25
gis_cms/src/main/java/com/gis/cms/service/impl/QuestionGroupServiceImpl.java

@@ -45,6 +45,8 @@ public class QuestionGroupServiceImpl extends IBaseServiceImpl<QuestionGroupEnti
     @Autowired
     QuestionAnswerService questionAnswerService;
 
+
+
     @Override
     public IBaseMapper<QuestionGroupEntity, Long> getBaseMapper() {
         return this.entityMapper;
@@ -99,36 +101,21 @@ public class QuestionGroupServiceImpl extends IBaseServiceImpl<QuestionGroupEnti
     }
 
 
-
+    /**
+     * 互斥,有且只有一个显示
+     * @param id
+     * @param display
+     * @return
+     */
     @Override
     public Result updateDisplay(Long id, Integer display) {
-        QuestionGroupEntity entity = this.findById(id);
-        if (entity == null) {
-            log.error("对象id不存在 : {}", id);
-            return Result.failure("对象id不存在");
-        }
-
-//        if (display == 1) {
-//            if (entity.getStatus() != 3){
-//                return Result.failure("只有审核通过的,才允许设置为显示状态");
-//            }
-//        }
-
-        entity.setDisplay(display);
-        this.update(entity);
-        return Result.success(entity);
+        entityMapper.disable();
+        entityMapper.enabled(id);
+        return Result.success();
     }
 
 
-    private void updateStatus(Long id, Integer status){
-        QuestionGroupEntity entity = this.findById(id);
-        if (entity == null) {
-            throw new BaseRuntimeException(MsgCode.e3001, "对象不存在");
-        }
-        entity.setStatus(status);
-        entity.setUpdateTime(LocalDateTime.now());
-        this.update(entity);
-    }
+
 
     @Override
     public Result saveEntity(QuestionGroupDto param) {