Merge pull request '宋文倩代码' (#2) from develop into master
commit
160edcabab
@ -0,0 +1,51 @@
|
||||
package com.config;
|
||||
|
||||
import com.domain.user;
|
||||
import com.service.userService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@Service
|
||||
public class UserService implements UserDetailsService {
|
||||
@Autowired
|
||||
public com.service.userService userService;
|
||||
@Autowired(required = false)
|
||||
private PasswordEncoder passwordEncoder;
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
// 根据用户查询用户信息
|
||||
//User user = userMapper.findByUsername(username); //查询数据库
|
||||
// user user = new user(1, username, "123456", 1);//注意:这里我就是用来测试的,实际应该从数据库中获取
|
||||
user user=userService.selectByUserName(username);
|
||||
if (user != null) {
|
||||
// 根据用户查询用户对应权限
|
||||
Collection<GrantedAuthority> authorities = new ArrayList<>();
|
||||
/* //查询登录用户所拥有的角色
|
||||
List<Role> list = RoleMapper.findByUserId(userId);
|
||||
for (Role role : list) {
|
||||
GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_"+role.getRoleName());
|
||||
authorities.add(authority);
|
||||
}
|
||||
*/
|
||||
//创建一个授权对象
|
||||
GrantedAuthority authority = new SimpleGrantedAuthority("ROLE_ADMIN"); //注意:这里我就是用来测试的,实际应该从数据库中获取
|
||||
authorities.add(authority);
|
||||
return new org.springframework.security.core.userdetails.User(
|
||||
user.getUsername(),
|
||||
// 因为数据库是明文,所以这里需加密密码
|
||||
passwordEncoder.encode(user.getPassword()),
|
||||
authorities);
|
||||
}
|
||||
return null;
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
package com.config;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.AuthenticationException;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
|
||||
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
@Configuration
|
||||
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
@Bean
|
||||
public UserDetailsService getUserService() {
|
||||
return new UserService();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
|
||||
auth.userDetailsService(getUserService()).passwordEncoder(passwordEncoder());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(HttpSecurity http) throws Exception {
|
||||
http.authorizeRequests()
|
||||
.antMatchers( "/pages/login.html","/img/*","/plugins/**","/css/*","/js/*","/dist/**","/pages/regist.html","/user/Save").permitAll()// 无需认证
|
||||
.anyRequest().authenticated() // 所有请求都需要验证
|
||||
.and()
|
||||
.headers().frameOptions().disable()
|
||||
.and()
|
||||
.formLogin() // 使用默认的登录页面
|
||||
.loginPage("/pages/login.html")// 指定指定要的登录页面
|
||||
.loginProcessingUrl("/login")// 处理认证路径的请求
|
||||
//认证成功后的跳转页面 默认是get方式提交 自定义成功页面post方式提交
|
||||
//在 controller中处理时要注意
|
||||
// .defaultSuccessUrl("/pages/main.html")
|
||||
// .failureForwardUrl("/pages/error.html")
|
||||
.successHandler(new SimpleUrlAuthenticationSuccessHandler() {
|
||||
@Override
|
||||
public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
|
||||
httpServletResponse.setContentType("application/json;charset=utf-8");
|
||||
ServletOutputStream out = httpServletResponse.getOutputStream();
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.writeValue(out, "登录成功");
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
}).failureHandler(new SimpleUrlAuthenticationFailureHandler() {
|
||||
@Override
|
||||
public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
|
||||
httpServletResponse.setContentType("application/json;charset=utf-8");
|
||||
ServletOutputStream out = httpServletResponse.getOutputStream();
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper.writeValue(out, "登录失败");
|
||||
out.flush();
|
||||
out.close();
|
||||
}
|
||||
})
|
||||
.and()
|
||||
//开启cookie保存用户数据
|
||||
// .rememberMe()
|
||||
//设置cookie有效期
|
||||
// .tokenValiditySeconds(60 * 60 * 24 * 7) //有效期一周
|
||||
//设置cookie的私钥
|
||||
// .key("")
|
||||
// .and()
|
||||
.logout()
|
||||
.logoutUrl("/logout")
|
||||
.logoutSuccessUrl("/pages/login.html")
|
||||
// .invalidateHttpSession(true)
|
||||
.and()
|
||||
// .headers().frameOptions().disable().and()
|
||||
.csrf().disable() //关闭跨域保护
|
||||
.sessionManagement()
|
||||
.maximumSessions(1);// 同一用户 只允许一个在线 自动踢出在线用户
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,195 @@
|
||||
.bg-primary {
|
||||
background-color: #3F52E3 !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: #3F52E3 !important;
|
||||
}
|
||||
a {
|
||||
color: #3F52E3;
|
||||
}
|
||||
a:hover {
|
||||
color: #2d3db8;
|
||||
}
|
||||
.btn-primary {
|
||||
background-color: #3F52E3;
|
||||
border-color: transparent !important;
|
||||
}
|
||||
.btn-primary:focus,
|
||||
.btn-primary:focus:active,
|
||||
.btn-primary:active,
|
||||
.btn-primary:hover {
|
||||
background-color: #2d3db8 !important;
|
||||
}
|
||||
.btn-primary.disabled, .btn-primary:disabled {
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.btn-outline-primary {
|
||||
color: #3F52E3;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
|
||||
color: #3F52E3;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active,
|
||||
.show > .btn-outline-primary.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.btn-link {
|
||||
font-weight: 400;
|
||||
color: #3F52E3;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-link:hover {
|
||||
color: #2d3db8;
|
||||
}
|
||||
.dropdown-item.active, .dropdown-item:active {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.custom-radio .custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.nav-pills .nav-link.active,
|
||||
.nav-pills .show > .nav-link {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.page-link {
|
||||
color: #3F52E3;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ededed;
|
||||
}
|
||||
.page-item.active .page-link {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.page-link:focus, .page-link:hover {
|
||||
color: #2d3db8;
|
||||
}
|
||||
|
||||
.badge-primary {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.progress-bar {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.list-group-item.active {
|
||||
color: #fff;
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.bg-primary {
|
||||
background-color: #3F52E3 !important;
|
||||
}
|
||||
.border-primary {
|
||||
border-color: #3F52E3 !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: #3F52E3 !important;
|
||||
}
|
||||
|
||||
.navbar.active {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.navbar-bg {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.form-control:focus {
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li.active a {
|
||||
background-color: #f9f9f9;
|
||||
color: #3F52E3;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li a:hover {
|
||||
color: #3F52E3;
|
||||
}
|
||||
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li.active a {
|
||||
color: #3F52E3;
|
||||
}
|
||||
.alert.alert-primary {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.card.card-primary {
|
||||
border-top: 2px solid #3F52E3;
|
||||
}
|
||||
.fc button.fc-state-active {
|
||||
background-color: #3F52E3;
|
||||
color: #fff;
|
||||
}
|
||||
.jqvmap-circle {
|
||||
background-color: #3F52E3;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
.weather ul li {
|
||||
border: 2px solid #3F52E3;
|
||||
color: #3F52E3;
|
||||
}
|
||||
.card-chat .chat-content .chat-item.chat-right .chat-details .chat-text {
|
||||
background-color: #3F52E3;
|
||||
color: #fff;
|
||||
}
|
||||
.nav-tabs .nav-item .nav-link {
|
||||
color: #3F52E3;
|
||||
}
|
||||
.nav-pills .nav-item .nav-link {
|
||||
color: #3F52E3;
|
||||
}
|
||||
.swal-button.swal-button--confirm {
|
||||
background-color: #3F52E3;
|
||||
}
|
||||
.page-item .page-link {
|
||||
color: #3F52E3;
|
||||
}
|
||||
.page-item.active .page-link {
|
||||
background-color: #3F52E3;
|
||||
border-color: #3F52E3;
|
||||
}
|
||||
.btn-group .btn.active {
|
||||
background-color: #3F52E3;
|
||||
color: #fff;
|
||||
}
|
||||
.media .media-right {
|
||||
color: #3F52E3;
|
||||
}
|
||||
.selectric-items li.selected,
|
||||
.selectric-items li.highlighted {
|
||||
background-color: #3F52E3;
|
||||
color: #fff;
|
||||
}
|
||||
.dropzone {
|
||||
border: 2px dashed #3F52E3;
|
||||
}
|
||||
.accordion .accordion-header[aria-expanded="true"] {
|
||||
background-color: #3F52E3;
|
||||
color: #fff;
|
||||
}
|
||||
.bootstrap-tagsinput .tag {
|
||||
background-color: #3F52E3;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package com.config;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
|
||||
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration
|
||||
public class myConfig {
|
||||
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor()
|
||||
{
|
||||
MybatisPlusInterceptor mybatisPlusInterceptor=new MybatisPlusInterceptor();
|
||||
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
|
||||
return mybatisPlusInterceptor;
|
||||
}
|
||||
}
|
@ -0,0 +1,319 @@
|
||||
.ordersetting .el-input__inner {
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
.ordersetting {
|
||||
background: #f5f5f5;
|
||||
box-shadow: none;
|
||||
border-top: none;
|
||||
}
|
||||
.gotoday {
|
||||
border: 1px solid #d5d9df
|
||||
}
|
||||
.calendar p {
|
||||
margin: 0;
|
||||
}
|
||||
.filebtn {
|
||||
padding: 9px 20px;
|
||||
border: none;
|
||||
font-size: 18px;
|
||||
background: #0ebffc;
|
||||
}
|
||||
.month {
|
||||
width: 100%;
|
||||
line-height: 3;
|
||||
/* background: #00B8EC; */
|
||||
}
|
||||
|
||||
.month ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.year-month {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: space-around;
|
||||
}
|
||||
|
||||
.year-month:hover {
|
||||
background: rgba(150, 2, 12, 0.1);
|
||||
}
|
||||
|
||||
.choose-year {
|
||||
padding-left: 20px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.choose-month {
|
||||
text-align: center;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.arrow:hover {
|
||||
background: rgba(100, 2, 12, 0.1);
|
||||
}
|
||||
|
||||
.month ul li {
|
||||
color: white;
|
||||
font-size: 20px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 3px;
|
||||
}
|
||||
.caldate {
|
||||
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.1), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
|
||||
}
|
||||
.weekdays {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
color: #333;
|
||||
justify-content: space-around;
|
||||
border-bottom: 1px solid #ededed;
|
||||
border-top: 2px solid #0ebffc;
|
||||
}
|
||||
|
||||
.weekdays li {
|
||||
display: inline-block;
|
||||
width: 14%;
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
border-right: 1px solid #f1efef;
|
||||
color: #000;
|
||||
font-size: 20px;
|
||||
|
||||
}
|
||||
|
||||
.days {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-around;
|
||||
|
||||
}
|
||||
|
||||
.days li {
|
||||
height: 160px;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
width: 14%;
|
||||
text-align: right;
|
||||
font-size: 1rem;
|
||||
color: #000;
|
||||
list-style-type: none;
|
||||
display: inline-block;
|
||||
width: 14.2%;
|
||||
font-size: 1rem;
|
||||
color: #000;
|
||||
border-bottom: 1px solid #fff;
|
||||
}
|
||||
.everyday {
|
||||
height: 160px;
|
||||
border-bottom: 1px solid #f1efefef;
|
||||
position: relative;
|
||||
background: #fff;
|
||||
}
|
||||
.everyday .datenumber {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
}
|
||||
.everyday .usual {
|
||||
height: 100%;
|
||||
background: #1ed7fc;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.everyday .fulled {
|
||||
height: 100%;
|
||||
background: #ff9c9d;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
font-size: 20px;
|
||||
}
|
||||
.everyday .nochoose {
|
||||
height: 100%;
|
||||
background: #effbff;
|
||||
}
|
||||
.everyday .orderbtn {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
cursor: pointer;
|
||||
border: none;
|
||||
background: #d6ffff;
|
||||
padding: 3px 10px;
|
||||
color: #0ebffc;
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
}
|
||||
.days li .active {
|
||||
padding: 6px 10px;
|
||||
border-radius: 50%;
|
||||
background: #00B8EC;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.days li .other-month {
|
||||
padding: 10px;
|
||||
height: 140px;
|
||||
color: gainsboro;
|
||||
background: #f9f9f9;
|
||||
}
|
||||
|
||||
/* .singlebtn {
|
||||
font-size: 18px;
|
||||
}
|
||||
.mutiplebtn {
|
||||
font-size: 18px;
|
||||
} */
|
||||
|
||||
|
||||
|
||||
.filebox {
|
||||
position: relative;
|
||||
}
|
||||
.el-card__body {
|
||||
position: relative;
|
||||
}
|
||||
.el-upload--text {
|
||||
position: absolute;
|
||||
left: 22%;
|
||||
top: 14px;
|
||||
}
|
||||
.el-upload--text .el-button {
|
||||
background: #0ebffc;
|
||||
border: none
|
||||
}
|
||||
|
||||
.el-upload-list {
|
||||
width: 20%;
|
||||
}
|
||||
.filebtns {
|
||||
position: relative
|
||||
}
|
||||
.multifile {
|
||||
width: 100%;
|
||||
}
|
||||
.mutibtn {
|
||||
position: absolute;
|
||||
left: 12%;
|
||||
top: 0;
|
||||
}
|
||||
.uploadfile{
|
||||
padding: 4px 10px;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
position: relative;
|
||||
border: 1px solid #999;
|
||||
text-decoration: none;
|
||||
color: #666;
|
||||
}
|
||||
.change{
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
right: 0;
|
||||
top: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
.singleuploaded {
|
||||
|
||||
}
|
||||
.mutiuploaded {
|
||||
left: 31.5%;
|
||||
}
|
||||
.outputloaded {
|
||||
left: 43%;
|
||||
}
|
||||
.inputfile-text {
|
||||
height: 33px;
|
||||
width: 233px;
|
||||
display: inline-block;
|
||||
border: 1px solid #ccc;
|
||||
line-height: 36px;
|
||||
border-radius: 7px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.inputfile-text span {
|
||||
padding-left: 11px;
|
||||
color: #aba7a7;
|
||||
}
|
||||
|
||||
.days li .current-month .full {
|
||||
background: #ff8a8a;
|
||||
text-align: center;
|
||||
line-height: 100px;
|
||||
color: #fff;
|
||||
|
||||
}
|
||||
|
||||
.days li .current-month .full .full-text {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.clearfix {clear: both}
|
||||
.month .currentdate { float: left}
|
||||
.month .choose {
|
||||
float: right;
|
||||
line-height: 57px;
|
||||
padding-right: 30px;
|
||||
color: #676767
|
||||
}
|
||||
.month .choose span {
|
||||
background: #fff;
|
||||
padding: 5px 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* upload */
|
||||
.file {
|
||||
display: flex;
|
||||
width: 60px;
|
||||
height: 33px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #ccc;
|
||||
width: 20%;
|
||||
margin-top: -4px;
|
||||
border-radius: 7px;
|
||||
position: relative;
|
||||
}
|
||||
.file .defaulttext {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
left: 10px;
|
||||
color: #bdbdbd;
|
||||
}
|
||||
.file input {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
position: relative;
|
||||
top: -10px;
|
||||
font-size: 0;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
.el-card__body #span {
|
||||
font-size: 14px;
|
||||
padding-left: 20px;
|
||||
color: #555;
|
||||
margin-top: 10px;
|
||||
display: block;
|
||||
width: 20%;
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
package com.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@TableName("user")
|
||||
public class user {
|
||||
@TableId(type= IdType.AUTO)
|
||||
private int id;
|
||||
@TableField("username")
|
||||
private String username;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword(String password) {
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@TableField("password")
|
||||
private String password;
|
||||
|
||||
|
||||
|
||||
@TableField("type")
|
||||
private int type;
|
||||
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
.navbar.active {
|
||||
background-color: #fff;
|
||||
}
|
||||
.navbar-bg {
|
||||
background-color: #fff;
|
||||
}
|
||||
.navbar .nav-link {
|
||||
color: #2C2E3E;
|
||||
}
|
||||
.navbar .nav-link:hover {
|
||||
color: #3f4257;
|
||||
}
|
||||
.navbar .form-inline .form-control {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.navbar .form-inline .btn {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.main-sidebar {
|
||||
background-color: #212330;
|
||||
}
|
||||
.main-sidebar .sidebar-brand {
|
||||
background-color: #1f202e;
|
||||
}
|
||||
.main-sidebar .sidebar-brand a {
|
||||
color: #fff;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li.active a {
|
||||
background-color: #1f202e;
|
||||
color: #fff;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li a {
|
||||
color: #868e96;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li.active a {
|
||||
color: #fff;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li a:hover {
|
||||
background-color: #1f202e;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li.menu-header {
|
||||
color: #3f4257;
|
||||
}
|
||||
.main-sidebar .sidebar-user .sidebar-user-details .user-name {
|
||||
color: #ededed;
|
||||
}
|
@ -0,0 +1,195 @@
|
||||
.bg-primary {
|
||||
background-color: #39065A !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: #39065A !important;
|
||||
}
|
||||
a {
|
||||
color: #39065A;
|
||||
}
|
||||
a:hover {
|
||||
color: #c9253d;
|
||||
}
|
||||
.btn-primary {
|
||||
background-color: #39065A;
|
||||
border-color: transparent !important;
|
||||
}
|
||||
.btn-primary:focus,
|
||||
.btn-primary:focus:active,
|
||||
.btn-primary:active,
|
||||
.btn-primary:hover {
|
||||
background-color: #c9253d !important;
|
||||
}
|
||||
.btn-primary.disabled, .btn-primary:disabled {
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.btn-outline-primary {
|
||||
color: #39065A;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border-color: #39065A;
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.btn-outline-primary.disabled, .btn-outline-primary:disabled {
|
||||
color: #39065A;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-outline-primary:not([disabled]):not(.disabled):active, .btn-outline-primary:not([disabled]):not(.disabled).active,
|
||||
.show > .btn-outline-primary.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.btn-link {
|
||||
font-weight: 400;
|
||||
color: #39065A;
|
||||
background-color: transparent;
|
||||
}
|
||||
.btn-link:hover {
|
||||
color: #c9253d;
|
||||
}
|
||||
.dropdown-item.active, .dropdown-item:active {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
}
|
||||
.custom-control-input:checked ~ .custom-control-label::before {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
}
|
||||
.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.custom-radio .custom-control-input:checked ~ .custom-control-label::before {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.nav-pills .nav-link.active,
|
||||
.nav-pills .show > .nav-link {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
}
|
||||
.page-link {
|
||||
color: #39065A;
|
||||
background-color: #fff;
|
||||
border: 1px solid #ededed;
|
||||
}
|
||||
.page-item.active .page-link {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.page-link:focus, .page-link:hover {
|
||||
color: #c9253d;
|
||||
}
|
||||
|
||||
.badge-primary {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
}
|
||||
.progress-bar {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
}
|
||||
.list-group-item.active {
|
||||
color: #fff;
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.bg-primary {
|
||||
background-color: #39065A !important;
|
||||
}
|
||||
.border-primary {
|
||||
border-color: #39065A !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: #39065A !important;
|
||||
}
|
||||
|
||||
.navbar.active {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.navbar-bg {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.form-control:focus {
|
||||
border-color: #39065A;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li.active a {
|
||||
background-color: #f9f9f9;
|
||||
color: #39065A;
|
||||
}
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li a:hover {
|
||||
color: #39065A;
|
||||
}
|
||||
|
||||
.main-sidebar .sidebar-menu li ul.menu-dropdown li.active a {
|
||||
color: #39065A;
|
||||
}
|
||||
.alert.alert-primary {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.card.card-primary {
|
||||
border-top: 2px solid #39065A;
|
||||
}
|
||||
.fc button.fc-state-active {
|
||||
background-color: #39065A;
|
||||
color: #fff;
|
||||
}
|
||||
.jqvmap-circle {
|
||||
background-color: #39065A;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
.weather ul li {
|
||||
border: 2px solid #39065A;
|
||||
color: #39065A;
|
||||
}
|
||||
.card-chat .chat-content .chat-item.chat-right .chat-details .chat-text {
|
||||
background-color: #39065A;
|
||||
color: #fff;
|
||||
}
|
||||
.nav-tabs .nav-item .nav-link {
|
||||
color: #39065A;
|
||||
}
|
||||
.nav-pills .nav-item .nav-link {
|
||||
color: #39065A;
|
||||
}
|
||||
.swal-button.swal-button--confirm {
|
||||
background-color: #39065A;
|
||||
}
|
||||
.page-item .page-link {
|
||||
color: #39065A;
|
||||
}
|
||||
.page-item.active .page-link {
|
||||
background-color: #39065A;
|
||||
border-color: #39065A;
|
||||
}
|
||||
.btn-group .btn.active {
|
||||
background-color: #39065A;
|
||||
color: #fff;
|
||||
}
|
||||
.media .media-right {
|
||||
color: #39065A;
|
||||
}
|
||||
.selectric-items li.selected,
|
||||
.selectric-items li.highlighted {
|
||||
background-color: #39065A;
|
||||
color: #fff;
|
||||
}
|
||||
.dropzone {
|
||||
border: 2px dashed #39065A;
|
||||
}
|
||||
.accordion .accordion-header[aria-expanded="true"] {
|
||||
background-color: #39065A;
|
||||
color: #fff;
|
||||
}
|
||||
.bootstrap-tagsinput .tag {
|
||||
background-color: #39065A;
|
||||
}
|
@ -0,0 +1,96 @@
|
||||
.demo-settings {
|
||||
position: fixed;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
z-index: 2002;
|
||||
}
|
||||
.demo-settings .demo-settings-toggle {
|
||||
transition: all .5s;
|
||||
-webkit-transition: all .5s;
|
||||
-o-transition: all .5s;
|
||||
-moz-transition: all .5s;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
-moz-border-radius: 50%;
|
||||
-ms-border-radius: 50%;
|
||||
-o-border-radius: 50%;
|
||||
background-color: #F73F52;
|
||||
color: #fff;
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, .2);
|
||||
text-align: center;
|
||||
line-height: 60px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.demo-settings .demo-settings-toggle i {
|
||||
font-size: 24px;
|
||||
}
|
||||
.demo-settings .demo-settings-options {
|
||||
transition: all .5s;
|
||||
-webkit-transition: all .5s;
|
||||
-o-transition: all .5s;
|
||||
-moz-transition: all .5s;
|
||||
transition-delay: .3s;
|
||||
-webkit-transition-delay: .3s;
|
||||
-o-transition-delay: .3s;
|
||||
-moz-transition-delay: .3s;
|
||||
z-index: -1;
|
||||
position: absolute;
|
||||
left: -170px;
|
||||
top: 0;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 0 40px rgba(0, 0, 0, 0.05);
|
||||
border-radius: 30px;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
}
|
||||
.demo-settings .demo-settings-options ul {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.demo-settings .demo-settings-options ul li {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: #000;
|
||||
margin-right: 10px;
|
||||
margin-top: 15px;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
opacity: 0;
|
||||
transition: all .5s;
|
||||
-webkit-transition: all .5s;
|
||||
-o-transition: all .5s;
|
||||
-moz-transition: all .5s;
|
||||
}
|
||||
.demo-settings .demo-settings-options ul li:hover {
|
||||
opacity: .8;
|
||||
}
|
||||
.demo-settings.active .demo-settings-toggle {
|
||||
margin: 5px;
|
||||
box-shadow: none;
|
||||
line-height: 50px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.demo-settings.active .demo-settings-options {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
width: 220px;
|
||||
}
|
||||
.demo-settings.active .demo-settings-options ul li {
|
||||
opacity: 1;
|
||||
transition-delay: .3s;
|
||||
-webkit-transition-delay: .3s;
|
||||
-moz-transition-delay: .3s;
|
||||
-o-transition-delay: .3s;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=demo.css.map */
|
@ -0,0 +1,142 @@
|
||||
package com.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
@TableName("ut")
|
||||
public class ut {
|
||||
@TableId(type= IdType.AUTO)
|
||||
private int id;
|
||||
@TableField("userId")
|
||||
private int userId;
|
||||
|
||||
public int getUserId() {
|
||||
return userId;
|
||||
}
|
||||
|
||||
public void setUserId(int userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getDa() {
|
||||
return da;
|
||||
}
|
||||
|
||||
public void setDa(String da) {
|
||||
this.da = da;
|
||||
}
|
||||
|
||||
@TableField("xuhao")
|
||||
private int xuhao;
|
||||
@TableField("them")
|
||||
private String them;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getXuhao() {
|
||||
return xuhao;
|
||||
}
|
||||
|
||||
public void setXuhao(int xuhao) {
|
||||
this.xuhao = xuhao;
|
||||
}
|
||||
|
||||
public String getThem() {
|
||||
return them;
|
||||
}
|
||||
|
||||
public void setThem(String them) {
|
||||
this.them = them;
|
||||
}
|
||||
|
||||
public String getOne() {
|
||||
return one;
|
||||
}
|
||||
|
||||
public void setOne(String one) {
|
||||
this.one = one;
|
||||
}
|
||||
|
||||
public String getTwo() {
|
||||
return two;
|
||||
}
|
||||
|
||||
public void setTwo(String two) {
|
||||
this.two = two;
|
||||
}
|
||||
|
||||
public String getThree() {
|
||||
return three;
|
||||
}
|
||||
|
||||
public void setThree(String three) {
|
||||
this.three = three;
|
||||
}
|
||||
|
||||
public String getFour() {
|
||||
return four;
|
||||
}
|
||||
|
||||
public void setFour(String four) {
|
||||
this.four = four;
|
||||
}
|
||||
|
||||
public String getOk() {
|
||||
return ok;
|
||||
}
|
||||
|
||||
public void setOk(String ok) {
|
||||
this.ok = ok;
|
||||
}
|
||||
|
||||
@TableField("one")
|
||||
private String one;
|
||||
@TableField("two")
|
||||
private String two;
|
||||
|
||||
public double getFen() {
|
||||
return fen;
|
||||
}
|
||||
|
||||
public void setFen(double fen) {
|
||||
this.fen = fen;
|
||||
}
|
||||
|
||||
@TableField("three")
|
||||
private String three;
|
||||
|
||||
|
||||
@TableField("four")
|
||||
private String four;
|
||||
|
||||
|
||||
|
||||
@TableField("ok")
|
||||
private String ok;
|
||||
|
||||
public int getMokuaiId() {
|
||||
return mokuaiId;
|
||||
}
|
||||
|
||||
public void setMokuaiId(int mokuaiId) {
|
||||
this.mokuaiId = mokuaiId;
|
||||
}
|
||||
|
||||
@TableField("da")
|
||||
private String da;
|
||||
@TableField("fen")
|
||||
private double fen;
|
||||
|
||||
|
||||
@TableField("mokuaiId")
|
||||
private int mokuaiId;
|
||||
|
||||
}
|
Loading…
Reference in new issue