Initial commit: MSH System\n\n- msh_single_uniapp: Vue 2 + UniApp 前端(微信小程序/H5/App/支付宝小程序)\n- msh_crmeb_22: Spring Boot 2.2 后端(C端API/管理端/业务逻辑)\n- models-integration: AI服务集成(Coze/KieAI/腾讯ASR)\n- docs: 产品文档与设计稿

This commit is contained in:
2026-02-28 05:40:21 +08:00
commit 14d29d51c0
2182 changed files with 482509 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
{
"properties": [
{
"name": "wx.miniapp.configs",
"type": "java.util.List",
"description": "Description for wx.miniapp.configs."
}
]
}

View File

@@ -0,0 +1 @@
com.zbkj.front.service.impl.CaptchaCacheServiceRedisImpl

View File

@@ -0,0 +1,33 @@
# CRMEB 相关配置
crmeb:
version: CRMEB-JAVA-SY-v2.2 # 当前代码版本
imagePath: /你的站点绝对路径 建议jar包位置/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 20009
spring:
profiles:
# 配置的环境
active: beta
# 数据库配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/crmeb_java_beta?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
username: crmeb_java_beta
password: 111111
redis:
host: 127.0.0.1 #地址
port: 6379 #端口
password: 111111
timeout: 10000 # 连接超时时间(毫秒)
database: 3 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

View File

@@ -0,0 +1,33 @@
# CRMEB 相关配置
crmeb:
version: CRMEB-JAVA-SY-v2.2 # 当前代码版本
imagePath: /你的站点绝对路径 建议jar包位置/ # 服务器图片路径配置 斜杠结尾
asyncConfig: false #是否同步config表数据到redis
server:
port: 20610
spring:
profiles:
# 配置的环境
active: dev
# 数据库配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/java_dev?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
username: java_dev
password: 111111
redis:
host: 127.0.0.1 #地址
port: 6379 #端口
password: 111111
timeout: 10000 # 连接超时时间(毫秒)
database: 10 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

View File

@@ -0,0 +1,55 @@
# CRMEB 相关配置
crmeb:
imagePath: /usr/local/crmeb/crmebimage/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 30621
spring:
datasource:
name: jzjg_jxz
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://118.89.113.119:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: baisui
password: fFmTJhBEFSnYGYW7
redis:
host: 118.89.113.119 #地址
port: 6379 #端口
password: 'UthinkCloud2017'
timeout: 10000 # 连接超时时间(毫秒)
database: 27 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 27 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./crmeb_log
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

@@ -0,0 +1,53 @@
# CRMEB 相关配置
crmeb:
imagePath: /usr/local/crmeb/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 30610
spring:
datasource:
name: jzjg
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://118.89.113.119:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: baisui
password: fFmTJhBEFSnYGYW7
redis:
host: 118.89.113.119 #地址
port: 6379 #端口
password: 'UthinkCloud2017'
timeout: 10000 # 连接超时时间(毫秒)
database: 5 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./crmeb_log
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

@@ -0,0 +1,57 @@
# CRMEB 相关配置
crmeb:
version: CRMEB-JAVA-SY-v2.2 # 当前代码版本
imagePath: /你的站点绝对路径 建议jar包位置/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 20410
spring:
profiles:
# 配置的环境
active: prod
# 数据库配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/java_demo?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
username: java_demo
password: 111111
redis:
host: 127.0.0.1 #地址
port: 6379 #端口
password: 111111
timeout: 10000 # 连接超时时间(毫秒)
database: 4 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./crmeb_log
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: crmeb #访问swagger的账号
password: crmeb.com #访问swagger的密码

View File

@@ -0,0 +1,118 @@
# CRMEB 相关配置
crmeb:
imagePath: /usr/local/crmeb/crmebimage/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
server:
port: 20822
spring:
datasource:
name: shop-msh
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://49.235.131.69:3306/${spring.datasource.name}?useUnicode=true&serverTimezone=GMT%2B8&characterEncoding=utf8
username: root
password: mogu2018
# Druid连接池配置
druid:
initial-size: 5
min-idle: 5
max-active: 20
# 禁用验证查询解决与MySQL 8驱动的兼容性问题
validation-query: SELECT 1
test-while-idle: false
test-on-borrow: false
test-on-return: false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
redis:
host: 49.235.131.69 #地址 118.89.113.119 49.235.131.69
port: 6379 #端口
password: 'mogu2018'
timeout: 10000 # 连接超时时间(毫秒)
database: 3 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 23 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./logs
# mybatis 配置
mybatis-plus:
# 配置sql打印日志
configuration:
log-impl:
#swagger 配置
swagger:
basic:
enable: true #是否开启界面
check: false #是否打开验证
username: www #访问swagger的账号
password: www.com #访问swagger的密码
# Coze API 配置
coze:
api:
base-url: https://api.coze.cn
auth-type: pat # pat 或 jwt
token: pat_fGSD3Jax9VNWOJ7yrjke8R1XjeLWQCT2amc2gk4xBI68OPrnlFGwkOAMS2xk5XuY # 有效期30天
# JWT 模式配置(当 auth-type=jwt 时使用)
client-id: 1180790412263
private-key-file: classpath:coze-1180790412263-private_key.pem
public-key-id: s4lCkPcYns0EjyIZF5EqnAC58k7-NMZVEVdDkW0exyQ
connect-timeout: 30000
read-timeout: 60000
# Bot 和用户配置
default-bot-id: 7591133240535449654
default-user-id: 3243981400446844
# 工作流配置
nutrition-analysis-workflow-id: 1180790412263 #饮食打卡记录ai分析
diet-analysis-id: 1180790412263
# 腾讯云语音识别配置
tencent-asr:
# API密钥ID
secret-id: AKID76sRn273nPuCJJ6h0GNbv78zhEaosz0p
# API密钥Key需要在实际使用时提供
secret-key: kKm6FQWUNJTjuvjNo23qQozWzISuY1IL
region: ap-shanghai
connect-timeout: 30000
read-timeout: 60000
default-engine-model: 16k_zh
default-res-text-format: 0
default-channel-num: 1
enabled: true
# KieAI API 配置
kie-ai:
base-url: https://api.kie.ai
api-token: 484661585fe62c5bcb77e6d392ba8ee8
api-callback-url: https://sophia-shop.uj345.cc/api/front/kieai/callback
api-upload-base-url: https://kieai.redpandaai.co
connect-timeout: 30000
read-timeout: 60000
max-retries: 3
retry-interval: 1000
poll-interval: 2000
max-wait-time: 300000
callback-enabled: true
default-output-format: png
default-image-size: "1:1"

View File

@@ -0,0 +1,152 @@
# CRMEB 相关配置
crmeb:
version: JAVA-SY-v2.2 # 当前代码版本
imagePath: /usr/local/crmeb/crmebimage/ # 服务器图片路径配置 斜杠结尾
asyncConfig: true #是否同步config表数据到redis
activityStyleCachedTime: 10 #活动边框缓存周期 秒为单位生产环境适当5-10分钟即可
demoSite: true #是否演示站点 所有手机号码都会掩码
ignored: #安全路径白名单
- swagger-ui/
- swagger-resources/**
- /**/v2/api-docs
- /**/*.html
- /**/*.js
- /**/*.css
- /**/*.png
- /**/*.map
- /favicon.ico
- /actuator/**
- /druid/**
- api/front/pagediy/info
- api/front/upload/imageOuter
- api/front/coze/**
- api/front/kieai/**
# 配置端口
server:
port: 8081
servlet:
context-path: / # 访问path
tomcat:
uri-encoding: UTF-8 # 默认编码格式
max-threads: 1000 # 最大线程数量 默认200
min-spare-threads: 30 # 初始化启动线程数量
spring:
profiles:
active: sophia
servlet:
multipart:
max-file-size: 50MB #设置单个文件大小
max-request-size: 50MB #设置单次请求文件的总大小
application:
name: cemrb-front #这个很重要这在以后的服务与服务之间相互调用一般都是根据这个name
jackson:
locale: zh_CN
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
# 数据库配置
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test_java?characterEncoding=utf-8&useSSL=false&serverTimeZone=GMT+8
username: test_java
password: 111111
# Druid连接池配置
druid:
initial-size: 5
min-idle: 5
max-active: 20
# 禁用验证查询解决与MySQL 8驱动的兼容性问题
validation-query: SELECT 1
test-while-idle: false
test-on-borrow: false
test-on-return: false
pool-prepared-statements: false
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
redis:
host: 127.0.0.1 #地址
port: 6379 #端口
password: 111111
timeout: 30000 # 连接超时时间(毫秒)
database: 10 #默认数据库
jedis:
pool:
max-active: 200 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
time-between-eviction-runs: -1 #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
second:
database: 13 # 微信accessToken存储库
debug: true
logging:
level:
io.swagger.*: error
com.zbjk.crmeb: debug
org.springframework.boot.autoconfigure: ERROR
config: classpath:logback-spring.xml
file:
path: ./crmeb_log
# mybatis 配置
mybatis-plus:
mapper-locations: classpath*:mapper/*/*Mapper.xml #xml扫描多个目录用逗号或者分号分隔告诉 Mapper 所对应的 XML 文件位置)
# 配置sql打印日志
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
# logic-delete-field: isDel #全局逻辑删除字段值 3.3.0开始支持,详情看下面。
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
# 行为验证码
aj:
captcha:
type: default # 验证码类型
water-mark: Java # 水印
slip-offset: 5 # 校验滑动拼图允许误差偏移量(默认5像素)
aes-status: true # aes加密坐标开启或者禁用(true|false)
interference-options: 2 # 滑动干扰项(0/1/2)
font-style: 1 # 点选字体样式 默认Font.BOLD
font-size: 25 # 点选字体字体大小
req-frequency-limit-enable: false # 接口请求次数一分钟限制是否开启 true|false
req-get-lock-limit: 5 # 验证失败5次get接口锁定
req-get-lock-seconds: 360 # 验证失败后,锁定时间间隔,s
req-get-minute-limit: 30 # get接口一分钟内请求数限制
req-check-minute-limit: 60 # check接口一分钟内请求数限制
req-verify-minute-limit: 60 # verify接口一分钟内请求数限制
# 滑动验证,底图路径,不配置将使用默认图片
# 支持全路径
# 支持项目路径,以classpath:开头,取resource目录下路径,例classpath:images/jigsaw
jigsaw: classpath:images/jigsaw
#滑动验证,底图路径,不配置将使用默认图片
##支持全路径
# 支持项目路径,以classpath:开头,取resource目录下路径,例classpath:images/pic-click
pic-click: classpath:images/pic-click
# 对于分布式部署的应用我们建议应用自己实现CaptchaCacheService比如用Redis或者memcache
# 参考CaptchaCacheServiceRedisImpl.java
# 如果应用是单点的也没有使用redis那默认使用内存。
# 内存缓存只适合单节点部署的应用,否则验证码生产与验证在节点之间信息不同步,导致失败。
# 注意啦如果应用有使用spring-boot-starter-data-redis
# 请打开CaptchaCacheServiceRedisImpl.java注释。
# redis -----> SPI 在resources目录新建META-INF.services文件夹(两层)参考当前服务resources。
# 缓存local/redis...
cache-type: redis
# local缓存的阈值,达到这个值,清除缓存
cache-number: 1000
# local定时清除过期缓存(单位秒),设置为0代表不执行
timing-clear: 3600
history-data-clear-enable: false
#swagger 配置
swagger:
basic:
enable: true #是否开启
check: false #是否打开验证
username: #访问swagger的账号
password: #访问swagger的密码

View File

@@ -0,0 +1 @@
`"Y8888Y"' 88 `8b 88 `8' 88 88888888888 88888888P"

View File

@@ -0,0 +1 @@
-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDZtLxucUmtpB/g\nWUoEcOqTiBBMneXvcEyYSJyOt2VskdYJSntH7rjdjO4//xlrtfCXYJceR7iRC4wA\n0sbPpQiSU32B+pHFoDwvAXnJDu2tCUfS0GDj42+xVX0tmjw1MjcTe5Bq0CI0ZBdx\nw4JpGHd4GGiGUayZsm/gJo6rhabJQsoiKVxF3Yy/7+e0xcYPsWYt5wykUaybQBB6\nE4Pdj50VHCwvGeTItkAJ8VmXKZQhrk0fAPsmu3+47atM1tQPy6E4QeVlByrNOIFo\nqU+7u1mE7bZVSE9RnqgP8DTgfl8TOjLhw72gj4mE0tDbNn7isVBhOiuXRzCASdrG\nAotzaeU9AgMBAAECggEAYluGmnsyZ3H0ON7+Ut1VDcx2WLcp0DCzWkXL/aqb9x44\nTkBJTGltOiNW7LDrIj+z8CBihfqvR1CpMyIHUn7kTX/M/3FedKP9LNuE0zKcbQX5\nXiRo8eyqZLsT8Atz0jDas0GrMKbSHUtvUCWdgK/eIfMdHjo+Ob5lTyb8ZD/g56Ig\n7LaZ/zICMx3YKseOlDkNbXcJUUefzwaSR/8Bn6HNrryvjTvaMjANINNXNCBQvKE7\ntTyd8yXXWKRj2p11b3sZvyRxC+hfDujP2eoRCEuRVLU3wDrJJy4w5PD5OCVAEBwZ\n3EU9xmHyfS3iip/E2Dw8e+9X2VOdQ0FmCFk6yk1U3QKBgQDvE362WLTqgzo/qYj5\n5I9nfjedN5Ewo6xb5jBxFdemxmNtAXlW0TO/YAsXGToqHNpXJavHvrd5vDctX+O1\nX6k68cA44maTmh5pGY8vElR6SmR/0YuNWIHPA4i4+LyFS4V6L8d8htZZ+l5gPSPR\nVBO74fGj9UuPtW4E0Rk2Qoe5AwKBgQDpHflhna85EN2A46rDXmXya/c1LreaoQBH\nia6lrd0B8vMa3H+BeRXlr1EDCxyQmQ47aitRYB10qSJSHbyJgGC1m/QaMM5w1bVw\nqAklswCcL16GCW0U0c4OV2RuOezI+BinBQMgo09VZpIUtLSfXDwHiich0fA6QHKR\nZ5Kcq/D0vwKBgQDWaJ5wPHfsBcp8g7gDnNZ7U3fe+JGulGskc/mnwZYIzM0oWnUO\nxknpbOIlUguW7w9lrrQzTDhR5dl6SQ/3fpZP9bWVjn2+DC8PxMtjxMWccxFUjIHi\nPqkUFjBM605vIL7RSP5YELk2MtLm7o4r0oJsMoM6rueYN3c2vKwmvF3qLwKBgGEz\nDE51byA+Nf2N8B+x9pQUDGlyZz/kLbemYtnWGra7VD44/jlAAa9ZYFACjBCGoPaJ\nGDK//sgr1ZGjsH8stiZDNo7NFubZVOP6TIYZkwGMhr8gowjxSheUvN1w7ZgGSlEp\nt9od/fA/6l0T09Q2oxkJs7NYU/AV+y9BnlIRJ1EFAoGAXD1/+y6pE/JuZKb/98Nv\nmwgHX3l1RmX/p1aPNR2xx3cwQSfmWtRSj6Z+aNLq9ijAL973AQ5KXE7QFneCU2us\n5eYPmmMJpgvjHhZmOjwnfaFqxktupk2FpHeRFTEQ4pleFSkCAO66ZW7V+qaTylfa\nCEXgTIna21rc09EcKRuEhk0=\n-----END PRIVATE KEY-----

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -0,0 +1,55 @@
文泉驿是一个开源汉字字体项目
由旅美学者房骞骞FangQ
于2004年10月创建
集中力量解决GNU/Linux
高质量中文字体匮乏的状况
目前,文泉驿已经开发并发布了
第一个完整覆盖GB18030汉字
包含27000多个汉字
的多规格点阵汉字字型文件
第一个覆盖GBK字符集的
开源矢量字型文件(文泉驿正黑)
并提供了目前包含字符数目最多的
开源字体——GNU Unifont——中
绝大多数中日韩文相关的符号
这些字型文件已经逐渐成为
主流Linux/Unix发行版
中文桌面的首选中文字体
目前Ubuntu、Fedora、Slackware
Magic Linux、CDLinux
使用文泉驿作为默认中文字体
Debian、Gentoo、Mandriva
ArchLinux、Frugalware
则提供了官方源支持
而FreeBSD则在其ports中有提供
所以,今天我们所要分享的就是
文泉驿正黑体
可在Linux/UNIX,Windows
Mac OS和嵌入式操作系统中使用

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -0,0 +1,218 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 根据需要自行配置 -->
<springProperty scope="context" name="LOG_PORT" source="server.port"/>
<property name="APP_NAME" value="Cjava22"/>
<!--<property name="log.path" value="/www/wwwroot/crmeb_front_log/${LOG_PORT}}"></property>-->
<property name="log.path" value="front_log/${LOG_PORT}}"></property>
<!--"@timestamp": "2019-06-27T09:59:41.897+08:00",-->
<!--"@version": "1",-->
<!--"message": "queryAllEveryDayDataRate",-->
<!--"logger_name": "com.example.demo.controller.GetAllSummaryDataController",-->
<!--"thread_name": "http-nio-8000-exec-1",-->
<!--"level": "INFO",-->
<!--"level_value": 20000-->
<!--<property name="CONSOLE_LOG_PATTERN"-->
<!--value="{ %d{yyyy-MM-dd HH:mm:ss.SSS}-->
<!--${APP_NAME} %highlight(%-5level)-->
<!--%yellow(%X{X-B3-TraceId}),-->
<!--%green(%X{X-B3-SpanId}),-->
<!--%blue(%X{X-B3-ParentSpanId})-->
<!--%yellow(%thread)-->
<!--%green(%logger)-->
<!--%msg%n}"/>-->
<!-- 控制台输出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
<pattern>
{ "app": "${APP_NAME}", "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "thread": "%thread",
"class": "%logger{40}",
"message": "%msg" }
%n
</pattern>
</pattern>
<charset>utf-8</charset>
</encoder>
</appender>
<!--输出到文件-->
<!-- 时间滚动输出 level为 DEBUG 日志 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_debug.log</file>
<!--日志文件输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
<pattern>
{ "app": "${APP_NAME}", "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "thread": "%thread",
"class": "%logger{40}",
"message": "%msg" }
%n
</pattern>
</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志归档 -->
<fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录debug级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>debug</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_info.log</file>
<!--日志文件输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
<pattern>
{ "app": "${APP_NAME}", "timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}", "level": "%level", "thread": "%thread",
"class": "%logger{40}",
"message": "%msg" }
%n
</pattern>
</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天日志归档路径以及格式 -->
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录info级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 WARN 日志 -->
<appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_warn.log</file>
<!--日志文件输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
<pattern>
{
"app": "${APP_NAME}",
"timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"thread": "%thread",
"class": "%logger{40}",
"message": "%msg" }
%n
</pattern>
</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>2</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录warn级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>warn</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 时间滚动输出 level为 ERROR 日志 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文件的路径及文件名 -->
<file>${log.path}/log_error.log</file>
<!--日志文件输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>
<pattern>
{
"app": "${APP_NAME}",
"timestamp":"%d{yyyy-MM-dd HH:mm:ss.SSS}",
"level": "%level",
"thread": "%thread",
"class": "%logger{40}",
"message": "%msg" }
%n
</pattern>
</pattern>
<charset>utf-8</charset>
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!--日志文件保留天数-->
<maxHistory>30</maxHistory>
</rollingPolicy>
<!-- 此日志文件只记录ERROR级别的 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!--<appender name="LOGSTASH" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
<!--<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>-->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
<!--<fileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}.log</fileNamePattern>-->
<!--</rollingPolicy>-->
<!--</appender>-->
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="DEBUG_FILE" />
<!-- <appender-ref ref="INFO_FILE" />-->
<!-- <appender-ref ref="WARN_FILE" />-->
<appender-ref ref="ERROR_FILE" />
<!--<appender-ref ref="LOGSTASH"/>-->
</root>
</configuration>