diff --git a/LICENSE b/LICENSE
index eab32636553f8a24128ae146944d5c32009f2db0..ee7063040a8e1c2c3dac073faacb558aa601307d 100644
--- a/LICENSE
+++ b/LICENSE
@@ -176,7 +176,7 @@ recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
- Copyright 2017 Mr.AG
+ Copyright 2017 WangHaoBin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/README.md b/README.md
index 7c765e7386400fa09ff6e8558ee8b2b7c1edca3c..ce75576f6edd256819f3c5434049fb1bad5b004f 100644
--- a/README.md
+++ b/README.md
@@ -14,17 +14,19 @@ http://43.248.136.159:9999/
## [老A专属优惠链接](https://www.chanmir.com/?u=45433C),优惠卷:2B3158
+
-### 阿里云服务器太贵?送你阿里云神卷,优惠最高达20%
-https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l9eb&utm_source=ryr8l9eb
-
+---------
+# 更新日志
+### 2017年11月17日 v2.2-SNARSHOT
+- ace-admin集成`ace-cache`
+- ace-auth集成`rabbitmq`
----------
# 模块说明

@@ -49,14 +51,14 @@ https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ryr8l
下载完后端代码后,记得先安装`lombok插件`,否则你的IDE会报代码缺失。
## 后端工程启动
### 环境须知
-- mysql数据库一个,redis数据库一个
+- mysql一个,redis一个,rabbitmq一个
- jdk1.8
- IDE插件一个,`lombok插件`,具体百度即可
### 运行步骤
- 运行数据库脚本:依次运行数据库:ace-admin/db/init.sql、ace-auth-server/db/init.sql
- 修改配置数据库配置:ace-admin/src/main/resources/application.yml、ace-gate/src/main/resources/application.yml
-- 依次运行main类:CenterBootstrap(ace-center)、ConfigServerBootstrap(ace-config)、GateBootstrap(ace-gate)、AdminBootstrap(ace-admin)、AuthBootstrap(ace-auth-server)
+- 按`顺序`运行main类:CenterBootstrap(ace-center)、ConfigServerBootstrap(ace-config)、AdminBootstrap(ace-admin)、AuthBootstrap(ace-auth-server)、GateBootstrap(ace-gate)
### 项目结构
```
diff --git a/ace-admin/pom.xml b/ace-admin/pom.xml
index 9e9f1d1f8ffb316c6d127e54ce068c13d8d7833c..05b5bdda96c810f72e236d7dc13be80b40909c66 100644
--- a/ace-admin/pom.xml
+++ b/ace-admin/pom.xml
@@ -157,6 +157,11 @@
ace-auth-client
1.0-SNAPSHOT
+
+ com.github.wxiaoqi
+ ace-cache
+ 0.0.2
+
ace-admin
diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java
index 70297eb50e5c4033134e9b053a9ed51bf2e59a99..063157281854703d6b1030a0c4434841c4a77399 100644
--- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java
+++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/AdminBootstrap.java
@@ -1,5 +1,6 @@
package com.github.wxiaoqi.security.admin;
+import com.ace.cache.EnableAceCache;
import com.github.wxiaoqi.security.auth.client.EnableAceAuthClient;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -8,6 +9,7 @@ import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* ${DESCRIPTION}
@@ -22,6 +24,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@EnableAceAuthClient
@ServletComponentScan("com.github.wxiaoqi.security.admin.config.druid")
+@EnableAceCache
+@EnableTransactionManagement
public class AdminBootstrap {
public static void main(String[] args) {
new SpringApplicationBuilder(AdminBootstrap.class).web(true).run(args); }
diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java
index 9e98aa53ada3f93961c50d3d3c05a79bdcf3cbfe..85fca33a93d9ac7e89179058a301a034f8f2cf86 100644
--- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java
+++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/ElementBiz.java
@@ -1,9 +1,12 @@
package com.github.wxiaoqi.security.admin.biz;
+import com.ace.cache.annotation.Cache;
+import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.entity.Element;
import com.github.wxiaoqi.security.admin.mapper.ElementMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -14,11 +17,31 @@ import java.util.List;
* @create 2017-06-23 20:27
*/
@Service
+@Transactional(rollbackFor = Exception.class)
public class ElementBiz extends BaseBiz {
+ @Cache(key="permission:ele:u{1}")
public List getAuthorityElementByUserId(String userId){
return mapper.selectAuthorityElementByUserId(userId);
}
public List getAuthorityElementByUserId(String userId,String menuId){
return mapper.selectAuthorityMenuElementByUserId(userId,menuId);
}
+
+ @Override
+ @Cache(key="permission:ele")
+ public List selectListAll() {
+ return super.selectListAll();
+ }
+
+ @Override
+ @CacheClear(keys={"permission:ele","permission"})
+ public void insertSelective(Element entity) {
+ super.insertSelective(entity);
+ }
+
+ @Override
+ @CacheClear(keys={"permission:ele","permission"})
+ public void updateSelectiveById(Element entity) {
+ super.updateSelectiveById(entity);
+ }
}
diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GateLogBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GateLogBiz.java
index 4cf32119a313876654a10947ca6a0852398f073b..ad33f59437f798f2283c5724090612c1e08af201 100644
--- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GateLogBiz.java
+++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GateLogBiz.java
@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.entity.GateLog;
import com.github.wxiaoqi.security.admin.mapper.GateLogMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
/**
* ${DESCRIPTION}
@@ -12,6 +13,7 @@ import org.springframework.stereotype.Service;
* @create 2017-07-01 14:36
*/
@Service
+@Transactional(rollbackFor = Exception.class)
public class GateLogBiz extends BaseBiz {
@Override
diff --git a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java
index 162077b8f7513ddcdfbc0f1289a0494957c74d2e..3bd60736d86d3c6cbc6806a5ea80ac97977fc0aa 100644
--- a/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java
+++ b/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/GroupBiz.java
@@ -1,19 +1,21 @@
package com.github.wxiaoqi.security.admin.biz;
+import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.constant.AdminCommonConstant;
-import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.entity.Group;
+import com.github.wxiaoqi.security.admin.entity.Menu;
+import com.github.wxiaoqi.security.admin.entity.ResourceAuthority;
import com.github.wxiaoqi.security.admin.mapper.GroupMapper;
import com.github.wxiaoqi.security.admin.mapper.MenuMapper;
import com.github.wxiaoqi.security.admin.mapper.ResourceAuthorityMapper;
import com.github.wxiaoqi.security.admin.mapper.UserMapper;
import com.github.wxiaoqi.security.admin.vo.AuthorityMenuTree;
import com.github.wxiaoqi.security.admin.vo.GroupUsers;
+import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-
-import com.github.wxiaoqi.security.common.biz.BaseBiz;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.*;
@@ -25,110 +27,119 @@ import java.util.*;
* @create 2017-06-12 8:48
*/
@Service
-public class GroupBiz extends BaseBiz{
+@Transactional(rollbackFor = Exception.class)
+public class GroupBiz extends BaseBiz {
@Autowired
private UserMapper userMapper;
@Autowired
private ResourceAuthorityMapper resourceAuthorityMapper;
@Autowired
private MenuMapper menuMapper;
+
@Override
public void insertSelective(Group entity) {
- if(AdminCommonConstant.ROOT == entity.getParentId()){
- entity.setPath("/"+entity.getCode());
- }else{
+ if (AdminCommonConstant.ROOT == entity.getParentId()) {
+ entity.setPath("/" + entity.getCode());
+ } else {
Group parent = this.selectById(entity.getParentId());
- entity.setPath(parent.getPath()+"/"+entity.getCode());
+ entity.setPath(parent.getPath() + "/" + entity.getCode());
}
super.insertSelective(entity);
}
@Override
public void updateById(Group entity) {
- if(AdminCommonConstant.ROOT == entity.getParentId()){
- entity.setPath("/"+entity.getCode());
- }else{
+ if (AdminCommonConstant.ROOT == entity.getParentId()) {
+ entity.setPath("/" + entity.getCode());
+ } else {
Group parent = this.selectById(entity.getParentId());
- entity.setPath(parent.getPath()+"/"+entity.getCode());
+ entity.setPath(parent.getPath() + "/" + entity.getCode());
}
super.updateById(entity);
}
/**
* 获取群组关联用户
+ *
* @param groupId
* @return
*/
public GroupUsers getGroupUsers(int groupId) {
- return new GroupUsers(userMapper.selectMemberByGroupId(groupId),userMapper.selectLeaderByGroupId(groupId));
+ return new GroupUsers(userMapper.selectMemberByGroupId(groupId), userMapper.selectLeaderByGroupId(groupId));
}
/**
* 变更群主所分配用户
+ *
* @param groupId
* @param members
* @param leaders
*/
- public void modifyGroupUsers(int groupId, String members, String leaders){
+ @CacheClear(pre = "permission")
+ public void modifyGroupUsers(int groupId, String members, String leaders) {
mapper.deleteGroupLeadersById(groupId);
mapper.deleteGroupMembersById(groupId);
- if(!StringUtils.isEmpty(members)){
+ if (!StringUtils.isEmpty(members)) {
String[] mem = members.split(",");
- for(String m:mem){
- mapper.insertGroupMembersById(groupId,Integer.parseInt(m));
+ for (String m : mem) {
+ mapper.insertGroupMembersById(groupId, Integer.parseInt(m));
}
}
- if(!StringUtils.isEmpty(leaders)){
+ if (!StringUtils.isEmpty(leaders)) {
String[] mem = leaders.split(",");
- for(String m:mem){
- mapper.insertGroupLeadersById(groupId,Integer.parseInt(m));
+ for (String m : mem) {
+ mapper.insertGroupLeadersById(groupId, Integer.parseInt(m));
}
}
}
/**
* 变更群组关联的菜单
+ *
* @param groupId
* @param menus
*/
- public void modifyAuthorityMenu(int groupId, String[] menus){
- resourceAuthorityMapper.deleteByAuthorityIdAndResourceType(groupId+"", AdminCommonConstant.RESOURCE_TYPE_MENU);
+ @CacheClear(pre = "permission:menu")
+ public void modifyAuthorityMenu(int groupId, String[] menus) {
+ resourceAuthorityMapper.deleteByAuthorityIdAndResourceType(groupId + "", AdminCommonConstant.RESOURCE_TYPE_MENU);
List