新增properties模块

This commit is contained in:
wanggeng888 2021-04-09 20:19:31 +08:00
parent 57e7d5aea7
commit 4d83f49ca6
34 changed files with 193 additions and 84 deletions

28
basic-properties/pom.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>wg-basic</artifactId>
<groupId>ink.wgink</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>basic-properties</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<!-- springboot start -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<scope>compile</scope>
</dependency>
<!-- springboot end -->
</dependencies>
</project>

View File

@ -1,4 +1,4 @@
package ink.wgink.common.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -1,4 +1,4 @@
package ink.wgink.login.base.config; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
**/ **/
@Component @Component
@ConfigurationProperties(prefix = "spring") @ConfigurationProperties(prefix = "spring")
public class BaseConfig { public class BaseProperties {
private String loginUrl; private String loginUrl;
private String loginFailure; private String loginFailure;

View File

@ -1,4 +1,4 @@
package ink.wgink.common.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -15,7 +15,7 @@ import org.springframework.stereotype.Component;
**/ **/
@Component @Component
@ConfigurationProperties(prefix = "server") @ConfigurationProperties(prefix = "server")
public class ServerProperties { public class ClientServerProperties {
private Integer port; private Integer port;
private String url; private String url;

View File

@ -1,4 +1,4 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started

View File

@ -1,4 +1,4 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started

View File

@ -1,4 +1,4 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started

View File

@ -1,4 +1,7 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
import ink.wgink.properties.FileMediaAppMaxDurationProperties;
import ink.wgink.properties.FileMediaBackendMaxDurationProperties;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started

View File

@ -1,4 +1,6 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
import ink.wgink.properties.FileMediaBaseMaxDurationProperties;
/** /**
* When you feel like quitting. Think about why you started * When you feel like quitting. Think about why you started

View File

@ -1,4 +1,4 @@
package ink.wgink.module.file.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -1,4 +1,4 @@
package ink.wgink.login.wechat.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@ -19,7 +19,6 @@ public class MiniAppProperties {
private Boolean active; private Boolean active;
private String authorizeUrl; private String authorizeUrl;
private String bindUserUrl;
private String grantType; private String grantType;
private String appKey; private String appKey;
private String appSecret; private String appSecret;
@ -40,14 +39,6 @@ public class MiniAppProperties {
this.authorizeUrl = authorizeUrl; this.authorizeUrl = authorizeUrl;
} }
public String getBindUserUrl() {
return bindUserUrl == null ? "" : bindUserUrl;
}
public void setBindUserUrl(String bindUserUrl) {
this.bindUserUrl = bindUserUrl;
}
public String getGrantType() { public String getGrantType() {
return grantType == null ? "" : grantType; return grantType == null ? "" : grantType;
} }
@ -79,8 +70,6 @@ public class MiniAppProperties {
.append(active); .append(active);
sb.append(",\"authorizeUrl\":\"") sb.append(",\"authorizeUrl\":\"")
.append(authorizeUrl).append('\"'); .append(authorizeUrl).append('\"');
sb.append(",\"bindUserUrl\":\"")
.append(bindUserUrl).append('\"');
sb.append(",\"grantType\":\"") sb.append(",\"grantType\":\"")
.append(grantType).append('\"'); .append(grantType).append('\"');
sb.append(",\"appKey\":\"") sb.append(",\"appKey\":\"")

View File

@ -1,4 +1,4 @@
package ink.wgink.login.base.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -15,7 +15,7 @@ import org.springframework.stereotype.Component;
**/ **/
@Component @Component
@ConfigurationProperties(prefix = "server") @ConfigurationProperties(prefix = "server")
public class SystemProperties { public class ServerProperties {
/** /**
* 服务端口 * 服务端口

View File

@ -1,4 +1,4 @@
package ink.wgink.common.config.properties; package ink.wgink.properties;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;

View File

@ -13,14 +13,6 @@
<dependencies> <dependencies>
<!-- Spring start --> <!-- Spring start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency> <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId> <artifactId>spring-web</artifactId>

View File

@ -32,14 +32,11 @@
<artifactId>basic-annotation</artifactId> <artifactId>basic-annotation</artifactId>
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<!-- springboot start -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>ink.wgink</groupId>
<artifactId>spring-boot-autoconfigure</artifactId> <artifactId>basic-properties</artifactId>
<scope>compile</scope> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<!-- springboot end -->
<!-- pagerhelper start --> <!-- pagerhelper start -->
<dependency> <dependency>

View File

@ -1,7 +1,6 @@
package ink.wgink.common.config; package ink.wgink.common.config;
import ink.wgink.common.config.properties.TransactionProperties; import ink.wgink.properties.TransactionProperties;
import ink.wgink.exceptions.SaveException;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.springframework.aop.Advisor; import org.springframework.aop.Advisor;
import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.aop.aspectj.AspectJExpressionPointcut;

View File

@ -2,10 +2,10 @@ package ink.wgink.common.service.rbac.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import ink.wgink.common.config.properties.AccessControlProperties;
import ink.wgink.common.service.rbac.IRbacService; import ink.wgink.common.service.rbac.IRbacService;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.pojo.bos.RoleGrantedAuthorityBO; import ink.wgink.pojo.bos.RoleGrantedAuthorityBO;
import ink.wgink.properties.AccessControlProperties;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -77,4 +77,8 @@ public interface IUserCenterConst {
* 登录框位置 * 登录框位置
*/ */
String LOGIN_BOX_POSITION = "loginBoxPosition"; String LOGIN_BOX_POSITION = "loginBoxPosition";
/**
* 菜单模式
*/
String MENU_MODE = "menuMode";
} }

View File

@ -4,12 +4,12 @@ import ink.wgink.common.component.SecurityComponent;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.interfaces.menu.IMenuBaseService; import ink.wgink.interfaces.menu.IMenuBaseService;
import ink.wgink.interfaces.role.IRoleMenuBaseService; import ink.wgink.interfaces.role.IRoleMenuBaseService;
import ink.wgink.login.base.config.properties.SystemProperties;
import ink.wgink.login.base.consts.IUserCenterConst; import ink.wgink.login.base.consts.IUserCenterConst;
import ink.wgink.login.base.manager.ConfigManager; import ink.wgink.login.base.manager.ConfigManager;
import ink.wgink.pojo.bos.UserInfoBO; import ink.wgink.pojo.bos.UserInfoBO;
import ink.wgink.pojo.dtos.menu.MenuDTO; import ink.wgink.pojo.dtos.menu.MenuDTO;
import ink.wgink.pojo.pos.RolePO; import ink.wgink.pojo.pos.RolePO;
import ink.wgink.properties.ServerProperties;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -38,7 +38,7 @@ public class IndexRouteController {
@Autowired @Autowired
private SecurityComponent securityComponent; private SecurityComponent securityComponent;
@Autowired @Autowired
private SystemProperties systemProperties; private ServerProperties serverProperties;
@Autowired(required = false) @Autowired(required = false)
private IMenuBaseService menuBaseService; private IMenuBaseService menuBaseService;
@Autowired(required = false) @Autowired(required = false)
@ -46,8 +46,8 @@ public class IndexRouteController {
@GetMapping("index") @GetMapping("index")
public ModelAndView goIndex() { public ModelAndView goIndex() {
if (!StringUtils.isBlank(systemProperties.getDefaultIndexPage())) { if (!StringUtils.isBlank(serverProperties.getDefaultIndexPage())) {
return new ModelAndView(new RedirectView(systemProperties.getDefaultHomePage())); return new ModelAndView(new RedirectView(serverProperties.getDefaultHomePage()));
} }
return new ModelAndView("forward:/default-main"); return new ModelAndView("forward:/default-main");
} }
@ -66,12 +66,12 @@ public class IndexRouteController {
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_TITLE).toString())) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_TITLE).toString())) {
mv.addObject(IUserCenterConst.SYSTEM_TITLE, config.get(IUserCenterConst.SYSTEM_TITLE).toString()); mv.addObject(IUserCenterConst.SYSTEM_TITLE, config.get(IUserCenterConst.SYSTEM_TITLE).toString());
} else { } else {
mv.addObject(IUserCenterConst.SYSTEM_TITLE, systemProperties.getSystemTitle()); mv.addObject(IUserCenterConst.SYSTEM_TITLE, serverProperties.getSystemTitle());
} }
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString())) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString())) {
mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString()); mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString());
} else { } else {
mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, systemProperties.getSystemSubTitle()); mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, serverProperties.getSystemSubTitle());
} }
// 系统LOGO // 系统LOGO
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_LOGO)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_LOGO).toString())) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_LOGO)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_LOGO).toString())) {
@ -79,7 +79,11 @@ public class IndexRouteController {
} else { } else {
mv.addObject(IUserCenterConst.SYSTEM_LOGO, ""); mv.addObject(IUserCenterConst.SYSTEM_LOGO, "");
} }
mv.addObject("ws", systemProperties.getWs()); mv.addObject("ws", serverProperties.getWs());
// 菜单模式
if (!Objects.isNull(config.get(IUserCenterConst.MENU_MODE)) && !StringUtils.isBlank(config.get(IUserCenterConst.MENU_MODE).toString())) {
mv.addObject(IUserCenterConst.MENU_MODE, config.get(IUserCenterConst.MENU_MODE).toString());
}
if (menuBaseService != null) { if (menuBaseService != null) {
List<MenuDTO> menus; List<MenuDTO> menus;
if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) { if (StringUtils.equalsIgnoreCase(ISystemConstant.ADMIN, userInfoBO.getUserUsername())) {
@ -117,8 +121,8 @@ public class IndexRouteController {
@GetMapping("default-home") @GetMapping("default-home")
public ModelAndView defaultHome() { public ModelAndView defaultHome() {
ModelAndView mv; ModelAndView mv;
if (!StringUtils.isBlank(systemProperties.getDefaultHomePage())) { if (!StringUtils.isBlank(serverProperties.getDefaultHomePage())) {
mv = new ModelAndView(new RedirectView(systemProperties.getDefaultHomePage())); mv = new ModelAndView(new RedirectView(serverProperties.getDefaultHomePage()));
} else { } else {
mv = new ModelAndView("default-home"); mv = new ModelAndView("default-home");
} }

View File

@ -1,9 +1,9 @@
package ink.wgink.login.base.controller.route; package ink.wgink.login.base.controller.route;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.login.base.config.properties.SystemProperties;
import ink.wgink.login.base.consts.IUserCenterConst; import ink.wgink.login.base.consts.IUserCenterConst;
import ink.wgink.login.base.manager.ConfigManager; import ink.wgink.login.base.manager.ConfigManager;
import ink.wgink.properties.ServerProperties;
import ink.wgink.util.verification.code.Captcha; import ink.wgink.util.verification.code.Captcha;
import ink.wgink.util.verification.code.GifCaptcha; import ink.wgink.util.verification.code.GifCaptcha;
import ink.wgink.util.verification.code.SpecCaptcha; import ink.wgink.util.verification.code.SpecCaptcha;
@ -38,7 +38,7 @@ import java.util.Objects;
public class OAuthRouteController { public class OAuthRouteController {
@Autowired @Autowired
private SystemProperties systemProperties; private ServerProperties serverProperties;
/** /**
* 登录 * 登录
@ -48,7 +48,7 @@ public class OAuthRouteController {
@GetMapping("login") @GetMapping("login")
public ModelAndView login(HttpServletRequest request) { public ModelAndView login(HttpServletRequest request) {
ModelAndView mv = new ModelAndView("login"); ModelAndView mv = new ModelAndView("login");
mv.addObject(IUserCenterConst.SERVER_URL, systemProperties.getUrl()); mv.addObject(IUserCenterConst.SERVER_URL, serverProperties.getUrl());
if (request.getParameter(IUserCenterConst.ERROR) != null) { if (request.getParameter(IUserCenterConst.ERROR) != null) {
mv.addObject(IUserCenterConst.ERROR_MESSAGE, request.getSession().getAttribute(IUserCenterConst.ERROR_MESSAGE)); mv.addObject(IUserCenterConst.ERROR_MESSAGE, request.getSession().getAttribute(IUserCenterConst.ERROR_MESSAGE));
} }
@ -69,7 +69,7 @@ public class OAuthRouteController {
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_TITLE).toString())) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_TITLE).toString())) {
mv.addObject(IUserCenterConst.SYSTEM_TITLE, config.get(IUserCenterConst.SYSTEM_TITLE).toString()); mv.addObject(IUserCenterConst.SYSTEM_TITLE, config.get(IUserCenterConst.SYSTEM_TITLE).toString());
} else { } else {
mv.addObject(IUserCenterConst.SYSTEM_TITLE, systemProperties.getSystemTitle()); mv.addObject(IUserCenterConst.SYSTEM_TITLE, serverProperties.getSystemTitle());
} }
// 系统标题大小 // 系统标题大小
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE)) && Integer.parseInt(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE).toString()) > 12) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE)) && Integer.parseInt(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE).toString()) > 12) {
@ -81,7 +81,7 @@ public class OAuthRouteController {
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString())) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE)) && !StringUtils.isBlank(config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString())) {
mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString()); mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, config.get(IUserCenterConst.SYSTEM_SUB_TITLE).toString());
} else { } else {
mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, systemProperties.getSystemSubTitle()); mv.addObject(IUserCenterConst.SYSTEM_SUB_TITLE, serverProperties.getSystemSubTitle());
} }
// 系统子标题大小 // 系统子标题大小
if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE)) && Integer.parseInt(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE).toString()) > 12) { if (!Objects.isNull(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE)) && Integer.parseInt(config.get(IUserCenterConst.SYSTEM_SUB_TITLE_SIZE).toString()) > 12) {

View File

@ -66,6 +66,9 @@ public class ConfigVO {
private String scanCodeLogin; private String scanCodeLogin;
@ApiModelProperty(name = "loginBoxPosition", value = "登录框位置") @ApiModelProperty(name = "loginBoxPosition", value = "登录框位置")
private String loginBoxPosition; private String loginBoxPosition;
@ApiModelProperty(name = "menuMode", value = "菜单模式")
@CheckEmptyAnnotation(name = "菜单模式", types = {"fixedLeft", "floatLeft"})
private String menuMode;
public String getPasswordValidity() { public String getPasswordValidity() {
return passwordValidity == null ? "" : passwordValidity.trim(); return passwordValidity == null ? "" : passwordValidity.trim();
@ -218,4 +221,12 @@ public class ConfigVO {
public void setLoginBoxPosition(String loginBoxPosition) { public void setLoginBoxPosition(String loginBoxPosition) {
this.loginBoxPosition = loginBoxPosition; this.loginBoxPosition = loginBoxPosition;
} }
public String getMenuMode() {
return menuMode == null ? "" : menuMode;
}
public void setMenuMode(String menuMode) {
this.menuMode = menuMode;
}
} }

View File

@ -1,12 +1,12 @@
package ink.wgink.login.base.security; package ink.wgink.login.base.security;
import ink.wgink.common.handler.AccessDenyHandler; import ink.wgink.common.handler.AccessDenyHandler;
import ink.wgink.login.base.config.BaseConfig;
import ink.wgink.login.base.handler.LoginFailureHandler; import ink.wgink.login.base.handler.LoginFailureHandler;
import ink.wgink.login.base.handler.LogoutHandler; import ink.wgink.login.base.handler.LogoutHandler;
import ink.wgink.login.base.security.user.UserSecurityConfig; import ink.wgink.login.base.security.user.UserSecurityConfig;
import ink.wgink.login.base.service.user.UserDetailServiceImpl; import ink.wgink.login.base.service.user.UserDetailServiceImpl;
import ink.wgink.login.base.service.user.UserLoginService; import ink.wgink.login.base.service.user.UserLoginService;
import ink.wgink.properties.BaseProperties;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
@ -26,7 +26,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired @Autowired
private BaseConfig baseConfig; private BaseProperties baseProperties;
@Autowired @Autowired
private UserDetailServiceImpl userDetailService; private UserDetailServiceImpl userDetailService;
@Autowired @Autowired
@ -36,12 +36,12 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override @Override
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
LoginFailureHandler loginFailureHandler = new LoginFailureHandler(baseConfig.getLoginFailure()); LoginFailureHandler loginFailureHandler = new LoginFailureHandler(baseProperties.getLoginFailure());
http http
.formLogin() .formLogin()
.loginPage(baseConfig.getLoginUrl()) .loginPage(baseProperties.getLoginUrl())
.loginProcessingUrl(baseConfig.getLoginProcess()) .loginProcessingUrl(baseProperties.getLoginProcess())
.failureForwardUrl(baseConfig.getLoginUrl()) .failureForwardUrl(baseProperties.getLoginUrl())
.failureHandler(loginFailureHandler) .failureHandler(loginFailureHandler)
.and() .and()
.logout() .logout()
@ -52,17 +52,17 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.disable() .disable()
.and() .and()
.authorizeRequests() .authorizeRequests()
.antMatchers(baseConfig.getAssetsMatchers(), .antMatchers(baseProperties.getAssetsMatchers(),
baseConfig.getLoginUrl(), baseProperties.getLoginUrl(),
baseConfig.getLoginProcess(), baseProperties.getLoginProcess(),
baseConfig.getLoginFailure(), baseProperties.getLoginFailure(),
"/oauth/**", "/oauth/**",
"/oauth_client/**", "/oauth_client/**",
"/app/**", "/app/**",
"/approute/**", "/approute/**",
"/wechat/**", "/wechat/**",
"/wechatroute/**", "/wechat/route/**",
"/wxminiapp/**", "/wechat/miniapp/**",
"/route/file/**", "/route/file/**",
"/api/sms/getverificationcode/*", "/api/sms/getverificationcode/*",
"/api/user/getsignintype/**") "/api/user/getsignintype/**")
@ -96,7 +96,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
UserSecurityConfig userSecurityConfig = new UserSecurityConfig(); UserSecurityConfig userSecurityConfig = new UserSecurityConfig();
userSecurityConfig.setUserDetailService(userDetailService); userSecurityConfig.setUserDetailService(userDetailService);
userSecurityConfig.setPasswordEncoder(passwordEncoder); userSecurityConfig.setPasswordEncoder(passwordEncoder);
userSecurityConfig.setLoginProcessUrl(baseConfig.getLoginProcess()); userSecurityConfig.setLoginProcessUrl(baseProperties.getLoginProcess());
userSecurityConfig.setLoginFailureHandler(loginFailureHandler); userSecurityConfig.setLoginFailureHandler(loginFailureHandler);
userSecurityConfig.setUserLoginService(userLoginService); userSecurityConfig.setUserLoginService(userLoginService);
http.apply(userSecurityConfig); http.apply(userSecurityConfig);

View File

@ -218,6 +218,13 @@
<input type="radio" name="scanCodeLogin" value="dingDingScanCode" title="钉钉(需要设置通讯录权限,访问白名单)" th:if="${dingDingScanLogin eq 'dingDingScanLogin'}"> <input type="radio" name="scanCodeLogin" value="dingDingScanCode" title="钉钉(需要设置通讯录权限,访问白名单)" th:if="${dingDingScanLogin eq 'dingDingScanLogin'}">
</div> </div>
</div> </div>
<div class="layui-form-item" style="margin: 4px 0;">
<div class="layui-form-mid layui-word-aux">菜单模式</div>
<div class="layui-input-inline" style="width: 400px;">
<input type="radio" name="menuMode" value="fixedLeft" title="左固定" checked>
<input type="radio" name="menuMode" value="floatLeft" title="左浮动">
</div>
</div>
</div> </div>
</div> </div>
<div class="layui-form-item layui-layout-admin"> <div class="layui-form-item layui-layout-admin">
@ -386,7 +393,8 @@
verificationCode: data.verificationCode, verificationCode: data.verificationCode,
uKeyLogin: data.uKeyLogin, uKeyLogin: data.uKeyLogin,
scanCodeLogin: data.scanCodeLogin, scanCodeLogin: data.scanCodeLogin,
loginBoxPosition: data.loginBoxPosition loginBoxPosition: data.loginBoxPosition,
menuMode: data.menuMode
}); });
form.render(null, 'dataForm'); form.render(null, 'dataForm');
if(data.systemLogo) { if(data.systemLogo) {

View File

@ -11,6 +11,11 @@
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"> <link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css">
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all"> <link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all"> <link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
<link rel="stylesheet" href="assets/layuiadmin/style/default-main.css" media="all">
<style th:if="${menuMode eq 'floatLeft'}">
.layui-side-menu-hidden {display: none;}
.layui-layout-admin .layui-layout-left, .layadmin-pagetabs, .layui-layout-admin .layui-body, .layui-layout-admin .layui-footer {left: 0px}
</style>
</head> </head>
<body class="layui-layout-body"> <body class="layui-layout-body">
<div id="LAY_app"> <div id="LAY_app">
@ -18,7 +23,7 @@
<div class="layui-header"> <div class="layui-header">
<!-- 头部区域 --> <!-- 头部区域 -->
<ul class="layui-nav layui-layout-left"> <ul class="layui-nav layui-layout-left">
<li class="layui-nav-item layadmin-flexible" lay-unselect> <li class="layui-nav-item layadmin-flexible layui-side-menu-show" lay-unselect>
<a href="javascript:void(0);" layadmin-event="flexible" title="侧边伸缩"> <a href="javascript:void(0);" layadmin-event="flexible" title="侧边伸缩">
<i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i> <i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
</a> </a>
@ -71,7 +76,7 @@
</div> </div>
<!-- 侧边菜单 --> <!-- 侧边菜单 -->
<div class="layui-side layui-side-menu"> <div id="sideMenu" class="layui-side layui-side-menu layui-side-menu-hidden">
<div class="layui-side-scroll"> <div class="layui-side-scroll">
<div class="layui-logo"> <div class="layui-logo">
<img th:src="'route/file/download/true/'+ ${systemLogo}" style="width: 32px; height: 32px;" th:if="${systemLogo ne ''}"> <img th:src="'route/file/download/true/'+ ${systemLogo}" style="width: 32px; height: 32px;" th:if="${systemLogo ne ''}">
@ -121,7 +126,7 @@
</div> </div>
<!-- 页面标签 --> <!-- 页面标签 -->
<div class="layadmin-pagetabs" id="LAY_app_tabs"> <div class="layadmin-pagetabs auto-hide-menu" id="LAY_app_tabs">
<div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div> <div class="layui-icon layadmin-tabs-control layui-icon-prev" layadmin-event="leftPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div> <div class="layui-icon layadmin-tabs-control layui-icon-next" layadmin-event="rightPage"></div>
<div class="layui-icon layadmin-tabs-control layui-icon-down"> <div class="layui-icon layadmin-tabs-control layui-icon-down">
@ -144,7 +149,7 @@
</div> </div>
<!-- 主体内容 --> <!-- 主体内容 -->
<div class="layui-body" id="LAY_app_body"> <div class="layui-body auto-hide-menu" id="LAY_app_body">
<div class="layadmin-tabsbody-item layui-show"> <div class="layadmin-tabsbody-item layui-show">
<iframe id="defaultIFrame" frameborder="0" class="layadmin-iframe"></iframe> <iframe id="defaultIFrame" frameborder="0" class="layadmin-iframe"></iframe>
</div> </div>
@ -160,7 +165,8 @@
base: 'assets/layuiadmin/' //静态资源所在路径 base: 'assets/layuiadmin/' //静态资源所在路径
}).extend({ }).extend({
index: 'lib/index' //主入口模块 index: 'lib/index' //主入口模块
}).use(['index', 'restajax', 'datamessage', 'dialog'], function() { }).use(['index', 'element', 'restajax', 'datamessage', 'dialog'], function() {
var element = layui.element;
var $ = layui.$; var $ = layui.$;
var layer = layui.layer; var layer = layui.layer;
@ -205,6 +211,27 @@
window.location.href = 'oauth/logout'; window.location.href = 'oauth/logout';
}); });
}); });
/** 左浮动菜单 start **/
var hideSideMenuTimeout = null;
$('.layui-side-menu-show').on('mouseover', function(event) {
$('#sideMenu').removeClass('layui-side-menu-hidden');
});
$('#sideMenu').on('mouseout', function(event) {
if(hideSideMenuTimeout) {
return;
}
hideSideMenuTimeout = setTimeout(function() {
$('#sideMenu').addClass('layui-side-menu-hidden')
}, 100);
});
$('#sideMenu').on('mouseover', function(event) {
if(hideSideMenuTimeout) {
clearTimeout(hideSideMenuTimeout);
hideSideMenuTimeout = null;
}
});
/** 左浮动菜单 end **/
}); });
</script> </script>
</body> </body>

View File

@ -7,7 +7,7 @@ import ink.wgink.exceptions.WechatAccessTokenForUserException;
import ink.wgink.exceptions.WechatUserInfoException; import ink.wgink.exceptions.WechatUserInfoException;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.login.base.service.BaseAppSignService; import ink.wgink.login.base.service.BaseAppSignService;
import ink.wgink.login.wechat.config.properties.MiniAppProperties; import ink.wgink.properties.MiniAppProperties;
import ink.wgink.login.wechat.pojo.bos.user.MiniAppUserInfoBO; import ink.wgink.login.wechat.pojo.bos.user.MiniAppUserInfoBO;
import ink.wgink.login.wechat.pojo.vos.sign.MiniAppLoginVO; import ink.wgink.login.wechat.pojo.vos.sign.MiniAppLoginVO;
import ink.wgink.login.wechat.service.sign.IMiniAppSignService; import ink.wgink.login.wechat.service.sign.IMiniAppSignService;

View File

@ -0,0 +1,40 @@
package ink.wgink.login.wechat.startup;
import ink.wgink.login.wechat.dao.user.IMiniAppUserDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
/**
* When you feel like quitting. Think about why you started
* 当你想要放弃的时候想想当初你为何开始
*
* @ClassName: LoginWechatStartUp
* @Description: 微信登录
* @Author: wanggeng
* @Date: 2021/4/9 11:44 上午
* @Version: 1.0
*/
@Component
public class LoginWechatStartUp implements ApplicationRunner {
private static final Logger LOG = LoggerFactory.getLogger(LoginWechatStartUp.class);
@Autowired
private IMiniAppUserDao miniAppUserDao;
@Override
public void run(ApplicationArguments args) throws Exception {
initTable();
}
/**
* 建表
*/
private void initTable() {
LOG.debug("创建 wechat_mini_app_user 表");
miniAppUserDao.createTable();
}
}

View File

@ -14,7 +14,7 @@
<!-- 建表 --> <!-- 建表 -->
<update id="createTable"> <update id="createTable">
CREATE TABLE `wechat_mini_app_user` ( CREATE TABLE IF NOT EXISTS `wechat_mini_app_user` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`app_id` varchar(255) DEFAULT NULL COMMENT 'appid', `app_id` varchar(255) DEFAULT NULL COMMENT 'appid',
`open_id` varchar(255) DEFAULT NULL COMMENT 'openid', `open_id` varchar(255) DEFAULT NULL COMMENT 'openid',

View File

@ -3,7 +3,7 @@ package ink.wgink.module.file.controller.api;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.file.config.properties.FileProperties; import ink.wgink.properties.FileProperties;
import ink.wgink.module.file.enums.UploadTypeEnum; import ink.wgink.module.file.enums.UploadTypeEnum;
import ink.wgink.module.file.pojo.dtos.FileDTO; import ink.wgink.module.file.pojo.dtos.FileDTO;
import ink.wgink.module.file.pojo.dtos.FileInfoDTO; import ink.wgink.module.file.pojo.dtos.FileInfoDTO;

View File

@ -3,7 +3,7 @@ package ink.wgink.module.file.controller.app.api;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.file.config.properties.FileProperties; import ink.wgink.properties.FileProperties;
import ink.wgink.module.file.enums.UploadTypeEnum; import ink.wgink.module.file.enums.UploadTypeEnum;
import ink.wgink.module.file.pojo.dtos.FileDTO; import ink.wgink.module.file.pojo.dtos.FileDTO;
import ink.wgink.module.file.service.IFileService; import ink.wgink.module.file.service.IFileService;

View File

@ -3,7 +3,7 @@ package ink.wgink.module.file.controller.route;
import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.exceptions.ParamsException; import ink.wgink.exceptions.ParamsException;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.file.config.properties.FileProperties; import ink.wgink.properties.FileProperties;
import ink.wgink.module.file.service.IFileService; import ink.wgink.module.file.service.IFileService;
import ink.wgink.pojo.result.ErrorResult; import ink.wgink.pojo.result.ErrorResult;
import io.swagger.annotations.*; import io.swagger.annotations.*;

View File

@ -2,7 +2,7 @@ package ink.wgink.module.file.controller.wechat;
import ink.wgink.common.base.DefaultBaseController; import ink.wgink.common.base.DefaultBaseController;
import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.interfaces.consts.ISystemConstant;
import ink.wgink.module.file.config.properties.FileProperties; import ink.wgink.properties.FileProperties;
import ink.wgink.module.file.enums.UploadTypeEnum; import ink.wgink.module.file.enums.UploadTypeEnum;
import ink.wgink.module.file.pojo.dtos.FileDTO; import ink.wgink.module.file.pojo.dtos.FileDTO;
import ink.wgink.module.file.service.IFileService; import ink.wgink.module.file.service.IFileService;

View File

@ -10,7 +10,7 @@ import ink.wgink.exceptions.ParamsException;
import ink.wgink.exceptions.SaveException; import ink.wgink.exceptions.SaveException;
import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.SearchException;
import ink.wgink.exceptions.base.SystemException; import ink.wgink.exceptions.base.SystemException;
import ink.wgink.module.file.config.properties.FileProperties; import ink.wgink.properties.FileProperties;
import ink.wgink.module.file.dao.IFileDao; import ink.wgink.module.file.dao.IFileDao;
import ink.wgink.module.file.enums.UploadTypeEnum; import ink.wgink.module.file.enums.UploadTypeEnum;
import ink.wgink.module.file.pojo.dtos.FileDTO; import ink.wgink.module.file.pojo.dtos.FileDTO;

View File

@ -28,6 +28,7 @@
<module>login-base</module> <module>login-base</module>
<module>login-app</module> <module>login-app</module>
<module>login-wechat</module> <module>login-wechat</module>
<module>basic-properties</module>
</modules> </modules>
<packaging>pom</packaging> <packaging>pom</packaging>

View File

@ -142,7 +142,11 @@ public class UserServiceImpl extends DefaultBaseService implements IUserService
throw new SystemException("未引入APP登录模块"); throw new SystemException("未引入APP登录模块");
} }
String userId = securityComponent.getAppTokenUser(token).getId(); String userId = securityComponent.getAppTokenUser(token).getId();
Map<String, Object> params = HashMapUtil.beanToMap(updateUserVO); Map<String, Object> params = getHashMap(8);
params.put("userAvatar", updateUserVO.getAvatar());
params.put("userEmail", updateUserVO.getEmail());
params.put("userPhone", updateUserVO.getPhone());
params.put("userName", updateUserVO.getName());
params.put("userId", userId); params.put("userId", userId);
setAppUpdateInfo(token, params); setAppUpdateInfo(token, params);
userDao.update(params); userDao.update(params);