parent
f0641b56a3
commit
fd2d43e8b4
@ -0,0 +1,109 @@ |
||||
package com.bweb.config; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
||||
import com.fasterxml.jackson.annotation.PropertyAccessor; |
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import org.springframework.cache.annotation.CachingConfigurerSupport; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||
import org.springframework.data.redis.core.*; |
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; |
||||
import org.springframework.data.redis.serializer.StringRedisSerializer; |
||||
|
||||
|
||||
@Configuration |
||||
@EnableCaching //开启注解
|
||||
public class RedisConfig extends CachingConfigurerSupport { |
||||
|
||||
/** |
||||
* retemplate相关配置 |
||||
* @param factory |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { |
||||
|
||||
RedisTemplate<String, Object> template = new RedisTemplate<>(); |
||||
// 配置连接工厂
|
||||
template.setConnectionFactory(factory); |
||||
|
||||
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
|
||||
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); |
||||
|
||||
ObjectMapper om = new ObjectMapper(); |
||||
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
|
||||
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); |
||||
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
|
||||
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); |
||||
jacksonSeial.setObjectMapper(om); |
||||
|
||||
// 值采用json序列化
|
||||
template.setValueSerializer(jacksonSeial); |
||||
//使用StringRedisSerializer来序列化和反序列化redis的key值
|
||||
template.setKeySerializer(new StringRedisSerializer()); |
||||
|
||||
// 设置hash key 和value序列化模式
|
||||
template.setHashKeySerializer(new StringRedisSerializer()); |
||||
template.setHashValueSerializer(jacksonSeial); |
||||
template.afterPropertiesSet(); |
||||
|
||||
return template; |
||||
} |
||||
|
||||
/** |
||||
* 对hash类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForHash(); |
||||
} |
||||
|
||||
/** |
||||
* 对redis字符串类型数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForValue(); |
||||
} |
||||
|
||||
/** |
||||
* 对链表类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForList(); |
||||
} |
||||
|
||||
/** |
||||
* 对无序集合类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForSet(); |
||||
} |
||||
|
||||
/** |
||||
* 对有序集合类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForZSet(); |
||||
} |
||||
} |
@ -0,0 +1,56 @@ |
||||
server: |
||||
port: 9302 |
||||
servlet: |
||||
context-path: /brest |
||||
|
||||
#配置是否为debug模式,debug模式下,不开启权限校验 |
||||
debug: false |
||||
|
||||
#datasource数据源设置 |
||||
spring: |
||||
datasource: |
||||
url: jdbc:mysql://139.159.177.244:3306/hsg_pre?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false |
||||
username: root |
||||
password: HF123456. |
||||
type: com.alibaba.druid.pool.DruidDataSource |
||||
driver-class-name: com.mysql.jdbc.Driver |
||||
filters: stat |
||||
maxActive: 10 |
||||
initialSize: 5 |
||||
maxWait: 60000 |
||||
minIdle: 5 |
||||
timeBetweenEvictionRunsMillis: 60000 |
||||
minEvictableIdleTimeMillis: 300000 |
||||
validationQuery: select 'x' |
||||
testWhileIdle: true |
||||
testOnBorrow: false |
||||
testOnReturn: false |
||||
poolPreparedStatements: true |
||||
maxOpenPreparedStatements: 20 |
||||
redis: |
||||
database: 0 |
||||
host: 139.159.177.244 |
||||
port: 36379 |
||||
password: HF123456.Redis |
||||
timeout: 1000 |
||||
jedis: |
||||
pool: |
||||
max-active: 20 |
||||
max-wait: -1 |
||||
max-idle: 10 |
||||
min-idle: 0 |
||||
#配置日期返回至前台为时间戳 |
||||
jackson: |
||||
serialization: |
||||
write-dates-as-timestamps: true |
||||
mybatis: |
||||
mapperLocations: |
||||
- classpath*:sqlmap*/*.xml |
||||
type-aliases-package: |
||||
org.springboot.sample.entity |
||||
|
||||
pagehelper: |
||||
helperDialect: mysql |
||||
reasonable: true |
||||
supportMethodsArguments: true |
||||
params: count=countSql |
@ -0,0 +1,4 @@ |
||||
fileUrl=/home/project/hsg/filesystem |
||||
cmsPath=/home/project/hsg/filesystem/cmsPath |
||||
agentQrCode=/home/project/hsg/filesystem/agentQrCode |
||||
agentQrCodeWxUrl=https://hsgcs.dctpay.com/wx/?action=gogogo&id= |
@ -0,0 +1,72 @@ |
||||
<configuration> |
||||
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> |
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
||||
<encoder> |
||||
<pattern>%d %p (%file:%line\)- %m%n</pattern> |
||||
<charset>UTF-8</charset> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="baselog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/base.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/base.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="daolog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/dao.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/dao.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="errorlog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/error.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/error.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<root level="DEBUG"> |
||||
<appender-ref ref="STDOUT" /> |
||||
</root> |
||||
<logger name="com.hai" level="DEBUG"> |
||||
<appender-ref ref="baselog" /> |
||||
</logger> |
||||
<logger name="com.hai.dao" level="DEBUG"> |
||||
<appender-ref ref="daolog" /> |
||||
</logger> |
||||
<logger name="com.hai" level="ERROR"> |
||||
<appender-ref ref="errorlog" /> |
||||
</logger> |
||||
</configuration> |
@ -0,0 +1,110 @@ |
||||
package com.cweb.config; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
||||
import com.fasterxml.jackson.annotation.PropertyAccessor; |
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import org.springframework.cache.annotation.CachingConfigurerSupport; |
||||
import org.springframework.cache.annotation.EnableCaching; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.data.redis.connection.RedisConnectionFactory; |
||||
import org.springframework.data.redis.core.*; |
||||
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; |
||||
import org.springframework.data.redis.serializer.StringRedisSerializer; |
||||
|
||||
|
||||
@Configuration |
||||
@EnableCaching //开启注解
|
||||
public class RedisConfig extends CachingConfigurerSupport { |
||||
|
||||
/** |
||||
* retemplate相关配置 |
||||
* @param factory |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { |
||||
|
||||
RedisTemplate<String, Object> template = new RedisTemplate<>(); |
||||
// 配置连接工厂
|
||||
template.setConnectionFactory(factory); |
||||
|
||||
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
|
||||
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); |
||||
|
||||
ObjectMapper om = new ObjectMapper(); |
||||
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
|
||||
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); |
||||
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
|
||||
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); |
||||
jacksonSeial.setObjectMapper(om); |
||||
|
||||
// 值采用json序列化
|
||||
template.setValueSerializer(jacksonSeial); |
||||
//使用StringRedisSerializer来序列化和反序列化redis的key值
|
||||
template.setKeySerializer(new StringRedisSerializer()); |
||||
|
||||
// 设置hash key 和value序列化模式
|
||||
template.setHashKeySerializer(new StringRedisSerializer()); |
||||
template.setHashValueSerializer(jacksonSeial); |
||||
template.afterPropertiesSet(); |
||||
|
||||
return template; |
||||
} |
||||
|
||||
/** |
||||
* 对hash类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForHash(); |
||||
} |
||||
|
||||
/** |
||||
* 对redis字符串类型数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForValue(); |
||||
} |
||||
|
||||
/** |
||||
* 对链表类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForList(); |
||||
} |
||||
|
||||
/** |
||||
* 对无序集合类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForSet(); |
||||
} |
||||
|
||||
/** |
||||
* 对有序集合类型的数据操作 |
||||
* |
||||
* @param redisTemplate |
||||
* @return |
||||
*/ |
||||
@Bean |
||||
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { |
||||
return redisTemplate.opsForZSet(); |
||||
} |
||||
|
||||
} |
@ -0,0 +1,56 @@ |
||||
server: |
||||
port: 9301 |
||||
servlet: |
||||
context-path: /crest |
||||
|
||||
#配置是否为debug模式,debug模式下,不开启权限校验 |
||||
debug: false |
||||
|
||||
#datasource数据源设置 |
||||
spring: |
||||
datasource: |
||||
url: jdbc:mysql://122.9.135.148:3306/hsg?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false |
||||
username: root |
||||
password: HF123456. |
||||
type: com.alibaba.druid.pool.DruidDataSource |
||||
driver-class-name: com.mysql.jdbc.Driver |
||||
filters: stat |
||||
maxActive: 10 |
||||
initialSize: 5 |
||||
maxWait: 60000 |
||||
minIdle: 5 |
||||
timeBetweenEvictionRunsMillis: 60000 |
||||
minEvictableIdleTimeMillis: 300000 |
||||
validationQuery: select 'x' |
||||
testWhileIdle: true |
||||
testOnBorrow: false |
||||
testOnReturn: false |
||||
poolPreparedStatements: true |
||||
maxOpenPreparedStatements: 20 |
||||
redis: |
||||
database: 0 |
||||
host: 139.159.177.244 |
||||
port: 36379 |
||||
password: HF123456.Redis |
||||
timeout: 1000 |
||||
jedis: |
||||
pool: |
||||
max-active: 20 |
||||
max-wait: -1 |
||||
max-idle: 10 |
||||
min-idle: 0 |
||||
#配置日期返回至前台为时间戳 |
||||
jackson: |
||||
serialization: |
||||
write-dates-as-timestamps: true |
||||
mybatis: |
||||
mapperLocations: |
||||
- classpath*:sqlmap*/*.xml |
||||
type-aliases-package: |
||||
org.springboot.sample.entity |
||||
|
||||
pagehelper: |
||||
helperDialect: mysql |
||||
reasonable: true |
||||
supportMethodsArguments: true |
||||
params: count=countSql |
@ -0,0 +1,19 @@ |
||||
# \u03A2\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD |
||||
wxAppId=wx8d49e2f83025229d |
||||
wxAppSecret=d8d6dcaef77d3b659258a01b5ddba5df |
||||
|
||||
wxH5AppId=wxa075e8509802f826 |
||||
wxH5AppSecret=0e606fc1378d35e359fcf3f15570b2c5 |
||||
|
||||
wxApiKey=Skufk5oi85wDFGl888i6wsRSTkdd5df5 |
||||
wxMchAppId=wx637bd6f7314daa46 |
||||
wxMchId=1289663601 |
||||
wxSubAppId=wx8d49e2f83025229d |
||||
wxSubMchId=1609882817 |
||||
wxUnifiedOrderUrl=https://api.mch.weixin.qq.com/pay/unifiedorder |
||||
|
||||
notifyUrl=https://hsgcs.dctpay.com/crest/wechatpay/notify |
||||
|
||||
fileUrl=/home/project/hsg/filesystem |
||||
cmsPath=/home/project/hsg/filesystem/cmsPath |
||||
couponCodePath=/home/project/hsg/filesystem/couponCode |
@ -0,0 +1,72 @@ |
||||
<configuration> |
||||
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> |
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
||||
<encoder> |
||||
<pattern>%d %p (%file:%line\)- %m%n</pattern> |
||||
<charset>UTF-8</charset> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="baselog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/base.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/base.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="daolog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/dao.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/dao.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="errorlog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/error.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/error.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<root level="DEBUG"> |
||||
<appender-ref ref="STDOUT" /> |
||||
</root> |
||||
<logger name="com.hai" level="DEBUG"> |
||||
<appender-ref ref="baselog" /> |
||||
</logger> |
||||
<logger name="com.hai.dao" level="DEBUG"> |
||||
<appender-ref ref="daolog" /> |
||||
</logger> |
||||
<logger name="com.hai" level="ERROR"> |
||||
<appender-ref ref="errorlog" /> |
||||
</logger> |
||||
</configuration> |
@ -0,0 +1,74 @@ |
||||
server: |
||||
port: 9401 |
||||
servlet: |
||||
context-path: /crest |
||||
|
||||
#配置是否为debug模式,debug模式下,不开启权限校验 |
||||
debug: false |
||||
|
||||
#datasource数据源设置 |
||||
spring: |
||||
datasource: |
||||
url: jdbc:mysql://127.0.0.1:3306/hsg?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8 |
||||
username: root |
||||
password: HF123456. |
||||
type: com.alibaba.druid.pool.DruidDataSource |
||||
driver-class-name: com.mysql.jdbc.Driver |
||||
filters: stat |
||||
maxActive: 10 |
||||
initialSize: 5 |
||||
maxWait: 60000 |
||||
minIdle: 5 |
||||
timeBetweenEvictionRunsMillis: 60000 |
||||
minEvictableIdleTimeMillis: 300000 |
||||
validationQuery: select 'x' |
||||
testWhileIdle: true |
||||
testOnBorrow: false |
||||
testOnReturn: false |
||||
poolPreparedStatements: true |
||||
maxOpenPreparedStatements: 20 |
||||
redis: |
||||
database: 0 |
||||
host: 127.0.0.1 |
||||
port: 36379 |
||||
password: HF123456.Redis |
||||
timeout: 1000 |
||||
jedis: |
||||
pool: |
||||
max-active: 20 |
||||
max-wait: -1 |
||||
max-idle: 10 |
||||
min-idle: 0 |
||||
#thymelea模板配置 |
||||
thymeleaf: |
||||
prefix: classpath:/templates/ |
||||
suffix: .html |
||||
mode: HTML5 |
||||
encoding: UTF-8 |
||||
#热部署文件,页面不产生缓存,及时更新 |
||||
cache: false |
||||
#配置日期返回至前台为时间戳 |
||||
jackson: |
||||
serialization: |
||||
write-dates-as-timestamps: true |
||||
|
||||
|
||||
thymeleaf: |
||||
cache: false |
||||
prefix: classpath:/templates/ |
||||
suffix: .html |
||||
encoding: UTF-8 |
||||
content-type: text/html |
||||
mode: HTML5 |
||||
|
||||
mybatis: |
||||
mapperLocations: |
||||
- classpath*:sqlmap*/*.xml |
||||
type-aliases-package: |
||||
org.springboot.sample.entity |
||||
|
||||
pagehelper: |
||||
helperDialect: mysql |
||||
reasonable: true |
||||
supportMethodsArguments: true |
||||
params: count=countSql |
@ -0,0 +1,72 @@ |
||||
<configuration> |
||||
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> |
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> |
||||
<encoder> |
||||
<pattern>%d %p (%file:%line\)- %m%n</pattern> |
||||
<charset>UTF-8</charset> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="baselog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/base.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/base.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="daolog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/dao.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/dao.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<appender name="errorlog" |
||||
class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<File>log/error.log</File> |
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
||||
<fileNamePattern>log/error.log.%d.%i</fileNamePattern> |
||||
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> |
||||
<!-- or whenever the file size reaches 64 MB --> |
||||
<maxFileSize>64 MB</maxFileSize> |
||||
</timeBasedFileNamingAndTriggeringPolicy> |
||||
</rollingPolicy> |
||||
<encoder> |
||||
<pattern> |
||||
%d %p (%file:%line\)- %m%n |
||||
</pattern> |
||||
<charset>UTF-8</charset> <!-- 此处设置字符集 --> |
||||
</encoder> |
||||
</appender> |
||||
<root level="DEBUG"> |
||||
<appender-ref ref="STDOUT" /> |
||||
</root> |
||||
<logger name="com.hai" level="DEBUG"> |
||||
<appender-ref ref="baselog" /> |
||||
</logger> |
||||
<logger name="com.hai.dao" level="DEBUG"> |
||||
<appender-ref ref="daolog" /> |
||||
</logger> |
||||
<logger name="com.hai" level="ERROR"> |
||||
<appender-ref ref="errorlog" /> |
||||
</logger> |
||||
</configuration> |
@ -0,0 +1,533 @@ |
||||
package com.hai.common.utils; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.data.redis.core.RedisTemplate; |
||||
import org.springframework.stereotype.Component; |
||||
import org.springframework.util.CollectionUtils; |
||||
|
||||
import java.util.List; |
||||
import java.util.Map; |
||||
import java.util.Set; |
||||
import java.util.concurrent.TimeUnit; |
||||
|
||||
@Component |
||||
public class RedisUtil { |
||||
|
||||
@Autowired |
||||
private RedisTemplate<String, Object> redisTemplate; |
||||
|
||||
public RedisUtil(RedisTemplate<String, Object> redisTemplate) { |
||||
this.redisTemplate = redisTemplate; |
||||
} |
||||
|
||||
/** |
||||
* 指定缓存失效时间 |
||||
* @param key 键 |
||||
* @param time 时间(秒) |
||||
* @return |
||||
*/ |
||||
public boolean expire(String key,long time){ |
||||
try { |
||||
if(time>0){ |
||||
redisTemplate.expire(key, time, TimeUnit.SECONDS); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 根据key 获取过期时间 |
||||
* @param key 键 不能为null |
||||
* @return 时间(秒) 返回0代表为永久有效 |
||||
*/ |
||||
public long getExpire(String key){ |
||||
return redisTemplate.getExpire(key,TimeUnit.SECONDS); |
||||
} |
||||
|
||||
/** |
||||
* 判断key是否存在 |
||||
* @param key 键 |
||||
* @return true 存在 false不存在 |
||||
*/ |
||||
public boolean hasKey(String key){ |
||||
try { |
||||
return redisTemplate.hasKey(key); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 删除缓存 |
||||
* @param key 可以传一个值 或多个 |
||||
*/ |
||||
@SuppressWarnings("unchecked") |
||||
public void del(String ... key){ |
||||
if(key!=null&&key.length>0){ |
||||
if(key.length==1){ |
||||
redisTemplate.delete(key[0]); |
||||
}else{ |
||||
redisTemplate.delete(CollectionUtils.arrayToList(key)); |
||||
} |
||||
} |
||||
} |
||||
|
||||
//============================String=============================
|
||||
/** |
||||
* 普通缓存获取 |
||||
* @param key 键 |
||||
* @return 值 |
||||
*/ |
||||
public Object get(String key){ |
||||
return key==null?null:redisTemplate.opsForValue().get(key); |
||||
} |
||||
|
||||
/** |
||||
* 普通缓存放入 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @return true成功 false失败 |
||||
*/ |
||||
public boolean set(String key,Object value) { |
||||
try { |
||||
redisTemplate.opsForValue().set(key, value); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 普通缓存放入并设置时间 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 |
||||
* @return true成功 false 失败 |
||||
*/ |
||||
public boolean set(String key,Object value,long time){ |
||||
try { |
||||
if(time>0){ |
||||
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); |
||||
}else{ |
||||
set(key, value); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 递增 |
||||
* @param key 键 |
||||
* @param delta 要增加几(大于0) |
||||
* @return |
||||
*/ |
||||
public long incr(String key, long delta){ |
||||
if(delta<0){ |
||||
throw new RuntimeException("递增因子必须大于0"); |
||||
} |
||||
return redisTemplate.opsForValue().increment(key, delta); |
||||
} |
||||
|
||||
/** |
||||
* 递减 |
||||
* @param key 键 |
||||
* @param delta 要减少几(小于0) |
||||
* @return |
||||
*/ |
||||
public long decr(String key, long delta){ |
||||
if(delta<0){ |
||||
throw new RuntimeException("递减因子必须大于0"); |
||||
} |
||||
return redisTemplate.opsForValue().increment(key, -delta); |
||||
} |
||||
|
||||
//================================Map=================================
|
||||
/** |
||||
* HashGet |
||||
* @param key 键 不能为null |
||||
* @param item 项 不能为null |
||||
* @return 值 |
||||
*/ |
||||
public Object hget(String key,String item){ |
||||
return redisTemplate.opsForHash().get(key, item); |
||||
} |
||||
|
||||
/** |
||||
* 获取hashKey对应的所有键值 |
||||
* @param key 键 |
||||
* @return 对应的多个键值 |
||||
*/ |
||||
public Map<Object,Object> hmget(String key){ |
||||
return redisTemplate.opsForHash().entries(key); |
||||
} |
||||
|
||||
/** |
||||
* HashSet |
||||
* @param key 键 |
||||
* @param map 对应多个键值 |
||||
* @return true 成功 false 失败 |
||||
*/ |
||||
public boolean hmset(String key, Map<String,Object> map){ |
||||
try { |
||||
redisTemplate.opsForHash().putAll(key, map); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* HashSet 并设置时间 |
||||
* @param key 键 |
||||
* @param map 对应多个键值 |
||||
* @param time 时间(秒) |
||||
* @return true成功 false失败 |
||||
*/ |
||||
public boolean hmset(String key, Map<String,Object> map, long time){ |
||||
try { |
||||
redisTemplate.opsForHash().putAll(key, map); |
||||
if(time>0){ |
||||
expire(key, time); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 向一张hash表中放入数据,如果不存在将创建 |
||||
* @param key 键 |
||||
* @param item 项 |
||||
* @param value 值 |
||||
* @return true 成功 false失败 |
||||
*/ |
||||
public boolean hset(String key,String item,Object value) { |
||||
try { |
||||
redisTemplate.opsForHash().put(key, item, value); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 向一张hash表中放入数据,如果不存在将创建 |
||||
* @param key 键 |
||||
* @param item 项 |
||||
* @param value 值 |
||||
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 |
||||
* @return true 成功 false失败 |
||||
*/ |
||||
public boolean hset(String key,String item,Object value,long time) { |
||||
try { |
||||
redisTemplate.opsForHash().put(key, item, value); |
||||
if(time>0){ |
||||
expire(key, time); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 删除hash表中的值 |
||||
* @param key 键 不能为null |
||||
* @param item 项 可以使多个 不能为null |
||||
*/ |
||||
public void hdel(String key, Object... item){ |
||||
redisTemplate.opsForHash().delete(key,item); |
||||
} |
||||
|
||||
/** |
||||
* 判断hash表中是否有该项的值 |
||||
* @param key 键 不能为null |
||||
* @param item 项 不能为null |
||||
* @return true 存在 false不存在 |
||||
*/ |
||||
public boolean hHasKey(String key, String item){ |
||||
return redisTemplate.opsForHash().hasKey(key, item); |
||||
} |
||||
|
||||
/** |
||||
* hash递增 如果不存在,就会创建一个 并把新增后的值返回 |
||||
* @param key 键 |
||||
* @param item 项 |
||||
* @param by 要增加几(大于0) |
||||
* @return |
||||
*/ |
||||
public double hincr(String key, String item,double by){ |
||||
return redisTemplate.opsForHash().increment(key, item, by); |
||||
} |
||||
|
||||
/** |
||||
* hash递减 |
||||
* @param key 键 |
||||
* @param item 项 |
||||
* @param by 要减少记(小于0) |
||||
* @return |
||||
*/ |
||||
public double hdecr(String key, String item,double by){ |
||||
return redisTemplate.opsForHash().increment(key, item,-by); |
||||
} |
||||
|
||||
//============================set=============================
|
||||
/** |
||||
* 根据key获取Set中的所有值 |
||||
* @param key 键 |
||||
* @return |
||||
*/ |
||||
public Set<Object> sGet(String key){ |
||||
try { |
||||
return redisTemplate.opsForSet().members(key); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 根据value从一个set中查询,是否存在 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @return true 存在 false不存在 |
||||
*/ |
||||
public boolean sHasKey(String key,Object value){ |
||||
try { |
||||
return redisTemplate.opsForSet().isMember(key, value); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将数据放入set缓存 |
||||
* @param key 键 |
||||
* @param values 值 可以是多个 |
||||
* @return 成功个数 |
||||
*/ |
||||
public long sSet(String key, Object...values) { |
||||
try { |
||||
return redisTemplate.opsForSet().add(key, values); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将set数据放入缓存 |
||||
* @param key 键 |
||||
* @param time 时间(秒) |
||||
* @param values 值 可以是多个 |
||||
* @return 成功个数 |
||||
*/ |
||||
public long sSetAndTime(String key,long time,Object...values) { |
||||
try { |
||||
Long count = redisTemplate.opsForSet().add(key, values); |
||||
if(time>0) { |
||||
expire(key, time); |
||||
} |
||||
return count; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 获取set缓存的长度 |
||||
* @param key 键 |
||||
* @return |
||||
*/ |
||||
public long sGetSetSize(String key){ |
||||
try { |
||||
return redisTemplate.opsForSet().size(key); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 移除值为value的 |
||||
* @param key 键 |
||||
* @param values 值 可以是多个 |
||||
* @return 移除的个数 |
||||
*/ |
||||
public long setRemove(String key, Object ...values) { |
||||
try { |
||||
Long count = redisTemplate.opsForSet().remove(key, values); |
||||
return count; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
//===============================list=================================
|
||||
|
||||
/** |
||||
* 获取list缓存的内容 |
||||
* @param key 键 |
||||
* @param start 开始 |
||||
* @param end 结束 0 到 -1代表所有值 |
||||
* @return |
||||
*/ |
||||
public List<Object> lGet(String key, long start, long end){ |
||||
try { |
||||
return redisTemplate.opsForList().range(key, start, end); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 获取list缓存的长度 |
||||
* @param key 键 |
||||
* @return |
||||
*/ |
||||
public long lGetListSize(String key){ |
||||
try { |
||||
return redisTemplate.opsForList().size(key); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 通过索引 获取list中的值 |
||||
* @param key 键 |
||||
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 |
||||
* @return |
||||
*/ |
||||
public Object lGetIndex(String key,long index){ |
||||
try { |
||||
return redisTemplate.opsForList().index(key, index); |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return null; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将list放入缓存 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @return |
||||
*/ |
||||
public boolean lSet(String key, Object value) { |
||||
try { |
||||
redisTemplate.opsForList().rightPush(key, value); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将list放入缓存 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @param time 时间(秒) |
||||
* @return |
||||
*/ |
||||
public boolean lSet(String key, Object value, long time) { |
||||
try { |
||||
redisTemplate.opsForList().rightPush(key, value); |
||||
if (time > 0) { |
||||
expire(key, time); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将list放入缓存 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @return |
||||
*/ |
||||
public boolean lSet(String key, List<Object> value) { |
||||
try { |
||||
redisTemplate.opsForList().rightPushAll(key, value); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 将list放入缓存 |
||||
* @param key 键 |
||||
* @param value 值 |
||||
* @param time 时间(秒) |
||||
* @return |
||||
*/ |
||||
public boolean lSet(String key, List<Object> value, long time) { |
||||
try { |
||||
redisTemplate.opsForList().rightPushAll(key, value); |
||||
if (time > 0) { |
||||
expire(key, time); |
||||
} |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 根据索引修改list中的某条数据 |
||||
* @param key 键 |
||||
* @param index 索引 |
||||
* @param value 值 |
||||
* @return |
||||
*/ |
||||
public boolean lUpdateIndex(String key, long index,Object value) { |
||||
try { |
||||
redisTemplate.opsForList().set(key, index, value); |
||||
return true; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 移除N个值为value |
||||
* @param key 键 |
||||
* @param count 移除多少个 |
||||
* @param value 值 |
||||
* @return 移除的个数 |
||||
*/ |
||||
public long lRemove(String key,long count,Object value) { |
||||
try { |
||||
Long remove = redisTemplate.opsForList().remove(key, count, value); |
||||
return remove; |
||||
} catch (Exception e) { |
||||
e.printStackTrace(); |
||||
return 0; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,35 @@ |
||||
package com.hai.enum_type; |
||||
|
||||
/** |
||||
* redis Hash分类 |
||||
*/ |
||||
public enum RedisHash { |
||||
|
||||
WX_USER("WX_USER", "微信用户"), |
||||
; |
||||
|
||||
private String type; |
||||
|
||||
private String name; |
||||
|
||||
RedisHash(String type,String name) { |
||||
this.type = type; |
||||
this.name = name; |
||||
} |
||||
|
||||
public String getType() { |
||||
return type; |
||||
} |
||||
|
||||
public void setType(String type) { |
||||
this.type = type; |
||||
} |
||||
|
||||
public String getName() { |
||||
return name; |
||||
} |
||||
|
||||
public void setName(String name) { |
||||
this.name = name; |
||||
} |
||||
} |
@ -0,0 +1,22 @@ |
||||
tuanYouUrl=https://test02-motorcade-hcs.czb365.com |
||||
tuanYouAppKey=208241666939552 |
||||
tuanYouAppSecret=adecc3cff077834cb8632c8ab3bec0e6 |
||||
tuanYouDieselAccount=9b115eao4400 |
||||
tuanYouGasolineAccount=9b115e5g4400 |
||||
|
||||
qinzhuUrl=https://live-test.qianzhu8.com |
||||
qinzhuHtmlUrl=https://m-test.qianzhu8.com |
||||
qinzhuPlatformId=10376 |
||||
qinzhuSecret=ktxb49sh2jfhgn8g |
||||
qianzhuOrderNotify=https://hsg.dctpay.com/crest/qianzhu/orderNotify |
||||
|
||||
huiliantongUrl=https://gzapitest.deepermobile.com.cn:441 |
||||
huiliantongAppNo=guizhouhltcs |
||||
huiliantongAppkey=g%2BNnjR54YSUWM2iKg%2Fd82A9x9hg2kYV7 |
||||
huiliantongAppsecret=FA28E95ACABFA4B2B8E25857437B07F1 |
||||
|
||||
wx_cert=/home/project/wx_cert/ |
||||
|
||||
TelApiKey=2d01f6b520254b1a80f6b167832cea18 |
||||
TelApiSecret=d11ee9b41e014a039f030e53ae6f5295 |
||||
TelMemberId=d13091df65d64aafbf0f35d2093157b7 |
@ -0,0 +1,22 @@ |
||||
tuanYouUrl=https://hcs.czb365.com |
||||
tuanYouAppKey=210091174083104 |
||||
tuanYouAppSecret=f9811df6791d309bf48f4a8db9edaa45 |
||||
tuanYouDieselAccount=9hp52qgg4400 |
||||
tuanYouGasolineAccount=9hp52qf04400 |
||||
|
||||
qinzhuUrl=https://live.qianzhu8.com |
||||
qinzhuHtmlUrl=https://qz.dctpay.com |
||||
qinzhuPlatformId=10458 |
||||
qinzhuSecret=nnl3gg4ss0pka11t |
||||
qianzhuOrderNotify=https://hsg.dctpay.com/crest/qianzhu/orderNotify |
||||
|
||||
huiliantongUrl=https://gzapitest.deepermobile.com.cn:441 |
||||
huiliantongAppNo=guizhouhltcs |
||||
huiliantongAppkey=g%2BNnjR54YSUWM2iKg%2Fd82A9x9hg2kYV7 |
||||
huiliantongAppsecret=FA28E95ACABFA4B2B8E25857437B07F1 |
||||
|
||||
wx_cert=/home/project/wx_cert/ |
||||
|
||||
TelApiKey=2d01f6b520254b1a80f6b167832cea18 |
||||
TelApiSecret=d11ee9b41e014a039f030e53ae6f5295 |
||||
TelMemberId=d13091df65d64aafbf0f35d2093157b7 |
Loading…
Reference in new issue