diff --git a/.gitignore b/.gitignore index 154724e..838e520 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ out gen target .jar -.class \ No newline at end of file +.class +.md \ No newline at end of file diff --git a/modules/i3plus-core-api/pom.xml b/modules/i3plus-core-api/pom.xml index 5b737d8..d2a1ac2 100644 --- a/modules/i3plus-core-api/pom.xml +++ b/modules/i3plus-core-api/pom.xml @@ -25,6 +25,12 @@ org.apache.shiro shiro-core + + i3plus.pojo + i3plus-pojo-mes + 1.0-SNAPSHOT + compile + \ No newline at end of file diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IDataSimpleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IDataSimpleService.java index 7d692eb..0a7cab1 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IDataSimpleService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/IDataSimpleService.java @@ -1,6 +1,6 @@ package cn.estsh.i3plus.core.api.iservice.base; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; +import cn.estsh.i3plus.pojo.mes.MachineFactory; import org.springframework.transaction.annotation.Transactional; import java.util.List; diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java similarity index 54% rename from modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemUserService.java rename to modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java index 7439f18..f79a54c 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/base/ISystemLoginService.java @@ -1,23 +1,20 @@ -package cn.estsh.i3plus.core.api.iservice.busi; +package cn.estsh.i3plus.core.api.iservice.base; -import cn.estsh.i3plus.core.api.token.AdminToken; -import cn.estsh.i3plus.core.api.token.SaAdminToken; -import cn.estsh.i3plus.core.api.token.UserToken; -import cn.estsh.i3plus.pojo.model.common.Pager; +import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; -import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource; import java.util.List; /** - * @Description : 用户功能方法,包含权限、角色等 + * @Description : 用户登陆方法,平台统一登陆 * @Reference : * @Author : alwaysfrin * @CreateDate : 2018-10-11 16:59 * @Modify: **/ -public interface ISystemUserService { +public interface ISystemLoginService { SessionUser queryUserLogin(String loginName, String s, String languageCode); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java new file mode 100644 index 0000000..e46147a --- /dev/null +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreTreeService.java @@ -0,0 +1,15 @@ +package cn.estsh.i3plus.core.api.iservice.busi; + +import cn.estsh.i3plus.pojo.platform.bean.Department; + +/** + * @Description : 通用树查询服务 + * @Reference : + * @Author : wei.peng + * @Date : 2018-10-24 11:16 + * @Modify : + **/ +public interface ICoreTreeService { + + Department getDepartmentTreeByParentId(long depParentId); +} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemResourceService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemResourceService.java index b353ea2..4286db0 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemResourceService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISystemResourceService.java @@ -1,9 +1,9 @@ package cn.estsh.i3plus.core.api.iservice.busi; -import cn.estsh.i3plus.pojo.model.common.Pager; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource; -import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -16,7 +16,7 @@ import java.util.List; **/ public interface ISystemResourceService { - SysLocaleLanguage saveSysLocaleLanguage(SysLocaleLanguage lang); + SysLocaleLanguage insertSysLocaleLanguage(SysLocaleLanguage lang); SysLocaleLanguage updateSysLocaleLanguage(SysLocaleLanguage lang); @@ -24,15 +24,17 @@ public interface ISystemResourceService { List listSysLocaleLanguage(SysLocaleLanguage lang); - List listSysLocaleLanguageByPager(SysLocaleLanguage lang,Pager pager); + ListPager listSysLocaleLanguageByPager(SysLocaleLanguage lang, Pager pager); - SysLocaleResource saveSysLocaleResource(SysLocaleResource res); + SysLocaleResource insertSysLocaleResource(SysLocaleResource res); SysLocaleResource updateSysLocaleResource(SysLocaleResource res); void deleteSysLocaleResourceById(long id); - List listSysLocaleResourceByPager(SysLocaleResource res,Pager pager); + void deleteSysLocaleResourceByIds(String[] ids); + + ListPager listSysLocaleResourceByPager(SysLocaleResource res,Pager pager); List listSysLocaleResource(SysLocaleResource res); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/AdminToken.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/AdminToken.java deleted file mode 100644 index 18b36da..0000000 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/AdminToken.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.estsh.i3plus.core.api.token; - -/** - * @Description : 管理员token - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 18:00 - * @Modify: - **/ -public class AdminToken extends BaseToken { - - public AdminToken(String loginName, String loginPwd, String languageCode) { - super(loginName, loginPwd, languageCode); - } -} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/BaseToken.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/BaseToken.java deleted file mode 100644 index 35f057f..0000000 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/BaseToken.java +++ /dev/null @@ -1,59 +0,0 @@ -package cn.estsh.i3plus.core.api.token; - -import org.apache.shiro.authc.AuthenticationToken; - -/** - * @Description : 基本验证类 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 18:00 - * @Modify: - **/ -public class BaseToken implements AuthenticationToken { - - private String loginName; - private String loginPwd; - private String languageCode; - - public BaseToken(String loginName, String loginPwd, String languageCode) { - this.loginName = loginName; - this.loginPwd = loginPwd; - this.languageCode = languageCode; - } - - //身份 - @Override - public Object getPrincipal() { - return this.loginName; - } - - //验证 - @Override - public Object getCredentials() { - return this.loginPwd; - } - - public String getLoginName() { - return loginName; - } - - public void setLoginName(String loginName) { - this.loginName = loginName; - } - - public String getLoginPwd() { - return loginPwd; - } - - public void setLoginPwd(String loginPwd) { - this.loginPwd = loginPwd; - } - - public String getLanguageCode() { - return languageCode; - } - - public void setLanguageCode(String languageCode) { - this.languageCode = languageCode; - } -} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/SaAdminToken.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/SaAdminToken.java deleted file mode 100644 index c850f1f..0000000 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/SaAdminToken.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.estsh.i3plus.core.api.token; - -/** - * @Description : 超级管理员token - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 18:00 - * @Modify: - **/ -public class SaAdminToken extends BaseToken { - - public SaAdminToken(String loginName, String loginPwd, String languageCode) { - super(loginName, loginPwd, languageCode); - } -} diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/UserToken.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/UserToken.java deleted file mode 100644 index 89cc732..0000000 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/token/UserToken.java +++ /dev/null @@ -1,15 +0,0 @@ -package cn.estsh.i3plus.core.api.token; - -/** - * @Description : 普通用户token - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 18:00 - * @Modify: - **/ -public class UserToken extends BaseToken { - - public UserToken(String loginName, String loginPwd, String languageCode) { - super(loginName, loginPwd, languageCode); - } -} diff --git a/modules/i3plus-core-apiservice/pom.xml b/modules/i3plus-core-apiservice/pom.xml index 0e3d45b..4dfbc41 100644 --- a/modules/i3plus-core-apiservice/pom.xml +++ b/modules/i3plus-core-apiservice/pom.xml @@ -14,6 +14,12 @@ jar + + + i3plus.pojo + i3plus-pojo-model + + i3plus.core @@ -60,6 +66,10 @@ org.apache.shiro shiro-web + + org.apache.shiro + shiro-ehcache + @@ -72,6 +82,12 @@ net.sf.ehcache ehcache-core + + i3plus.pojo + i3plus-pojo-mes + 1.0-SNAPSHOT + compile + diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/AuthUtil.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/AuthUtil.java deleted file mode 100644 index 06c163f..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/AuthUtil.java +++ /dev/null @@ -1,106 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.auth; - -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.impp.framework.boot.util.ImppRedis; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.math.NumberUtils; -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.session.Session; -import org.apache.shiro.subject.Subject; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; - -/** - * @Description : 授权会话工具类 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 13:21 - * @Modify: - **/ -public class AuthUtil { - public static final Logger LOGGER = LoggerFactory.getLogger(AuthUtil.class); - - /** - * 缓存 - */ - @Resource(name="redisSession") - private ImppRedis redisSession; - - //登陆,保存会话对象 - public static SessionUser login(AuthenticationToken token){ - Subject subject = SecurityUtils.getSubject(); - subject.login(token); - - SessionUser sessionUser = (SessionUser) subject.getPrincipal(); - //使用了redis,此处不需要防止 - if(sessionUser != null){ - //userType为CommonEnumUtil.USER_TYPE.xxx.getCode() - setSessionUser(sessionUser); - } - - return sessionUser; - } - - /** - * 退出,移除会话中对象 - */ - public static void logout(){ - Session session = SecurityUtils.getSubject().getSession(false); - if(session != null) { - session.removeAttribute(CommonConstWords.SESSION_USER); - session.touch(); - session.stop(); - } - } - - /** - * 保存会话中用户 - * @param user - * @return - */ - public static void setSessionUser(SessionUser user){ - SecurityUtils.getSubject().getSession(true).setAttribute(CommonConstWords.SESSION_USER,user); - } - /** - * 获取会话中用户 - * @return - */ - public static SessionUser getSessionUser(){ - Session session = SecurityUtils.getSubject().getSession(false); - if(session != null){ - return (SessionUser) session.getAttribute(CommonConstWords.SESSION_USER); - }else{ - return null; - } - } - - /** - * 保存会话中对象 - * @param key 键 - * @param obj 值 - * @return - */ - public static void setSessionObject(String key,Object obj){ - SecurityUtils.getSubject().getSession(true).setAttribute(key,obj); - } - - /** - * 获取会话中对象 - * @param key - * @return - */ - public static Object getSessionAttribute(String key){ - Session session = SecurityUtils.getSubject().getSession(false); - if(session != null){ - return (Object) session.getAttribute(key); - }else{ - return null; - } - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java new file mode 100644 index 0000000..5f98279 --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroAuthConfiguration.java @@ -0,0 +1,200 @@ +package cn.estsh.i3plus.core.apiservice.auth; + +import cn.estsh.i3plus.core.apiservice.auth.realm.AdminAuthRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.DefaultModularRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.SaAuthRealm; +import cn.estsh.i3plus.core.apiservice.auth.realm.UserAuthRealm; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.impp.framework.boot.auth.filter.AdminFilter; +import cn.estsh.impp.framework.boot.auth.filter.SaAdminFilter; +import cn.estsh.impp.framework.boot.auth.filter.UserFilter; +import cn.estsh.impp.framework.boot.configuration.RedisConfig; +import org.apache.shiro.authc.pam.ModularRealmAuthenticator; +import org.apache.shiro.cache.CacheManager; +import org.apache.shiro.realm.Realm; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.annotation.Resource; +import javax.servlet.Filter; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @Description : shiro权限配置 + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2018-10-13 18:25 + * @Modify: + **/ +@Configuration +@AutoConfigureAfter(RedisConfig.class) //2类配置,延后加载 +public class ShiroAuthConfiguration { + public static final Logger LOGGER = LoggerFactory.getLogger(ShiroAuthConfiguration.class); + + @Value("${filter.shiro.admin.loginuri}") + private String adminLoginUri; + + @Value("${filter.shiro.admin.filteruri}") + private String adminFilterUri; + + @Value("${filter.shiro.saadmin.loginuri}") + private String saAdminLoginUri; + + @Value("${filter.shiro.saadmin.filteruri}") + private String saAdminFilterUri; + + @Value("${filter.shiro.user.loginuri}") + private String userLoginUri; + + @Value("${filter.shiro.user.filteruri}") + private String userFilterUri; + + //平台控制缓存 + @Resource(name = "imppSessionEhCacheManager") + private CacheManager getEhCacheManage; + + //平台控制会话 + @Resource(name = "imppSessionManager") + private DefaultWebSessionManager getSessionManage; + + @Bean + public AdminAuthRealm adminAuthRealm(){ + return new AdminAuthRealm(); + } + + @Bean + public SaAuthRealm saAuthRealm(){ + return new SaAuthRealm(); + } + + @Bean + public UserAuthRealm userAuthRealm(){ + return new UserAuthRealm(); + } + + public Map supportRealmMap(){ + //支持的授权规则 + Map realms = new HashMap(); + realms.put(CommonEnumUtil.USER_TYPE.USER.getCode(),userAuthRealm()); + realms.put(CommonEnumUtil.USER_TYPE.ADMIN.getCode(),adminAuthRealm()); + realms.put(CommonEnumUtil.USER_TYPE.SA.getCode(),saAuthRealm()); + + return realms; + } + + @Bean + public ModularRealmAuthenticator modularRealmAuthenticator(){ + return new DefaultModularRealm(supportRealmMap()); + } + + @Bean + public SecurityManager securityManager(){ + LOGGER.info("【app-shiro-加载securityManager】"); + DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); + securityManager.setAuthenticator(modularRealmAuthenticator()); + securityManager.setRealms(supportRealmMap().values()); + securityManager.setCacheManager(getEhCacheManage); //缓存管理 + securityManager.setSessionManager(getSessionManage); //会话管理 + //securityManager.setRememberMeManager(getRememberManager()); + return securityManager; + } + + @Bean + public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { + ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); + factoryBean.setSecurityManager(securityManager); + + Map filterMap = new HashMap(); + filterMap.put("user_filter", new UserFilter()); + filterMap.put("admin_filter", new AdminFilter()); + filterMap.put("saadmin_filter", new SaAdminFilter()); + factoryBean.setFilters(filterMap); + + Map filterChain = new LinkedHashMap(); + //不需要过滤的路径,直接通过 + filterChain.put(userLoginUri, "anon"); + filterChain.put(adminLoginUri, "anon"); + filterChain.put(saAdminLoginUri, "anon"); + + //需要过滤的路径 + filterChain.put(userFilterUri, "user_filter"); + filterChain.put(adminFilterUri, "admin_filter"); + filterChain.put(saAdminFilterUri, "saadmin_filter"); + + factoryBean.setFilterChainDefinitionMap(filterChain); + + LOGGER.info("【app-shiro授权过滤】加载完成..."); + return factoryBean; + } + + /** 缓存等配置在impp平台中设置 **/ +// /** +// * 缓存管理 +// * @return +// */ +// @Bean(name = "ehCacheManager") +// public CacheManager getEhCacheManage() { +// LOGGER.info("【shiro-加载缓存cacheManager】"); +// EhCacheManager em = new EhCacheManager(); +// em.setCacheManagerConfigFile("classpath:cache_session.xml"); +// return em; +// } +// +// @Bean(name = "sessionManager") +// public DefaultWebSessionManager getSessionManage() { +// LOGGER.info("【shiro-加载sessionManager】"); +// DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); +// sessionManager.setSessionValidationScheduler(getExecutorServiceSessionValidationScheduler()); +// sessionManager.setSessionValidationSchedulerEnabled(true); +// sessionManager.setDeleteInvalidSessions(true); +// sessionManager.setSessionIdCookieEnabled(true); +// sessionManager.setSessionIdCookie(getSessionIdCookie()); +// sessionManager.setSessionDAO(getShiroSessionRedisDaoImpl()); +// sessionManager.setGlobalSessionTimeout(30 * 60 * 1000); //30分钟有效期(以sessionDao中的有效时间为准) +// +// // 可以添加session 创建、删除的监听器 +// return sessionManager; +// } +// +// @Bean +// public ShiroSessionRedisDaoImpl getShiroSessionRedisDaoImpl(){ +// LOGGER.info("【shiro-加载缓存redisSessionManager】"); +// ShiroSessionRedisDaoImpl shiroSessionRedisDao = new ShiroSessionRedisDaoImpl(); +// +// LOGGER.info("【shiro-加载缓存cacheManager】"); +// shiroSessionRedisDao.setLocalCacheManager(getEhCacheManage() ); +// return shiroSessionRedisDao; +// } +// +// /** +// * 授权验证监听任务 +// * @return +// */ +// @Bean(name = "sessionValidationScheduler") +// public ExecutorServiceSessionValidationScheduler getExecutorServiceSessionValidationScheduler() { +// LOGGER.info("【shiro-加载sessionValidationScheduler】"); +// ExecutorServiceSessionValidationScheduler scheduler = new ExecutorServiceSessionValidationScheduler(); +// scheduler.setInterval(3 * 60 * 1000); //每3分钟执行一次验证 +// return scheduler; +// } +// +// @Bean(name = "sessionIdCookie") +// public SimpleCookie getSessionIdCookie() { +// LOGGER.info("【shiro-加载sessionIdCookie】"); +// SimpleCookie cookie = new SimpleCookie("sid"); +// cookie.setHttpOnly(true); +// cookie.setMaxAge(-1); +// +// return cookie; +// } +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroSessionRedisDaoImpl.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroSessionRedisDaoImpl.java deleted file mode 100644 index cd9fc23..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/ShiroSessionRedisDaoImpl.java +++ /dev/null @@ -1,151 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.auth; - -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.impp.framework.boot.util.ImppRedis; -import com.alibaba.fastjson.JSONObject; -import org.apache.shiro.cache.Cache; -import org.apache.shiro.cache.CacheManager; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.session.Session; -import org.apache.shiro.session.UnknownSessionException; -import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; - -import javax.annotation.Resource; -import java.io.Serializable; -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; - -/** - * @Description : redisshiro保存会话 - * @Reference : 使用了ehcache做本地缓存,避免频繁读写redis,进行序列化和反序列化。 - * 但需要注意,本地缓存在微服的情况下可能会出现脏数据。建议在登陆时一次性放入,后续若修改则需要同时更新缓存。 - * @Author : alwaysfrin - * @CreateDate : 2018-10-16 10:28 - * @Modify: - **/ -public class ShiroSessionRedisDaoImpl extends EnterpriseCacheSessionDAO { - public static final Logger LOGGER = LoggerFactory.getLogger(ShiroSessionRedisDaoImpl.class); - public static final int EXPIRE_TIME = 30 * 60; //会话保存时间 单位秒 - - public static final String LOCAL_SESSION_CACHE = "redis-shiro-session-cache"; - - /** - * 缓存 - */ - @Resource(name="redisSession") - private ImppRedis redisSession; - - //本地缓存 - private Cache localCache; - - private CacheManager localCacheManager; - public void setLocalCacheManager(CacheManager localCacheManager) { - this.localCacheManager = localCacheManager; - this.localCache = localCacheManager.getCache(LOCAL_SESSION_CACHE); - } - - @Override - public void update(Session session) throws UnknownSessionException { - LOGGER.info("【更新缓存 : {}】{}",session,session.getId()); - this.saveSession(session); - } - - private void saveSession(Session session) { - if (session == null) { - LOGGER.error("【要存入的session为空】"); - }else { - //LOGGER.info("【保存session至redis,id:{}】{}",session.getId(),session); - //设置会话过期时间 - redisSession.putObject(session.getId().toString(),session,EXPIRE_TIME); - - //放入本地缓存 - localCache.put(session.getId(),session); - LOGGER.info("【保存session至redis,id:{}】{}",session.getId(),session); - } - } - - @Override - protected Session getCachedSession(Serializable sessionId) { - //先从本地获取,若本地没有,再从redis中获取 - Session s = (Session) localCache.get(sessionId); - if(s == null) { - s = (Session) redisSession.getObject(sessionId.toString()); - - LOGGER.info("【本地缓存不存在,redis获取:{}】{}", sessionId, s); - if(s != null) { - //放入本地缓存 - localCache.put(sessionId, s); - LOGGER.info("【放入本地缓存:{}】{}", sessionId, s); - } - }else{ - //LOGGER.info("【本地缓存获取:{}】{}", sessionId, s); - } - - return s; - } - - @Override - public void delete(Session session) { - if (session == null) { - }else { - LOGGER.error("【删除session-redis:{}】",session.getId()); - //redis删除 - redisSession.deleteKey(session.getId().toString()); - //本地缓存删除 - localCache.remove(session.getId()); - } - } - - @Override - protected Serializable doCreate(Session session) { - LOGGER.info("【doCreate并保存:{}】",session); - Serializable sessionId = this.generateSessionId(session); - this.assignSessionId(session, sessionId); - this.saveSession(session); - - return sessionId; - } - - @Override - protected Session doReadSession(Serializable sessionId) { - Session session = null; - if(sessionId != null) { - //先从本地缓存读取 - Object obj = localCache.get(sessionId); - - if(obj == null) { - LOGGER.info("【doReadSession-本地缓存不存在不存在:{}】", sessionId); - obj = redisSession.getObject(sessionId.toString()); - if (obj == null) { - LOGGER.info("【doReadSession不存在:{}】", sessionId); - } else { - LOGGER.info("【doReadSession:{}】", sessionId); - session = (Session) obj; - } - }else{ - LOGGER.info("【doReadSession-本地缓存获取:{}】", sessionId); - session = (Session) obj; - } - } - - return session; - } - - /** - * 获取存活的sessions - */ - @Override - public Collection getActiveSessions() { - Set sessions = new HashSet<>(); - Set keys = redisSession.getKeysSet("*"); - LOGGER.info("【所有活动的key:{}】",keys.size()); - for(String key:keys){ - sessions.add((Session)redisSession.getObject(key)); - } - return sessions; - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/AdminFilter.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/AdminFilter.java deleted file mode 100644 index 28dc938..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/AdminFilter.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.auth.filter; - -import cn.estsh.i3plus.core.apiservice.auth.AuthUtil; -import cn.estsh.i3plus.core.apiservice.configuration.ShiroAuthConfiguration; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import com.alibaba.fastjson.JSONObject; -import org.apache.shiro.web.filter.AccessControlFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @Description : 管理员授权路径过滤 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 19:17 - * @Modify: - **/ -public class AdminFilter extends AccessControlFilter { - public static final Logger LOGGER = LoggerFactory.getLogger(AdminFilter.class); - - @Override - protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { - SessionUser sessionUser = AuthUtil.getSessionUser(); - if(sessionUser != null && CommonEnumUtil.USER_TYPE.ADMIN.getCode().equals(sessionUser.getUserType())){ - return true; - }else{ - return false; - } - } - - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - if (response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse)response; - - httpServletResponse.setHeader("Content-Type", "application/json;charset=UTF-8"); - httpServletResponse.setContentType("application/json;charset=UTF-8"); - PrintWriter out = null; - - try { - ResultBean result = new ResultBean(); - result.setSuccess(false); - result.setErrorMsg("未登录"); - result.setCode("need-login"); - result.setUrl(ShiroAuthConfiguration.ADMIN_LOGIN_URI); - - out = response.getWriter(); - out.print(JSONObject.toJSONString(result)); - out.flush(); - } catch (IOException var11) { - LOGGER.error(var11.getMessage(), var11); - } finally { - if (out != null) { - out.close(); - } - - } - } - - return false; - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/SaAdminFilter.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/SaAdminFilter.java deleted file mode 100644 index 89c521d..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/SaAdminFilter.java +++ /dev/null @@ -1,71 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.auth.filter; - -import cn.estsh.i3plus.core.apiservice.auth.AuthUtil; -import cn.estsh.i3plus.core.apiservice.configuration.ShiroAuthConfiguration; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import com.alibaba.fastjson.JSONObject; -import org.apache.shiro.web.filter.AccessControlFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @Description : 超级管理员授权路径过滤 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 19:17 - * @Modify: - **/ -public class SaAdminFilter extends AccessControlFilter { - public static final Logger LOGGER = LoggerFactory.getLogger(SaAdminFilter.class); - - @Override - protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception { - SessionUser sessionUser = AuthUtil.getSessionUser(); - if(sessionUser != null && CommonEnumUtil.USER_TYPE.SA.getCode().equals(sessionUser.getUserType())){ - return true; - }else{ - return false; - } - } - - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - if (response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse)response; - - httpServletResponse.setHeader("Content-Type", "application/json;charset=UTF-8"); - httpServletResponse.setContentType("application/json;charset=UTF-8"); - PrintWriter out = null; - - try { - ResultBean result = new ResultBean(); - result.setSuccess(false); - result.setErrorMsg("未登录"); - result.setCode("need-login"); - result.setUrl(ShiroAuthConfiguration.SAADMIN_LOGIN_URI); - - out = response.getWriter(); - out.print(JSONObject.toJSONString(result)); - out.flush(); - } catch (IOException var11) { - LOGGER.error(var11.getMessage(), var11); - } finally { - if (out != null) { - out.close(); - } - - } - } - - return false; - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/UserFilter.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/UserFilter.java deleted file mode 100644 index 74560c1..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/filter/UserFilter.java +++ /dev/null @@ -1,75 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.auth.filter; - -import cn.estsh.i3plus.core.apiservice.auth.AuthUtil; -import cn.estsh.i3plus.core.apiservice.configuration.ShiroAuthConfiguration; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import com.alibaba.fastjson.JSONObject; -import org.apache.shiro.web.filter.AccessControlFilter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * @Description : 用户授权路径过滤 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 19:17 - * @Modify: - **/ -public class UserFilter extends AccessControlFilter { - public static final Logger LOGGER = LoggerFactory.getLogger(UserFilter.class); - - @Override - protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse response, Object mappedValue) throws Exception { - SessionUser sessionUser = AuthUtil.getSessionUser(); - if (sessionUser != null) { - LOGGER.info("===用户已登陆==={}",sessionUser); - return true; - } else { - LOGGER.info("===用户未登陆==={}",sessionUser); - return false; - } - } - - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - if (response instanceof HttpServletResponse) { - LOGGER.info("===请求拒绝===请求路径:{}",((HttpServletRequest)request).getRequestURL()); - HttpServletResponse httpServletResponse = (HttpServletResponse)response; - - httpServletResponse.setHeader("Content-Type", "application/json;charset=UTF-8"); - httpServletResponse.setContentType("application/json;charset=UTF-8"); - PrintWriter out = null; - - try { - ResultBean result = new ResultBean(); - result.setSuccess(false); - result.setErrorMsg("未登录"); - result.setCode("need-login"); - result.setUrl(ShiroAuthConfiguration.USER_LOGIN_URI); - - out = response.getWriter(); - out.print(JSONObject.toJSONString(result)); - out.flush(); - } catch (IOException var11) { - LOGGER.error(var11.getMessage(), var11); - } finally { - if (out != null) { - out.close(); - } - - } - } - - return false; - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/AdminAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/AdminAuthRealm.java index 76afb3b..abc89e6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/AdminAuthRealm.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/AdminAuthRealm.java @@ -1,9 +1,7 @@ package cn.estsh.i3plus.core.apiservice.auth.realm; -import cn.estsh.i3plus.core.api.iservice.busi.ISystemUserService; -import cn.estsh.i3plus.core.api.token.AdminToken; -import cn.estsh.i3plus.core.api.token.SaAdminToken; -import cn.estsh.i3plus.core.api.token.UserToken; +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -28,7 +26,7 @@ public class AdminAuthRealm extends AuthorizingRealm { public static final Logger LOGGER = LoggerFactory.getLogger(AdminAuthRealm.class); @Autowired - private ISystemUserService systemUserService; + private ISystemLoginService systemLoginService; public AdminAuthRealm(){ //添加支持的token @@ -45,7 +43,7 @@ public class AdminAuthRealm extends AuthorizingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { //管理员令牌 - SessionUser sessionUser = systemUserService.queryCheckAdminLogin((AdminToken) authenticationToken); + SessionUser sessionUser = systemLoginService.queryCheckAdminLogin((AdminToken) authenticationToken); LOGGER.info("管理员令牌验证:{}",sessionUser); return new SimpleAuthenticationInfo(sessionUser,((AdminToken) authenticationToken).getLoginPwd(),this.getName()); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/DefaultModularRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/DefaultModularRealm.java index cb03454..c7c1c9d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/DefaultModularRealm.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/DefaultModularRealm.java @@ -1,10 +1,10 @@ package cn.estsh.i3plus.core.apiservice.auth.realm; -import cn.estsh.i3plus.core.api.token.AdminToken; -import cn.estsh.i3plus.core.api.token.SaAdminToken; -import cn.estsh.i3plus.core.api.token.UserToken; import cn.estsh.i3plus.core.apiservice.controller.DemoAuthController; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; +import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/SaAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/SaAuthRealm.java index 4e9cd49..7d43bac 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/SaAuthRealm.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/SaAuthRealm.java @@ -1,8 +1,7 @@ package cn.estsh.i3plus.core.apiservice.auth.realm; -import cn.estsh.i3plus.core.api.iservice.busi.ISystemUserService; -import cn.estsh.i3plus.core.api.token.SaAdminToken; -import cn.estsh.i3plus.core.api.token.UserToken; +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -27,7 +26,7 @@ public class SaAuthRealm extends AuthorizingRealm { public static final Logger LOGGER = LoggerFactory.getLogger(SaAuthRealm.class); @Autowired - private ISystemUserService systemUserService; + private ISystemLoginService systemLoginService; public SaAuthRealm(){ //添加支持的token @@ -44,7 +43,7 @@ public class SaAuthRealm extends AuthorizingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { //管理员令牌 - SessionUser sessionUser = systemUserService.queryCheckSaAdminLogin((SaAdminToken) authenticationToken); + SessionUser sessionUser = systemLoginService.queryCheckSaAdminLogin((SaAdminToken) authenticationToken); LOGGER.info("超级管理员令牌验证:{}",sessionUser); return new SimpleAuthenticationInfo(sessionUser,((SaAdminToken) authenticationToken).getLoginPwd(),this.getName()); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/UserAuthRealm.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/UserAuthRealm.java index 3099ce4..5e7d147 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/UserAuthRealm.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/auth/realm/UserAuthRealm.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.apiservice.auth.realm; -import cn.estsh.i3plus.core.api.iservice.busi.ISystemUserService; -import cn.estsh.i3plus.core.api.token.UserToken; +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; +import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationInfo; @@ -17,7 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; /** * @Description : 验证规则 - * @Reference : + * @Reference :- * @Author : alwaysfrin * @CreateDate : 2018-10-13 14:04 * @Modify: @@ -26,7 +26,7 @@ public class UserAuthRealm extends AuthorizingRealm { public static final Logger LOGGER = LoggerFactory.getLogger(UserAuthRealm.class); @Autowired - private ISystemUserService systemUserService; + private ISystemLoginService systemLoginService; public UserAuthRealm(){ //添加支持的token @@ -43,7 +43,7 @@ public class UserAuthRealm extends AuthorizingRealm { @Override protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException { //管理员令牌 - SessionUser sessionUser = systemUserService.queryCheckUserLogin((UserToken) authenticationToken); + SessionUser sessionUser = systemLoginService.queryCheckUserLogin((UserToken) authenticationToken); LOGGER.info("{}-用户令牌验证:{}",this.getName(),sessionUser); return new SimpleAuthenticationInfo(sessionUser,((UserToken) authenticationToken).getLoginPwd(),this.getName()); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ShiroAuthConfiguration.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ShiroAuthConfiguration.java deleted file mode 100644 index 5163000..0000000 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/configuration/ShiroAuthConfiguration.java +++ /dev/null @@ -1,230 +0,0 @@ -package cn.estsh.i3plus.core.apiservice.configuration; - -import cn.estsh.i3plus.core.apiservice.auth.ShiroSessionRedisDaoImpl; -import cn.estsh.i3plus.core.apiservice.auth.filter.AdminFilter; -import cn.estsh.i3plus.core.apiservice.auth.filter.SaAdminFilter; -import cn.estsh.i3plus.core.apiservice.auth.filter.UserFilter; -import cn.estsh.i3plus.core.apiservice.auth.realm.AdminAuthRealm; -import cn.estsh.i3plus.core.apiservice.auth.realm.DefaultModularRealm; -import cn.estsh.i3plus.core.apiservice.auth.realm.SaAuthRealm; -import cn.estsh.i3plus.core.apiservice.auth.realm.UserAuthRealm; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.impp.framework.boot.configuration.RedisConfig; -import org.apache.shiro.authc.pam.ModularRealmAuthenticator; -import org.apache.shiro.cache.Cache; -import org.apache.shiro.cache.CacheManager; -import org.apache.shiro.cache.ehcache.EhCacheManager; -import org.apache.shiro.codec.Base64; -import org.apache.shiro.realm.Realm; -import org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler; -import org.apache.shiro.spring.web.ShiroFilterFactoryBean; -import org.apache.shiro.web.mgt.CookieRememberMeManager; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.apache.shiro.mgt.SecurityManager; -import org.apache.shiro.web.servlet.SimpleCookie; -import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; -import org.springframework.core.annotation.Order; - -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.servlet.Filter; -import java.security.NoSuchAlgorithmException; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -/** - * @Description : shiro权限配置 - * @Reference : - * @Author : alwaysfrin - * @CreateDate : 2018-10-13 18:25 - * @Modify: - **/ -@Configuration -@AutoConfigureAfter(RedisConfig.class) //2类配置,延后加载 -public class ShiroAuthConfiguration { - public static final Logger LOGGER = LoggerFactory.getLogger(ShiroAuthConfiguration.class); - - //三种登陆请求 - public static String USER_LOGIN_URI = "/login"; - public static String USER_FILTER_URI = "/operate/*"; - public static String ADMIN_LOGIN_URI = "/adlogin"; - public static String ADMIN_FILTER_URI = "/adoerate/*"; - public static String SAADMIN_LOGIN_URI = "/salogin"; - public static String SAADMIN_FILTER_URI = "/saoerate/*"; - - @Bean - public AdminAuthRealm adminAuthRealm(){ - return new AdminAuthRealm(); - } - - @Bean - public SaAuthRealm saAuthRealm(){ - return new SaAuthRealm(); - } - - @Bean - public UserAuthRealm userAuthRealm(){ - return new UserAuthRealm(); - } - - public Map supportRealmMap(){ - //支持的授权规则 - Map realms = new HashMap(); - realms.put(CommonEnumUtil.USER_TYPE.USER.getCode(),userAuthRealm()); - realms.put(CommonEnumUtil.USER_TYPE.ADMIN.getCode(),adminAuthRealm()); - realms.put(CommonEnumUtil.USER_TYPE.SA.getCode(),saAuthRealm()); - - return realms; - } - - @Bean - public ModularRealmAuthenticator modularRealmAuthenticator(){ - return new DefaultModularRealm(supportRealmMap()); - } - - @Bean - //@DependsOn("redisUtil") - public SecurityManager securityManager(){ - LOGGER.info("【shiro-加载securityManager】"); - DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); - securityManager.setAuthenticator(modularRealmAuthenticator()); - securityManager.setRealms(supportRealmMap().values()); - securityManager.setCacheManager(getEhCacheManage()); //缓存管理 - securityManager.setSessionManager(getSessionManage()); //会话管理 - //securityManager.setRememberMeManager(getRememberManager()); - return securityManager; - } - - /*@Bean - public CookieRememberMeManager getRememberManager(){ - //rememberme cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位),通过以下代码可以获取 - //KeyGenerator keygen = KeyGenerator.getInstance("AES"); - //SecretKey deskey = keygen.generateKey(); - //System.out.println(Base64.encodeToString(deskey.getEncoded())); - CookieRememberMeManager meManager = new CookieRememberMeManager(); - meManager.setCipherKey(Base64.decode("+vCeyY0qiyO1NdpOX9zX7w==")); - meManager.setCookie(rememberMeCookie()); - return meManager; - } - - *//** - * 获取CipherKey - *//* - public static void main(String[] args){ - KeyGenerator keygen = null; - try { - keygen = KeyGenerator.getInstance("AES"); - } catch (NoSuchAlgorithmException e) { - e.printStackTrace(); - } - SecretKey deskey = keygen.generateKey(); - System.out.println(Base64.encodeToString(deskey.getEncoded())); - } - - @Bean - public SimpleCookie rememberMeCookie(){ - //这个参数是cookie的名称,对应前端的checkbox的name = rememberMe - SimpleCookie simpleCookie = new SimpleCookie("impp_remember_me"); - //如果httyOnly设置为true,则客户端不会暴露给客户端脚本代码,使用HttpOnly cookie有助于减少某些类型的跨站点脚本攻击; - simpleCookie.setHttpOnly(true); - //记住我cookie生效时间,默认30天 ,单位秒:60 * 60 * 24 * 30 - simpleCookie.setMaxAge(259200); - - return simpleCookie; - }*/ - - @Bean - public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) { - ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); - factoryBean.setSecurityManager(securityManager); - - Map filterMap = new HashMap(); - filterMap.put("user_filter", new UserFilter()); - filterMap.put("admin_filter", new AdminFilter()); - filterMap.put("saadmin_filter", new SaAdminFilter()); - factoryBean.setFilters(filterMap); - - Map filterChain = new LinkedHashMap(); - //不需要过滤的路径,直接通过 - filterChain.put(USER_LOGIN_URI, "anon"); - filterChain.put(ADMIN_LOGIN_URI, "anon"); - filterChain.put(SAADMIN_LOGIN_URI, "anon"); - - //需要过滤的路径 - filterChain.put(USER_FILTER_URI, "user_filter"); - filterChain.put(ADMIN_FILTER_URI, "admin_filter"); - filterChain.put(SAADMIN_FILTER_URI, "saadmin_filter"); - - factoryBean.setFilterChainDefinitionMap(filterChain); - - LOGGER.info("【shiro过滤】加载完成..."); - return factoryBean; - } - - /** - * 缓存管理 - * @return - */ - @Bean(name = "ehCacheManager") - public CacheManager getEhCacheManage() { - LOGGER.info("【shiro-加载缓存cacheManager】"); - EhCacheManager em = new EhCacheManager(); - em.setCacheManagerConfigFile("classpath:cache_session.xml"); - return em; - } - - @Bean(name = "sessionManager") - public DefaultWebSessionManager getSessionManage() { - LOGGER.info("【shiro-加载sessionManager】"); - DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); - sessionManager.setSessionValidationScheduler(getExecutorServiceSessionValidationScheduler()); - sessionManager.setSessionValidationSchedulerEnabled(true); - sessionManager.setDeleteInvalidSessions(true); - sessionManager.setSessionIdCookieEnabled(true); - sessionManager.setSessionIdCookie(getSessionIdCookie()); - sessionManager.setSessionDAO(getShiroSessionRedisDaoImpl()); - sessionManager.setGlobalSessionTimeout(30 * 60 * 1000); //30分钟有效期(以sessionDao中的有效时间为准) - - // 可以添加session 创建、删除的监听器 - return sessionManager; - } - - @Bean - public ShiroSessionRedisDaoImpl getShiroSessionRedisDaoImpl(){ - LOGGER.info("【shiro-加载缓存redisSessionManager】"); - ShiroSessionRedisDaoImpl shiroSessionRedisDao = new ShiroSessionRedisDaoImpl(); - - LOGGER.info("【shiro-加载缓存cacheManager】"); - shiroSessionRedisDao.setLocalCacheManager(getEhCacheManage() ); - return shiroSessionRedisDao; - } - - /** - * 授权验证监听任务 - * @return - */ - @Bean(name = "sessionValidationScheduler") - public ExecutorServiceSessionValidationScheduler getExecutorServiceSessionValidationScheduler() { - LOGGER.info("【shiro-加载sessionValidationScheduler】"); - ExecutorServiceSessionValidationScheduler scheduler = new ExecutorServiceSessionValidationScheduler(); - scheduler.setInterval(3 * 60 * 1000); //每3分钟执行一次验证 - return scheduler; - } - - @Bean(name = "sessionIdCookie") - public SimpleCookie getSessionIdCookie() { - LOGGER.info("【shiro-加载sessionIdCookie】"); - SimpleCookie cookie = new SimpleCookie("sid"); - cookie.setHttpOnly(true); - cookie.setMaxAge(-1); - - return cookie; - } -} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/CoreTreeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/CoreTreeController.java new file mode 100644 index 0000000..8f0fe3a --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/CoreTreeController.java @@ -0,0 +1,67 @@ +package cn.estsh.i3plus.core.apiservice.controller; + +import cn.estsh.i3plus.core.api.iservice.busi.ICoreTreeService; +import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.base.common.Pager; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.platform.bean.Department; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; +import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import cn.estsh.impp.framework.boot.util.ImppRedis; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.impp.framework.boot.util.ValidatorBean; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Locale; + +/** + * @Description : 系统资源服务demo + * @Reference : + * @Author : alwaysfrin + * @CreateDate : 2018-09-26 10:34 + * @Modify: + **/ +@RestController +@RequestMapping("/core/tree") +@Api(description="系统服务demo") +public class CoreTreeController { + private static final Logger LOGGER = LoggerFactory.getLogger(CoreTreeController.class); + + @Autowired + private ICoreTreeService coreTreeService; + + @GetMapping(value="/department") + @ApiOperation(value="查询部门树",notes="通过部门主键获取部门树,-1为根节点") + public ResultBean listDepartmentTree(long depParentId) { + try { + Department department = coreTreeService.getDepartmentTreeByParentId(depParentId); + + return ResultBean.success("查询部门树成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultObject(department); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } + +} diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoAuthController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoAuthController.java index 9a0e891..853f73c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoAuthController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoAuthController.java @@ -1,12 +1,10 @@ package cn.estsh.i3plus.core.apiservice.controller; -import cn.estsh.i3plus.core.api.iservice.busi.ISystemUserService; -import cn.estsh.i3plus.core.apiservice.auth.AuthUtil; +import cn.estsh.i3plus.core.api.iservice.base.ISystemLoginService; import cn.estsh.i3plus.platform.common.tool.EncryptTool; -import cn.estsh.i3plus.platform.common.util.CommonConstWords; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; +import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.util.ImppRedis; import io.swagger.annotations.Api; @@ -14,13 +12,10 @@ import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.io.UnsupportedEncodingException; -import java.security.NoSuchAlgorithmException; /** * @Description : @@ -34,11 +29,11 @@ import java.security.NoSuchAlgorithmException; public class DemoAuthController { public static final Logger LOGGER = LoggerFactory.getLogger(DemoAuthController.class); @Autowired - private ISystemUserService systemUserService; + private ISystemLoginService systemLoginService; /** * 缓存 */ - @Resource(name="redisUtil") + @Resource(name="redisCore") private ImppRedis imppRedis; @GetMapping(value="/login") @@ -46,7 +41,7 @@ public class DemoAuthController { public ResultBean login(String loginName,String loginPwd,String languageCode){ LOGGER.info("用户登陆:{},{},{}",loginName,loginPwd,languageCode); try { - SessionUser sUser = systemUserService.queryUserLogin(loginName,loginPwd,languageCode); + SessionUser sUser = systemLoginService.queryUserLogin(loginName,loginPwd,languageCode); LOGGER.info("会员登陆:{}",sUser); AuthUtil.setSessionObject("languageCode",languageCode); @@ -97,7 +92,7 @@ public class DemoAuthController { LOGGER.info("管理员登陆:{},{},{}",loginName,loginPwd,languageCode); try { - systemUserService.queryAdminLogin(loginName,EncryptTool.hexMD5(loginPwd),languageCode); + systemLoginService.queryAdminLogin(loginName,EncryptTool.hexMD5(loginPwd),languageCode); return new ResultBean(true,""); } catch (Exception e) { diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoRestController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoRestController.java index dfb8f86..efb5464 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoRestController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoRestController.java @@ -1,16 +1,11 @@ package cn.estsh.i3plus.core.apiservice.controller; import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueue; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; -import cn.estsh.impp.framework.base.BaseImppException; -import cn.estsh.impp.framework.boot.exception.ImppBusiException; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.i3plus.pojo.mes.MachineFactory; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; -import cn.estsh.impp.framework.boot.fastdfs.FastDFSClient; -import cn.estsh.impp.framework.boot.quartz.ScheduleTool; -import cn.estsh.impp.framework.boot.quartz.TaskInfo; import cn.estsh.impp.framework.boot.util.ImppRedis; import com.rabbitmq.client.Channel; import io.swagger.annotations.Api; @@ -21,15 +16,11 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import java.io.IOException; -import java.util.List; import java.util.Locale; import java.util.concurrent.TimeoutException; @@ -49,8 +40,8 @@ public class DemoRestController { /** * 缓存 */ - @Resource(name="redisUtil") - private ImppRedis imppRedis; + @Resource(name="redisCore") + private ImppRedis redisCore; /** * rabbitMQ队列 @@ -70,8 +61,8 @@ public class DemoRestController { @ApiOperation(value="缓存",notes="放入数据") public ResultBean putCache(){ //放入缓存 - imppRedis.putObject("machineFactory",new MachineFactory("111","nnnn")); - imppRedis.putObject("wms","123123123"); + redisCore.putObject("machineFactory",new MachineFactory("111","nnnn")); + redisCore.putObject("wms","123123123"); return new ResultBean(true,"已放入缓存"); } @@ -79,9 +70,9 @@ public class DemoRestController { @GetMapping(value="/get-cache") @ApiOperation(value="缓存",notes="获取数据") public ResultBean getCache(){ - MachineFactory mf = (MachineFactory) imppRedis.getObject("machineFactory"); + MachineFactory mf = (MachineFactory) redisCore.getObject("machineFactory"); System.out.println("1===== " + mf); - System.out.println("2===== " + imppRedis.getObject("wms")); + System.out.println("2===== " + redisCore.getObject("wms")); return new ResultBean(true,mf); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java index 702471d..5200db6 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoScheduleController.java @@ -1,27 +1,18 @@ package cn.estsh.i3plus.core.apiservice.controller; -import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueue; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; +import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.quartz.ScheduleTool; import cn.estsh.impp.framework.boot.quartz.TaskInfo; -import cn.estsh.impp.framework.boot.util.ImppRedis; -import com.rabbitmq.client.Channel; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.io.IOException; import java.util.List; -import java.util.concurrent.TimeoutException; /** * @Description : diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoSystemController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoSystemController.java index 8550c3d..eaefbef 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoSystemController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/DemoSystemController.java @@ -1,42 +1,42 @@ package cn.estsh.i3plus.core.apiservice.controller; import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService; -import cn.estsh.i3plus.core.apiservice.mq.I3CoreQueue; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; +import cn.estsh.i3plus.platform.common.convert.ConvertBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; +import cn.estsh.i3plus.pojo.base.bean.ListPager; +import cn.estsh.i3plus.pojo.platform.bean.SessionUser; +import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource; -import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; import cn.estsh.impp.framework.boot.util.ImppRedis; -import com.rabbitmq.client.Channel; +import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.amqp.core.Message; -import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.io.IOException; import java.util.Locale; -import java.util.concurrent.TimeoutException; /** - * @Description : + * @Description : 系统资源服务demo * @Reference : * @Author : alwaysfrin * @CreateDate : 2018-09-26 10:34 * @Modify: **/ @RestController -@RequestMapping("/demo-system") +@RequestMapping("/demo-system-service") @Api(description="系统服务demo") public class DemoSystemController { private static final Logger LOGGER = LoggerFactory.getLogger(DemoSystemController.class); @@ -44,8 +44,8 @@ public class DemoSystemController { /** * 缓存 */ - @Resource(name="redisUtil") - private ImppRedis imppRedis; + @Resource(name="redisCore") + private ImppRedis redisCore; /** * rabbitMQ队列 @@ -56,41 +56,160 @@ public class DemoSystemController { @Autowired private ISystemResourceService systemResourceService; - @PutMapping(value="/addlanguage") - @ApiOperation(value="添加语言") - public ResultBean addlanguage(SysLocaleLanguage lang) { - systemResourceService.saveSysLocaleLanguage(lang); - return new ResultBean(true,"操作成功"); + @PutMapping(value="/language/insert") + @ApiOperation(value="添加语言",notes = "添加系统语言,可用于国际化") + public ResultBean insertLanguage(SysLocaleLanguage lang) { + try { + //登陆用户 + SessionUser user = AuthUtil.getSessionUser(); + + //条件验证 + ValidatorBean.beginValid(lang) + .notNull("languageName",lang.getLanguageName()) + .notNull("languageCode",lang.getLanguageCode()); + + //新增初始化 + ConvertBean.modelInitialize(lang,user); + + systemResourceService.insertSysLocaleLanguage(lang); + return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()).build(); + }catch(Exception e){ + return ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } } - @PutMapping(value="/listlang") - @ApiOperation(value="查询语言") - public ResultBean listlang(SysLocaleLanguage lang) { - return new ResultBean(true,"操作成功",systemResourceService.listSysLocaleLanguage(lang)); + @PutMapping(value="/language/update") + @ApiOperation(value="修改语言",notes = "修改系统语言,可用于国际化") + public ResultBean updateLanguage(SysLocaleLanguage lang) { + try { + //登陆用户 + SessionUser user = AuthUtil.getSessionUser(); + + //条件验证 + ValidatorBean.beginValid(lang) + .notNull("languageName",lang.getLanguageName()) + .notNull("languageCode",lang.getLanguageCode()); + + //修改条件 + ConvertBean.modelUpdate(lang,user); + systemResourceService.updateSysLocaleLanguage(lang); + return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()).build(); + }catch(Exception e){ + return ResultBean.fail(e.getMessage()).setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } } - @PutMapping(value="/addres") - @ApiOperation(value="添加资源") - public ResultBean addres(SysLocaleResource res) { - systemResourceService.saveSysLocaleResource(res); - return new ResultBean(true,"操作成功"); + @PutMapping(value="/language/query") + @ApiOperation(value="查询语言",notes = "添加系统语言,可用于国际化") + public ResultBean queryLanguage(SysLocaleLanguage lang,Pager pager) { + try { + ListPager listPager = systemResourceService.listSysLocaleLanguageByPager(lang,pager); + return ResultBean.success("操作成功").setListPager(listPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } } - @PutMapping(value="/listres") - @ApiOperation(value="查询资源") - public ResultBean listres(SysLocaleResource res) { - return new ResultBean(true,"操作成功",systemResourceService.listSysLocaleResource(res)); + @PutMapping(value="/resource/insert") + @ApiOperation(value="添加资源",notes = "添加系统语言,可用于国际化") + public ResultBean insertResource(SysLocaleResource res) { + try { + //登陆用户 + SessionUser user = AuthUtil.getSessionUser(); + + //条件验证 + ValidatorBean.beginValid(res) + .notNull("resourceKey",res.getResourceKey()) + .notNull("resourceValue",res.getResourceValue()); + + //新增初始化 + ConvertBean.modelInitialize(res,user); + systemResourceService.insertSysLocaleResource(res); + return ResultBean.success("操作成功") + .setResultObject(res) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } + + @PutMapping(value="/resource/query") + @ApiOperation(value="查询资源",notes = "分页查询系统资源") + public ResultBean queryResource(SysLocaleResource res,Pager pager) { + try{ + ListPager listPager = systemResourceService.listSysLocaleResourceByPager(res,pager); + return ResultBean.success("操作成功") + .setListPager(listPager) + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } } - @GetMapping(value="/getlocaleresource") + @GetMapping(value="/locale-resource/get") @ApiOperation(value="语言资源匹配",notes="资源配置文件及国际化") - public ResultBean getlocaleresource(int resourceType,String langCode,String resKey) { - Locale locale = LocaleContextHolder.getLocale(); - System.out.println("当前语言:"+locale.getLanguage() + ",国家:" + locale.getCountry()); + public ResultBean getLocaleResource(int resourceType,String langCode,String resKey) { + try { + ValidatorBean.checkNotZero(resourceType,"请选择资源类型。"); + ValidatorBean.checkNotNull(langCode,"请输入语言编码"); + ValidatorBean.checkNotNull(resKey,"请输入资源编码"); + Locale locale = LocaleContextHolder.getLocale(); + LOGGER.info("当前语言:" + locale.getLanguage() + ",国家:" + locale.getCountry()); - SysLocaleResource res = systemResourceService.getSysLocaleResourceByLanguage(resourceType,langCode,resKey); - System.out.println("获取的资源:" + res); + SysLocaleResource res = systemResourceService.getSysLocaleResourceByLanguage(resourceType, langCode, resKey); + LOGGER.info("获取的资源:" + res); - return new ResultBean(true,"操作成功",res); + return ResultBean.success("保存成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultObject(res); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } } + + @DeleteMapping (value="/locale-resource/delete") + @ApiOperation(value="删除资源",notes="批量删除资源") + public ResultBean deleteLocaleResource(String[] resourceIds) { + try { + if(resourceIds.length == 0){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("请选择需要删除的资源。") + .build(); + } + systemResourceService.deleteSysLocaleResourceByIds(resourceIds); + + return ResultBean.success().setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep.getErrorShow()); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SimpleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SimpleController.java index 0c5ea4b..5d8a5f0 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SimpleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/SimpleController.java @@ -1,8 +1,8 @@ package cn.estsh.i3plus.core.apiservice.controller.base; import cn.estsh.i3plus.core.api.iservice.base.IDataSimpleService; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; +import cn.estsh.impp.framework.boot.util.ResultBean; +import cn.estsh.i3plus.pojo.mes.MachineFactory; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/FactoryStoreController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/FactoryStoreController.java index c509afe..373f58b 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/FactoryStoreController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/FactoryStoreController.java @@ -1,7 +1,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.IDataMoreService; -import cn.estsh.i3plus.pojo.model.busi.ResultBean; +import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.i3plus.pojo.wms.bean.FactoryStore; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/IMachineFactoryDao.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/IMachineFactoryDao.java index abb4d11..87cd346 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/IMachineFactoryDao.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/dao/IMachineFactoryDao.java @@ -1,6 +1,6 @@ package cn.estsh.i3plus.core.apiservice.dao; -import cn.estsh.i3plus.pojo.factory.bean.MachineFactory; +import cn.estsh.i3plus.pojo.mes.MachineFactory; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java index 52d2248..897dbeb 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/listener/SysResourceBindleListener.java @@ -2,16 +2,14 @@ package cn.estsh.i3plus.core.apiservice.listener; import cn.estsh.i3plus.core.api.iservice.busi.ISystemResourceService; import cn.estsh.i3plus.core.apiservice.util.ConstWords; -import cn.estsh.i3plus.platform.common.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleLanguage; import cn.estsh.i3plus.pojo.platform.bean.SysLocaleResource; -import cn.estsh.impp.framework.boot.configuration.SwaggerConfig; import cn.estsh.impp.framework.boot.util.ImppRedis; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; -import org.springframework.context.annotation.Bean; import org.springframework.context.event.ContextRefreshedEvent; import javax.annotation.Resource; @@ -31,8 +29,8 @@ public class SysResourceBindleListener implements ApplicationListener listSysLocaleLanguageByPager(SysLocaleLanguage lang, Pager pager) { + public ListPager listSysLocaleLanguageByPager(SysLocaleLanguage lang, Pager pager) { if(lang == null) { pager = PagerHelper.getPager(pager, sysLocaleLanguageRDao.listCount()); - return sysLocaleLanguageRDao.listPager(pager); + return new ListPager(sysLocaleLanguageRDao.listPager(pager),pager); }else { - String[] params = new String[]{"languageCode", "languageName", "isDefault"}; - Object[] values = new Object[]{lang.getLanguageCode(), lang.getLanguageName(), lang.getIsDefault()}; - - pager = PagerHelper.getPager(pager, sysLocaleLanguageRDao.findByPropertyCount(params,values)); - return sysLocaleLanguageRDao.findByPropertyPage(params,values,"order by id asc",pager); + String hqlPack = CoreHqlPack.packHqlSysLocaleLanguage(lang); + pager = PagerHelper.getPager(pager, sysLocaleLanguageRDao.findByHqlWhereCount(hqlPack)); + return new ListPager(sysLocaleLanguageRDao.findByHqlWherePage(hqlPack + lang.getOrderByParam(),pager),pager); } } @Override - public SysLocaleResource saveSysLocaleResource(SysLocaleResource res) { + public SysLocaleResource insertSysLocaleResource(SysLocaleResource res) { return sysLocaleResourceRDao.insert(res); } @@ -87,17 +86,24 @@ public class SystemResourceService implements ISystemResourceService { } @Override - public List listSysLocaleResourceByPager(SysLocaleResource res, Pager pager) { + public void deleteSysLocaleResourceByIds(String[] ids){ + for(String idStr : ids){ + sysLocaleResourceRDao.deleteById(Long.parseLong(idStr)); + } + } + + @Override + public ListPager listSysLocaleResourceByPager(SysLocaleResource res, Pager pager) { if(res == null){ + //不传入实体对象,查询所有 int count = sysLocaleResourceRDao.listCount(); pager = PagerHelper.getPager(pager,count); - return sysLocaleResourceRDao.listPager(pager); + return new ListPager(sysLocaleResourceRDao.listPager(pager),pager); }else { - String[] params = new String[]{"resourceType", "languageCode", "resourceKey", "resourceValue", "isSystem", "isDefault"}; - Object[] values = new Object[]{res.getResourceType(), res.getLanguageCode(), res.getResourceKey(), res.getResourceValue(), res.getIsSystem(), res.getIsDefault()}; - - pager = PagerHelper.getPager(pager,sysLocaleResourceRDao.findByPropertyCount(params,values)); - return sysLocaleResourceRDao.findByPropertyPage(params,values,"order by id asc", pager); + //生成hql查询语句 + String hqlPack = CoreHqlPack.packHqlSysLocaleResource(res); + pager = PagerHelper.getPager(pager,sysLocaleResourceRDao.findByHqlWhereCount(hqlPack)); + return new ListPager(sysLocaleResourceRDao.findByHqlWherePage(hqlPack + res.orderBy(), pager),pager); } } diff --git a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties index d14d31a..1b8c5bf 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application-dev.properties @@ -1,3 +1,17 @@ +#û½· +filter.shiro.user.loginuri = /login +#ϵͳԱ½· +filter.shiro.admin.loginuri = /salogin +#άԱ½· +filter.shiro.saadmin.loginuri = /salogin + +#ûȨ· +filter.shiro.user.filteruri = /operate/* +#ûȨ· +filter.shiro.admin.filteruri = /adoperate/* +#ûȨ· +filter.shiro.saadmin.filteruri = /saoperate/* + ################ Դ ################ # mysql #spring.datasource.driver-class-name=com.mysql.jdbc.Driver diff --git a/modules/i3plus-core-apiservice/src/main/resources/application.properties b/modules/i3plus-core-apiservice/src/main/resources/application.properties index 15285c9..70b4d92 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/application.properties +++ b/modules/i3plus-core-apiservice/src/main/resources/application.properties @@ -1,7 +1,7 @@ #Ŀ spring.application.name=${project.name} #Ŀ˿ -server.port=8080 +server.port=8081 #ʹ spring.profiles.active=dev diff --git a/modules/i3plus-core-apiservice/src/main/resources/banner.txt b/modules/i3plus-core-apiservice/src/main/resources/banner.txt new file mode 100644 index 0000000..de58f3d --- /dev/null +++ b/modules/i3plus-core-apiservice/src/main/resources/banner.txt @@ -0,0 +1,15 @@ + ______ _____ _______ _____ _ _ _____ ____ _____ _ + | ____|/ ____|__ __/ ____| | | | |_ _|___ \| __ \| | + | |__ | (___ | | | (___ | |__| | | | __) | |__) | |_ _ ___ + | __| \___ \ | | \___ \| __ | | | |__ <| ___/| | | | / __| + | |____ ____) | | | ____) | | | | _ _| |_ ___) | | | | |_| \__ \ + |______|_____/ |_| |_____/|_| |_| (_)_____|____/|_| |_|\__,_|___/ + _____ __ __ _____ _____ _ _ __ + |_ _| \/ | __ \| __ \| | | | / _| + | | | \ / | |__) | |__) | | __ _| |_| |_ ___ _ __ _ __ ___ + | | | |\/| | ___/| ___/| |/ _` | __| _/ _ \| '__| '_ ` _ \ + _| |_| | | | | | | | | (_| | |_| || (_) | | | | | | | | + |_____|_| |_|_| |_| |_|\__,_|\__|_| \___/|_| |_| |_| |_| +------------------------------------------------------------------->>> + ::::: CORE of i3plus Impp framework :::: (v1.0.0.Build) +------------------------------------------------------------------->>> >>> diff --git a/modules/i3plus-core-apiservice/src/main/resources/log4j2.xml b/modules/i3plus-core-apiservice/src/main/resources/log4j2.xml index 75208ea..0ac324c 100644 --- a/modules/i3plus-core-apiservice/src/main/resources/log4j2.xml +++ b/modules/i3plus-core-apiservice/src/main/resources/log4j2.xml @@ -2,7 +2,8 @@ - %d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n + + [%-5p] %d{yyyy-MM-dd HH:mm:ss-SSS} %l:%m%n diff --git a/pom.xml b/pom.xml index 11b707a..6d77ff9 100644 --- a/pom.xml +++ b/pom.xml @@ -47,11 +47,6 @@ i3plus.pojo - i3plus-pojo-factory - ${project.version} - - - i3plus.pojo i3plus-pojo-wms ${project.version} @@ -66,6 +61,12 @@ ${project.version} + + i3plus.pojo + i3plus-pojo-model + ${project.version} + + i3plus.core @@ -109,6 +110,11 @@ shiro-spring 1.4.0 + + org.apache.shiro + shiro-ehcache + 1.4.0 +