You've already forked FrameTour-BE
Init
This commit is contained in:
62
src/main/resources/application.yml
Normal file
62
src/main/resources/application.yml
Normal file
@ -0,0 +1,62 @@
|
||||
server:
|
||||
port: 8030
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: basic
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
mvc:
|
||||
# 启用hiddenMethod过滤器(头像上传)
|
||||
hiddenmethod:
|
||||
filter:
|
||||
enabled: true
|
||||
datasource: # 数据源的相关配置
|
||||
type: com.zaxxer.hikari.HikariDataSource # 数据源类型:HikariCP
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver # mysql驱动
|
||||
url: jdbc:mysql://8.134.112.96:3306/liuying_mgmt_re?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: yckj2017
|
||||
hikari:
|
||||
connection-timeout: 30000 # 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 默认:30秒
|
||||
minimum-idle: 5 # 最小连接数
|
||||
maximum-pool-size: 20 # 最大连接数
|
||||
auto-commit: true # 事务自动提交
|
||||
idle-timeout: 60000 # 连接超时的最大时长(毫秒)
|
||||
pool-name: DateSourceHikariCP # 连接池名字
|
||||
max-lifetime: 180000 # 连接的生命时长(毫秒)
|
||||
connection-test-query: SELECT 1 # 连接测试语句
|
||||
jackson:
|
||||
date-format: "yyyy-MM-dd HH:mm:ss"
|
||||
time-zone: GMT+8
|
||||
redis:
|
||||
host: 10.59.3.242
|
||||
port: 6379
|
||||
# 密码过于复杂需要使用''引起来,要不可能导致项目无法启动,因为无法识别特殊字符
|
||||
password: yckj2018
|
||||
jedis:
|
||||
pool:
|
||||
max-active: -1 # 连接池最大连接数(使用负值表示没有限制)
|
||||
min-idle: 1 # 连接池中的最小空闲连接
|
||||
time-between-eviction-runs: 3000
|
||||
timeout: 40000
|
||||
# 配置用户头像存放静态资源文件夹
|
||||
resources:
|
||||
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
|
||||
# 配置请求文件大小
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 10MB
|
||||
max-request-size: 10MB
|
||||
|
||||
# MyBatis
|
||||
mybatis-plus:
|
||||
configuration:
|
||||
# 开启驼峰命名法
|
||||
map-underscore-to-camel-case: true
|
||||
use-generated-keys: true
|
||||
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
|
||||
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
|
||||
# 指定使用的日志配置文件
|
||||
logging:
|
||||
config: classpath:logback-spring.xml
|
133
src/main/resources/logback-spring.xml
Normal file
133
src/main/resources/logback-spring.xml
Normal file
@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="true">
|
||||
|
||||
<!-- appender是configuration的子节点,是负责写日志的组件。 -->
|
||||
<!-- ConsoleAppender:把日志输出到控制台 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<!-- 默认情况下,每个日志事件都会立即刷新到基础输出流。 这种默认方法更安全,因为如果应用程序在没有正确关闭appender的情况下退出,则日志事件不会丢失。
|
||||
但是,为了显着增加日志记录吞吐量,您可能希望将immediateFlush属性设置为false -->
|
||||
<!--<immediateFlush>true</immediateFlush>-->
|
||||
<encoder>
|
||||
<!-- %37():如果字符没有37个字符长度,则左侧用空格补齐 -->
|
||||
<!-- %-37():如果字符没有37个字符长度,则右侧用空格补齐 -->
|
||||
<!-- %15.15():如果记录的线程字符长度小于15(第一个)则用空格在左侧补齐,如果字符长度大于15(第二个),则从开头开始截断多余的字符 -->
|
||||
<!-- %-40.40():如果记录的logger字符长度小于40(第一个)则用空格在右侧补齐,如果字符长度大于40(第二个),则从开头开始截断多余的字符 -->
|
||||
<!-- %msg:日志打印详情 -->
|
||||
<!-- %n:换行符 -->
|
||||
<!-- %highlight():转换说明符以粗体红色显示其级别为ERROR的事件,红色为WARN,BLUE为INFO,以及其他级别的默认颜色。 -->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) --- [%15.15(%thread)] %cyan(%-40.40(%logger{40})) : %msg%n</pattern>
|
||||
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- info 日志-->
|
||||
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
|
||||
<!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是project_info.log -->
|
||||
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过10MB时,对当前日志进行分割 重命名-->
|
||||
<appender name="info_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<!--日志文件路径和名称-->
|
||||
<File>logs/project_info.log</File>
|
||||
<!--是否追加到文件末尾,默认为true-->
|
||||
<append>true</append>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<level>ERROR</level>
|
||||
<onMatch>DENY</onMatch><!-- 如果命中ERROR就禁止这条日志 -->
|
||||
<onMismatch>ACCEPT</onMismatch><!-- 如果没有命中就使用这条规则 -->
|
||||
</filter>
|
||||
<!--有两个与RollingFileAppender交互的重要子组件。 第一个RollingFileAppender子组件,即RollingPolicy:负责执行翻转所需的操作。
|
||||
RollingFileAppender的第二个子组件,即TriggeringPolicy:将确定是否以及何时发生翻转。 因此,RollingPolicy负责什么和TriggeringPolicy负责什么时候.
|
||||
作为任何用途,RollingFileAppender必须同时设置RollingPolicy和TriggeringPolicy,但是,如果其RollingPolicy也实现了TriggeringPolicy接口,则只需要显式指定前者。-->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!-- 日志文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
|
||||
<!-- 文件名:logs/project_info.2017-12-05.0.log -->
|
||||
<!-- 注意:SizeAndTimeBasedRollingPolicy中 %i和%d令牌都是强制性的,必须存在,要不会报错 -->
|
||||
<fileNamePattern>logs/project_info.%d.%i.log</fileNamePattern>
|
||||
<!-- 每产生一个日志文件,该日志文件的保存期限为30天, ps:maxHistory的单位是根据fileNamePattern中的翻转策略自动推算出来的,例如上面选用了yyyy-MM-dd,则单位为天
|
||||
如果上面选用了yyyy-MM,则单位为月,另外上面的单位默认为yyyy-MM-dd-->
|
||||
<maxHistory>30</maxHistory>
|
||||
<!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到20GB,哪怕没到30天也要删除多余的日志 -->
|
||||
<totalSizeCap>20GB</totalSizeCap>
|
||||
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 -->
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</rollingPolicy>
|
||||
<!--编码器-->
|
||||
<encoder>
|
||||
<!-- pattern节点,用来设置日志的输入格式 ps:日志文件中没有设置颜色,否则颜色部分会有ESC[0:39em等乱码-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%15.15(%thread)] %-40.40(%logger{40}) : %msg%n</pattern>
|
||||
<!-- 记录日志的编码:此处设置字符集 - -->
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- error 日志-->
|
||||
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
|
||||
<!-- 以下的大概意思是:1.先按日期存日志,日期变了,将前一天的日志文件名重命名为XXX%日期%索引,新的日志仍然是project_error.log -->
|
||||
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过10MB时,对当前日志进行分割 重命名-->
|
||||
<appender name="error_log" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<!--日志文件路径和名称-->
|
||||
<File>logs/project_error.log</File>
|
||||
<!--是否追加到文件末尾,默认为true-->
|
||||
<append>true</append>
|
||||
<!-- ThresholdFilter过滤低于指定阈值的事件。 对于等于或高于阈值的事件,ThresholdFilter将在调用其decision()方法时响应NEUTRAL。 但是,将拒绝级别低于阈值的事件 -->
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||
<level>ERROR</level><!-- 低于ERROR级别的日志(debug,info)将被拒绝,等于或者高于ERROR的级别将相应NEUTRAL -->
|
||||
</filter>
|
||||
<!--有两个与RollingFileAppender交互的重要子组件。 第一个RollingFileAppender子组件,即RollingPolicy:负责执行翻转所需的操作。
|
||||
RollingFileAppender的第二个子组件,即TriggeringPolicy:将确定是否以及何时发生翻转。 因此,RollingPolicy负责什么和TriggeringPolicy负责什么时候.
|
||||
作为任何用途,RollingFileAppender必须同时设置RollingPolicy和TriggeringPolicy,但是,如果其RollingPolicy也实现了TriggeringPolicy接口,则只需要显式指定前者。-->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||
<!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
|
||||
<!-- 文件名:logs/project_error.2017-12-05.0.log -->
|
||||
<!-- 注意:SizeAndTimeBasedRollingPolicy中 %i和%d令牌都是强制性的,必须存在,要不会报错 -->
|
||||
<fileNamePattern>logs/project_error.%d.%i.log</fileNamePattern>
|
||||
<!-- 每产生一个日志文件,该日志文件的保存期限为30天, ps:maxHistory的单位是根据fileNamePattern中的翻转策略自动推算出来的,例如上面选用了yyyy-MM-dd,则单位为天
|
||||
如果上面选用了yyyy-MM,则单位为月,另外上面的单位默认为yyyy-MM-dd-->
|
||||
<maxHistory>30</maxHistory>
|
||||
<!-- 每个日志文件到10mb的时候开始切分,最多保留30天,但最大到20GB,哪怕没到30天也要删除多余的日志 -->
|
||||
<totalSizeCap>20GB</totalSizeCap>
|
||||
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,测试时可改成5KB看效果 -->
|
||||
<maxFileSize>10MB</maxFileSize>
|
||||
</rollingPolicy>
|
||||
<!--编码器-->
|
||||
<encoder>
|
||||
<!-- pattern节点,用来设置日志的输入格式 ps:日志文件中没有设置颜色,否则颜色部分会有ESC[0:39em等乱码-->
|
||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%15.15(%thread)] %-40.40(%logger{40}) : %msg%n</pattern>
|
||||
<!-- 记录日志的编码:此处设置字符集 - -->
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!--给定记录器的每个启用的日志记录请求都将转发到该记录器中的所有appender以及层次结构中较高的appender(不用在意level值)。
|
||||
换句话说,appender是从记录器层次结构中附加地继承的。
|
||||
例如,如果将控制台appender添加到根记录器,则所有启用的日志记录请求将至少在控制台上打印。
|
||||
如果另外将文件追加器添加到记录器(例如L),则对L和L'子项启用的记录请求将打印在文件和控制台上。
|
||||
通过将记录器的additivity标志设置为false,可以覆盖此默认行为,以便不再添加appender累积-->
|
||||
<!-- configuration中最多允许一个root,别的logger如果没有设置级别则从父级别root继承 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
</root>
|
||||
|
||||
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
|
||||
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
|
||||
<logger name="com.ycwl.basic" level="INFO">
|
||||
<appender-ref ref="info_log" />
|
||||
<appender-ref ref="error_log" />
|
||||
</logger>
|
||||
|
||||
<!-- 利用logback输入mybatis的sql日志,
|
||||
注意:如果不加 additivity="false" 则此logger会将输出转发到自身以及祖先的logger中,就会出现日志文件中sql重复打印-->
|
||||
<logger name="com.ycwl.basic.mapper" level="DEBUG" additivity="false">
|
||||
<appender-ref ref="info_log" />
|
||||
<appender-ref ref="error_log" />
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
|
||||
<!-- additivity=false代表禁止默认累计的行为,即com.atomikos中的日志只会记录到日志文件中,不会输出层次级别更高的任何appender-->
|
||||
<logger name="com.ycwl.basic" level="INFO" additivity="false">
|
||||
<appender-ref ref="info_log" />
|
||||
<appender-ref ref="error_log" />
|
||||
<appender-ref ref="STDOUT" />
|
||||
</logger>
|
||||
|
||||
</configuration>
|
103
src/main/resources/mapper/pc/AdminUserMapper.xml
Normal file
103
src/main/resources/mapper/pc/AdminUserMapper.xml
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ycwl.basic.mapper.pc.AdminUserMapper">
|
||||
<insert id="add" parameterType="com.ycwl.basic.model.pc.adminUser.req.AddOrUpdateAdminUserReqVO">
|
||||
insert into admin_user(`id`,
|
||||
`role_id`,
|
||||
`staff_id`,
|
||||
`account`,
|
||||
`password`)
|
||||
values (#{id},
|
||||
#{roleId},
|
||||
#{staffId},
|
||||
#{account},
|
||||
#{password})
|
||||
</insert>
|
||||
<update id="delete">
|
||||
update
|
||||
admin_user
|
||||
set is_remove=1
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="resetPassword" parameterType="com.ycwl.basic.model.pc.adminUser.req.ResetPasswordReqVO">
|
||||
update
|
||||
admin_user
|
||||
set password=#{password}
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="update" parameterType="com.ycwl.basic.model.pc.adminUser.req.AddOrUpdateAdminUserReqVO">
|
||||
update admin_user
|
||||
set `role_id` =#{roleId},
|
||||
`staff_id` =#{staffId}
|
||||
where id = #{id}
|
||||
</update>
|
||||
<update id="updatePassword">
|
||||
update
|
||||
admin_user
|
||||
set password=#{newPwd}
|
||||
where staff_id = #{id}
|
||||
and is_remove = 0
|
||||
</update>
|
||||
|
||||
<select id="list" parameterType="com.ycwl.basic.model.pc.adminUser.req.AdminUserListReqVO"
|
||||
resultType="com.ycwl.basic.model.pc.adminUser.resp.AdminUserListRespVO">
|
||||
select
|
||||
s.id as staffId,
|
||||
au.id,
|
||||
s.phone,
|
||||
s.name as staffName,
|
||||
s.job_no,
|
||||
c.name as companyName,
|
||||
s.company_id,
|
||||
r.id as roleId,
|
||||
r.name as roleName
|
||||
from admin_user au,
|
||||
staff s,
|
||||
company c,
|
||||
role r
|
||||
where au.staff_id = s.id
|
||||
and au.is_remove=0
|
||||
and au.role_id = r.id
|
||||
and s.company_id = c.id
|
||||
and s.is_remove=0
|
||||
<if test="name!=null and name!=''">
|
||||
and
|
||||
locate(#{name},s.`name`) > 0
|
||||
</if>
|
||||
<if test="phone!=null and phone!=''">
|
||||
and
|
||||
locate(#{phone},s.`phone`) > 0
|
||||
</if>
|
||||
<if test="jobNo!=null and jobNo!=''">
|
||||
and
|
||||
locate(#{jobNo},s.`job_no`) > 0
|
||||
</if>
|
||||
<if test="roleId!=null and roleId!=''">
|
||||
and
|
||||
r.id=#{roleId}
|
||||
</if>
|
||||
<if test="companyId!=null and companyId!=''">
|
||||
and
|
||||
s.company_id=#{companyId}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="login" resultType="com.ycwl.basic.model.pc.adminUser.entity.LoginEntity">
|
||||
select
|
||||
au.account,
|
||||
au.password,
|
||||
au.role_id
|
||||
from admin_user au
|
||||
where account = #{account}
|
||||
and au.is_remove = 0
|
||||
</select>
|
||||
|
||||
<select id="getPasswordByAccount" resultType="java.lang.String">
|
||||
select `password`
|
||||
from admin_user
|
||||
where staff_id = #{id}
|
||||
and is_remove = 0
|
||||
</select>
|
||||
</mapper>
|
31
src/main/resources/mapper/pc/MenuMapper.xml
Normal file
31
src/main/resources/mapper/pc/MenuMapper.xml
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ycwl.basic.mapper.pc.MenuMapper">
|
||||
<insert id="addRoleMenu">
|
||||
insert into role_menu(`role_id`, `menu_id`)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(#{id},#{item})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<delete id="delete">
|
||||
delete
|
||||
from role_menu
|
||||
where role_id = #{id}
|
||||
</delete>
|
||||
|
||||
<select id="getListByType" resultType="com.ycwl.basic.model.pc.menu.MenuNode">
|
||||
select id,
|
||||
parent_id,
|
||||
target,
|
||||
`name`,
|
||||
`type`,
|
||||
sort
|
||||
from menu
|
||||
where is_remove = 0
|
||||
and business_type = #{type}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
80
src/main/resources/mapper/pc/RoleMapper.xml
Normal file
80
src/main/resources/mapper/pc/RoleMapper.xml
Normal file
@ -0,0 +1,80 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.ycwl.basic.mapper.pc.RoleMapper">
|
||||
<insert id="add" parameterType="com.ycwl.basic.model.pc.role.req.AddOrUpdateRoleReqVO">
|
||||
insert into role(`id`, `name`, `type`)
|
||||
values (#{id}, #{name}, #{type})
|
||||
</insert>
|
||||
|
||||
<update id="delete">
|
||||
update
|
||||
role
|
||||
set is_remove=1
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<update id="update" parameterType="com.ycwl.basic.model.pc.role.req.AddOrUpdateRoleReqVO">
|
||||
update
|
||||
role
|
||||
set `name`=#{name}
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="list" resultType="com.ycwl.basic.model.pc.role.resp.RoleListRespVO">
|
||||
select
|
||||
`id`,
|
||||
`name`,
|
||||
`status`,
|
||||
create_time
|
||||
from
|
||||
role
|
||||
where
|
||||
is_remove=0
|
||||
and
|
||||
`type`=#{type}
|
||||
<if test="name!=null and name!=''">
|
||||
and
|
||||
locate(#{name},`name`) > 0
|
||||
</if>
|
||||
</select>
|
||||
<select id="getMenuById" resultType="com.ycwl.basic.model.pc.menu.MenuNode">
|
||||
select m.`id`,
|
||||
m.`parent_id`,
|
||||
m.`target`,
|
||||
m.`name`,
|
||||
m.`type`,
|
||||
m.`sort`
|
||||
from menu m,
|
||||
role_menu rm
|
||||
where is_remove = 0
|
||||
and business_type = 0
|
||||
and rm.menu_id = m.id
|
||||
and rm.role_id = #{id}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="getRoleStatus" resultType="java.lang.Integer">
|
||||
select
|
||||
`status`
|
||||
from
|
||||
role
|
||||
where
|
||||
id = #{id}
|
||||
</select>
|
||||
|
||||
|
||||
<update id="updateStatus">
|
||||
update
|
||||
role
|
||||
set status =
|
||||
(CASE
|
||||
status
|
||||
WHEN 1 THEN
|
||||
0
|
||||
WHEN 0 THEN
|
||||
1
|
||||
ELSE null
|
||||
END)
|
||||
where id = #{id}
|
||||
</update>
|
||||
</mapper>
|
Reference in New Issue
Block a user