diff --git a/README.md b/README.md
index 961fd5a2a2c7ce7824adffd5760e40fc714695ab..c1c63742ef2c4c706509f8e4f0a2550abef0ec2d 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,18 @@ AG-Admin是国内首个基于`Spring Cloud`微`服务`化`开发平台`,具有
- 课程地址:
http://edu.csdn.net/course/detail/5840
-QQ群号:169824183
+### QQ群号:169824183
+
+## AG线上最新体验地址,感谢【[千铭云](https://www.chanmir.com/?u=45433C)】赞助的服务器。
+
+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
+

@@ -15,6 +26,13 @@ QQ群号:169824183
---------
+# 更新日志
+### 2017年11月17日 v2.2-SNARSHOT
+
+- ace-admin集成`ace-cache`
+- ace-auth集成`rabbitmq`
+
+
# 模块说明

@@ -38,14 +56,14 @@ QQ群号:169824183
下载完后端代码后,记得先安装`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 8b7bad5eeb5fc9b52dd46f9b432cdbdd53f2730e..a6198164447fcdde51051940d7af99930ef89d7d 100644
--- a/ace-admin/pom.xml
+++ b/ace-admin/pom.xml
@@ -157,6 +157,21 @@
ace-auth-client
1.0-SNAPSHOT
+
+ com.github.wxiaoqi
+ ace-cache
+ 0.0.2-SNAPSHOT
+
+
+ org.webjars
+ jquery
+ 2.1.4
+
+
+ org.webjars
+ bootstrap
+ 3.1.0
+
ace-admin
@@ -197,30 +212,30 @@
1.8
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ com.spotify
+ docker-maven-plugin
+ ${docker.plugin.version}
+
+
+ package
+
+ build
+
+
+
+
+ ${docker.image.prefix}/${project.build.finalName}
+ ${project.basedir}/src/main/docker
+
+
+ /
+ ${project.build.directory}
+ ${project.build.finalName}.jar
+
+
+
+
\ No newline at end of file
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..4b927c7c691cab43709bf4e3da8faa0d64a91e18 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
@@ -7,6 +7,8 @@ import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
@@ -22,6 +24,8 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@EnableScheduling
@EnableAceAuthClient
@ServletComponentScan("com.github.wxiaoqi.security.admin.config.druid")
+@ComponentScan({"com.ace.cache","com.github.wxiaoqi.security.admin"})
+@EnableAspectJAutoProxy
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..c44e4a97e30309d275917be273ecc642d083b193 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,5 +1,7 @@
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;
@@ -15,10 +17,29 @@ import java.util.List;
*/
@Service
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(pre="permission:ele")
+ public void insertSelective(Element entity) {
+ super.insertSelective(entity);
+ }
+
+ @Override
+ @CacheClear(pre="permission:ele")
+ public void updateSelectiveById(Element entity) {
+ super.updateSelectiveById(entity);
+ }
}
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..eb60a639418b40769eafa33212433417a0e167cf 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,20 @@
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.util.StringUtils;
import java.util.*;
@@ -25,110 +26,118 @@ import java.util.*;
* @create 2017-06-12 8:48
*/
@Service
-public class GroupBiz extends BaseBiz{
+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