Просмотр исходного кода

加入访问量模块, 只能使用xml或者写sql

wuweihao 3 лет назад
Родитель
Сommit
27449fe2ea
73 измененных файлов с 301 добавлено и 821 удалено
  1. 2 1
      README.md
  2. 17 6
      gis_application/src/main/java/com/fdage/controller/ApiController.java
  3. 0 70
      gis_application/target/classes/application-dev.yml
  4. 0 77
      gis_application/target/classes/application-sit.yml
  5. 0 36
      gis_application/target/classes/application.yml
  6. 0 156
      gis_application/target/classes/logback-spring.xml
  7. 0 11
      gis_application/target/classes/sh/shutdown.sh
  8. 0 12
      gis_application/target/classes/sh/startup.sh
  9. BIN
      gis_application/target/classes/static/collection/importData.xlsx
  10. BIN
      gis_application/target/classes/static/exhibition/1596186417162_blob
  11. BIN
      gis_application/target/classes/static/exhibition/1596189084442_blob
  12. BIN
      gis_application/target/classes/static/exhibition/1596189140546_blob
  13. BIN
      gis_application/target/classes/static/exhibition/1596189564593_blob
  14. BIN
      gis_application/target/classes/static/exhibition/1596189869919_blob
  15. BIN
      gis_application/target/classes/static/exhibition/1596190721836_6.png
  16. BIN
      gis_application/target/classes/static/exhibition/1596190788080_2_compressed.jpg
  17. BIN
      gis_application/target/classes/static/exhibition/1596190825036_6.png
  18. BIN
      gis_application/target/classes/static/exhibition/1596190848270_6.png
  19. BIN
      gis_application/target/classes/static/exhibition/1596190887905_6.png
  20. BIN
      gis_application/target/classes/static/exhibition/1596190919878_72578776_13.jpg
  21. BIN
      gis_application/target/classes/static/exhibition/1596191321390_6.png
  22. BIN
      gis_application/target/classes/static/exhibition/1596447050697_1_compressed.jpg
  23. BIN
      gis_application/target/classes/static/exhibition/1596447392511_72578776_13.jpg
  24. BIN
      gis_application/target/classes/static/exhibition/1596447392511_72578776_14.jpg
  25. BIN
      gis_application/target/classes/static/exhibition/1596447392511_72578776_18.jpg
  26. BIN
      gis_application/target/classes/static/exhibition/1596447392516_72578776_22.jpg
  27. BIN
      gis_application/target/classes/static/exhibition/1596447643716_72578776_13.jpg
  28. BIN
      gis_application/target/classes/static/exhibition/1596447972662_2_compressed.jpg
  29. BIN
      gis_application/target/classes/static/exhibition/1596448196988_6.png
  30. BIN
      gis_application/target/classes/static/exhibition/1596448574587_1_compressed.jpg
  31. BIN
      gis_application/target/classes/static/exhibition/1596448574587_2.png
  32. BIN
      gis_application/target/classes/static/exhibition/1596448574587_2_compressed.jpg
  33. BIN
      gis_application/target/classes/static/exhibition/1596448574587_6.png
  34. BIN
      gis_application/target/classes/static/exhibition/1596448575033_7.png
  35. BIN
      gis_application/target/classes/static/exhibition/1596448575155_1.png
  36. BIN
      gis_application/target/classes/static/exhibition/1596448575323_baoli.png
  37. BIN
      gis_application/target/classes/static/exhibition/1596449245116_2.png
  38. BIN
      gis_application/target/classes/static/exhibition/1596449245116_6.png
  39. BIN
      gis_application/target/classes/static/exhibition/1596449607618_1422.png
  40. BIN
      gis_application/target/classes/static/exhibition/1596449725286_1422.png
  41. BIN
      gis_application/target/classes/static/exhibition/1596450062428_1422.png
  42. BIN
      gis_application/target/classes/static/head/1568800765341_timg (1).jpg
  43. BIN
      gis_application/target/classes/static/head/1568801143326_timg.jpg
  44. BIN
      gis_application/target/classes/static/head/1568801751741_timg.jpg
  45. BIN
      gis_application/target/classes/static/head/1568801890654_timg (1).jpg
  46. BIN
      gis_application/target/classes/static/head/1569382213805_2016-08-01_10_33_43.mp4
  47. BIN
      gis_application/target/classes/static/head/1569383057144_20190924141422.h264
  48. BIN
      gis_application/target/classes/static/head/1596440670606_72578776_13.jpg
  49. BIN
      gis_application/target/classes/static/head/1596440976130_app-icon.png
  50. BIN
      gis_application/target/classes/static/head/test.h264
  51. 0 123
      gis_application/target/classes/static/index.html
  52. BIN
      gis_application/target/classes/static/information/1568776657385_timg (1).jpg
  53. BIN
      gis_application/target/classes/static/information/1568776834246_timg (1).jpg
  54. BIN
      gis_application/target/classes/static/information/1568776847364_timg (1).jpg
  55. BIN
      gis_application/target/classes/static/information/1568776868001_timg.jpg
  56. BIN
      gis_application/target/classes/static/information/1568777449690_timg (1).jpg
  57. BIN
      gis_application/target/classes/static/information/1568778077444_微信图片_20190830113544.jpg
  58. BIN
      gis_application/target/classes/static/information/1568778144730_timg.jpg
  59. BIN
      gis_application/target/classes/static/information/1568778265057_timg.jpg
  60. BIN
      gis_application/target/museum_changshu.jar.original
  61. 98 1
      zhoushan-system-common/src/main/java/com/fdage/util/BaseRuntimeException.java
  62. 21 0
      zhoushan-system-dao/src/main/java/com/fdage/dao/base/VisitMapper.java
  63. 1 1
      zhoushan-system-dao/src/main/java/com/fdage/dto/CollectionPageDto.java
  64. 28 0
      zhoushan-system-dao/src/main/java/com/fdage/dto/VisitDto.java
  65. 20 0
      zhoushan-system-dao/src/main/java/com/fdage/dto/VisitTypeDto.java
  66. 28 0
      zhoushan-system-dao/src/main/java/com/fdage/entity/VisitEntity.java
  67. 0 17
      zhoushan-system-dao/src/main/java/com/fdage/mapper/IBaseMapper.java
  68. 0 13
      zhoushan-system-dao/src/main/java/com/fdage/mapper/SceneMapper.java
  69. 0 47
      zhoushan-system-service/src/main/java/com/fdage/service/IBaseService.java
  70. 23 0
      zhoushan-system-service/src/main/java/com/fdage/service/VisitService.java
  71. 4 4
      zhoushan-system-service/src/main/java/com/fdage/service/impl/CollectionServiceImpl.java
  72. 0 246
      zhoushan-system-service/src/main/java/com/fdage/service/impl/IBaseServiceImpl.java
  73. 59 0
      zhoushan-system-service/src/main/java/com/fdage/service/impl/VisitServiceImpl.java

+ 2 - 1
README.md

@@ -4,4 +4,5 @@
 
 # admin 1234abcd
 
-# 常熟万物墙-v2  2022-10-25
+# 常熟万物墙-v2  2022-10-25
+    接入tk.mybatis 失败

+ 17 - 6
gis_application/src/main/java/com/fdage/controller/ApiController.java

@@ -1,15 +1,17 @@
 package com.fdage.controller;
 
 import com.fdage.dto.CollectionPageDto;
+import com.fdage.dto.VisitDto;
+import com.fdage.entity.VisitEntity;
 import com.fdage.enums.ResponEnum;
 import com.fdage.request.RequestCollection;
 import com.fdage.request.RequestExhibition;
-import com.fdage.respon.ResponCollection;
 import com.fdage.respon.ResponExhibition;
 import com.fdage.respon.ResponInformation;
 import com.fdage.service.ICollectionService;
 import com.fdage.service.IExhibitionService;
 import com.fdage.service.IInformationService;
+import com.fdage.service.VisitService;
 import com.fdage.util.AjaxJson;
 import com.fdage.util.DateUtil;
 import io.swagger.annotations.Api;
@@ -19,7 +21,6 @@ import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -30,7 +31,7 @@ import java.util.List;
  * edit by owen 2022-10-25
  * 给app使用
  */
-@Api(tags = "w-门户网站")
+@Api(tags = "v2-W门户网站")
 @RestController
 @RequestMapping("/api")
 @Slf4j
@@ -45,6 +46,9 @@ public class ApiController {
     @Autowired
     private ICollectionService collectionService;
 
+    @Autowired
+    VisitService visitService;
+
     @PostMapping("informationList")
     @ResponseBody
     @ApiOperation("获取资讯列表")
@@ -108,7 +112,7 @@ public class ApiController {
 
     @PostMapping("collectionFindById")
     @ResponseBody
-    @ApiOperation("查询文物详情")
+    @ApiOperation("v2-查询文物详情")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "文物id", dataType = "String")})
     public AjaxJson findById(@RequestBody RequestCollection bo){
@@ -117,8 +121,15 @@ public class ApiController {
             return AjaxJson.failure(ResponEnum.NOT_NULL.getCode(), ResponEnum.NOT_NULL.getMessage());
         }
         Long id = bo.getId();
-//        // 2022-10-25 添加访问量
-//        collectionService.addVisit(id);
+        // 2022-10-27 添加访问量
+        VisitDto dto = new VisitDto();
+        dto.setModuleType("goods");
+        dto.setType("visit");
+        dto.setModuleId(id);
+        visitService.saveType(dto);
+
+//        VisitEntity byId = visitService.findById(1L);
+//        log.info("ddd: {}", byId.toString());
 
         return AjaxJson.success(collectionService.findById(id));
     }

+ 0 - 70
gis_application/target/classes/application-dev.yml

@@ -1,70 +0,0 @@
-
-
-
-spring:
-  jmx:
-    default-domain: zhoushan_system
-    enabled: false
-  application:
-    name: zhoushan_system
-  servlet:
-    multipart:
-      maxFileSize: 1000MB
-      maxRequestSize: 1000MB
-  datasource:
-    # db 项目测试服务器
-    url: jdbc:mysql://8.135.106.227:3306/${project.en}?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
-    username: root
-    password: 4dkk2021testproject%
-    driver-class-name: com.mysql.jdbc.Driver
-# Redis数据库索引(默认为0)
-  redis:
-    database: 0
-    host: 127.0.0.1
-    port: 6379
-    password:
-# 连接超时时间 单位 ms(毫秒)
-    timeout: 3000ms
-# 连接池中的最大空闲连接,默认值也是8。
-    jedis:
-      pool:
-        max-idle: 8
-#连接池中的最小空闲连接,默认值也是0。
-        min-idle: 0
-# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
-        max-active: 8
-# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
-        max-wait: -1ms
-# 配置静态资源跟目录
-  mvc:
-    static-path-pattern: /**
-  resources:
-    static-locations: file:${my.file.path}
-
-upload:
-  head: ${my.file.path}/head
-  information: ${my.file.path}/information
-  collection: ${my.file.path}/collection
-  exhibition: ${my.file.path}/exhibition
-
-
-
-swagger:
-  package: com.fdage.controller
-  title: ${project.sc}-dev
-  description: ${swagger.title}
-  version: 1.0
-
-
-# 服务器存放地址
-my:
-  file:
-    path: E:/data/${project.en}_data
-
-logging:
-  path: E:/log/${project.en}_log
-  config: classpath:logback-spring.xml
-  level:
-    com:
-      fdage: debug
-

+ 0 - 77
gis_application/target/classes/application-sit.yml

@@ -1,77 +0,0 @@
-
-
-
-spring:
-  jmx:
-    default-domain: zhoushan_system
-    enabled: false
-  application:
-    name: zhoushan_system
-  servlet:
-    multipart:
-      maxFileSize: 1000MB
-      maxRequestSize: 1000MB
-  datasource:
-#    url: jdbc:mysql://47.107.253.212:3306/zhoushan_system?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
-#    username: root
-#    password: 4dagecui2019
-    # db 项目测试服务器
-    url: jdbc:mysql://8.135.106.227:3306/${project.en}?useSSL=false&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
-    username: root
-    password: 4dkk2021testproject%
-    driver-class-name: com.mysql.jdbc.Driver
-# Redis数据库索引(默认为0)
-  redis:
-    database: 0
-    host: 127.0.0.1
-    port: 6379
-    password:
-# 连接超时时间 单位 ms(毫秒)
-    timeout: 3000ms
-# 连接池中的最大空闲连接,默认值也是8。
-    jedis:
-      pool:
-        max-idle: 8
-#连接池中的最小空闲连接,默认值也是0。
-        min-idle: 0
-# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
-        max-active: 8
-# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
-        max-wait: -1ms
-# 配置静态资源跟目录
-  mvc:
-    static-path-pattern: /**
-  resources:
-    static-locations: file:${my.file.path}
-
-upload:
-  head: ${my.file.path}/head
-  information: ${my.file.path}/information
-  collection: ${my.file.path}/collection
-  exhibition: ${my.file.path}/exhibition
-
-
-
-swagger:
-  package: com.fdage.controller
-  title: ${project.sc}-sit
-  description: ${swagger.title}
-  version: 1.0
-
-
-# 服务器存放地址
-my:
-  file:
-    path: /root/data/${project.en}_data
-
-
-logging:
-  path: /root/log/${project.en}_log
-  config: classpath:logback-spring.xml
-  level:
-    com:
-      fdage: debug
-
-
-
-

+ 0 - 36
gis_application/target/classes/application.yml

@@ -1,36 +0,0 @@
-spring:
-  profiles:
-    active: dev
-
-server:
-  port: 8002
-
-mybatis:
-  mapperLocations: classpath*:mapper/*/*.xml
-  typeAliasesPackage: com.fdage.pojo
-  configuration:
-    map-underscore-to-camel-case: true
-
-# page分页
-pagehelper:
-  helperDialect: mysql
-  reasonable: true
-  supportMethodsArguments: true
-  params: count=countSql
-
-
-project:
-  sc: 常熟博物馆
-  en: museum_changshu
-
-
-# tk.mybatis 配置自动识别字段转换
-#mapper:
-#  identity: MYSQL
-#  mappers: tk.mybatis.mapper.common.Mapper
-
-# 允许上传文件后缀
-my:
-  file:
-    allow: .jpg,.gif,.png,.ico,.bmp,.jpeg,.zip,.zp,.rar,.mp3,.mp4,.avi,.mov,.4dage,.wav,.wma,.m4a,.obj
-

+ 0 - 156
gis_application/target/classes/logback-spring.xml

@@ -1,156 +0,0 @@
-<?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] %-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] %-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] %-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] %-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] %-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] %-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>

+ 0 - 11
gis_application/target/classes/sh/shutdown.sh

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

+ 0 - 12
gis_application/target/classes/sh/startup.sh

@@ -1,12 +0,0 @@
-#!/bin/sh
-RESOURCE_NAME=museum_changshu.jar
-rm -f tpid
-nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=sit --server.port=8002 & echo $! > tpid
-echo Start Success!
-echo
-
-
-
-
-
-

BIN
gis_application/target/classes/static/collection/importData.xlsx


BIN
gis_application/target/classes/static/exhibition/1596186417162_blob


BIN
gis_application/target/classes/static/exhibition/1596189084442_blob


BIN
gis_application/target/classes/static/exhibition/1596189140546_blob


BIN
gis_application/target/classes/static/exhibition/1596189564593_blob


BIN
gis_application/target/classes/static/exhibition/1596189869919_blob


BIN
gis_application/target/classes/static/exhibition/1596190721836_6.png


BIN
gis_application/target/classes/static/exhibition/1596190788080_2_compressed.jpg


BIN
gis_application/target/classes/static/exhibition/1596190825036_6.png


BIN
gis_application/target/classes/static/exhibition/1596190848270_6.png


BIN
gis_application/target/classes/static/exhibition/1596190887905_6.png


BIN
gis_application/target/classes/static/exhibition/1596190919878_72578776_13.jpg


BIN
gis_application/target/classes/static/exhibition/1596191321390_6.png


BIN
gis_application/target/classes/static/exhibition/1596447050697_1_compressed.jpg


BIN
gis_application/target/classes/static/exhibition/1596447392511_72578776_13.jpg


BIN
gis_application/target/classes/static/exhibition/1596447392511_72578776_14.jpg


BIN
gis_application/target/classes/static/exhibition/1596447392511_72578776_18.jpg


BIN
gis_application/target/classes/static/exhibition/1596447392516_72578776_22.jpg


BIN
gis_application/target/classes/static/exhibition/1596447643716_72578776_13.jpg


BIN
gis_application/target/classes/static/exhibition/1596447972662_2_compressed.jpg


BIN
gis_application/target/classes/static/exhibition/1596448196988_6.png


BIN
gis_application/target/classes/static/exhibition/1596448574587_1_compressed.jpg


BIN
gis_application/target/classes/static/exhibition/1596448574587_2.png


BIN
gis_application/target/classes/static/exhibition/1596448574587_2_compressed.jpg


BIN
gis_application/target/classes/static/exhibition/1596448574587_6.png


BIN
gis_application/target/classes/static/exhibition/1596448575033_7.png


BIN
gis_application/target/classes/static/exhibition/1596448575155_1.png


BIN
gis_application/target/classes/static/exhibition/1596448575323_baoli.png


BIN
gis_application/target/classes/static/exhibition/1596449245116_2.png


BIN
gis_application/target/classes/static/exhibition/1596449245116_6.png


BIN
gis_application/target/classes/static/exhibition/1596449607618_1422.png


BIN
gis_application/target/classes/static/exhibition/1596449725286_1422.png


BIN
gis_application/target/classes/static/exhibition/1596450062428_1422.png


BIN
gis_application/target/classes/static/head/1568800765341_timg (1).jpg


BIN
gis_application/target/classes/static/head/1568801143326_timg.jpg


BIN
gis_application/target/classes/static/head/1568801751741_timg.jpg


BIN
gis_application/target/classes/static/head/1568801890654_timg (1).jpg


BIN
gis_application/target/classes/static/head/1569382213805_2016-08-01_10_33_43.mp4


BIN
gis_application/target/classes/static/head/1569383057144_20190924141422.h264


BIN
gis_application/target/classes/static/head/1596440670606_72578776_13.jpg


BIN
gis_application/target/classes/static/head/1596440976130_app-icon.png


BIN
gis_application/target/classes/static/head/test.h264


+ 0 - 123
gis_application/target/classes/static/index.html

@@ -1,123 +0,0 @@
-<!DOCTYPE html>
-<!--<html>-->
-<!--<head>-->
-	<!--<title>数据库管理系统-应用列表</title>-->
-	<!--<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">-->
-	<!--<link rel="stylesheet" type="text/css" href="./static/css/index.css">-->
-<!--</head>-->
-<!--<body>-->
-	<!--<div class="open">-->
-		<!--<div id="nav">-->
-			<!--<ul>-->
-				<!--<li>-->
-					<!--<div>-->
-						<!--<img src="./static/img/application.png" alt="应用">-->
-						<!--<p>应用</p>-->
-					<!--</div>-->
-				<!--</li>-->
-			<!--</ul>-->
-		<!--</div>-->
-		<!--<div id="main">-->
-			<!--<div class="main-top">-->
-				<!--<button class="btn-create"> + 创建应用 </button>-->
-				<!--<div class="user-msg">-->
-					<!--<img src="./static/img/people_fill.png">-->
-					<!--<p id="name"></p>-->
-					<!--<p id="logout">登出</p>-->
-				<!--</div>-->
-			<!--</div>-->
-			<!--<div class="main-middle"></div>-->
-		<!--</div>-->
-	<!--</div>-->
-	<!--<div class="modal">-->
-		<!--<div class="modal-content">-->
-			<!--<div class="modal-header">-->
-				<!--<h4>创建应用</h4>-->
-				<!--<button class="btn-close">×</button>-->
-			<!--</div>-->
-			<!--<div>-->
-				<!--<div class="modal-body">-->
-					<!--<div class="form-group">-->
-						<!--<label>应用名称:</label>-->
-						<!--<input id="app-name" type="text" class="formControl" placeholder="必填"/>-->
-						<!--<span class="error"></span>-->
-					<!--</div>-->
-				<!--</div>-->
-			<!--</div>-->
-			<!--<div class="modal-footer">-->
-				<!--<button class="button btn-close" type="button">关闭</button>-->
-				<!--<button id="btn" class="submit" type="submit">创建应用</button>-->
-			<!--</div>-->
-		<!--</div>-->
-	<!--</div>-->
-	<!--<div id="hide"></div>-->
-	<!--<script src="./static/js/jquery-3.3.1.min.js"></script>-->
-	<!--<script src="./layer/layer.js"></script>-->
-	<!--<script src="./static/js/index.js"></script>-->
-<!--</body>-->
-<!--</html>-->
-
-
-<html lang="en">
-<head>
-	<title>Server-Sent Events Demo</title>
-	<meta charset="UTF-8" />
-	<script>
-		window.addEventListener("load", function() {
-			var button = document.getElementById("connect");
-			var status = document.getElementById("status");
-			var output = document.getElementById("output");
-			var connectTime = document.getElementById("connecttime");
-			var source;
-
-			function connect() {
-				source = new EventSource("http://192.168.0.207:8100/sendMessage"); //连接的Api
-				source.addEventListener("message", function(event) {
-					output.textContent = event.data;
-					//这是回调的信息
-
-				}, false);
-
-				source.addEventListener("connecttime", function(event) {
-					connectTime.textContent = "Connection was last established at: " + event.data;
-				}, false);
-
-				source.addEventListener("open", function(event) {
-					button.value = "Disconnect";
-					button.onclick = function(event) {
-						source.close();
-						button.value = "Connect";
-						button.onclick = connect;
-						status.textContent = "Connection closed!";
-					};
-					status.textContent = "Connection open!";
-				}, false);
-
-				source.addEventListener("error", function(event) {
-					if (event.target.readyState === EventSource.CLOSED) {
-						source.close();
-						status.textContent = "Connection closed!";
-					} else if (event.target.readyState === EventSource.CONNECTING) {
-						status.textContent = "Connection closed. Attempting to reconnect!";
-					} else {
-						status.textContent = "Connection closed. Unknown error!";
-					}
-				}, false);
-			}
-
-			if (!!window.EventSource) {
-				connect();
-			} else {
-				button.style.display = "none";
-				status.textContent = "浏览器不支持-请用现代浏览器";  //通常是IE浏览器不支持
-			}
-		}, false);
-	</script>
-</head>
-<body>
-<input type="button" id="connect" value="Connect" /><br />
-<span id="status">Connection closed!</span><br />
-<span id="connecttime"></span><br />
-<span id="output"></span>
-</body>
-</html>

BIN
gis_application/target/classes/static/information/1568776657385_timg (1).jpg


BIN
gis_application/target/classes/static/information/1568776834246_timg (1).jpg


BIN
gis_application/target/classes/static/information/1568776847364_timg (1).jpg


BIN
gis_application/target/classes/static/information/1568776868001_timg.jpg


BIN
gis_application/target/classes/static/information/1568777449690_timg (1).jpg


BIN
gis_application/target/classes/static/information/1568778077444_微信图片_20190830113544.jpg


BIN
gis_application/target/classes/static/information/1568778144730_timg.jpg


BIN
gis_application/target/classes/static/information/1568778265057_timg.jpg


BIN
gis_application/target/museum_changshu.jar.original


+ 98 - 1
zhoushan-system-common/src/main/java/com/fdage/util/BaseRuntimeException.java

@@ -1,5 +1,10 @@
 package com.fdage.util;
 
+import cn.hutool.core.util.StrUtil;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
 public class BaseRuntimeException extends RuntimeException{
 
     private static final long serialVersionUID = -1518945670203783450L;
@@ -8,15 +13,26 @@ public class BaseRuntimeException extends RuntimeException{
 
     public BaseRuntimeException(String msg){
         super(msg);
+        this.code = -1;
         this.msg = msg;
     }
 
+    /**
+     *
+     * @param code 允许为null
+     * @param msg
+     */
     public BaseRuntimeException(Integer code, String msg){
         super(msg);
-        this.code = code;
+        this.code = code == null? -1 : code;
         this.msg = msg;
     }
 
+//    public BaseRuntimeException(ErrorEnum errorEnum){
+//        this.code = errorEnum.code();
+//        this.msg = errorEnum.message();
+//    }
+
     public Integer getCode() {
         return code;
     }
@@ -32,4 +48,85 @@ public class BaseRuntimeException extends RuntimeException{
     public void setMsg(String msg) {
         this.msg = msg;
     }
+
+
+    public static void isNull(Object obj, Integer code, String msg){
+        if (obj == null){
+            getExc(code, msg);
+        }
+    }
+
+    public static void isBlank(Object obj, Integer code, String msg){
+        if (obj == null){
+            getExc(code, msg);
+        }
+
+        if (obj instanceof String && StrUtil.isBlank(obj.toString())){
+            getExc(code, msg);
+        }
+
+    }
+
+//    public static void isNull(Object obj, ErrorEnum errorEnum){
+//        if (obj == null){
+//            getExc(errorEnum.code(), errorEnum.message());
+//        }
+//    }
+
+//    public static void isBlank(Object obj, ErrorEnum errorEnum){
+//        Integer code = errorEnum.code();
+//        String msg = errorEnum.message();
+//        if (obj == null){
+//            getExc(code, msg);
+//        }
+//
+//        if (obj instanceof String && StrUtil.isBlank(obj.toString())){
+//            getExc(code, msg);
+//        }
+//
+//    }
+
+//    /**
+//     *
+//     * @param obj true 存在抛异常
+//     * @param errorEnum
+//     */
+//    public static void isTrue(boolean obj, ErrorEnum errorEnum){
+//        if (obj){
+//            getExc(errorEnum.code(), errorEnum.message());
+//        }
+//    }
+
+    /**
+     *
+     * @param obj 存在抛异常
+     * @param code 允许为null
+     * @param msg
+     */
+    public static void isTrue(boolean obj, Integer code, String msg){
+        if (obj){
+            getExc(code, msg);
+        }
+    }
+
+    public static void  getExc(Integer code, String msg){
+        throw new BaseRuntimeException(code, msg);
+    }
+
+//    /**
+//     *
+//     * @param obj 集合
+//     * @param errorEnum
+//     */
+//    public static void isEmpty(List obj, ErrorEnum errorEnum){
+//        if (CollectionUtils.isEmpty(obj)){
+//            getExc(errorEnum.code(), errorEnum.message());
+//        }
+//    }
+
+    public static void isEmpty(List obj, Integer code, String msg){
+        if (CollectionUtils.isEmpty(obj)){
+            getExc(code, msg);
+        }
+    }
 }

+ 21 - 0
zhoushan-system-dao/src/main/java/com/fdage/dao/base/VisitMapper.java

@@ -0,0 +1,21 @@
+package com.fdage.dao.base;
+
+
+import com.fdage.entity.VisitEntity;
+import com.fdage.mapper.BaseProvider;
+import org.apache.ibatis.annotations.SelectProvider;
+import org.springframework.stereotype.Component;
+import tk.mybatis.spring.annotation.MapperScan;
+
+
+@Component
+@MapperScan
+public interface VisitMapper {
+
+    @SelectProvider(type = BaseProvider.class, method = "runSql")
+    VisitEntity findById(String format);
+
+    @SelectProvider(type = BaseProvider.class, method = "runSql")
+    void insert(String format);
+
+}

+ 1 - 1
zhoushan-system-dao/src/main/java/com/fdage/dto/CollectionPageDto.java

@@ -18,7 +18,7 @@ public class CollectionPageDto extends PageDto {
     @ApiModelProperty(value = "年代id")
     private Long timeId;
 
-    @ApiModelProperty(value = "排序类型:0:默认排序 | 1:浏览量排序")
+    @ApiModelProperty(value = "排序类型:0:默认排序 | 1:浏览量排序(最近一个自然年)")
     private Long sortType;
 
 

+ 28 - 0
zhoushan-system-dao/src/main/java/com/fdage/dto/VisitDto.java

@@ -0,0 +1,28 @@
+package com.fdage.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2022/1/10 0010 11:15
+ */
+@Data
+public class VisitDto {
+//
+//    @ApiModelProperty(value = "id")
+//    private Long Id;
+
+
+    @NotBlank(message = "类型不能为空")
+    @ApiModelProperty(value = "类型: star:点赞 | visit:浏览", required = true)
+    private String type;
+
+    @NotBlank(message = "模块类型不能为空")
+    @ApiModelProperty(value = "模块类型: web:官网 | goods:藏品", required = true)
+    private String moduleType;
+
+    @ApiModelProperty(value = "模块Id: web:官网 | goods:藏品")
+    private Long moduleId;
+}

+ 20 - 0
zhoushan-system-dao/src/main/java/com/fdage/dto/VisitTypeDto.java

@@ -0,0 +1,20 @@
+package com.fdage.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * Created by owen on 2022/1/10 0010 11:15
+ */
+@Data
+public class VisitTypeDto {
+
+    @ApiModelProperty(value = "数量, 例如最近10天排序数据")
+    private Integer pcs;
+
+    @NotBlank(message = "模块类型不能为空")
+    @ApiModelProperty(value = "模块类型: web:官网", required = true)
+    private String moduleType;
+}

+ 28 - 0
zhoushan-system-dao/src/main/java/com/fdage/entity/VisitEntity.java

@@ -0,0 +1,28 @@
+package com.fdage.entity;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 访问量记录表
+ */
+@Data
+@Table(name = "tb_visit")
+public class VisitEntity extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 3715369950063638127L;
+
+    @ApiModelProperty(value = "类型: star:点赞 | visit:浏览")
+    private String type;
+
+    @ApiModelProperty(value = "模块类型")
+    private String moduleType;
+
+    @ApiModelProperty(value = "模块Id")
+    private Long moduleId;
+
+
+}

+ 0 - 17
zhoushan-system-dao/src/main/java/com/fdage/mapper/IBaseMapper.java

@@ -1,17 +0,0 @@
-package com.fdage.mapper;
-
-import com.fdage.entity.BaseEntity;
-import tk.mybatis.mapper.common.BaseMapper;
-import tk.mybatis.mapper.common.ConditionMapper;
-import tk.mybatis.mapper.common.IdsMapper;
-import tk.mybatis.mapper.common.special.InsertListMapper;
-
-import java.io.Serializable;
-
-/**
- * Created by owen on 2020/2/18 0018 11:27
- */
-
-public interface IBaseMapper<T extends BaseEntity, ID extends Serializable> extends BaseMapper<T>,
-        ConditionMapper<T>, IdsMapper<T>, InsertListMapper<T> {
-}

+ 0 - 13
zhoushan-system-dao/src/main/java/com/fdage/mapper/SceneMapper.java

@@ -1,13 +0,0 @@
-//package com.fdage.mapper;
-//
-//import com.fdage.entity.SceneEntity;
-//import org.apache.ibatis.annotations.Mapper;
-//import org.springframework.stereotype.Component;
-//
-///**
-// * Created by owen on 2021/8/23 0023 17:56
-// */
-//@Component
-//@Mapper
-//public interface SceneMapper extends IBaseMapper<SceneEntity, Long> {
-//}

+ 0 - 47
zhoushan-system-service/src/main/java/com/fdage/service/IBaseService.java

@@ -1,47 +0,0 @@
-package com.fdage.service;
-
-import com.github.pagehelper.PageInfo;
-import tk.mybatis.mapper.entity.Condition;
-
-import java.io.Serializable;
-import java.util.List;
-
-public interface IBaseService<T, ID extends Serializable> {
-
-    public abstract T findById(ID id);
-
-    public abstract T findOne(T entity);
-
-    public abstract List<T> findByIds(String ids);
-
-    public abstract long count();
-
-    public abstract boolean exists(ID id);
-
-    public abstract int save(T entity);
-
-    public abstract int update(T entity);
-
-    public abstract int updateAll(T entity);
-
-    public abstract int deleteById(ID id);
-
-    public abstract int deleteByIds(String ids);
-
-    public abstract int delete(T entity);
-
-    public abstract List<T> findAll(Condition condition, String orderBy);
-
-    public abstract List<T> findAll(Condition condition);
-
-    public abstract List<T> findAll();
-
-    public abstract PageInfo<T> findAll(int pageNum, int pageSize);
-
-    public abstract PageInfo<T> findAll(int pageNum, int pageSize, String orderBy);
-
-    public abstract PageInfo<T> findAll(Condition condition, int pageNum, int pageSize);
-
-    public abstract PageInfo<T> findAll(Condition condition, int pageNum, int pageSize, String orderBy);
-
-}

+ 23 - 0
zhoushan-system-service/src/main/java/com/fdage/service/VisitService.java

@@ -0,0 +1,23 @@
+package com.fdage.service;
+
+
+import com.fdage.dto.VisitDto;
+import com.fdage.entity.VisitEntity;
+import com.fdage.util.Result;
+
+
+/**
+ * Created by owen on 2020/3/11 0011 16:14
+ */
+public interface VisitService  {
+
+
+ 
+
+    Result saveType(VisitDto param);
+
+
+    VisitEntity findById(Long id);
+
+    void insert(VisitEntity entity);
+}

+ 4 - 4
zhoushan-system-service/src/main/java/com/fdage/service/impl/CollectionServiceImpl.java

@@ -293,9 +293,10 @@ public class CollectionServiceImpl implements ICollectionService {
     @Override
     public List<TbCollection> list(CollectionPageDto param) {
         StringBuilder builder = new StringBuilder();
-//        builder.append("select a.*, a.type_id as typeId, a.time_id as timeId from tb_collection a left join tb_collection_time b on a.time_id=b.id");
-        builder.append("select a.*, b.name as timeName, c.name as typeName from tb_collection a left join tb_collection_time b on a.time_id=b.id");
-        builder.append(" left join tb_collection_type c on a.type_id=c.id where 1=1");
+        builder.append("select a.*, b.name as timeName, c.name as typeName, if(d.count > 0, d.count, 0) openNum from tb_collection a left join tb_collection_time b on a.time_id=b.id");
+        builder.append(" left join tb_collection_type c on a.type_id=c.id ");
+        builder.append(" left join (SELECT module_id, COUNT(*) count from tb_visit WHERE YEAR(create_time)=YEAR(NOW()) and module_type='goods' and type='visit' GROUP BY module_id) d ");
+        builder.append(" on d.module_id=a.id where 1=1 ");
 
         Long timeId = param.getTimeId();
         if (timeId != null){
@@ -317,7 +318,6 @@ public class CollectionServiceImpl implements ICollectionService {
             builder.append(" order by a.open_num desc");
         }
 
-//        List<TbCollection> list = mapper.mapperList(builder.toString());
         return mapper.mapperList(builder.toString());
     }
 

+ 0 - 246
zhoushan-system-service/src/main/java/com/fdage/service/impl/IBaseServiceImpl.java

@@ -1,246 +0,0 @@
-package com.fdage.service.impl;
-
-import com.fdage.constant.ConfigConstant;
-import com.fdage.dto.PageDto;
-import com.fdage.mapper.IBaseMapper;
-import com.fdage.entity.BaseEntity;
-import com.fdage.service.IBaseService;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-import tk.mybatis.mapper.entity.Condition;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.Serializable;
-import java.lang.reflect.ParameterizedType;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * Created by owen on 2020/2/18 0018 11:22
- */
-@Transactional
-public abstract class IBaseServiceImpl<T extends BaseEntity, ID extends Serializable> implements IBaseService<T, ID> {
-
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    /**
-     * 2021-04-20
-     * 这里不能使用 @Autowired 注入HttpServletRequest 会报已注入的错误
-     */
-//    @Autowired
-//    HttpServletRequest request;
-
-    public abstract IBaseMapper<T, ID> getBaseMapper();
-
-    private Class<T> entityClass;
-
-    public IBaseServiceImpl(){
-        ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass();
-        entityClass = (Class<T>) pt.getActualTypeArguments()[0];
-    }
-
-    @Override
-    public T findById(ID id){
-        Condition condition = new Condition(entityClass);
-        condition.createCriteria().andEqualTo("id", id);
-        condition.and().andEqualTo("isDelete", 0);
-        List<T> ts = getBaseMapper().selectByCondition(condition);
-        if (ts != null && ts.size() > 0){
-            return ts.get(0);
-        }else{
-            return null;
-        }
-    }
-
-    @Override
-    public T findOne(T entity){
-        entity.setIsDelete(0);
-        return getBaseMapper().selectOne(entity);
-    }
-
-    @Override
-    public List<T> findAll(){
-        Condition condition = new Condition(entityClass);
-        condition.and().andEqualTo("isDelete", 0);
-        return getBaseMapper().selectByCondition(condition);
-    }
-
-//    public List<T> findAllDesc(){
-//        Condition condition = new Condition(entityClass);
-//        condition.and().andEqualTo("isDelete", 0);
-//        condition.orderBy("createTime").desc();
-//        return getBaseMapper().selectByCondition(condition);
-//    }
-
-
-    /**
-     * 根据主键字符串进行查询,类中只有存在一个带有@Id注解的字段
-     *
-     * @param ids 如 "1,2,3,4"
-     * @return
-     */
-    @Override
-    public List<T> findByIds(String ids){
-        return getBaseMapper().selectByIds(ids);
-    }
-
-    @Override
-    public long count(){
-        List<T> all = this.findAll();
-        if (all != null && all.size() > 0){
-            return all.size();
-        }
-        return 0;
-    }
-
-    @Override
-    public boolean exists(ID id){
-        return getBaseMapper().existsWithPrimaryKey(id);
-    }
-
-    @Override
-    public int save(T entity) {
-        //migration之后要删掉判断
-        if (entity.getCreateTime() == null){
-            entity.setCreateTime(LocalDateTime.now());
-        }
-        if (entity.getUpdateTime() == null){
-            entity.setUpdateTime(LocalDateTime.now());
-        }
-        entity.setIsDelete(0);
-        return getBaseMapper().insertSelective(entity);
-    }
-
-    @Override
-    public int update(T entity) {
-        //migration之后要删掉判断
-        if (entity.getUpdateTime() == null){
-            entity.setUpdateTime(LocalDateTime.now());
-        }
-        return getBaseMapper().updateByPrimaryKeySelective(entity);
-    }
-
-    @Override
-    public int updateAll(T entity) {
-        //migration之后要删掉判断
-        if (entity.getUpdateTime() == null){
-            entity.setUpdateTime(LocalDateTime.now());
-        }
-        return getBaseMapper().updateByPrimaryKey(entity);
-    }
-
-    @Override
-    public int deleteById(ID id) {
-        return getBaseMapper().deleteByPrimaryKey(id);
-    }
-
-    @Override
-    public int deleteByIds(String ids){
-        return getBaseMapper().deleteByIds(ids);
-    }
-
-    @Override
-    public int delete(T entity){
-        return getBaseMapper().delete(entity);
-    }
-
-    @Override
-    public List<T> findAll(Condition condition){
-        condition.and().andEqualTo("isDelete", 0);
-        return getBaseMapper().selectByCondition(condition);
-    }
-
-    public List<T> findAll(Condition condition, String orderBy){
-        condition.and().andEqualTo("isDelete", 0);
-        if (!StringUtils.isEmpty(orderBy)){
-            PageHelper.orderBy(orderBy);
-        }
-        return getBaseMapper().selectByCondition(condition);
-    }
-
-    public PageInfo<T> findAll(int pageNum, int pageSize){
-        if (pageNum <= 0) {
-            pageNum = 0;
-        }
-        if (pageSize <= 0) {
-            pageSize = 10;
-        }
-        PageHelper.startPage(pageNum, pageSize);
-        return new PageInfo<>(this.findAll());
-    }
-
-    public PageInfo<T> findAll(int pageNum, int pageSize, String orderBy){
-        if (pageNum <= 0) {
-            pageNum = 0;
-        }
-        if (pageSize <= 0) {
-            pageSize = 10;
-        }
-        PageHelper.startPage(pageNum, pageSize);
-        if (!StringUtils.isEmpty(orderBy)){
-            PageHelper.orderBy(orderBy);
-        }
-        return new PageInfo<>(this.findAll());
-    }
-
-    public PageInfo<T> findAll(Condition condition, int pageNum, int pageSize){
-        if (pageNum <= 0) {
-            pageNum = 0;
-        }
-        if (pageSize <= 0) {
-            pageSize = 10;
-        }
-        PageHelper.startPage(pageNum, pageSize);
-        return new PageInfo<>(this.findAll(condition));
-    }
-
-    public PageInfo<T> findAll(Condition condition, int pageNum, int pageSize, String orderBy){
-
-        if (pageNum <= 0) {
-            pageNum = 0;
-        }
-        if (pageSize <= 0) {
-            pageSize = 10;
-        }
-        PageHelper.startPage(pageNum, pageSize);
-        if (!StringUtils.isEmpty(orderBy)){
-            PageHelper.orderBy(orderBy);
-        }
-        return new PageInfo<>(this.findAll(condition));
-    }
-
-
-    /**
-     * 设置请求分页数据
-     */
-    public void startPage(PageDto param){
-        Integer pageNum = param.getPageNum();
-        Integer pageSize = param.getPageSize();
-        if (pageNum == null || pageNum <= 0) {
-            pageNum = 0;
-        }
-        if (pageSize == null || pageSize <= 0) {
-            pageSize = 10;
-        }
-        PageHelper.startPage(pageNum, pageSize);
-    }
-
-    /** 获取用户id*/
-//    Long getTokenUserId(HttpServletRequest request){
-//        return JwtUtil.getUserId(getToken(request));
-//    }
-//
-//    String getTokenUserName(HttpServletRequest request){
-//        return JwtUtil.getUsername(getToken(request));
-//    }
-
-    /** 获取header token */
-    String getToken(HttpServletRequest request){
-        return request.getHeader("token");
-    }
-}

+ 59 - 0
zhoushan-system-service/src/main/java/com/fdage/service/impl/VisitServiceImpl.java

@@ -0,0 +1,59 @@
+package com.fdage.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.fdage.dao.base.VisitMapper;
+import com.fdage.dto.VisitDto;
+import com.fdage.entity.VisitEntity;
+import com.fdage.service.VisitService;
+import com.fdage.util.BaseRuntimeException;
+import com.fdage.util.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+
+/**
+ * Created by owen on 2022/10/27 0011 16:16
+ * 使用不了tk.mybaits , 只能用xml, 或者自己写sql
+ */
+@Slf4j
+@Service
+public class VisitServiceImpl implements VisitService {
+
+    @Autowired
+    VisitMapper entityMapper;
+
+    static List<String> visit_type = Arrays.asList("visit","star", "web");
+
+
+    @Override
+    public Result saveType(VisitDto param) {
+        BaseRuntimeException.isTrue(!visit_type.contains(param.getType()), null, "非法类型");
+        VisitEntity entity = new VisitEntity();
+        BeanUtils.copyProperties(param, entity);
+        this.insert(entity);
+        return Result.success();
+    }
+
+
+
+    @Override
+    public VisitEntity findById(Long id){
+        return entityMapper.findById(StrUtil.format("select * from tb_visit where is_delete=0 and id={}", id));
+    }
+
+    @Override
+    public void insert(VisitEntity entity) {
+        String format = StrUtil.format("insert into tb_visit (type, module_type, module_id) values ('{}', '{}', {})",
+                entity.getType(), entity.getModuleType(), entity.getModuleId());
+
+        entityMapper.insert(format);
+    }
+
+
+
+}