├── .gitignore
├── README.md
├── clouddo-admin
├── clouddo.sql
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── bootdo
│ │ │ └── clouddoadmin
│ │ │ ├── ClouddoAdminApplication.java
│ │ │ ├── config
│ │ │ ├── AuthConfig.java
│ │ │ └── WebSocketConfig.java
│ │ │ ├── constants
│ │ │ └── Constants.java
│ │ │ ├── controller
│ │ │ ├── BaseController.java
│ │ │ ├── DeptController.java
│ │ │ ├── LoginController.java
│ │ │ ├── MenuController.java
│ │ │ ├── RoleController.java
│ │ │ ├── TestController.java
│ │ │ └── UserController.java
│ │ │ ├── dao
│ │ │ ├── DeptDao.java
│ │ │ ├── MenuDao.java
│ │ │ ├── RoleDao.java
│ │ │ ├── RoleMenuDao.java
│ │ │ ├── TokenDao.java
│ │ │ ├── TokenPrinciple.java
│ │ │ ├── UserDao.java
│ │ │ └── UserRoleDao.java
│ │ │ ├── domain
│ │ │ ├── DeptDO.java
│ │ │ ├── MenuDO.java
│ │ │ ├── RoleDO.java
│ │ │ ├── RoleMenuDO.java
│ │ │ ├── TokenDO.java
│ │ │ ├── Tree.java
│ │ │ ├── UserDO.java
│ │ │ └── UserRoleDO.java
│ │ │ ├── dto
│ │ │ ├── UserDTO.java
│ │ │ ├── UserRoleDTO.java
│ │ │ └── do2dto
│ │ │ │ └── UserConvert.java
│ │ │ ├── rpc
│ │ │ └── TestRpc.java
│ │ │ ├── service
│ │ │ ├── DeptService.java
│ │ │ ├── MenuService.java
│ │ │ ├── RoleService.java
│ │ │ ├── TokenService.java
│ │ │ ├── UserService.java
│ │ │ └── impl
│ │ │ │ ├── DeptServiceImpl.java
│ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ ├── TokenServiceImpl.java
│ │ │ │ └── UserServiceImpl.java
│ │ │ ├── task
│ │ │ └── DemoTask.java
│ │ │ ├── utils
│ │ │ ├── BuildTree.java
│ │ │ ├── JwtUtils.java
│ │ │ ├── MD5Utils.java
│ │ │ └── TokenUtils.java
│ │ │ └── vo
│ │ │ ├── UserToken.java
│ │ │ └── UserVO.java
│ └── resources
│ │ ├── application.yml
│ │ ├── mapper
│ │ ├── DeptMapper.xml
│ │ ├── MenuMapper.xml
│ │ ├── RoleMapper.xml
│ │ ├── RoleMenuMapper.xml
│ │ ├── UserMapper.xml
│ │ └── UserRoleMapper.xml
│ │ └── spring-ehcache.xml
│ └── test
│ └── java
│ └── com
│ └── bootdo
│ └── clouddoadmin
│ └── ClouddoAdminApplicationTests.java
├── clouddo-base
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── bootdo
│ │ │ └── clouddobase
│ │ │ ├── ClouddoBaseApplication.java
│ │ │ ├── controller
│ │ │ └── LogController.java
│ │ │ ├── dao
│ │ │ └── LogDao.java
│ │ │ └── service
│ │ │ ├── LogService.java
│ │ │ └── impl
│ │ │ └── LogServiceImpl.java
│ └── resources
│ │ ├── application.yml
│ │ ├── mapper
│ │ └── LogMapper.xml
│ │ └── mybatis
│ │ └── LogMapper.xml
│ └── test
│ └── java
│ └── com
│ └── bootdo
│ └── clouddobase
│ └── ClouddoLogApplicationTests.java
├── clouddo-cms
├── pom.xml
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── bootdo
│ │ └── clouddocms
│ │ ├── ClouddoCmsApplication.java
│ │ ├── config
│ │ ├── AuthConfig.java
│ │ └── WebConfig.java
│ │ ├── controller
│ │ └── FileController.java
│ │ ├── dao
│ │ └── FileDao.java
│ │ ├── domain
│ │ └── FileDO.java
│ │ ├── dto
│ │ ├── FileDTO.java
│ │ └── convert
│ │ │ └── FileConvert.java
│ │ └── service
│ │ ├── FileService.java
│ │ └── impl
│ │ └── FileServiceImpl.java
│ └── resources
│ ├── application.yml
│ └── mapper
│ └── FileMapper.xml
├── clouddo-common
├── pom.xml
└── src
│ ├── main
│ └── java
│ │ └── com
│ │ └── bootdo
│ │ └── clouddocommon
│ │ ├── annotation
│ │ └── Log.java
│ │ ├── aspect
│ │ ├── LogAspect.java
│ │ └── WebLogAspect.java
│ │ ├── config
│ │ └── AsyncConfig.java
│ │ ├── constants
│ │ └── CommonConstants.java
│ │ ├── context
│ │ └── FilterContextHandler.java
│ │ ├── dto
│ │ ├── BTree.java
│ │ ├── LogDO.java
│ │ ├── LoginDTO.java
│ │ ├── LoginUserDTO.java
│ │ ├── MenuDTO.java
│ │ ├── RouterDTO.java
│ │ ├── UserToken.java
│ │ └── do2dto
│ │ │ └── MenuConvert.java
│ │ ├── exception
│ │ └── CommonExceptionHandler.java
│ │ ├── filter
│ │ └── ContextFilter.java
│ │ ├── intercepter
│ │ ├── AuthIntercepter.java
│ │ └── FeignIntercepter.java
│ │ ├── service
│ │ └── LogRpcService.java
│ │ └── utils
│ │ ├── FileUtils.java
│ │ ├── HttpContextUtils.java
│ │ ├── HttpServletUtils.java
│ │ ├── IPUtils.java
│ │ ├── JSONUtils.java
│ │ ├── JwtUtils.java
│ │ ├── PageUtils.java
│ │ ├── Query.java
│ │ ├── R.java
│ │ └── StringUtils.java
│ └── test
│ └── java
│ └── com
│ └── bootdo
│ └── clouddocommon
│ └── ClouddoCommonApplicationTests.java
├── clouddo-server
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── bootdo
│ │ │ └── clouddoserver
│ │ │ └── ClouddoServerApplication.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── bootdo
│ └── clouddoserver
│ └── ClouddoServerApplicationTests.java
├── clouddo-zuul
├── pom.xml
└── src
│ ├── main
│ ├── java
│ │ └── com
│ │ │ └── bootdo
│ │ │ └── clouddozuul
│ │ │ ├── ClouddoZuulApplication.java
│ │ │ ├── controller
│ │ │ └── LoginController.java
│ │ │ ├── filter
│ │ │ └── AccessFilter.java
│ │ │ └── prc
│ │ │ └── admin
│ │ │ └── MenuService.java
│ └── resources
│ │ └── application.yml
│ └── test
│ └── java
│ └── com
│ └── bootdo
│ └── clouddozuul
│ └── ClouddoZuulApplicationTests.java
└── pom.xml
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | /.idea/
3 | /clouddo.iml
4 | /clouddo-*/clouddo-*.iml
5 | /clouddo-*/mvnw
6 | /clouddo-*/mvnw.cmd
7 | /clouddo-*/.mvn/
8 | /clouddo-base/mvnw
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ### 项目介绍
2 |
3 | clouddo是基于springcloud和vue微服务,前后端分离的后台管理框架,可以作为springcloud和vue的入门学习框架,亦可以作为一个基础脚手架进行二次开发
4 |
5 | ### 使用说明
6 |
7 |
8 | 1.新建数据库,导数数据库脚本(clouddo-admin的根目录下),修改clouddo-admin的数据库用户密码
9 |
10 | 2.启动clouddo-server 注册中心
11 |
12 | 3.启动clouddo-zuul 网关
13 |
14 | 4.启动clouddo-base 基础微服务
15 |
16 | 5.启动clouddo-admin 权限微服务
17 |
18 | 6.启动clouddo-cms 内容管理微服务
19 |
20 | 7.启动前端项目 https://gitee.com/lcg0124/clouddo-view.git
21 | ### 系统截图
22 | 
23 |
--------------------------------------------------------------------------------
/clouddo-admin/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.bootdo
7 | clouddo-admin
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | clouddo-admin
12 | Demo project for Spring Boot
13 |
14 |
15 | org.springframework.boot
16 | spring-boot-starter-parent
17 | 2.0.4.RELEASE
18 |
19 |
20 |
21 |
22 | UTF-8
23 | UTF-8
24 | 1.8
25 | Finchley.SR1
26 | 1.1.0.Final
27 |
28 |
29 |
30 |
31 | org.springframework.cloud
32 | spring-cloud-starter-netflix-eureka-server
33 |
34 |
35 |
36 | org.springframework.boot
37 | spring-boot-starter-test
38 | test
39 |
40 |
41 | mysql
42 | mysql-connector-java
43 |
44 |
45 | org.mybatis
46 | mybatis
47 | 3.4.4
48 |
49 |
50 |
51 | org.mybatis.spring.boot
52 | mybatis-spring-boot-starter
53 | 1.1.1
54 |
55 |
56 |
57 | org.apache.shiro
58 | shiro-core
59 | 1.3.2
60 |
61 |
62 |
63 | com.alibaba
64 | fastjson
65 | 1.2.42
66 |
67 |
68 |
69 | io.jsonwebtoken
70 | jjwt
71 | 0.7.0
72 |
73 |
74 |
75 |
76 | org.springframework.boot
77 | spring-boot-starter-websocket
78 |
79 |
80 | org.springframework
81 | spring-context-support
82 |
83 |
84 | com.bootdo
85 | clouddo-common
86 | 0.0.1-SNAPSHOT
87 |
88 |
89 | org.springframework.boot
90 | spring-boot-starter-security
91 |
92 |
93 |
94 | net.sf.ehcache
95 | ehcache
96 |
97 |
98 |
99 |
100 | org.mapstruct
101 | mapstruct-jdk8
102 | ${org.mapstruct.version}
103 |
104 |
105 | org.mapstruct
106 | mapstruct
107 | ${org.mapstruct.version}
108 |
109 |
110 | org.mapstruct
111 | mapstruct-processor
112 | ${org.mapstruct.version}
113 | provided
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | org.springframework.cloud
122 | spring-cloud-dependencies
123 | ${spring-cloud.version}
124 | pom
125 | import
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 | org.springframework.boot
134 | spring-boot-maven-plugin
135 |
136 |
137 | org.apache.maven.plugins
138 | maven-compiler-plugin
139 | 3.6.1
140 |
141 | 1.8
142 | 1.8
143 |
144 |
145 | org.mapstruct
146 | mapstruct-processor
147 | ${org.mapstruct.version}
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/ClouddoAdminApplication.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 | import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
7 | import org.springframework.cache.annotation.EnableCaching;
8 | import org.springframework.cloud.openfeign.EnableFeignClients;
9 | import org.springframework.scheduling.annotation.EnableScheduling;
10 |
11 | @EnableFeignClients(basePackages = {"com.bootdo"})
12 | @EnableCaching
13 | @EnableScheduling
14 | @SpringBootApplication(scanBasePackages = {"com.bootdo.clouddoadmin", "com.bootdo.clouddocommon"})
15 | @EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class})
16 | public class ClouddoAdminApplication {
17 |
18 | public static void main(String[] args) {
19 | SpringApplication.run(ClouddoAdminApplication.class, args);
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/AuthConfig.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.config;
2 |
3 | import com.bootdo.clouddocommon.intercepter.AuthIntercepter;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
7 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
9 |
10 | @Configuration
11 | public class AuthConfig extends WebMvcConfigurerAdapter {
12 | @Bean
13 | public AuthIntercepter authIntercepter() {
14 | return new AuthIntercepter();
15 | }
16 |
17 | @Override
18 | public void addInterceptors(InterceptorRegistry registry) {
19 | InterceptorRegistration addInterceptor = registry.addInterceptor(authIntercepter());
20 |
21 | // 排除配置
22 | addInterceptor.excludePathPatterns("/error");
23 | addInterceptor.excludePathPatterns("/login**");
24 | addInterceptor.excludePathPatterns("/test**");
25 |
26 | // 拦截配置
27 | addInterceptor.addPathPatterns("/**");
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/config/WebSocketConfig.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.config;
2 |
3 | import com.bootdo.clouddoadmin.dao.TokenPrinciple;
4 | import com.bootdo.clouddocommon.utils.JwtUtils;
5 | import org.apache.commons.lang.StringUtils;
6 | import org.apache.shiro.SecurityUtils;
7 | import org.springframework.context.annotation.Configuration;
8 | import org.springframework.http.server.ServerHttpRequest;
9 | import org.springframework.http.server.ServerHttpResponse;
10 | import org.springframework.http.server.ServletServerHttpRequest;
11 | import org.springframework.messaging.Message;
12 | import org.springframework.messaging.MessageChannel;
13 | import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
14 | import org.springframework.messaging.simp.config.ChannelRegistration;
15 | import org.springframework.messaging.simp.config.MessageBrokerRegistry;
16 | import org.springframework.messaging.simp.stomp.StompCommand;
17 | import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
18 | import org.springframework.messaging.support.ChannelInterceptorAdapter;
19 | import org.springframework.messaging.support.MessageHeaderAccessor;
20 | import org.springframework.security.core.context.SecurityContextHolder;
21 | import org.springframework.security.web.csrf.CsrfToken;
22 | import org.springframework.security.web.csrf.DefaultCsrfToken;
23 | import org.springframework.web.socket.WebSocketHandler;
24 | import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
25 | import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
26 | import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
27 | import org.springframework.web.socket.server.HandshakeInterceptor;
28 | import org.springframework.web.socket.server.support.DefaultHandshakeHandler;
29 |
30 | import java.security.Principal;
31 | import java.util.Map;
32 |
33 | @Configuration
34 | @EnableWebSocketMessageBroker
35 | public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
36 |
37 | // @Override
38 | // public void registerStompEndpoints(StompEndpointRegistry registry) { //endPoint 注册协议节点,并映射指定的URl
39 | // registry.addEndpoint("/endpointChat").addInterceptors(new HandshakeInterceptor() {
40 | // /**
41 | // * websocket握手
42 | // */
43 | // @Override
44 | // public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception {
45 | // ServletServerHttpRequest req = (ServletServerHttpRequest) request;
46 | // //获取token认证
47 | // String token = req.getServletRequest().getParameter("passcode");
48 | // System.out.println(token);
49 | // //解析token获取用户信息
50 | // Principal user = parseToken("aaa");
51 | //// if(token == null){ //如果token认证失败user为null,返回false拒绝握手
52 | //// return false;
53 | //// }
54 | // //保存认证用户
55 | // attributes.put("user", user);
56 | // return true;
57 | // }
58 | //
59 | // @Override
60 | // public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
61 | //
62 | // }
63 | // }).setHandshakeHandler(new DefaultHandshakeHandler() {
64 | // @Override
65 | // protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map attributes) {
66 | // //设置认证用户
67 | // Principal current = (Principal) attributes.get("user");
68 | // System.out.println(null==current);
69 | // return current;
70 | // }
71 | // })
72 | //
73 | // .setAllowedOrigins("*") //允许跨域
74 | // .withSockJS(); //指定使用SockJS协议
75 | // }
76 | //注册STOMP协议节点并映射url
77 | @Override
78 | public void registerStompEndpoints(StompEndpointRegistry registry) {
79 | //添加连接节点
80 | registry.addEndpoint("/endpoint").addInterceptors(new HandshakeInterceptor() {
81 | /**
82 | * websocket握手
83 | */
84 | @Override
85 | public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception {
86 | ServletServerHttpRequest req = (ServletServerHttpRequest) request;
87 | //获取token认证
88 | String token = req.getServletRequest().getParameter("passcode");
89 | //解析token获取用户信息
90 | Principal user = parseToken("aaa");
91 | if (user == null) { //如果token认证失败user为null,返回false拒绝握手
92 | return false;
93 | }
94 | //保存认证用户
95 | attributes.put("user", user);
96 | return true;
97 | }
98 |
99 | @Override
100 | public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {
101 |
102 | }
103 | }).setHandshakeHandler(new DefaultHandshakeHandler() {
104 | @Override
105 | protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map attributes) {
106 | //设置认证用户
107 | return (Principal) attributes.get("user");
108 | }
109 | })
110 |
111 | .setAllowedOrigins("*") //允许跨域
112 | .withSockJS(); //指定使用SockJS协议
113 | }
114 |
115 | Principal parseToken(String token) {
116 | return new TokenPrinciple(token);
117 | }
118 |
119 | @Override
120 | public void configureMessageBroker(MessageBrokerRegistry registry) {//配置消息代理(message broker)
121 | //点对点式增加一个/queue 消息代理
122 | registry.enableSimpleBroker("/queue", "/topic");
123 |
124 | }
125 | }
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/constants/Constants.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.constants;
2 |
3 | /**
4 | * @author bootdo 1992lcg@163.com
5 | * @version V1.0
6 | */
7 | public class Constants {
8 |
9 | public static final String USER_TOKEN_ID = "userId";
10 | public static final String USER_TOKEN_NAME = "name";
11 | public static final String JWT_PRIVATE_KEY = "wwwwbootdocom";
12 | }
13 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/BaseController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import org.springframework.web.bind.annotation.RestController;
4 |
5 | /**
6 | * @author bootdo 1992lcg@163.com
7 | * @version V1.0
8 | */
9 | @RestController
10 | public class BaseController {
11 | }
12 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/DeptController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.domain.DeptDO;
4 | import com.bootdo.clouddoadmin.domain.Tree;
5 | import com.bootdo.clouddoadmin.service.DeptService;
6 | import com.bootdo.clouddocommon.utils.R;
7 | import org.apache.shiro.authz.annotation.RequiresPermissions;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.ui.Model;
10 | import org.springframework.web.bind.annotation.*;
11 |
12 | import java.util.HashMap;
13 | import java.util.List;
14 | import java.util.Map;
15 |
16 | /**
17 | * 部门管理
18 | *
19 | * @author chglee
20 | * @email 1992lcg@163.com
21 | * @date 2017-09-27 14:40:36
22 | */
23 |
24 | @RestController
25 | @RequestMapping("/dept")
26 | public class DeptController extends BaseController {
27 | private String prefix = "system/dept";
28 | @Autowired
29 | private DeptService sysDeptService;
30 |
31 | @GetMapping()
32 | @RequiresPermissions("system:sysDept:sysDept")
33 | String dept() {
34 | return prefix + "/dept";
35 | }
36 |
37 | @ResponseBody
38 | @GetMapping("/list")
39 | public List list() {
40 | Map query = new HashMap<>(16);
41 | List sysDeptList = sysDeptService.list(query);
42 | return sysDeptList;
43 | }
44 |
45 | @GetMapping("/add/{pId}")
46 | @RequiresPermissions("system:sysDept:add")
47 | String add(@PathVariable("pId") Long pId, Model model) {
48 | model.addAttribute("pId", pId);
49 | if (pId == 0) {
50 | model.addAttribute("pName", "总部门");
51 | } else {
52 | model.addAttribute("pName", sysDeptService.get(pId).getName());
53 | }
54 | return prefix + "/add";
55 | }
56 |
57 | // @GetMapping("/edit/{deptId}")
58 | // @RequiresPermissions("system:sysDept:edit")
59 | // String edit(@PathVariable("deptId") Long deptId, Model model) {
60 | // DeptDO sysDept = sysDeptService.get(deptId);
61 | // model.addAttribute("sysDept", sysDept);
62 | // if(Constant.DEPT_ROOT_ID.equals(sysDept.getParentId())) {
63 | // model.addAttribute("parentDeptName", "无");
64 | // }else {
65 | // DeptDO parDept = sysDeptService.get(sysDept.getParentId());
66 | // model.addAttribute("parentDeptName", parDept.getName());
67 | // }
68 | // return prefix + "/edit";
69 | // }
70 |
71 | /**
72 | * 保存
73 | */
74 | @ResponseBody
75 | @PostMapping("/save")
76 | @RequiresPermissions("system:sysDept:add")
77 | public R save(DeptDO sysDept) {
78 | if (sysDeptService.save(sysDept) > 0) {
79 | return R.ok();
80 | }
81 | return R.error();
82 | }
83 |
84 | /**
85 | * 修改
86 | */
87 | @ResponseBody
88 | @RequestMapping("/update")
89 | @RequiresPermissions("system:sysDept:edit")
90 | public R update(DeptDO sysDept) {
91 | if (sysDeptService.update(sysDept) > 0) {
92 | return R.ok();
93 | }
94 | return R.error();
95 | }
96 |
97 | /**
98 | * 删除
99 | */
100 | @PostMapping("/remove")
101 | @ResponseBody
102 | @RequiresPermissions("system:sysDept:remove")
103 | public R remove(Long deptId) {
104 | Map map = new HashMap();
105 | map.put("parentId", deptId);
106 | if(sysDeptService.count(map)>0) {
107 | return R.error(1, "包含下级部门,不允许修改");
108 | }
109 | if(sysDeptService.checkDeptHasUser(deptId)) {
110 | if (sysDeptService.remove(deptId) > 0) {
111 | return R.ok();
112 | }
113 | }else {
114 | return R.error(1, "部门包含用户,不允许修改");
115 | }
116 | return R.error();
117 | }
118 |
119 | /**
120 | * 删除
121 | */
122 | @PostMapping("/batchRemove")
123 | @ResponseBody
124 | @RequiresPermissions("system:sysDept:batchRemove")
125 | public R remove(@RequestParam("ids[]") Long[] deptIds) {
126 | sysDeptService.batchRemove(deptIds);
127 | return R.ok();
128 | }
129 |
130 | @GetMapping("/tree")
131 | @ResponseBody
132 | public Tree tree() {
133 | Tree tree = sysDeptService.getTree();
134 | return tree;
135 | }
136 |
137 | @GetMapping("/treeView")
138 | String treeView() {
139 | return prefix + "/deptTree";
140 | }
141 |
142 | }
143 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/LoginController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.domain.UserDO;
4 | import com.bootdo.clouddoadmin.service.MenuService;
5 | import com.bootdo.clouddoadmin.service.TokenService;
6 | import com.bootdo.clouddoadmin.service.UserService;
7 | import com.bootdo.clouddoadmin.utils.MD5Utils;
8 | import com.bootdo.clouddocommon.annotation.Log;
9 | import com.bootdo.clouddocommon.context.FilterContextHandler;
10 | import com.bootdo.clouddocommon.dto.LoginDTO;
11 | import com.bootdo.clouddocommon.dto.UserToken;
12 | import com.bootdo.clouddocommon.utils.JwtUtils;
13 | import com.bootdo.clouddocommon.utils.R;
14 | import org.springframework.beans.factory.annotation.Autowired;
15 | import org.springframework.web.bind.annotation.*;
16 |
17 | import javax.servlet.http.Cookie;
18 | import javax.servlet.http.HttpServletRequest;
19 | import javax.servlet.http.HttpServletResponse;
20 | import javax.validation.Valid;
21 | import java.util.HashMap;
22 | import java.util.List;
23 | import java.util.Map;
24 |
25 | /**
26 | * @author bootdo 1992lcg@163.com
27 | * @version V1.0
28 | */
29 | @RequestMapping()
30 | @RestController
31 | public class LoginController {
32 | @Autowired
33 | UserService userService;
34 | @Autowired
35 | TokenService tokenService;
36 | @Autowired
37 | MenuService menuService;
38 |
39 | @Log("登录")
40 | @PostMapping("/login")
41 | R login(@Valid @RequestBody LoginDTO loginDTO, HttpServletRequest request, HttpServletResponse response) {
42 | String username = loginDTO.getUsername().trim();
43 | String password = loginDTO.getPwd().trim();
44 | password = MD5Utils.encrypt(username, password);
45 | Map param = new HashMap<>();
46 | param.put("username", username);
47 | List userDOs = userService.list(param);
48 | if(userDOs.size()<1){
49 | return R.error("用户或密码错误");
50 | }
51 | UserDO userDO = userDOs.get(0);
52 | if (null == userDO || !userDO.getPassword().equals(password)) {
53 | return R.error("用户或密码错误");
54 | }
55 | UserToken userToken = new UserToken(userDO.getUsername(), userDO.getUserId().toString(), userDO.getName());
56 | String token="";
57 | try {
58 | token = JwtUtils.generateToken(userToken, 2*60*60*1000);
59 | } catch (Exception e) {
60 | e.printStackTrace();
61 | }
62 | //首先清除用户缓存权限
63 | menuService.clearCache(userDO.getUserId());
64 | // String token = tokenService.createToken(userDO.getUserId());
65 | return R.ok("登录成功")
66 | .put("token", token).put("user",userDO)
67 | .put("perms",menuService.PermsByUserId(userDO.getUserId()))
68 | .put("router",menuService.RouterDTOsByUserId(userDO.getUserId()));
69 | }
70 |
71 |
72 | @RequestMapping("/logout")
73 | R logout(HttpServletRequest request, HttpServletResponse response) {
74 | menuService.clearCache(Long.parseLong(FilterContextHandler.getUserID()));
75 | return R.ok();
76 | }
77 |
78 |
79 | }
80 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/MenuController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.domain.MenuDO;
4 | import com.bootdo.clouddoadmin.domain.Tree;
5 | import com.bootdo.clouddoadmin.service.MenuService;
6 | import com.bootdo.clouddocommon.annotation.Log;
7 | import com.bootdo.clouddocommon.context.FilterContextHandler;
8 | import com.bootdo.clouddocommon.dto.MenuDTO;
9 | import com.bootdo.clouddocommon.utils.R;
10 | import org.springframework.beans.factory.annotation.Autowired;
11 | import org.springframework.web.bind.annotation.*;
12 |
13 | import java.util.ArrayList;
14 | import java.util.List;
15 | import java.util.Map;
16 |
17 | /**
18 | * @author bootdo 1992lcg@163.com
19 | * @version V1.0
20 | */
21 | @RequestMapping("/menu")
22 | @RestController()
23 | public class MenuController {
24 | @Autowired
25 | MenuService menuService;
26 |
27 | @Log("访问菜单")
28 | @GetMapping("tree")
29 | Tree tree(){
30 | return menuService.getTree();
31 | }
32 | @GetMapping
33 | List> list(){
34 | return menuService.getTree().getChildren();
35 | }
36 |
37 | @GetMapping("{id}")
38 | MenuDO get(@PathVariable("id") Long id) {
39 | MenuDO menu = menuService.get(id);
40 | return menu;
41 | }
42 |
43 | @GetMapping("list")
44 | List list(@RequestParam Map params) {
45 | List menus = menuService.list(params);
46 | return menus;
47 | }
48 |
49 | @PutMapping()
50 | R update(@RequestBody MenuDO menuDO){
51 | if(menuService.update(menuDO)>0){
52 | return R.ok();
53 | }
54 | return R.error();
55 | }
56 | @PostMapping
57 | R save(@RequestBody MenuDO menuDO){
58 | return R.operate(menuService.save(menuDO)>0);
59 | }
60 |
61 | @DeleteMapping()
62 | R remove(Long id){
63 | if(menuService.remove(id)>0){
64 | return R.ok();
65 | }
66 | return R.error();
67 | }
68 |
69 | @GetMapping("userMenus")
70 | List userMenus(){
71 | List menuDOS = menuService.userMenus(Long.parseLong(FilterContextHandler.getUserID()));
72 | List menuDTOS = new ArrayList<>();
73 | for (MenuDO menuDO:menuDOS){
74 | MenuDTO menuDTO = new MenuDTO();
75 | menuDTO.setMenuId(menuDO.getMenuId());
76 | menuDTO.setUrl(menuDO.getUrl());
77 | menuDTO.setPerms(menuDO.getPerms());
78 | menuDTOS.add(menuDTO);
79 | }
80 | return menuDTOS;
81 | }
82 |
83 | @GetMapping("clearCache")
84 | R clearCache(){
85 | Boolean flag = menuService.clearCache(Long.parseLong(FilterContextHandler.getUserID()));
86 | if (flag){
87 | return R.ok();
88 | }
89 | return R.error();
90 | }
91 |
92 | /**
93 | * 当前用户菜单的树形结构
94 | * @return
95 | */
96 | @RequestMapping("/currentUserMenus")
97 | List> currentUserMenus() {
98 | List> menus = menuService.listMenuTree(Long.parseLong(FilterContextHandler.getUserID()));
99 | return menus;
100 | }
101 |
102 | @GetMapping("/roleId")
103 | List menuIdsByRoleId(Long roleId){
104 | return menuService.MenuIdsByRoleId(roleId);
105 | }
106 | }
107 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/RoleController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.domain.RoleDO;
4 | import com.bootdo.clouddoadmin.domain.UserDO;
5 | import com.bootdo.clouddoadmin.service.RoleService;
6 | import com.bootdo.clouddocommon.utils.PageUtils;
7 | import com.bootdo.clouddocommon.utils.Query;
8 | import com.bootdo.clouddocommon.utils.R;
9 | import org.springframework.beans.factory.annotation.Autowired;
10 | import org.springframework.web.bind.annotation.*;
11 |
12 | import java.util.List;
13 | import java.util.Map;
14 |
15 | /**
16 | * @author bootdo
17 | * 角色
18 | */
19 | @RequestMapping("/role")
20 | @RestController
21 | public class RoleController {
22 | @Autowired
23 | RoleService roleService;
24 |
25 | @GetMapping()
26 | PageUtils list(@RequestParam Map params) {
27 | Query query = new Query(params);
28 | List roleDOS = roleService.list(query);
29 | int total = roleService.count(query);
30 | PageUtils pageUtil = new PageUtils(roleDOS, total);
31 | return pageUtil;
32 | }
33 |
34 | @GetMapping("/userId/{userId}")
35 | List roleIdByUserId(@PathVariable Long userId){
36 | return roleService.RoleIdsByUserId(userId);
37 | }
38 |
39 | @PostMapping
40 | R save(@RequestBody RoleDO roleDO){
41 | if(roleService.save(roleDO)>0){
42 | return R.ok();
43 | }
44 | return R.error();
45 | }
46 |
47 | @PutMapping
48 | R update(@RequestBody RoleDO roleDO){
49 | if(roleService.update(roleDO)>0){
50 | return R.ok();
51 | }
52 | return R.error();
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/TestController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.rpc.TestRpc;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 | import org.springframework.web.bind.annotation.RequestMapping;
7 | import org.springframework.web.bind.annotation.RestController;
8 |
9 | @RestController
10 | @RequestMapping
11 | public class TestController {
12 | @Autowired
13 | TestRpc testRpc;
14 |
15 | @GetMapping("test")
16 | String test() {
17 | return testRpc.test();
18 | }
19 | @GetMapping("test1")
20 | String test1() {
21 | return "1111";
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.controller;
2 |
3 | import com.bootdo.clouddoadmin.domain.UserDO;
4 | import com.bootdo.clouddoadmin.dto.UserDTO;
5 | import com.bootdo.clouddoadmin.dto.UserRoleDTO;
6 | import com.bootdo.clouddoadmin.dto.do2dto.UserConvert;
7 | import com.bootdo.clouddoadmin.service.RoleService;
8 | import com.bootdo.clouddoadmin.service.UserService;
9 | import com.bootdo.clouddoadmin.utils.MD5Utils;
10 | import com.bootdo.clouddocommon.annotation.Log;
11 | import com.bootdo.clouddocommon.context.FilterContextHandler;
12 | import com.bootdo.clouddocommon.dto.LoginUserDTO;
13 | import com.bootdo.clouddocommon.utils.PageUtils;
14 | import com.bootdo.clouddocommon.utils.Query;
15 | import com.bootdo.clouddocommon.utils.R;
16 | import org.apache.catalina.servlet4preview.http.HttpServletRequest;
17 | import org.apache.shiro.authz.annotation.RequiresPermissions;
18 | import org.springframework.beans.BeanUtils;
19 | import org.springframework.beans.factory.annotation.Autowired;
20 | import org.springframework.stereotype.Controller;
21 | import org.springframework.ui.Model;
22 | import org.springframework.web.bind.annotation.*;
23 | import org.springframework.web.multipart.MultipartFile;
24 |
25 | import java.util.HashMap;
26 | import java.util.List;
27 | import java.util.Map;
28 |
29 | /**
30 | * 用户信息
31 | * @author bootdo
32 | */
33 | @RequestMapping("/user")
34 | @RestController
35 | public class UserController extends BaseController {
36 | @Autowired
37 | UserService userService;
38 | @Autowired
39 | RoleService roleService;
40 |
41 | /**
42 | * 登录的当前用户,前台需要验证用户登录的页面可以调用此方法
43 | * @return
44 | */
45 | @GetMapping("/currentUser")
46 | LoginUserDTO currentUser(){
47 | LoginUserDTO loginUserDTO = new LoginUserDTO();
48 | loginUserDTO.setUserId(FilterContextHandler.getUserID());
49 | loginUserDTO.setUsername(FilterContextHandler.getUsername());
50 | loginUserDTO.setName(FilterContextHandler.getName());
51 | return loginUserDTO;
52 | }
53 |
54 | /**
55 | * 根据用户id获取用户
56 | * @param id
57 | * @return
58 | */
59 | @GetMapping("{id}")
60 | R get(@PathVariable("id") Long id ){
61 | UserDTO userDTO = UserConvert.MAPPER.do2dto(userService.get(id));
62 | return R.ok().put("data",userDTO);
63 | }
64 |
65 | /**
66 | * 分页查询用户
67 | * @param params
68 | * @return
69 | */
70 | @Log("获取用户列表")
71 | @GetMapping()
72 | R listByPage(@RequestParam Map params) {
73 | Query query = new Query(params);
74 | List userDTOS = UserConvert.MAPPER.dos2dtos((userService.list(query)));
75 | int total = userService.count(query);
76 | PageUtils pageUtil = new PageUtils(userDTOS, total);
77 | return R.ok().put("page",pageUtil);
78 | }
79 |
80 | /**
81 | * 增加用户
82 | * @param user
83 | * @return
84 | */
85 | @PostMapping()
86 | R save(@RequestBody UserDO user) {
87 | user.setPassword(MD5Utils.encrypt(user.getUsername(), user.getPassword()));
88 | return R.operate(userService.save(user) > 0);
89 | }
90 |
91 | /**
92 | * 修改用户
93 | * @param user
94 | * @return
95 | */
96 | @PutMapping()
97 | R update(@RequestBody UserDO user) {
98 | return R.operate(userService.update(user) > 0);
99 | }
100 |
101 |
102 | /**
103 | * 删除用户
104 | * @param id
105 | * @return
106 | */
107 | @DeleteMapping()
108 | R remove( Long id) {
109 | return R.operate (userService.remove(id) > 0);
110 | }
111 |
112 | @PostMapping("/batchRemove")
113 | @ResponseBody
114 | R batchRemove(@RequestParam("ids[]") Long[] userIds) {
115 | int r = userService.batchremove(userIds);
116 | if (r > 0) {
117 | return R.ok();
118 | }
119 | return R.error();
120 | }
121 |
122 | @PostMapping("/exits")
123 | @ResponseBody
124 | boolean exits(@RequestParam Map params) {
125 | // 存在,不通过,false
126 | return !userService.exits(params);
127 | }
128 | }
129 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/DeptDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.DeptDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 部门管理
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-03 15:35:39
14 | */
15 | @Mapper
16 | public interface DeptDao {
17 |
18 | DeptDO get(Long deptId);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(DeptDO dept);
25 |
26 | int update(DeptDO dept);
27 |
28 | int remove(Long deptId);
29 |
30 | int batchRemove(Long[] deptIds);
31 |
32 | Long[] listParentDept();
33 |
34 | int getDeptUserNumber(Long deptId);
35 | }
36 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/MenuDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.MenuDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 菜单管理
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-03 09:45:09
14 | */
15 | @Mapper
16 | public interface MenuDao {
17 |
18 | MenuDO get(Long menuId);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(MenuDO menu);
25 |
26 | int update(MenuDO menu);
27 |
28 | int remove(Long menuId);
29 |
30 | int batchRemove(Long[] menuIds);
31 |
32 | List listMenuByUserId(Long id);
33 |
34 | List listUserPerms(Long id);
35 | }
36 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/RoleDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.RoleDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 角色
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-02 20:24:47
14 | */
15 | @Mapper
16 | public interface RoleDao {
17 |
18 | RoleDO get(Long roleId);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(RoleDO role);
25 |
26 | int update(RoleDO role);
27 |
28 | int remove(Long roleId);
29 |
30 | int batchRemove(Long[] roleIds);
31 |
32 | List roleIdsByUserId(Long userId);
33 | }
34 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/RoleMenuDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.RoleMenuDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 角色与菜单对应关系
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-03 11:08:59
14 | */
15 | @Mapper
16 | public interface RoleMenuDao {
17 |
18 | RoleMenuDO get(Long id);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(RoleMenuDO roleMenu);
25 |
26 | int update(RoleMenuDO roleMenu);
27 |
28 | int remove(Long id);
29 |
30 | int batchRemove(Long[] ids);
31 |
32 | List listMenuIdByRoleId(Long roleId);
33 |
34 | int removeByRoleId(Long roleId);
35 |
36 | int removeByMenuId(Long menuId);
37 |
38 | int batchSave(List list);
39 | }
40 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/TokenDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.TokenDO;
4 | import org.apache.ibatis.annotations.*;
5 |
6 | /**
7 | * @author bootdo 1992lcg@163.com
8 | * @version V1.0
9 | */
10 | @Mapper
11 | public interface TokenDao {
12 | /**
13 | * 根据用户id保存token
14 | * @param tokenDO
15 | * @return
16 | */
17 | @Insert("insert into sys_user_token (user_id,token,expire_time,update_time) values (#{userId},#{token},#{expireTime},#{updateTime})")
18 | int save(TokenDO tokenDO);
19 |
20 | @Select("select * from sys_user_token where token =#{token}")
21 | TokenDO getToken(String token);
22 |
23 | @Delete("delete from sys_user_token where token=#{token}")
24 | boolean removeToken(String token);
25 |
26 | @Select("select * from sys_user_token where user_id =#{userId}")
27 | TokenDO getTokenByUserId(Long userId);
28 |
29 | @Update("update sys_user_token set token=#{token},expire_time=#{expireTime},update_time=#{updateTime} where user_id=#{userId}")
30 | int update(TokenDO tokenDO);
31 | }
32 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/TokenPrinciple.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import java.security.Principal;
4 |
5 | public class TokenPrinciple implements Principal {
6 | private String name;
7 |
8 | public TokenPrinciple(String name) {
9 | setName(name);
10 | }
11 |
12 | @Override
13 | public String getName() {
14 | return null;
15 | }
16 |
17 | public void setName(String name) {
18 | this.name = name;
19 | }
20 |
21 | @Override
22 | public String toString() {
23 | return "TokenPrinciple{" +
24 | "name='" + name + '\'' +
25 | '}';
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/UserDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.UserDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | *
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-03 09:45:11
14 | */
15 | @Mapper
16 | public interface UserDao {
17 |
18 | UserDO get(Long userId);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(UserDO user);
25 |
26 | int update(UserDO user);
27 |
28 | int remove(Long userId);
29 |
30 | int batchRemove(Long[] userIds);
31 |
32 | Long[] listAllDept();
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dao/UserRoleDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dao;
2 |
3 | import com.bootdo.clouddoadmin.domain.UserRoleDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 用户与角色对应关系
11 | *
12 | * @author chglee
13 | * @email 1992lcg@163.com
14 | * @date 2017-10-03 11:08:59
15 | */
16 | @Mapper
17 | public interface UserRoleDao {
18 |
19 | UserRoleDO get(Long id);
20 |
21 | List list(Map map);
22 |
23 | int count(Map map);
24 |
25 | int save(UserRoleDO userRole);
26 |
27 | int update(UserRoleDO userRole);
28 |
29 | int remove(Long id);
30 |
31 | int batchRemove(Long[] ids);
32 |
33 | List listRoleId(Long userId);
34 |
35 | int removeByUserId(Long userId);
36 |
37 | int batchSave(List list);
38 |
39 | int batchRemoveByUserId(Long[] ids);
40 | }
41 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/DeptDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | import java.io.Serializable;
4 |
5 |
6 | /**
7 | * 部门管理
8 | *
9 | * @author chglee
10 | * @email 1992lcg@163.com
11 | * @date 2017-09-27 14:28:36
12 | */
13 | public class DeptDO implements Serializable {
14 | private static final long serialVersionUID = 1L;
15 |
16 | //
17 | private Long deptId;
18 | //上级部门ID,一级部门为0
19 | private Long parentId;
20 | //部门名称
21 | private String name;
22 | //排序
23 | private Integer orderNum;
24 | //是否删除 -1:已删除 0:正常
25 | private Integer delFlag;
26 |
27 | /**
28 | * 设置:
29 | */
30 | public void setDeptId(Long deptId) {
31 | this.deptId = deptId;
32 | }
33 | /**
34 | * 获取:
35 | */
36 | public Long getDeptId() {
37 | return deptId;
38 | }
39 | /**
40 | * 设置:上级部门ID,一级部门为0
41 | */
42 | public void setParentId(Long parentId) {
43 | this.parentId = parentId;
44 | }
45 | /**
46 | * 获取:上级部门ID,一级部门为0
47 | */
48 | public Long getParentId() {
49 | return parentId;
50 | }
51 | /**
52 | * 设置:部门名称
53 | */
54 | public void setName(String name) {
55 | this.name = name;
56 | }
57 | /**
58 | * 获取:部门名称
59 | */
60 | public String getName() {
61 | return name;
62 | }
63 | /**
64 | * 设置:排序
65 | */
66 | public void setOrderNum(Integer orderNum) {
67 | this.orderNum = orderNum;
68 | }
69 | /**
70 | * 获取:排序
71 | */
72 | public Integer getOrderNum() {
73 | return orderNum;
74 | }
75 | /**
76 | * 设置:是否删除 -1:已删除 0:正常
77 | */
78 | public void setDelFlag(Integer delFlag) {
79 | this.delFlag = delFlag;
80 | }
81 | /**
82 | * 获取:是否删除 -1:已删除 0:正常
83 | */
84 | public Integer getDelFlag() {
85 | return delFlag;
86 | }
87 |
88 | @Override
89 | public String toString() {
90 | return "DeptDO{" +
91 | "deptId=" + deptId +
92 | ", parentId=" + parentId +
93 | ", name='" + name + '\'' +
94 | ", orderNum=" + orderNum +
95 | ", delFlag=" + delFlag +
96 | '}';
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/MenuDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | import java.io.Serializable;
4 | import java.util.Date;
5 |
6 |
7 |
8 | /**
9 | * 菜单管理
10 | *
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2018-03-09 15:30:54
14 | */
15 | public class MenuDO implements Serializable {
16 | private static final long serialVersionUID = 1L;
17 |
18 | //
19 | private String component;
20 | //
21 | private Long menuId;
22 | //父菜单ID,一级菜单为0
23 | private Long parentId;
24 | //菜单名称
25 | private String name;
26 | //菜单URL
27 | private String url;
28 | //授权(多个用逗号分隔,如:user:list,user:create)
29 | private String perms;
30 | //类型 0:目录 1:菜单 2:按钮
31 | private Integer type;
32 | //菜单图标
33 | private String icon;
34 | //排序
35 | private Integer orderNum;
36 | //创建时间
37 | private Date gmtCreate;
38 | //修改时间
39 | private Date gmtModified;
40 | //
41 | private String redirect;
42 |
43 | /**
44 | * 设置:
45 | */
46 | public void setComponent(String component) {
47 | this.component = component;
48 | }
49 | /**
50 | * 获取:
51 | */
52 | public String getComponent() {
53 | return component;
54 | }
55 | /**
56 | * 设置:
57 | */
58 | public void setMenuId(Long menuId) {
59 | this.menuId = menuId;
60 | }
61 | /**
62 | * 获取:
63 | */
64 | public Long getMenuId() {
65 | return menuId;
66 | }
67 | /**
68 | * 设置:父菜单ID,一级菜单为0
69 | */
70 | public void setParentId(Long parentId) {
71 | this.parentId = parentId;
72 | }
73 | /**
74 | * 获取:父菜单ID,一级菜单为0
75 | */
76 | public Long getParentId() {
77 | return parentId;
78 | }
79 | /**
80 | * 设置:菜单名称
81 | */
82 | public void setName(String name) {
83 | this.name = name;
84 | }
85 | /**
86 | * 获取:菜单名称
87 | */
88 | public String getName() {
89 | return name;
90 | }
91 | /**
92 | * 设置:菜单URL
93 | */
94 | public void setUrl(String url) {
95 | this.url = url;
96 | }
97 | /**
98 | * 获取:菜单URL
99 | */
100 | public String getUrl() {
101 | return url;
102 | }
103 | /**
104 | * 设置:授权(多个用逗号分隔,如:user:list,user:create)
105 | */
106 | public void setPerms(String perms) {
107 | this.perms = perms;
108 | }
109 | /**
110 | * 获取:授权(多个用逗号分隔,如:user:list,user:create)
111 | */
112 | public String getPerms() {
113 | return perms;
114 | }
115 | /**
116 | * 设置:类型 0:目录 1:菜单 2:按钮
117 | */
118 | public void setType(Integer type) {
119 | this.type = type;
120 | }
121 | /**
122 | * 获取:类型 0:目录 1:菜单 2:按钮
123 | */
124 | public Integer getType() {
125 | return type;
126 | }
127 | /**
128 | * 设置:菜单图标
129 | */
130 | public void setIcon(String icon) {
131 | this.icon = icon;
132 | }
133 | /**
134 | * 获取:菜单图标
135 | */
136 | public String getIcon() {
137 | return icon;
138 | }
139 | /**
140 | * 设置:排序
141 | */
142 | public void setOrderNum(Integer orderNum) {
143 | this.orderNum = orderNum;
144 | }
145 | /**
146 | * 获取:排序
147 | */
148 | public Integer getOrderNum() {
149 | return orderNum;
150 | }
151 | /**
152 | * 设置:创建时间
153 | */
154 | public void setGmtCreate(Date gmtCreate) {
155 | this.gmtCreate = gmtCreate;
156 | }
157 | /**
158 | * 获取:创建时间
159 | */
160 | public Date getGmtCreate() {
161 | return gmtCreate;
162 | }
163 | /**
164 | * 设置:修改时间
165 | */
166 | public void setGmtModified(Date gmtModified) {
167 | this.gmtModified = gmtModified;
168 | }
169 | /**
170 | * 获取:修改时间
171 | */
172 | public Date getGmtModified() {
173 | return gmtModified;
174 | }
175 | /**
176 | * 设置:
177 | */
178 | public void setRedirect(String redirect) {
179 | this.redirect = redirect;
180 | }
181 | /**
182 | * 获取:
183 | */
184 | public String getRedirect() {
185 | return redirect;
186 | }
187 | }
188 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/RoleDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | import java.sql.Timestamp;
4 | import java.util.List;
5 |
6 | public class RoleDO {
7 |
8 | private Long roleId;
9 | private String roleName;
10 | private String roleSign;
11 | private String remark;
12 | private Long userIdCreate;
13 | private Timestamp gmtCreate;
14 | private Timestamp gmtModified;
15 | private List menuIds;
16 |
17 | public Long getRoleId() {
18 | return roleId;
19 | }
20 |
21 | public void setRoleId(Long roleId) {
22 | this.roleId = roleId;
23 | }
24 |
25 | public String getRoleName() {
26 | return roleName;
27 | }
28 |
29 | public void setRoleName(String roleName) {
30 | this.roleName = roleName;
31 | }
32 |
33 | public String getRoleSign() {
34 | return roleSign;
35 | }
36 |
37 | public void setRoleSign(String roleSign) {
38 | this.roleSign = roleSign;
39 | }
40 |
41 | public String getRemark() {
42 | return remark;
43 | }
44 |
45 | public void setRemark(String remark) {
46 | this.remark = remark;
47 | }
48 |
49 | public Long getUserIdCreate() {
50 | return userIdCreate;
51 | }
52 |
53 | public void setUserIdCreate(Long userIdCreate) {
54 | this.userIdCreate = userIdCreate;
55 | }
56 |
57 | public Timestamp getGmtCreate() {
58 | return gmtCreate;
59 | }
60 |
61 | public void setGmtCreate(Timestamp gmtCreate) {
62 | this.gmtCreate = gmtCreate;
63 | }
64 |
65 | public Timestamp getGmtModified() {
66 | return gmtModified;
67 | }
68 |
69 | public void setGmtModified(Timestamp gmtModified) {
70 | this.gmtModified = gmtModified;
71 | }
72 |
73 | public List getMenuIds() {
74 | return menuIds;
75 | }
76 |
77 | public void setMenuIds(List menuIds) {
78 | this.menuIds = menuIds;
79 | }
80 |
81 | @Override
82 | public String toString() {
83 | return "RoleDO{" +
84 | "roleId=" + roleId +
85 | ", roleName='" + roleName + '\'' +
86 | ", roleSign='" + roleSign + '\'' +
87 | ", remark='" + remark + '\'' +
88 | ", userIdCreate=" + userIdCreate +
89 | ", gmtCreate=" + gmtCreate +
90 | ", gmtModified=" + gmtModified +
91 | ", menuIds=" + menuIds +
92 | '}';
93 | }
94 | }
95 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/RoleMenuDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | public class RoleMenuDO {
4 | private Long id;
5 | private Long roleId;
6 | private Long menuId;
7 |
8 | public Long getId() {
9 | return id;
10 | }
11 | public void setId(Long id) {
12 | this.id = id;
13 | }
14 | public Long getRoleId() {
15 | return roleId;
16 | }
17 | public void setRoleId(Long roleId) {
18 | this.roleId = roleId;
19 | }
20 | public Long getMenuId() {
21 | return menuId;
22 | }
23 | public void setMenuId(Long menuId) {
24 | this.menuId = menuId;
25 | }
26 |
27 | @Override
28 | public String toString() {
29 | return "RoleMenuDO{" +
30 | "id=" + id +
31 | ", roleId=" + roleId +
32 | ", menuId=" + menuId +
33 | '}';
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/TokenDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | import java.util.Date;
4 |
5 | /**
6 | * @author bootdo 1992lcg@163.com
7 | * @version V1.0
8 | */
9 | public class TokenDO {
10 | private static final long serialVersionUID = 1L;
11 |
12 | @Override
13 | public String toString() {
14 | return "TokenDO{" +
15 | "userId=" + userId +
16 | ", token='" + token + '\'' +
17 | ", expireTime=" + expireTime +
18 | ", updateTime=" + updateTime +
19 | '}';
20 | }
21 |
22 | /**
23 | * 用户ID
24 | */
25 | private Long userId;
26 | /**
27 | * token
28 | */
29 | private String token;
30 | /**
31 | * 过期时间
32 | */
33 | private Date expireTime;
34 | /**
35 | * 更新时间
36 | */
37 | private Date updateTime;
38 |
39 | public Long getUserId() {
40 | return userId;
41 | }
42 |
43 | public void setUserId(Long userId) {
44 | this.userId = userId;
45 | }
46 |
47 | public String getToken() {
48 | return token;
49 | }
50 |
51 | public void setToken(String token) {
52 | this.token = token;
53 | }
54 |
55 | public Date getExpireTime() {
56 | return expireTime;
57 | }
58 |
59 | public void setExpireTime(Date expireTime) {
60 | this.expireTime = expireTime;
61 | }
62 |
63 | public Date getUpdateTime() {
64 | return updateTime;
65 | }
66 |
67 | public void setUpdateTime(Date updateTime) {
68 | this.updateTime = updateTime;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/Tree.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | import com.alibaba.fastjson.JSON;
4 | import com.bootdo.clouddocommon.utils.R;
5 |
6 | import java.io.Serializable;
7 | import java.util.*;
8 |
9 | /**
10 | * tree TODO
11 | *
12 | */
13 | public class Tree {
14 | private static final long serialVersionUID = 1L;
15 | /**
16 | * 节点ID
17 | */
18 | private String id;
19 | /**
20 | * 显示节点文本
21 | */
22 | private String text;
23 | /**
24 | * 节点状态,open closed
25 | */
26 | private Map state;
27 | /**
28 | * 节点是否被选中 true false
29 | */
30 | private boolean checked = false;
31 | /**
32 | * 节点属性
33 | */
34 | private Map attributes;
35 | /**
36 | * 节点对象
37 | */
38 | private Object object;
39 |
40 | /**
41 | * 节点的子节点
42 | */
43 | private List> children = new ArrayList>();
44 |
45 | /**
46 | * 父ID
47 | */
48 | private String parentId;
49 | /**
50 | * 是否有父节点
51 | */
52 | private boolean hasParent = false;
53 | /**
54 | * 是否有子节点
55 | */
56 |
57 | private boolean hasChildren = false;
58 |
59 | public String getId() {
60 | return id;
61 | }
62 |
63 | public void setId(String id) {
64 | this.id = id;
65 | }
66 |
67 | public String getText() {
68 | return text;
69 | }
70 |
71 | public void setText(String text) {
72 | this.text = text;
73 | }
74 |
75 | public Map getState() {
76 | return state;
77 | }
78 |
79 | public void setState(Map state) {
80 | this.state = state;
81 | }
82 |
83 | public boolean isChecked() {
84 | return checked;
85 | }
86 |
87 | public void setChecked(boolean checked) {
88 | this.checked = checked;
89 | }
90 |
91 | public Map getAttributes() {
92 | return attributes;
93 | }
94 |
95 | public void setAttributes(Map attributes) {
96 | this.attributes = attributes;
97 | }
98 |
99 | public Object getObject() {
100 | return object;
101 | }
102 |
103 | public void setObject(Object object) {
104 | this.object = object;
105 | }
106 |
107 | public List> getChildren() {
108 | return children;
109 | }
110 |
111 | public void setChildren(List> children) {
112 | this.children = children;
113 | }
114 |
115 | public boolean isHasParent() {
116 | return hasParent;
117 | }
118 |
119 | public void setHasParent(boolean isParent) {
120 | this.hasParent = isParent;
121 | }
122 |
123 | public boolean isHasChildren() {
124 | return hasChildren;
125 | }
126 |
127 | public void setChildren(boolean isChildren) {
128 | this.hasChildren = isChildren;
129 | }
130 |
131 | public String getParentId() {
132 | return parentId;
133 | }
134 |
135 | public void setParentId(String parentId) {
136 | this.parentId = parentId;
137 | }
138 |
139 | public Tree(String id, String text, Map state, boolean checked, Map attributes,Object object,
140 | List> children, boolean isParent, boolean isChildren, String parentID) {
141 | super();
142 | this.id = id;
143 | this.text = text;
144 | this.state = state;
145 | this.checked = checked;
146 | this.attributes = attributes;
147 | this.setObject(object);
148 | this.children = children;
149 | this.hasParent = isParent;
150 | this.hasChildren = isChildren;
151 | this.parentId = parentID;
152 | }
153 | public Tree() {
154 | super();
155 | }
156 | }
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/domain/UserRoleDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.domain;
2 |
3 | public class UserRoleDO {
4 | private Long id;
5 | private Long userId;
6 | private Long roleId;
7 |
8 | public Long getId() {
9 | return id;
10 | }
11 |
12 | public void setId(Long id) {
13 | this.id = id;
14 | }
15 |
16 | public Long getUserId() {
17 | return userId;
18 | }
19 |
20 | public void setUserId(Long userId) {
21 | this.userId = userId;
22 | }
23 |
24 | public Long getRoleId() {
25 | return roleId;
26 | }
27 |
28 | public void setRoleId(Long roleId) {
29 | this.roleId = roleId;
30 | }
31 |
32 | @Override
33 | public String toString() {
34 | return "UserRoleDO{" +
35 | "id=" + id +
36 | ", userId=" + userId +
37 | ", roleId=" + roleId +
38 | '}';
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dto/UserDTO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dto;
2 |
3 | import java.util.Date;
4 | import java.util.List;
5 |
6 | public class UserDTO {
7 | //
8 | private Long userId;
9 | // 用户名
10 | private String username;
11 | // 用户真实姓名
12 | private String name;
13 |
14 | // 部门
15 | private Long deptId;
16 |
17 | private String deptName;
18 | // 邮箱
19 | private String email;
20 | // 手机号
21 | private String mobile;
22 | // 状态 0:禁用,1:正常
23 | private Integer status;
24 | // 创建用户id
25 | private Long userIdCreate;
26 | // 创建时间
27 | private Date gmtCreate;
28 | // 修改时间
29 | private Date gmtModified;
30 | //角色
31 | private List roleIds;
32 | //性别
33 | private Long sex;
34 |
35 | private Date birth;
36 | //图片ID
37 | private Long picId;
38 | //现居住地
39 | private String liveAddress;
40 | //爱好
41 | private String hobby;
42 | //省份
43 | private String province;
44 | //所在城市
45 | private String city;
46 | //所在地区
47 | private String district;
48 |
49 | public Long getUserId() {
50 | return userId;
51 | }
52 |
53 | public void setUserId(Long userId) {
54 | this.userId = userId;
55 | }
56 |
57 | public String getUsername() {
58 | return username;
59 | }
60 |
61 | public void setUsername(String username) {
62 | this.username = username;
63 | }
64 |
65 | public String getName() {
66 | return name;
67 | }
68 |
69 | public void setName(String name) {
70 | this.name = name;
71 | }
72 |
73 | public Long getDeptId() {
74 | return deptId;
75 | }
76 |
77 | public void setDeptId(Long deptId) {
78 | this.deptId = deptId;
79 | }
80 |
81 | public String getDeptName() {
82 | return deptName;
83 | }
84 |
85 | public void setDeptName(String deptName) {
86 | this.deptName = deptName;
87 | }
88 |
89 | public String getEmail() {
90 | return email;
91 | }
92 |
93 | public void setEmail(String email) {
94 | this.email = email;
95 | }
96 |
97 | public String getMobile() {
98 | return mobile;
99 | }
100 |
101 | public void setMobile(String mobile) {
102 | this.mobile = mobile;
103 | }
104 |
105 | public Integer getStatus() {
106 | return status;
107 | }
108 |
109 | public void setStatus(Integer status) {
110 | this.status = status;
111 | }
112 |
113 | public Long getUserIdCreate() {
114 | return userIdCreate;
115 | }
116 |
117 | public void setUserIdCreate(Long userIdCreate) {
118 | this.userIdCreate = userIdCreate;
119 | }
120 |
121 | public Date getGmtCreate() {
122 | return gmtCreate;
123 | }
124 |
125 | public void setGmtCreate(Date gmtCreate) {
126 | this.gmtCreate = gmtCreate;
127 | }
128 |
129 | public Date getGmtModified() {
130 | return gmtModified;
131 | }
132 |
133 | public void setGmtModified(Date gmtModified) {
134 | this.gmtModified = gmtModified;
135 | }
136 |
137 | public List getRoleIds() {
138 | return roleIds;
139 | }
140 |
141 | public void setRoleIds(List roleIds) {
142 | this.roleIds = roleIds;
143 | }
144 |
145 | public Long getSex() {
146 | return sex;
147 | }
148 |
149 | public void setSex(Long sex) {
150 | this.sex = sex;
151 | }
152 |
153 | public Date getBirth() {
154 | return birth;
155 | }
156 |
157 | public void setBirth(Date birth) {
158 | this.birth = birth;
159 | }
160 |
161 | public Long getPicId() {
162 | return picId;
163 | }
164 |
165 | public void setPicId(Long picId) {
166 | this.picId = picId;
167 | }
168 |
169 | public String getLiveAddress() {
170 | return liveAddress;
171 | }
172 |
173 | public void setLiveAddress(String liveAddress) {
174 | this.liveAddress = liveAddress;
175 | }
176 |
177 | public String getHobby() {
178 | return hobby;
179 | }
180 |
181 | public void setHobby(String hobby) {
182 | this.hobby = hobby;
183 | }
184 |
185 | public String getProvince() {
186 | return province;
187 | }
188 |
189 | public void setProvince(String province) {
190 | this.province = province;
191 | }
192 |
193 | public String getCity() {
194 | return city;
195 | }
196 |
197 | public void setCity(String city) {
198 | this.city = city;
199 | }
200 |
201 | public String getDistrict() {
202 | return district;
203 | }
204 |
205 | public void setDistrict(String district) {
206 | this.district = district;
207 | }
208 | }
209 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dto/UserRoleDTO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dto;
2 |
3 | /**
4 | * 用户角色
5 | * @author bootdo 1992lcg@163.com
6 | */
7 | public class UserRoleDTO {
8 | public Long getId() {
9 | return id;
10 | }
11 |
12 | public void setId(Long id) {
13 | this.id = id;
14 | }
15 |
16 | public String getName() {
17 | return name;
18 | }
19 |
20 | public void setName(String name) {
21 | this.name = name;
22 | }
23 |
24 | public boolean isChecked() {
25 | return checked;
26 | }
27 |
28 | public void setChecked(boolean checked) {
29 | this.checked = checked;
30 | }
31 |
32 | private Long id;
33 | private String name;
34 | private boolean checked;
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/dto/do2dto/UserConvert.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.dto.do2dto;
2 |
3 |
4 | import com.bootdo.clouddoadmin.domain.UserDO;
5 | import com.bootdo.clouddoadmin.dto.UserDTO;
6 | import org.mapstruct.factory.Mappers;
7 |
8 | import java.util.List;
9 |
10 | @org.mapstruct.Mapper
11 | public interface UserConvert {
12 | UserConvert MAPPER = Mappers.getMapper(UserConvert.class);
13 |
14 | public UserDTO do2dto(UserDO person);
15 |
16 | public List dos2dtos(List list);
17 | }
18 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/rpc/TestRpc.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.rpc;
2 |
3 | import com.bootdo.clouddocommon.intercepter.FeignIntercepter;
4 | import org.springframework.cloud.openfeign.FeignClient;
5 | import org.springframework.web.bind.annotation.GetMapping;
6 |
7 | @FeignClient(name = "course", configuration = FeignIntercepter.class)
8 | public interface TestRpc {
9 | @GetMapping("/test/testRpc/test")
10 | String test();
11 | }
12 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/DeptService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service;
2 |
3 | import com.bootdo.clouddoadmin.domain.Tree;
4 | import com.bootdo.clouddoadmin.domain.DeptDO;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 部门管理
11 | *
12 | * @author chglee
13 | * @email 1992lcg@163.com
14 | * @date 2017-09-27 14:28:36
15 | */
16 | public interface DeptService {
17 |
18 | DeptDO get(Long deptId);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(DeptDO sysDept);
25 |
26 | int update(DeptDO sysDept);
27 |
28 | int remove(Long deptId);
29 |
30 | int batchRemove(Long[] deptIds);
31 |
32 | Tree getTree();
33 |
34 | boolean checkDeptHasUser(Long deptId);
35 | }
36 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/MenuService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service;
2 |
3 | import com.bootdo.clouddoadmin.domain.Tree;
4 | import com.bootdo.clouddoadmin.domain.MenuDO;
5 | import com.bootdo.clouddocommon.dto.RouterDTO;
6 | import com.bootdo.clouddocommon.utils.R;
7 | import org.springframework.cache.annotation.CacheEvict;
8 | import org.springframework.stereotype.Service;
9 |
10 | import java.util.List;
11 | import java.util.Map;
12 | import java.util.Set;
13 |
14 | @Service
15 | public interface MenuService {
16 | Tree getSysMenuTree(Long id);
17 |
18 | /**
19 | * 登录用户的权限
20 | * @author bootdo 1992lcg@163.com
21 | * @param userId
22 | * @return
23 | */
24 | List userMenus(Long userId);
25 |
26 | List> listMenuTree(Long id);
27 |
28 | Tree getTree();
29 |
30 | Tree getTree(Long id);
31 |
32 | @CacheEvict(value = "permission",key = "#userId")
33 | boolean clearCache(Long userId);
34 |
35 | List list(Map params);
36 |
37 | int remove(Long id);
38 |
39 | int save(MenuDO menu);
40 |
41 | int update(MenuDO menu);
42 |
43 | MenuDO get(Long id);
44 |
45 | Set listPerms(Long userId);
46 |
47 | /**
48 | * 获取角色下的权限所有id
49 | * @param roleId
50 | * @return
51 | */
52 | List MenuIdsByRoleId(Long roleId);
53 |
54 | /**
55 | * 用户的路由
56 | * @return
57 | */
58 | List RouterDTOsByUserId(Long userId);
59 | /**
60 | * 用户权限
61 | */
62 | List PermsByUserId(Long userId);
63 | }
64 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/RoleService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service;
2 |
3 | import com.bootdo.clouddoadmin.domain.RoleDO;
4 | import com.bootdo.clouddoadmin.dto.UserRoleDTO;
5 | import org.springframework.stereotype.Service;
6 |
7 | import java.util.List;
8 | import java.util.Map;
9 |
10 | @Service
11 | public interface RoleService {
12 |
13 | RoleDO get(Long id);
14 |
15 | List list(Map map);
16 |
17 | int count(Map map);
18 |
19 | int save(RoleDO role);
20 |
21 | int update(RoleDO role);
22 |
23 | int remove(Long id);
24 |
25 | List list(Long userId);
26 |
27 | int batchremove(Long[] ids);
28 |
29 | /**
30 | * 获取用户的角色id
31 | * @param userId
32 | * @return 角色id
33 | */
34 | List RoleIdsByUserId(Long userId);
35 | }
36 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/TokenService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service;
2 |
3 | import org.springframework.stereotype.Service;
4 |
5 | /**
6 | * @author bootdo 1992lcg@163.com
7 | */
8 | @Service
9 | public interface TokenService {
10 | /**
11 | * 根据用户id生成token持久化
12 | */
13 | String createToken(Long userId);
14 |
15 | Long getUserIdByToken(String token);
16 |
17 | boolean removeToken(String token);
18 | }
19 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/UserService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service;
2 |
3 | import com.bootdo.clouddoadmin.domain.Tree;
4 | import com.bootdo.clouddoadmin.domain.DeptDO;
5 | import com.bootdo.clouddoadmin.domain.UserDO;
6 | import com.bootdo.clouddoadmin.vo.UserVO;
7 | import org.springframework.stereotype.Service;
8 | import org.springframework.web.multipart.MultipartFile;
9 |
10 | import java.util.List;
11 | import java.util.Map;
12 | import java.util.Set;
13 |
14 | @Service
15 | public interface UserService {
16 | UserDO get(Long id);
17 |
18 | List list(Map map);
19 |
20 | int count(Map map);
21 |
22 | int save(UserDO user);
23 |
24 | int update(UserDO user);
25 |
26 | int remove(Long userId);
27 |
28 | int batchremove(Long[] userIds);
29 |
30 | boolean exits(Map params);
31 |
32 | Set listRoles(Long userId);
33 |
34 | int resetPwd(UserVO userVO, UserDO userDO) throws Exception;
35 | int adminResetPwd(UserVO userVO) throws Exception;
36 | Tree getTree();
37 |
38 | /**
39 | * 更新个人信息
40 | * @param userDO
41 | * @return
42 | */
43 | int updatePersonal(UserDO userDO);
44 |
45 | /**
46 | * 更新个人图片
47 | * @param file 图片
48 | * @param avatar_data 裁剪信息
49 | * @param userId 用户ID
50 | * @throws Exception
51 | */
52 | Map updatePersonalImg(MultipartFile file, String avatar_data, Long userId) throws Exception;
53 | }
54 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/DeptServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service.impl;
2 |
3 | import com.bootdo.clouddoadmin.domain.Tree;
4 | import com.bootdo.clouddoadmin.utils.BuildTree;
5 | import com.bootdo.clouddoadmin.dao.DeptDao;
6 | import com.bootdo.clouddoadmin.domain.DeptDO;
7 | import com.bootdo.clouddoadmin.service.DeptService;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.stereotype.Service;
10 |
11 | import java.util.ArrayList;
12 | import java.util.HashMap;
13 | import java.util.List;
14 | import java.util.Map;
15 |
16 |
17 | @Service
18 | public class DeptServiceImpl implements DeptService {
19 | @Autowired
20 | private DeptDao sysDeptMapper;
21 |
22 | @Override
23 | public DeptDO get(Long deptId){
24 | return sysDeptMapper.get(deptId);
25 | }
26 |
27 | @Override
28 | public List list(Map map){
29 | return sysDeptMapper.list(map);
30 | }
31 |
32 | @Override
33 | public int count(Map map){
34 | return sysDeptMapper.count(map);
35 | }
36 |
37 | @Override
38 | public int save(DeptDO sysDept){
39 | return sysDeptMapper.save(sysDept);
40 | }
41 |
42 | @Override
43 | public int update(DeptDO sysDept){
44 | return sysDeptMapper.update(sysDept);
45 | }
46 |
47 | @Override
48 | public int remove(Long deptId){
49 | return sysDeptMapper.remove(deptId);
50 | }
51 |
52 | @Override
53 | public int batchRemove(Long[] deptIds){
54 | return sysDeptMapper.batchRemove(deptIds);
55 | }
56 |
57 | @Override
58 | public Tree getTree() {
59 | List> trees = new ArrayList>();
60 | List sysDepts = sysDeptMapper.list(new HashMap(16));
61 | for (DeptDO sysDept : sysDepts) {
62 | Tree tree = new Tree();
63 | tree.setId(sysDept.getDeptId().toString());
64 | tree.setParentId(sysDept.getParentId().toString());
65 | tree.setText(sysDept.getName());
66 | Map state = new HashMap<>(16);
67 | state.put("opened", true);
68 | tree.setState(state);
69 | trees.add(tree);
70 | }
71 | // 默认顶级菜单为0,根据数据库实际情况调整
72 | Tree t = BuildTree.build(trees);
73 | return t;
74 | }
75 |
76 | @Override
77 | public boolean checkDeptHasUser(Long deptId) {
78 | // TODO Auto-generated method stub
79 | //查询部门以及此部门的下级部门
80 | int result = sysDeptMapper.getDeptUserNumber(deptId);
81 | return result==0?true:false;
82 | }
83 |
84 | }
85 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/RoleServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service.impl;
2 |
3 | import com.bootdo.clouddoadmin.dao.RoleDao;
4 | import com.bootdo.clouddoadmin.dao.RoleMenuDao;
5 | import com.bootdo.clouddoadmin.dao.UserDao;
6 | import com.bootdo.clouddoadmin.dao.UserRoleDao;
7 | import com.bootdo.clouddoadmin.domain.RoleDO;
8 | import com.bootdo.clouddoadmin.domain.RoleMenuDO;
9 | import com.bootdo.clouddoadmin.dto.UserRoleDTO;
10 | import com.bootdo.clouddoadmin.service.RoleService;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 | import org.springframework.cache.annotation.CacheEvict;
13 | import org.springframework.cache.annotation.Cacheable;
14 | import org.springframework.stereotype.Service;
15 | import org.springframework.transaction.annotation.Transactional;
16 |
17 | import java.util.*;
18 |
19 |
20 | @Service
21 | public class RoleServiceImpl implements RoleService {
22 |
23 | public static final String ROLE_ALL_KEY = "\"role_all\"";
24 |
25 | public static final String DEMO_CACHE_NAME = "role";
26 |
27 | @Autowired
28 | RoleDao roleMapper;
29 | @Autowired
30 | RoleMenuDao roleMenuMapper;
31 | @Autowired
32 | UserDao userMapper;
33 | @Autowired
34 | UserRoleDao userRoleMapper;
35 |
36 | @Override
37 | public List list(Map map) {
38 | List roles = roleMapper.list(map);
39 | return roles;
40 | }
41 |
42 | @Override
43 | public int count(Map map) {
44 | return roleMapper.count(map);
45 | }
46 |
47 |
48 | @Override
49 | public List list(Long userId) {
50 | List rolesIds = userRoleMapper.listRoleId(userId);
51 | List roles = roleMapper.list(new HashMap<>(16));
52 | List roleDTOS = new ArrayList<>();
53 | for (RoleDO roleDO : roles) {
54 | UserRoleDTO userRoleDTO = new UserRoleDTO();
55 | userRoleDTO.setId(roleDO.getRoleId());
56 | userRoleDTO.setName(roleDO.getRoleName());
57 | userRoleDTO.setChecked(false);
58 | for (Long roleId : rolesIds) {
59 | if (Objects.equals(roleDO.getRoleId(), roleId)) {
60 | // roleDO.setRoleSign("true");
61 | userRoleDTO.setChecked(true);
62 | break;
63 | }
64 | }
65 | roleDTOS.add(userRoleDTO);
66 | }
67 | return roleDTOS;
68 | }
69 |
70 | @CacheEvict(value = DEMO_CACHE_NAME, key = ROLE_ALL_KEY)
71 | @Transactional
72 | @Override
73 | public int save(RoleDO role) {
74 | int count = roleMapper.save(role);
75 | List menuIds = role.getMenuIds();
76 | Long roleId = role.getRoleId();
77 | List rms = new ArrayList<>();
78 | for (Long menuId : menuIds) {
79 | RoleMenuDO rmDo = new RoleMenuDO();
80 | rmDo.setRoleId(roleId);
81 | rmDo.setMenuId(menuId);
82 | rms.add(rmDo);
83 | }
84 | roleMenuMapper.removeByRoleId(roleId);
85 | if (rms.size() > 0) {
86 | roleMenuMapper.batchSave(rms);
87 | }
88 | return count;
89 | }
90 |
91 | @Transactional
92 | @Override
93 | public int remove(Long id) {
94 | int count = roleMapper.remove(id);
95 | roleMenuMapper.removeByRoleId(id);
96 | return count;
97 | }
98 |
99 | @Override
100 | public RoleDO get(Long id) {
101 | RoleDO roleDO = roleMapper.get(id);
102 | return roleDO;
103 | }
104 |
105 | @Override
106 | public int update(RoleDO role) {
107 | int r = roleMapper.update(role);
108 | List menuIds = role.getMenuIds();
109 | if(null!=menuIds){
110 | Long roleId = role.getRoleId();
111 | roleMenuMapper.removeByRoleId(roleId);
112 | List rms = new ArrayList<>();
113 | for (Long menuId : menuIds) {
114 | RoleMenuDO rmDo = new RoleMenuDO();
115 | rmDo.setRoleId(roleId);
116 | rmDo.setMenuId(menuId);
117 | rms.add(rmDo);
118 | }
119 | if (rms.size() > 0) {
120 | roleMenuMapper.batchSave(rms);
121 | }
122 | }
123 | return r;
124 | }
125 |
126 | @Override
127 | public int batchremove(Long[] ids) {
128 | int r = roleMapper.batchRemove(ids);
129 | return r;
130 | }
131 |
132 | /**
133 | * 获取用户的角色id
134 | *
135 | * @param userId
136 | * @return 角色id
137 | */
138 | @Override
139 | public List RoleIdsByUserId(Long userId) {
140 | return roleMapper.roleIdsByUserId(userId);
141 | }
142 |
143 | }
144 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/service/impl/TokenServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.service.impl;
2 |
3 | import com.bootdo.clouddoadmin.dao.TokenDao;
4 | import com.bootdo.clouddoadmin.domain.TokenDO;
5 | import com.bootdo.clouddoadmin.service.TokenService;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 | import org.springframework.stereotype.Service;
8 |
9 | import java.util.Date;
10 | import java.util.UUID;
11 |
12 | /**
13 | * @author bootdo 1992lcg@163.com
14 | * @version V1.0
15 | */
16 | @Service
17 | public class TokenServiceImpl implements TokenService {
18 | @Autowired
19 | TokenDao tokenDao;
20 | //过期时间,单位s
21 | private final static int EXPIRE = 60*30;
22 | @Override
23 | public String createToken(Long userId) {
24 | //当前时间
25 | Date now = new Date();
26 | //过期时间
27 | Date expireTime = new Date(now.getTime()+EXPIRE*1000);
28 | TokenDO tokenDO = new TokenDO();
29 | tokenDO.setUserId(userId);
30 | tokenDO.setUpdateTime(now);
31 | tokenDO.setToken(UUID.randomUUID().toString());
32 | tokenDO.setExpireTime(expireTime);
33 | if(tokenDao.getTokenByUserId(userId)!=null){
34 | tokenDao.update(tokenDO);
35 | }else{
36 | tokenDao.save(tokenDO);
37 | }
38 |
39 | return tokenDO.getToken();
40 | }
41 |
42 | @Override
43 | public Long getUserIdByToken(String token) {
44 | TokenDO tokenDO = tokenDao.getToken(token);
45 | if (tokenDO==null){
46 | return -1L;
47 | }else {
48 | if (tokenDO.getExpireTime().getTime() roleIds = userRoleMapper.listRoleId(id);
44 | UserDO user = userMapper.get(id);
45 | user.setDeptName(deptMapper.get(user.getDeptId()).getName());
46 | user.setroleIds(roleIds);
47 | return user;
48 | }
49 |
50 | @Override
51 | public List list(Map map) {
52 | return userMapper.list(map);
53 | }
54 |
55 | @Override
56 | public int count(Map map) {
57 | return userMapper.count(map);
58 | }
59 |
60 | @Override
61 | public int save(UserDO user) {
62 | int count = userMapper.save(user);
63 | Long userId = user.getUserId();
64 | List roles = user.getroleIds();
65 | userRoleMapper.removeByUserId(userId);
66 | List list = new ArrayList<>();
67 | for (Long roleId : roles) {
68 | UserRoleDO ur = new UserRoleDO();
69 | ur.setUserId(userId);
70 | ur.setRoleId(roleId);
71 | list.add(ur);
72 | }
73 | if (list.size() > 0) {
74 | userRoleMapper.batchSave(list);
75 | }
76 | return count;
77 | }
78 |
79 | @Override
80 | public int update(UserDO user) {
81 | int r = userMapper.update(user);
82 | Long userId = user.getUserId();
83 | List roles = user.getroleIds();
84 | if(null!=roles){
85 | userRoleMapper.removeByUserId(userId);
86 | List list = new ArrayList<>();
87 | for (Long roleId : roles) {
88 | UserRoleDO ur = new UserRoleDO();
89 | ur.setUserId(userId);
90 | ur.setRoleId(roleId);
91 | list.add(ur);
92 | }
93 | if (list.size() > 0) {
94 | userRoleMapper.batchSave(list);
95 | }
96 | }
97 | return r;
98 | }
99 |
100 | @Override
101 | public int remove(Long userId) {
102 | userRoleMapper.removeByUserId(userId);
103 | return userMapper.remove(userId);
104 | }
105 |
106 | @Override
107 | public boolean exits(Map params) {
108 | boolean exits = userMapper.list(params).size() > 0;
109 | return exits;
110 | }
111 |
112 | @Override
113 | public Set listRoles(Long userId) {
114 | return null;
115 | }
116 |
117 | @Override
118 | public int resetPwd(UserVO userVO,UserDO userDO) throws Exception {
119 | if(Objects.equals(userVO.getUserDO().getUserId(),userDO.getUserId())){
120 | if(Objects.equals(MD5Utils.encrypt(userDO.getUsername(),userVO.getPwdOld()),userDO.getPassword())){
121 | userDO.setPassword(MD5Utils.encrypt(userDO.getUsername(),userVO.getPwdNew()));
122 | return userMapper.update(userDO);
123 | }else{
124 | throw new Exception("输入的旧密码有误!");
125 | }
126 | }else{
127 | throw new Exception("你修改的不是你登录的账号!");
128 | }
129 | }
130 | @Override
131 | public int adminResetPwd(UserVO userVO) throws Exception {
132 | UserDO userDO =get(userVO.getUserDO().getUserId());
133 | if("admin".equals(userDO.getUsername())){
134 | throw new Exception("超级管理员的账号不允许直接重置!");
135 | }
136 | userDO.setPassword(MD5Utils.encrypt(userDO.getUsername(), userVO.getPwdNew()));
137 | return userMapper.update(userDO);
138 |
139 |
140 | }
141 |
142 | @Transactional
143 | @Override
144 | public int batchremove(Long[] userIds) {
145 | int count = userMapper.batchRemove(userIds);
146 | userRoleMapper.batchRemoveByUserId(userIds);
147 | return count;
148 | }
149 |
150 | @Override
151 | public Tree getTree() {
152 | List> trees = new ArrayList>();
153 | List depts = deptMapper.list(new HashMap(16));
154 | Long[] pDepts = deptMapper.listParentDept();
155 | Long[] uDepts = userMapper.listAllDept();
156 | Long[] allDepts = (Long[]) ArrayUtils.addAll(pDepts, uDepts);
157 | for (DeptDO dept : depts) {
158 | if (!ArrayUtils.contains(allDepts, dept.getDeptId())) {
159 | continue;
160 | }
161 | Tree tree = new Tree();
162 | tree.setId(dept.getDeptId().toString());
163 | tree.setParentId(dept.getParentId().toString());
164 | tree.setText(dept.getName());
165 | Map state = new HashMap<>(16);
166 | state.put("opened", true);
167 | state.put("mType", "dept");
168 | tree.setState(state);
169 | trees.add(tree);
170 | }
171 | List users = userMapper.list(new HashMap(16));
172 | for (UserDO user : users) {
173 | Tree tree = new Tree();
174 | tree.setId(user.getUserId().toString());
175 | tree.setParentId(user.getDeptId().toString());
176 | tree.setText(user.getName());
177 | Map state = new HashMap<>(16);
178 | state.put("opened", true);
179 | state.put("mType", "user");
180 | tree.setState(state);
181 | trees.add(tree);
182 | }
183 | // 默认顶级菜单为0,根据数据库实际情况调整
184 | Tree t = BuildTree.build(trees);
185 | return t;
186 | }
187 |
188 | @Override
189 | public int updatePersonal(UserDO userDO) {
190 | return userMapper.update(userDO);
191 | }
192 |
193 | @Override
194 | public Map updatePersonalImg(MultipartFile file, String avatar_data, Long userId) throws Exception {
195 | return null;
196 | }
197 |
198 |
199 | }
200 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/task/DemoTask.java:
--------------------------------------------------------------------------------
1 | //package com.bootdo.clouddoadmin.task;
2 | //
3 | //import com.bootdo.clouddoadmin.dao.TokenPrinciple;
4 | //import com.bootdo.clouddoadmin.dto.Response;
5 | //import org.slf4j.Logger;
6 | //import org.slf4j.LoggerFactory;
7 | //import org.springframework.beans.factory.annotation.Autowired;
8 | //import org.springframework.messaging.simp.SimpMessagingTemplate;
9 | //import org.springframework.scheduling.annotation.Scheduled;
10 | //import org.springframework.stereotype.Component;
11 | //
12 | //@Component
13 | //public class DemoTask {
14 | // @Autowired
15 | // SimpMessagingTemplate template;
16 | //
17 | // private static final Logger logger = LoggerFactory.getLogger(DemoTask.class);
18 | //
19 | // @Scheduled(cron = "0/4 * * * * ? ")
20 | // public void TestSocket() {
21 | // logger.info("-----socket testing!!!");
22 | //// template.convertAndSendToUser(new TokenPrinciple("aaa").toString()
23 | //// , "/queue/notifications", "新消息:" + "给aaa的消息");
24 | //
25 | // template.convertAndSend("/topic/getResponse", new Response("欢迎体验bootdo,这是一个任务计划,使用了websocket和quzrtz技术,可以在计划列表中取消,欢迎您加入qq群交流学习!"));
26 | // }
27 | //}
28 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/BuildTree.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.utils;
2 |
3 | import com.bootdo.clouddoadmin.domain.Tree;
4 |
5 | import java.util.ArrayList;
6 | import java.util.HashMap;
7 | import java.util.List;
8 | import java.util.Map;
9 |
10 | public class BuildTree {
11 | public static Tree build(List> nodes) {
12 | if (nodes == null) {
13 | return null;
14 | }
15 | List> topNodes = new ArrayList>();
16 | for (Tree child : nodes) {
17 | String pid = child.getParentId();
18 | if (pid == null || "0".equals(pid)) {
19 | topNodes.add(child);
20 | continue;
21 | }
22 | for (Tree parent : nodes) {
23 | String id = parent.getId();
24 | if (id != null && id.equals(pid)) {
25 | parent.getChildren().add(child);
26 | child.setHasParent(true);
27 | parent.setChildren(true);
28 | continue;
29 | }
30 | }
31 | }
32 | Tree root = new Tree();
33 | if (topNodes.size() == 1) {
34 | root = topNodes.get(0);
35 | } else {
36 | root.setId("-1");
37 | root.setParentId("");
38 | root.setHasParent(false);
39 | root.setChildren(true);
40 | root.setChecked(true);
41 | root.setChildren(topNodes);
42 | root.setText("顶级节点");
43 | Map state = new HashMap<>(16);
44 | state.put("opened", true);
45 | root.setState(state);
46 | }
47 | return root;
48 | }
49 |
50 | public static List> buildList(List> nodes, String idParam) {
51 | if (nodes == null) {
52 | return null;
53 | }
54 | List> topNodes = new ArrayList>();
55 | for (Tree child : nodes) {
56 | String pid = child.getParentId();
57 | if (pid == null || idParam.equals(pid)) {
58 | topNodes.add(child);
59 | continue;
60 | }
61 | for (Tree parent : nodes) {
62 | String id = parent.getId();
63 | if (id != null && id.equals(pid)) {
64 | parent.getChildren().add(child);
65 | child.setHasParent(true);
66 | parent.setChildren(true);
67 | continue;
68 | }
69 | }
70 | }
71 | return topNodes;
72 | }
73 |
74 | }
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/JwtUtils.java:
--------------------------------------------------------------------------------
1 | //package com.bootdo.clouddoadmin.utils;
2 | //
3 | //import com.bootdo.clouddoadmin.constants.constants;
4 | //import com.bootdo.clouddoadmin.vo.UserToken;
5 | //import com.netflix.discovery.CommonConstants;
6 | //import io.jsonwebtoken.Claims;
7 | //import io.jsonwebtoken.Jws;
8 | //import io.jsonwebtoken.Jwts;
9 | //import io.jsonwebtoken.SignatureAlgorithm;
10 | //
11 | //import java.util.Date;
12 | //
13 | ///**
14 | // * @author bootdo 1992lcg@163.com
15 | // * @version V1.0
16 | // */
17 | //public class JwtUtils {
18 | // public static String generateToken(UserToken userToken, int expire) throws Exception {
19 | // String token = Jwts.builder()
20 | // .setSubject(userToken.getUsername())
21 | // .claim(constants.USER_TOKEN_ID, userToken.getUserId())
22 | // .claim(constants.USER_TOKEN_NAME, userToken.getName())
23 | // .setExpiration(new Date(System.currentTimeMillis()+expire))
24 | // .signWith(SignatureAlgorithm.HS256, constants.JWT_PRIVATE_KEY)
25 | // .compact();
26 | // return token;
27 | // }
28 | //
29 | //
30 | // public static UserToken getInfoFromToken(String token) throws Exception {
31 | // Claims claims = Jwts.parser()
32 | // .setSigningKey(constants.JWT_PRIVATE_KEY).parseClaimsJws(token)
33 | // .getBody();
34 | // return new UserToken(claims.getSubject(), ((Integer)claims.get(constants.USER_TOKEN_ID)).longValue() ,claims.get(constants.USER_TOKEN_NAME).toString());
35 | // }
36 | //}
37 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/MD5Utils.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.utils;
2 |
3 | import org.apache.shiro.crypto.hash.SimpleHash;
4 | import org.apache.shiro.util.ByteSource;
5 |
6 | public class MD5Utils {
7 | private static final String SALT = "1qazxsw2";
8 |
9 | private static final String ALGORITH_NAME = "md5";
10 |
11 | private static final int HASH_ITERATIONS = 2;
12 |
13 | public static String encrypt(String pswd) {
14 | String newPassword = new SimpleHash(ALGORITH_NAME, pswd, ByteSource.Util.bytes(SALT), HASH_ITERATIONS).toHex();
15 | return newPassword;
16 | }
17 |
18 | public static String encrypt(String username, String pswd) {
19 | String newPassword = new SimpleHash(ALGORITH_NAME, pswd, ByteSource.Util.bytes(username + SALT),
20 | HASH_ITERATIONS).toHex();
21 | return newPassword;
22 | }
23 | public static void main(String[] args) {
24 |
25 | System.out.println(MD5Utils.encrypt("admin", "1"));
26 | }
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/utils/TokenUtils.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.utils;
2 |
3 | import com.bootdo.clouddoadmin.dao.TokenDao;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 |
6 | import javax.servlet.http.Cookie;
7 | import javax.servlet.http.HttpServletRequest;
8 |
9 | /**
10 | * @author bootdo 1992lcg@163.com
11 | * @version V1.0
12 | */
13 | public class TokenUtils {
14 | @Autowired
15 | TokenDao tokenDao;
16 | String getCurrent(HttpServletRequest request) {
17 | Cookie[] cookies = request.getCookies();
18 | for (Cookie cookie : cookies) {
19 | if ("token".equals(cookie.getName())) {
20 | return cookie.getValue();
21 | }
22 | }
23 | return null;
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/vo/UserToken.java:
--------------------------------------------------------------------------------
1 | //package com.bootdo.clouddoadmin.vo;
2 | //
3 | //import java.io.Serializable;
4 | //
5 | ///**
6 | // * @author bootdo 1992lcg@163.com
7 | // * @version V1.0
8 | // */
9 | //public class UserToken implements Serializable{
10 | // private static final long serialVersionUID = 1L;
11 | //
12 | // public UserToken( String username,Long userId, String name) {
13 | // this.userId = userId;
14 | // this.username = username;
15 | // this.name = name;
16 | // }
17 | //
18 | // /**
19 | // * 用户id
20 | // */
21 | // private Long userId;
22 | // /**
23 | // * 用户登录名
24 | // */
25 | // private String username;
26 | // /**
27 | // * 用户真实姓名
28 | // */
29 | // private String name;
30 | //
31 | // public Long getUserId() {
32 | // return userId;
33 | // }
34 | //
35 | // public void setUserId(Long userId) {
36 | // this.userId = userId;
37 | // }
38 | //
39 | // public String getUsername() {
40 | // return username;
41 | // }
42 | //
43 | // public void setUsername(String username) {
44 | // this.username = username;
45 | // }
46 | //
47 | // public String getName() {
48 | // return name;
49 | // }
50 | //
51 | // public void setName(String name) {
52 | // this.name = name;
53 | // }
54 | //
55 | // @Override
56 | // public String toString() {
57 | // return "UserToken{" +
58 | // "userId=" + userId +
59 | // ", username='" + username + '\'' +
60 | // ", name='" + name + '\'' +
61 | // '}';
62 | // }
63 | //}
64 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/java/com/bootdo/clouddoadmin/vo/UserVO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddoadmin.vo;
2 |
3 | import com.bootdo.clouddoadmin.domain.UserDO;
4 |
5 | /**
6 | * @author gaoyuzhe
7 | * @date 2017/12/15.
8 | */
9 | public class UserVO {
10 | /**
11 | * 更新的用户对象
12 | */
13 | private UserDO userDO = new UserDO();
14 | /**
15 | * 旧密码
16 | */
17 | private String pwdOld;
18 | /**
19 | * 新密码
20 | */
21 | private String pwdNew;
22 |
23 | public UserDO getUserDO() {
24 | return userDO;
25 | }
26 |
27 | public void setUserDO(UserDO userDO) {
28 | this.userDO = userDO;
29 | }
30 |
31 | public String getPwdOld() {
32 | return pwdOld;
33 | }
34 |
35 | public void setPwdOld(String pwdOld) {
36 | this.pwdOld = pwdOld;
37 | }
38 |
39 | public String getPwdNew() {
40 | return pwdNew;
41 | }
42 |
43 | public void setPwdNew(String pwdNew) {
44 | this.pwdNew = pwdNew;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | eureka:
2 | client:
3 | serviceUrl:
4 | defaultZone: http://localhost:8001/eureka/
5 | #security:
6 | # basic:
7 | # enabled: false
8 | server:
9 | port: 8005
10 | spring:
11 | application:
12 | name: api-admin
13 | datasource:
14 | url: jdbc:mysql://127.0.0.1:3306/clouddo?useUnicode=true&characterEncoding=utf8
15 | username: root
16 | password: root
17 | jackson:
18 | date-format: yyyy-MM-dd
19 | time-zone: GMT+8
20 | mybatis:
21 | mapper-locations: mapper/**Mapper.xml
22 | configuration:
23 | map-underscore-to-camel-case: true
24 | #logging:
25 | # level: debug
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/mapper/DeptMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
34 |
35 |
45 |
46 |
48 | insert into sys_dept
49 | (
50 | `parent_id`,
51 | `name`,
52 | `order_num`,
53 | `del_flag`
54 | )
55 | values
56 | (
57 | #{parentId},
58 | #{name},
59 | #{orderNum},
60 | #{delFlag}
61 | )
62 |
63 |
64 |
65 | update sys_dept
66 |
67 | `parent_id` = #{parentId},
68 | `name` = #{name},
69 | `order_num` = #{orderNum},
70 | `del_flag` = #{delFlag}
71 |
72 | where dept_id = #{deptId}
73 |
74 |
75 |
76 | delete from sys_dept where dept_id = #{value}
77 |
78 |
79 |
80 | delete from sys_dept where dept_id in
81 |
83 | #{deptId}
84 |
85 |
86 |
87 |
90 |
91 |
94 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/mapper/MenuMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
38 |
39 |
56 |
57 |
58 | insert into sys_menu
59 | (
60 | `component`,
61 | `parent_id`,
62 | `name`,
63 | `url`,
64 | `perms`,
65 | `type`,
66 | `icon`,
67 | `order_num`,
68 | `gmt_create`,
69 | `gmt_modified`,
70 | `redirect`
71 | )
72 | values
73 | (
74 | #{component},
75 | #{parentId},
76 | #{name},
77 | #{url},
78 | #{perms},
79 | #{type},
80 | #{icon},
81 | #{orderNum},
82 | #{gmtCreate},
83 | #{gmtModified},
84 | #{redirect}
85 | )
86 |
87 |
88 |
89 | update sys_menu
90 |
91 | `component` = #{component},
92 | `parent_id` = #{parentId},
93 | `name` = #{name},
94 | `url` = #{url},
95 | `perms` = #{perms},
96 | `type` = #{type},
97 | `icon` = #{icon},
98 | `order_num` = #{orderNum},
99 | `gmt_create` = #{gmtCreate},
100 | `gmt_modified` = #{gmtModified},
101 | `redirect` = #{redirect}
102 |
103 | where menu_id = #{menuId}
104 |
105 |
106 |
107 | delete from sys_menu where menu_id = #{value}
108 |
109 |
110 |
111 | delete from sys_menu where menu_id in
112 |
113 | #{menuId}
114 |
115 |
116 |
117 |
131 |
132 |
140 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/mapper/RoleMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
37 |
38 |
50 |
51 |
53 | insert into sys_role
54 | (
55 | `role_name`,
56 | `role_sign`,
57 | `remark`,
58 | `user_id_create`,
59 | `gmt_create`,
60 | `gmt_modified`
61 | )
62 | values
63 | (
64 | #{roleName},
65 | #{roleSign},
66 | #{remark},
67 | #{userIdCreate},
68 | #{gmtCreate},
69 | #{gmtModified}
70 | )
71 |
72 |
73 |
74 | update sys_role
75 |
76 | `role_name` = #{roleName},
77 | `role_sign` = #{roleSign},
78 | `remark` = #{remark},
79 | `user_id_create` = #{userIdCreate},
80 | `gmt_create` = #{gmtCreate},
81 | `gmt_modified` = #{gmtModified}
82 |
83 | where role_id = #{roleId}
84 |
85 |
86 |
87 | delete from sys_role where role_id = #{value}
88 |
89 |
90 |
91 | delete from sys_role where role_id in
92 |
94 | #{roleId}
95 |
96 |
97 |
98 |
102 |
103 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/mapper/RoleMenuMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
30 |
31 |
39 |
40 |
42 | insert into sys_role_menu
43 | (
44 | `role_id`,
45 | `menu_id`
46 | )
47 | values
48 | (
49 | #{roleId},
50 | #{menuId}
51 | )
52 |
53 |
54 |
55 | update sys_role_menu
56 |
57 | `role_id` = #{roleId},
58 | `menu_id` = #{menuId}
59 |
60 | where id = #{id}
61 |
62 |
63 |
64 | delete from sys_role_menu where id = #{value}
65 |
66 |
67 |
68 | delete from sys_role_menu where id in
69 |
71 | #{id}
72 |
73 |
74 |
75 |
79 |
80 |
81 | DELETE FROM sys_role_menu WHERE role_id=#{roleId}
82 |
83 |
84 |
87 |
88 |
89 | INSERT INTO sys_role_menu(role_id, menu_id) values
90 |
92 | (#{item.roleId},#{item.menuId})
93 |
94 |
95 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/mapper/UserRoleMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
10 |
11 |
30 |
31 |
39 |
40 |
42 | insert into sys_user_role
43 | (
44 | `user_id`,
45 | `role_id`
46 | )
47 | values
48 | (
49 | #{userId},
50 | #{roleId}
51 | )
52 |
53 |
54 |
55 | update sys_user_role
56 |
57 | `user_id` = #{userId},
58 | `role_id` = #{roleId}
59 |
60 | where id = #{id}
61 |
62 |
63 |
64 | delete from sys_user_role where id = #{value}
65 |
66 |
67 |
68 | delete from sys_user_role where id in
69 |
71 | #{id}
72 |
73 |
74 |
75 |
80 |
81 |
82 | delete from sys_user_role where user_id=#{userId}
83 |
84 |
85 |
86 | delete from sys_user_role where user_id in
87 |
89 | #{id}
90 |
91 |
92 |
93 |
94 | INSERT INTO sys_user_role(user_id, role_id) values
95 |
97 | (#{item.userId},#{item.roleId})
98 |
99 |
100 |
--------------------------------------------------------------------------------
/clouddo-admin/src/main/resources/spring-ehcache.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/clouddo-admin/src/test/java/com/bootdo/clouddoadmin/ClouddoAdminApplicationTests.java:
--------------------------------------------------------------------------------
1 | //package com.bootdo.clouddoadmin;
2 | //
3 | //import org.junit.runner.RunWith;
4 | //import org.springframework.boot.test.context.SpringBootTest;
5 | //import org.springframework.test.context.junit4.SpringRunner;
6 | //
7 | //@RunWith(SpringRunner.class)
8 | //@SpringBootTest
9 | //public class ClouddoAdminApplicationTests {
10 | //
11 | // public static void main(String[] args) {
12 | // MobileCardCompanyDO cardPayOrderModel = new MobileCardCompanyDO();
13 | // cardPayOrderModel.setCompanyCode("HS");
14 | // cardPayOrderModel.setCompanyDesc("a1231241241awdasdf");
15 | // cardPayOrderModel.setCompanyName("123124dzvsds");
16 | // cardPayOrderModel.setId(2l);
17 | // cardPayOrderModel.setStatus("1");
18 | // CompanyModel companyModel = new CompanyModel();
19 | //
20 | // /**
21 | // * 10W次
22 | // * BeanUtils.copyProperties:718
23 | // * beanCopier.copy:56
24 | // */
25 | //
26 | // /**
27 | // * 100W次
28 | // * BeanUtils.copyProperties:5673
29 | // * beanCopier.copy:70
30 | // */
31 | //
32 | // //BeanUtils性能
33 | // long start = System.currentTimeMillis();
34 | // for (int i = 0; i < 1000000; i++) {
35 | // BeanUtils.copyProperties(cardPayOrderModel, companyModel);
36 | // }
37 | // long end = System.currentTimeMillis();
38 | // System.out.println(end - start);
39 | //
40 | // //BeanCopier性能
41 | // long start1 = System.currentTimeMillis();
42 | // BeanCopier beanCopier = BeanCopier.create(MobileCardCompanyDO.class, CompanyModel.class,
43 | // false);
44 | // for (int i = 0; i < 1000000; i++) {
45 | // beanCopier.copy(cardPayOrderModel, companyModel, null);
46 | // }
47 | // long end1 = System.currentTimeMillis();
48 | // System.out.println(end1 - start1);
49 | // }
50 | //
51 | //}
52 |
--------------------------------------------------------------------------------
/clouddo-base/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.bootdo
7 | clouddo-base
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | clouddo-base
12 | 日志等基础服务
13 |
14 |
15 | org.springframework.boot
16 | spring-boot-starter-parent
17 | 2.0.4.RELEASE
18 |
19 |
20 |
21 |
22 | UTF-8
23 | UTF-8
24 | 1.8
25 | Finchley.SR1
26 |
27 |
28 |
29 |
30 | org.springframework.cloud
31 | spring-cloud-starter-netflix-eureka-server
32 |
33 |
34 |
35 | org.springframework.boot
36 | spring-boot-starter-web
37 |
38 |
39 |
40 | org.springframework.boot
41 | spring-boot-starter-test
42 | test
43 |
44 |
45 |
46 | mysql
47 | mysql-connector-java
48 |
49 |
50 | org.mybatis
51 | mybatis
52 | 3.4.4
53 |
54 |
55 |
56 | org.mybatis.spring.boot
57 | mybatis-spring-boot-starter
58 | 1.1.1
59 |
60 |
61 |
62 | com.bootdo
63 | clouddo-common
64 | 0.0.1-SNAPSHOT
65 |
66 |
67 |
68 |
69 |
70 |
71 | org.springframework.cloud
72 | spring-cloud-dependencies
73 | ${spring-cloud.version}
74 | pom
75 | import
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | org.springframework.boot
84 | spring-boot-maven-plugin
85 |
86 |
87 |
88 |
89 |
90 |
91 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/java/com/bootdo/clouddobase/ClouddoBaseApplication.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase;
2 |
3 | import org.mybatis.spring.annotation.MapperScan;
4 | import org.springframework.boot.SpringApplication;
5 | import org.springframework.boot.autoconfigure.SpringBootApplication;
6 |
7 | @MapperScan(basePackages = {"com.bootdo.*.dao"})
8 | @SpringBootApplication
9 | public class ClouddoBaseApplication {
10 |
11 | public static void main(String[] args) {
12 | SpringApplication.run(ClouddoBaseApplication.class, args);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/java/com/bootdo/clouddobase/controller/LogController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase.controller;
2 |
3 |
4 | import com.bootdo.clouddocommon.dto.LogDO;
5 | import com.bootdo.clouddocommon.utils.PageUtils;
6 | import com.bootdo.clouddocommon.utils.Query;
7 | import com.bootdo.clouddocommon.utils.R;
8 | import com.bootdo.clouddobase.service.LogService;
9 | import org.springframework.beans.factory.annotation.Autowired;
10 | import org.springframework.stereotype.Controller;
11 | import org.springframework.web.bind.annotation.*;
12 |
13 | import java.util.HashMap;
14 | import java.util.List;
15 | import java.util.Map;
16 |
17 | @RequestMapping("/log")
18 | @RestController
19 | public class LogController {
20 | @Autowired
21 | LogService logService;
22 |
23 | @GetMapping()
24 | R list(@RequestParam Map params) {
25 | Query query = new Query(params);
26 | return R.page(new PageUtils(logService.queryList(query), logService.count(query)));
27 | }
28 |
29 | @PostMapping("/save")
30 | R save(@RequestBody LogDO logDO) {
31 | if (logService.save(logDO) > 0) {
32 | return R.ok();
33 | }
34 | return R.error();
35 | }
36 |
37 | @DeleteMapping()
38 | R remove(Long id) {
39 | if (logService.remove(id) > 0) {
40 | return R.ok();
41 | }
42 | return R.error();
43 | }
44 |
45 | @PostMapping("/batchRemove")
46 | R batchRemove(@RequestParam("ids[]") Long[] ids) {
47 | int r = logService.batchRemove(ids);
48 | if (r > 0) {
49 | return R.ok();
50 | }
51 | return R.error();
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/java/com/bootdo/clouddobase/dao/LogDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase.dao;
2 |
3 | import com.bootdo.clouddocommon.dto.LogDO;
4 | import org.apache.ibatis.annotations.Mapper;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | /**
10 | * 系统日志
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2017-10-03 15:45:42
14 | */
15 | @Mapper
16 | public interface LogDao {
17 |
18 | LogDO get(Long id);
19 |
20 | List list(Map map);
21 |
22 | int count(Map map);
23 |
24 | int save(LogDO log);
25 |
26 | int update(LogDO log);
27 |
28 | int remove(Long id);
29 |
30 | int batchRemove(Long[] ids);
31 | }
32 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/java/com/bootdo/clouddobase/service/LogService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase.service;
2 |
3 |
4 | import com.bootdo.clouddocommon.dto.LogDO;
5 | import com.bootdo.clouddocommon.utils.Query;
6 | import org.springframework.stereotype.Service;
7 |
8 | import java.util.List;
9 |
10 |
11 | @Service
12 | public interface LogService {
13 | int save(LogDO logDO);
14 |
15 | List queryList(Query query);
16 |
17 | int count(Query query);
18 |
19 | int remove(Long id);
20 |
21 | int batchRemove(Long[] ids);
22 | }
23 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/java/com/bootdo/clouddobase/service/impl/LogServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase.service.impl;
2 |
3 |
4 | import com.bootdo.clouddocommon.dto.LogDO;
5 | import com.bootdo.clouddocommon.utils.Query;
6 | import com.bootdo.clouddobase.dao.LogDao;
7 | import com.bootdo.clouddobase.service.LogService;
8 | import org.springframework.beans.factory.annotation.Autowired;
9 | import org.springframework.scheduling.annotation.Async;
10 | import org.springframework.stereotype.Service;
11 |
12 | import java.util.List;
13 |
14 | @Service
15 | public class LogServiceImpl implements LogService {
16 | @Autowired
17 | LogDao logMapper;
18 |
19 | @Async
20 | @Override
21 | public int save(LogDO logDO) {
22 | return logMapper.save(logDO);
23 | }
24 |
25 | @Override
26 | public List queryList(Query query) {
27 | List logs = logMapper.list(query);
28 | return logs;
29 | }
30 |
31 | @Override
32 | public int count(Query query) {
33 | return logMapper.count(query);
34 | }
35 |
36 | @Override
37 | public int remove(Long id) {
38 | int count = logMapper.remove(id);
39 | return count;
40 | }
41 |
42 | @Override
43 | public int batchRemove(Long[] ids) {
44 | return logMapper.batchRemove(ids);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | eureka:
2 | client:
3 | serviceUrl:
4 | defaultZone: http://localhost:8001/eureka/
5 | spring:
6 | application:
7 | name: api-base
8 | datasource:
9 | url: jdbc:mysql://127.0.0.1:3306/clouddo?useUnicode=true&characterEncoding=utf8
10 | username: root
11 | password: root
12 | mybatis:
13 | mapper-locations: mapper/**Mapper.xml
14 | configuration:
15 | map-underscore-to-camel-case: true
--------------------------------------------------------------------------------
/clouddo-base/src/main/resources/mapper/LogMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
35 |
36 |
50 |
51 |
52 | insert into sys_log
53 | (
54 | `user_id`,
55 | `username`,
56 | `operation`,
57 | `time`,
58 | `method`,
59 | `params`,
60 | `ip`,
61 | `gmt_create`
62 | )
63 | values
64 | (
65 | #{userId},
66 | #{username},
67 | #{operation},
68 | #{time},
69 | #{method},
70 | #{params},
71 | #{ip},
72 | #{gmtCreate}
73 | )
74 |
75 |
76 |
77 | update sys_log
78 |
79 | `user_id` = #{userId},
80 | `username` = #{username},
81 | `operation` = #{operation},
82 | `time` = #{time},
83 | `method` = #{method},
84 | `params` = #{params},
85 | `ip` = #{ip},
86 | `gmt_create` = #{gmtCreate}
87 |
88 | where id = #{id}
89 |
90 |
91 |
92 | delete from sys_log where id = #{value}
93 |
94 |
95 |
96 | delete from sys_log where id in
97 |
98 | #{id}
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/clouddo-base/src/main/resources/mybatis/LogMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
35 |
36 |
50 |
51 |
52 | insert into sys_log
53 | (
54 | `user_id`,
55 | `username`,
56 | `operation`,
57 | `time`,
58 | `method`,
59 | `params`,
60 | `ip`,
61 | `gmt_create`
62 | )
63 | values
64 | (
65 | #{userId},
66 | #{username},
67 | #{operation},
68 | #{time},
69 | #{method},
70 | #{params},
71 | #{ip},
72 | #{gmtCreate}
73 | )
74 |
75 |
76 |
77 | update sys_log
78 |
79 | `user_id` = #{userId},
80 | `username` = #{username},
81 | `operation` = #{operation},
82 | `time` = #{time},
83 | `method` = #{method},
84 | `params` = #{params},
85 | `ip` = #{ip},
86 | `gmt_create` = #{gmtCreate}
87 |
88 | where id = #{id}
89 |
90 |
91 |
92 | delete from sys_log where id = #{value}
93 |
94 |
95 |
96 | delete from sys_log where id in
97 |
98 | #{id}
99 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/clouddo-base/src/test/java/com/bootdo/clouddobase/ClouddoLogApplicationTests.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddobase;
2 |
3 | import org.junit.Test;
4 | import org.junit.runner.RunWith;
5 | import org.springframework.boot.test.context.SpringBootTest;
6 | import org.springframework.test.context.junit4.SpringRunner;
7 |
8 | @RunWith(SpringRunner.class)
9 | @SpringBootTest
10 | public class ClouddoLogApplicationTests {
11 |
12 | @Test
13 | public void contextLoads() {
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/clouddo-cms/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.bootdo
7 | clouddo-cms
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | clouddo-cms
12 | Demo project for Spring Boot
13 |
14 |
15 | org.springframework.boot
16 | spring-boot-starter-parent
17 | 2.0.4.RELEASE
18 |
19 |
20 |
21 |
22 | UTF-8
23 | UTF-8
24 | 1.8
25 | Finchley.SR1
26 |
27 |
28 |
29 |
30 | org.mybatis.spring.boot
31 | mybatis-spring-boot-starter
32 | 1.3.1
33 |
34 |
35 | org.springframework.cloud
36 | spring-cloud-starter-netflix-eureka-server
37 |
38 |
39 | org.springframework.cloud
40 | spring-cloud-starter-netflix-hystrix
41 |
42 |
43 | org.springframework.cloud
44 | spring-cloud-starter-openfeign
45 |
46 |
47 |
48 | mysql
49 | mysql-connector-java
50 | runtime
51 |
52 |
53 | org.springframework.boot
54 | spring-boot-starter-test
55 | test
56 |
57 |
58 |
59 | com.bootdo
60 | clouddo-common
61 | 0.0.1-SNAPSHOT
62 |
63 |
64 |
65 |
66 |
67 |
68 | org.springframework.cloud
69 | spring-cloud-dependencies
70 | ${spring-cloud.version}
71 | pom
72 | import
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | org.springframework.boot
81 | spring-boot-maven-plugin
82 |
83 |
84 | org.apache.maven.plugins
85 | maven-compiler-plugin
86 | 3.6.1
87 |
88 | 1.8
89 | 1.8
90 |
91 |
92 | org.mapstruct
93 | mapstruct-processor
94 | ${org.mapstruct.version}
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 | spring-milestones
105 | Spring Milestones
106 | https://repo.spring.io/milestone
107 |
108 | false
109 |
110 |
111 |
112 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/ClouddoCmsApplication.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.boot.web.servlet.FilterRegistrationBean;
6 | import org.springframework.cache.annotation.EnableCaching;
7 | import org.springframework.context.annotation.Bean;
8 | import org.springframework.scheduling.annotation.EnableScheduling;
9 |
10 | @EnableCaching
11 | @EnableScheduling
12 | @SpringBootApplication
13 | public class ClouddoCmsApplication {
14 |
15 | public static void main(String[] args) {
16 | SpringApplication.run(ClouddoCmsApplication.class, args);
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/config/AuthConfig.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.config;
2 |
3 | import com.bootdo.clouddocommon.intercepter.AuthIntercepter;
4 | import org.springframework.context.annotation.Bean;
5 | import org.springframework.context.annotation.Configuration;
6 | import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
7 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
9 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
10 |
11 | @Configuration
12 | public class AuthConfig implements WebMvcConfigurer {
13 | @Bean
14 | public AuthIntercepter authIntercepter() {
15 | return new AuthIntercepter();
16 | }
17 |
18 | @Override
19 | public void addInterceptors(InterceptorRegistry registry) {
20 | InterceptorRegistration addInterceptor = registry.addInterceptor(authIntercepter());
21 |
22 | // 排除配置
23 | addInterceptor.excludePathPatterns("/error");
24 | addInterceptor.excludePathPatterns("/files/**");
25 |
26 | // 拦截配置
27 | addInterceptor.addPathPatterns("/**");
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/config/WebConfig.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.config;
2 |
3 | import org.springframework.beans.factory.annotation.Value;
4 | import org.springframework.stereotype.Component;
5 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7 |
8 | @Component
9 | public class WebConfig implements WebMvcConfigurer {
10 | @Value("${app.filePath}")
11 | String filePath;
12 |
13 | @Value("${app.pre}")
14 | String pre;
15 | @Override
16 | public void addResourceHandlers(ResourceHandlerRegistry registry) {
17 | registry.addResourceHandler(pre+"/**").addResourceLocations("file:///"+filePath);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/controller/FileController.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.controller;
2 |
3 | import java.io.IOException;
4 | import java.util.Date;
5 | import java.util.List;
6 | import java.util.Map;
7 | import java.util.UUID;
8 |
9 | import com.bootdo.clouddocommon.context.FilterContextHandler;
10 | import com.bootdo.clouddocommon.utils.FileUtils;
11 | import org.springframework.beans.factory.annotation.Autowired;
12 | import org.springframework.beans.factory.annotation.Value;
13 | import org.springframework.ui.Model;
14 | import org.springframework.stereotype.Controller;
15 | import org.springframework.web.bind.annotation.*;
16 |
17 | import com.bootdo.clouddocms.domain.FileDO;
18 | import com.bootdo.clouddocms.dto.FileDTO;
19 | import com.bootdo.clouddocms.dto.convert.FileConvert;
20 | import com.bootdo.clouddocms.service.FileService;
21 | import com.bootdo.clouddocommon.utils.PageUtils;
22 | import com.bootdo.clouddocommon.utils.Query;
23 | import com.bootdo.clouddocommon.utils.R;
24 | import org.springframework.web.multipart.MultipartFile;
25 |
26 | /**
27 | * 文件上传
28 | *
29 | * @author chglee
30 | * @email 1992lcg@163.com
31 | * @date 2018-03-12 12:17:36
32 | */
33 |
34 | @RestController
35 | @RequestMapping("/file")
36 | public class FileController {
37 | @Value("${app.filePath}")
38 | String filePath;
39 |
40 | @Value("${app.pre}")
41 | String filePre;
42 |
43 | @Autowired
44 | private FileService fileService;
45 |
46 | @GetMapping("{id}")
47 | public R get(@PathVariable Long id) {
48 | FileDTO fileDTO = FileConvert.MAPPER.do2dto(fileService.get(id));
49 | return R.data(fileDTO);
50 | }
51 |
52 | @GetMapping("getToken")
53 | public R getToken() {
54 | return R.ok().put("token", FilterContextHandler.getToken()).put("url", "http://localhost:8002/api-cms/file/upload")
55 | .put("key", UUID.randomUUID().toString());
56 | }
57 |
58 | @PostMapping("upload")
59 | public R upload(MultipartFile file, String key) {
60 | try {
61 | String resPath = FileUtils.saveFile(file.getBytes(), filePath, key);
62 | fileService.save(new FileDO() {{
63 | setCreateDate(new Date());
64 | setUrl("http://localhost:8004" + filePre + "/"+resPath);
65 | setType(1);
66 | }});
67 | return R.ok().put("resPath", resPath);
68 | } catch (IOException e) {
69 | e.printStackTrace();
70 | return R.error("文件上传失败");
71 | }
72 | }
73 |
74 | /**
75 | * 分页查询
76 | */
77 | @GetMapping
78 | public R list(@RequestParam Map params) {
79 | Query query = new Query(params);
80 | List fileList = fileService.list(query);
81 | // List fileDTOS = FileConvert.MAPPER.dos2dtos(fileList);
82 | int total = fileService.count(query);
83 | // PageUtils pageUtils = new PageUtils(fileDTOS, total);
84 | PageUtils pageUtils = new PageUtils(fileList, total);
85 | return R.page(pageUtils);
86 | }
87 |
88 | /**
89 | * 保存
90 | */
91 | @PostMapping
92 | public R save(FileDO file) {
93 | return R.operate(fileService.save(file) > 0);
94 | }
95 |
96 | /**
97 | * 修改
98 | */
99 | @PutMapping
100 | public R update(FileDO file) {
101 | return R.operate(fileService.update(file) > 0);
102 | }
103 |
104 | /**
105 | * 删除
106 | */
107 | @DeleteMapping
108 | public R remove(Long id) {
109 | return R.operate(fileService.remove(id) > 0);
110 | }
111 |
112 | /**
113 | * 删除
114 | */
115 | @DeleteMapping("/batchRemove")
116 | public R remove(@RequestParam("ids[]") Long[] ids) {
117 | return R.operate(fileService.batchRemove(ids) > 0);
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/dao/FileDao.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.dao;
2 |
3 | import com.bootdo.clouddocms.domain.FileDO;
4 |
5 | import java.util.List;
6 | import java.util.Map;
7 |
8 | import org.apache.ibatis.annotations.Mapper;
9 |
10 | /**
11 | * 文件上传
12 | * @author chglee
13 | * @email 1992lcg@163.com
14 | * @date 2018-03-11 20:04:05
15 | */
16 | @Mapper
17 | public interface FileDao {
18 |
19 | FileDO get(Long id);
20 |
21 | List list(Map map);
22 |
23 | int count(Map map);
24 |
25 | int save(FileDO file);
26 |
27 | int update(FileDO file);
28 |
29 | int remove(Long id);
30 |
31 | int batchRemove(Long[] ids);
32 | }
33 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/domain/FileDO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.domain;
2 |
3 | import java.io.Serializable;
4 | import java.util.Date;
5 |
6 |
7 |
8 | /**
9 | * 文件上传
10 | *
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2018-03-11 20:04:05
14 | */
15 | public class FileDO implements Serializable {
16 | private static final long serialVersionUID = 1L;
17 |
18 | //
19 | private Long id;
20 | //文件类型
21 | private Integer type;
22 | //URL地址
23 | private String url;
24 | //创建时间
25 | private Date createDate;
26 |
27 | /**
28 | * 设置:
29 | */
30 | public void setId(Long id) {
31 | this.id = id;
32 | }
33 | /**
34 | * 获取:
35 | */
36 | public Long getId() {
37 | return id;
38 | }
39 | /**
40 | * 设置:文件类型
41 | */
42 | public void setType(Integer type) {
43 | this.type = type;
44 | }
45 | /**
46 | * 获取:文件类型
47 | */
48 | public Integer getType() {
49 | return type;
50 | }
51 | /**
52 | * 设置:URL地址
53 | */
54 | public void setUrl(String url) {
55 | this.url = url;
56 | }
57 | /**
58 | * 获取:URL地址
59 | */
60 | public String getUrl() {
61 | return url;
62 | }
63 | /**
64 | * 设置:创建时间
65 | */
66 | public void setCreateDate(Date createDate) {
67 | this.createDate = createDate;
68 | }
69 | /**
70 | * 获取:创建时间
71 | */
72 | public Date getCreateDate() {
73 | return createDate;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/dto/FileDTO.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.dto;
2 |
3 | import java.io.Serializable;
4 | import java.util.Date;
5 |
6 |
7 |
8 | /**
9 | * 文件上传
10 | *
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2018-03-12 10:18:23
14 | */
15 | public class FileDTO implements Serializable {
16 | private static final long serialVersionUID = 1L;
17 |
18 | //
19 | private Long id;
20 | //文件类型
21 | private Integer type;
22 | //URL地址
23 | private String url;
24 | //创建时间
25 | private Date createDate;
26 |
27 | /**
28 | * 设置:
29 | */
30 | public void setId(Long id) {
31 | this.id = id;
32 | }
33 | /**
34 | * 获取:
35 | */
36 | public Long getId() {
37 | return id;
38 | }
39 | /**
40 | * 设置:文件类型
41 | */
42 | public void setType(Integer type) {
43 | this.type = type;
44 | }
45 | /**
46 | * 获取:文件类型
47 | */
48 | public Integer getType() {
49 | return type;
50 | }
51 | /**
52 | * 设置:URL地址
53 | */
54 | public void setUrl(String url) {
55 | this.url = url;
56 | }
57 | /**
58 | * 获取:URL地址
59 | */
60 | public String getUrl() {
61 | return url;
62 | }
63 | /**
64 | * 设置:创建时间
65 | */
66 | public void setCreateDate(Date createDate) {
67 | this.createDate = createDate;
68 | }
69 | /**
70 | * 获取:创建时间
71 | */
72 | public Date getCreateDate() {
73 | return createDate;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/dto/convert/FileConvert.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.dto.convert;
2 |
3 |
4 | import com.bootdo.clouddocms.domain.FileDO;
5 | import com.bootdo.clouddocms.dto.FileDTO;
6 | import org.mapstruct.factory.Mappers;
7 |
8 | import java.util.List;
9 |
10 | @org.mapstruct.Mapper
11 | public interface FileConvert {
12 | FileConvert MAPPER = Mappers.getMapper(FileConvert.class);
13 |
14 | public FileDTO do2dto(FileDO person);
15 |
16 | public List dos2dtos(List list);
17 | }
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/service/FileService.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.service;
2 |
3 | import com.bootdo.clouddocms.domain.FileDO;
4 |
5 | import java.util.List;
6 | import java.util.Map;
7 |
8 | /**
9 | * 文件上传
10 | *
11 | * @author chglee
12 | * @email 1992lcg@163.com
13 | * @date 2018-03-11 20:04:05
14 | */
15 | public interface FileService {
16 |
17 | FileDO get(Long id);
18 |
19 | List list(Map map);
20 |
21 | int count(Map map);
22 |
23 | int save(FileDO file);
24 |
25 | int update(FileDO file);
26 |
27 | int remove(Long id);
28 |
29 | int batchRemove(Long[] ids);
30 | }
31 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/java/com/bootdo/clouddocms/service/impl/FileServiceImpl.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocms.service.impl;
2 |
3 | import org.springframework.beans.factory.annotation.Autowired;
4 | import org.springframework.stereotype.Service;
5 |
6 | import java.util.List;
7 | import java.util.Map;
8 |
9 | import com.bootdo.clouddocms.dao.FileDao;
10 | import com.bootdo.clouddocms.domain.FileDO;
11 | import com.bootdo.clouddocms.service.FileService;
12 |
13 |
14 |
15 | @Service
16 | public class FileServiceImpl implements FileService {
17 | @Autowired
18 | private FileDao fileDao;
19 |
20 | @Override
21 | public FileDO get(Long id){
22 | return fileDao.get(id);
23 | }
24 |
25 | @Override
26 | public List list(Map map){
27 | return fileDao.list(map);
28 | }
29 |
30 | @Override
31 | public int count(Map map){
32 | return fileDao.count(map);
33 | }
34 |
35 | @Override
36 | public int save(FileDO file){
37 | return fileDao.save(file);
38 | }
39 |
40 | @Override
41 | public int update(FileDO file){
42 | return fileDao.update(file);
43 | }
44 |
45 | @Override
46 | public int remove(Long id){
47 | return fileDao.remove(id);
48 | }
49 |
50 | @Override
51 | public int batchRemove(Long[] ids){
52 | return fileDao.batchRemove(ids);
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/clouddo-cms/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | eureka:
2 | client:
3 | serviceUrl:
4 | defaultZone: http://localhost:8001/eureka/
5 | server:
6 | port: 8004
7 | spring:
8 | application:
9 | name: api-cms
10 | datasource:
11 | url: jdbc:mysql://127.0.0.1:3306/clouddo?useUnicode=true&characterEncoding=utf8
12 | username: root
13 | password: root
14 | jackson:
15 | date-format: yyyy-MM-dd
16 | time-zone: GMT+8
17 | servlet:
18 | multipart:
19 | max-file-size: 100Mb
20 | max-request-size: 100Mb
21 | mybatis:
22 | mapper-locations: mapper/**Mapper.xml
23 | configuration:
24 | map-underscore-to-camel-case: true
25 | app:
26 | filePath: c:/var/uploaded_files/
27 | pre: /files
--------------------------------------------------------------------------------
/clouddo-cms/src/main/resources/mapper/FileMapper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
9 |
10 |
30 |
31 |
40 |
41 |
42 | insert into cms_file
43 | (
44 | `type`,
45 | `url`,
46 | `create_date`
47 | )
48 | values
49 | (
50 | #{type},
51 | #{url},
52 | #{createDate}
53 | )
54 |
55 |
56 |
57 | update cms_file
58 |
59 | `type` = #{type},
60 | `url` = #{url},
61 | `create_date` = #{createDate}
62 |
63 | where id = #{id}
64 |
65 |
66 |
67 | delete from cms_file where id = #{value}
68 |
69 |
70 |
71 | delete from cms_file where id in
72 |
73 | #{id}
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/clouddo-common/pom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | 4.0.0
5 |
6 | com.bootdo
7 | clouddo-common
8 | 0.0.1-SNAPSHOT
9 | jar
10 |
11 | clouddo-common
12 | Demo project for Spring Boot
13 |
14 |
15 | org.springframework.boot
16 | spring-boot-starter-parent
17 | 2.0.4.RELEASE
18 |
19 |
20 |
21 |
22 | UTF-8
23 | UTF-8
24 | 1.8
25 | Finchley.SR1
26 | 1.2.0.Final
27 |
28 |
29 |
30 |
31 | org.springframework.boot
32 | spring-boot-starter-web
33 |
34 |
35 |
36 | org.springframework.cloud
37 | spring-cloud-starter-openfeign
38 |
39 |
40 |
41 | org.springframework.boot
42 | spring-boot-starter-test
43 | test
44 |
45 |
46 |
47 | org.springframework.boot
48 | spring-boot-starter-aop
49 |
50 |
51 | org.springframework.boot
52 | spring-boot-autoconfigure
53 | 1.5.6.RELEASE
54 |
55 |
56 |
57 |
58 | io.jsonwebtoken
59 | jjwt
60 | 0.7.0
61 |
62 |
63 | com.fasterxml
64 | classmate
65 | 1.3.4
66 |
67 |
68 |
69 | org.mapstruct
70 | mapstruct-jdk8
71 | ${org.mapstruct.version}
72 |
73 |
74 | org.apache.commons
75 | commons-lang3
76 | 3.7
77 |
78 |
79 | com.alibaba
80 | fastjson
81 | RELEASE
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 | org.springframework.cloud
90 | spring-cloud-dependencies
91 | ${spring-cloud.version}
92 | pom
93 | import
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/annotation/Log.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.METHOD)
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface Log {
11 | String value() default "";
12 | }
13 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/aspect/LogAspect.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.aspect;
2 |
3 | import com.bootdo.clouddocommon.annotation.Log;
4 | import com.bootdo.clouddocommon.context.FilterContextHandler;
5 | import com.bootdo.clouddocommon.dto.LogDO;
6 | import com.bootdo.clouddocommon.service.LogRpcService;
7 | import com.bootdo.clouddocommon.utils.HttpContextUtils;
8 | import com.bootdo.clouddocommon.utils.IPUtils;
9 | import com.bootdo.clouddocommon.utils.JSONUtils;
10 | import org.aspectj.lang.ProceedingJoinPoint;
11 | import org.aspectj.lang.annotation.Around;
12 | import org.aspectj.lang.annotation.Aspect;
13 | import org.aspectj.lang.annotation.Pointcut;
14 | import org.aspectj.lang.reflect.MethodSignature;
15 | import org.slf4j.Logger;
16 | import org.slf4j.LoggerFactory;
17 | import org.springframework.beans.factory.annotation.Autowired;
18 | import org.springframework.stereotype.Component;
19 |
20 | import javax.servlet.http.HttpServletRequest;
21 | import java.lang.reflect.Method;
22 | import java.util.Date;
23 |
24 | @Aspect
25 | @Component
26 | public class LogAspect {
27 | private static final Logger logger = LoggerFactory.getLogger(LogAspect.class);
28 |
29 | @Autowired
30 | LogRpcService logService;
31 |
32 |
33 | @Pointcut("@annotation(com.bootdo.clouddocommon.annotation.Log)")
34 | public void logPointCut() {
35 | }
36 |
37 | @Around("logPointCut()")
38 | public Object around(ProceedingJoinPoint point) throws Throwable {
39 | long beginTime = System.currentTimeMillis();
40 | // 执行方法
41 | Object result = point.proceed();
42 | // 执行时长(毫秒)
43 | long time = System.currentTimeMillis() - beginTime;
44 | //异步保存日志
45 | saveLog(point, time);
46 | return result;
47 | }
48 |
49 | void saveLog(ProceedingJoinPoint joinPoint, long time) throws InterruptedException {
50 | MethodSignature signature = (MethodSignature) joinPoint.getSignature();
51 | Method method = signature.getMethod();
52 | LogDO sysLog = new LogDO();
53 | Log syslog = method.getAnnotation(Log.class);
54 | if (syslog != null) {
55 | // 注解上的描述
56 | sysLog.setOperation(syslog.value());
57 | }
58 | // 请求的方法名
59 | String className = joinPoint.getTarget().getClass().getName();
60 | String methodName = signature.getName();
61 | sysLog.setMethod(className + "." + methodName + "()");
62 | // 请求的参数
63 | Object[] args = joinPoint.getArgs();
64 | try {
65 | String params = JSONUtils.beanToJson(args[0]).substring(0, 4999);
66 | sysLog.setParams(params);
67 | } catch (Exception e) {
68 |
69 | }
70 | // 获取request
71 | HttpServletRequest request = HttpContextUtils.getHttpServletRequest();
72 | // 设置IP地址
73 | sysLog.setIp(IPUtils.getIpAddr(request));
74 | // 用户名
75 |
76 | sysLog.setUserId(Long.parseLong(FilterContextHandler.getUserID() == null ? "000000" : FilterContextHandler.getUserID()));
77 | sysLog.setUsername(FilterContextHandler.getUsername() == null ? "" : FilterContextHandler.getUsername());
78 | sysLog.setTime((int) time);
79 | // 系统当前时间
80 | Date date = new Date();
81 | sysLog.setGmtCreate(date);
82 | // 保存系统日志
83 | logService.save(sysLog);
84 | }
85 | }
86 |
87 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/aspect/WebLogAspect.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.aspect;
2 |
3 | import org.aspectj.lang.JoinPoint;
4 | import org.aspectj.lang.ProceedingJoinPoint;
5 | import org.aspectj.lang.annotation.*;
6 | import org.slf4j.Logger;
7 | import org.slf4j.LoggerFactory;
8 | import org.springframework.stereotype.Component;
9 | import org.springframework.web.context.request.RequestContextHolder;
10 | import org.springframework.web.context.request.ServletRequestAttributes;
11 |
12 | import javax.servlet.http.HttpServletRequest;
13 | import java.util.Arrays;
14 |
15 | @Aspect
16 | @Component
17 | public class WebLogAspect {
18 | private static final Logger logger = LoggerFactory.getLogger(WebLogAspect.class);
19 |
20 | @Pointcut("execution( * com.bootdo..controller.*.*(..))")//两个..代表所有子目录,最后括号里的两个..代表所有参数
21 | public void logPointCut() {
22 | }
23 |
24 | @Before("logPointCut()")
25 | public void doBefore(JoinPoint joinPoint){
26 | ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
27 | HttpServletRequest request = requestAttributes.getRequest();
28 | logger.info("请求地址 : " +request.getRequestURL().toString());
29 | logger.info("HTTP METHOD : " + request.getMethod());
30 | // 获取真实的ip地址
31 | //logger.info("IP : " + IPAddressUtil.getClientIpAddress(request));
32 | logger.info("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "."
33 | + joinPoint.getSignature().getName());
34 | logger.info("参数 : " + Arrays.toString(joinPoint.getArgs()));
35 | }
36 | @AfterReturning(returning = "ret", pointcut = "logPointCut()")// returning的值和doAfterReturning的参数名一致
37 | public void doAfterReturning(Object ret) throws Throwable {
38 | // 处理完请求,返回内容(返回值太复杂时,打印的是物理存储空间的地址)
39 | logger.debug("返回值 : " + ret);
40 | }
41 |
42 | @Around("logPointCut()")
43 | public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
44 | long startTime = System.currentTimeMillis();
45 | Object ob = pjp.proceed();// ob 为方法的返回值
46 | logger.info("耗时 : " + (System.currentTimeMillis() - startTime));
47 | return ob;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/config/AsyncConfig.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.config;
2 |
3 | import org.springframework.context.annotation.Configuration;
4 | import org.springframework.scheduling.annotation.EnableAsync;
5 |
6 | @Configuration
7 | @EnableAsync
8 | public class AsyncConfig {
9 | }
10 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/constants/CommonConstants.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.constants;
2 |
3 | public class CommonConstants {
4 | public final static String CONTEXT_TOKEN="Authorization";
5 | public final static String CONTEXT_USERNAME="contextUsername";
6 | public final static String CONTEXT_USER_ID="contextUserId";
7 | public final static String CONTEXT_NAME="contextName";
8 | public final static String JWT_PRIVATE_KEY ="wwwbootdocom";
9 | public final static String RENEWAL_TIME = "renewalTime";
10 | public final static String TOKEN = "token";
11 | }
12 |
--------------------------------------------------------------------------------
/clouddo-common/src/main/java/com/bootdo/clouddocommon/context/FilterContextHandler.java:
--------------------------------------------------------------------------------
1 | package com.bootdo.clouddocommon.context;
2 |
3 | import com.bootdo.clouddocommon.constants.CommonConstants;
4 |
5 | import java.util.HashMap;
6 | import java.util.Map;
7 |
8 | public class FilterContextHandler {
9 | public static ThreadLocal