Skip to content

Commit 3ce741e

Browse files
committed
组织管理,人员、角色、组、岗位
1 parent e3aab2a commit 3ce741e

19 files changed

Lines changed: 584 additions & 0 deletions

File tree

sysadmin/organization/pom.xml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
7+
<artifactId>organization</artifactId>
8+
<version>0.0.1-SNAPSHOT</version>
9+
<packaging>jar</packaging>
10+
11+
<name>organization</name>
12+
<description>Demo Organization project for Spring Boot</description>
13+
14+
<parent>
15+
<artifactId>sysadmin</artifactId>
16+
<groupId>com.springboot.cloud</groupId>
17+
<version>0.0.1-SNAPSHOT</version>
18+
</parent>
19+
20+
</project>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
FROM java:alpine
2+
VOLUME /tmp
3+
ADD organization-0.0.1-SNAPSHOT.jar app.jar
4+
ENTRYPOINT ["java","-jar","/app.jar"]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.springboot.cloud.sysadmin.organization;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
6+
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
7+
8+
@SpringBootApplication
9+
@EnableDiscoveryClient
10+
@EnableCircuitBreaker
11+
public class OrganizationApplication {
12+
public static void main(String[] args) {
13+
SpringApplication.run(OrganizationApplication.class, args);
14+
}
15+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.springboot.cloud.sysadmin.organization.config;
2+
3+
import org.springframework.context.annotation.ComponentScan;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
/**
7+
* 初使化Mybatis审计字段自动赋值的interceptor
8+
*/
9+
@Configuration
10+
@ComponentScan(basePackageClasses = com.springboot.common.web.interceptor.AuditInterceptor.class)
11+
public class MybatisConfig {
12+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.springboot.cloud.sysadmin.organization.config;
2+
3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
4+
import com.fasterxml.jackson.annotation.PropertyAccessor;
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import org.springframework.cache.CacheManager;
7+
import org.springframework.cache.annotation.CachingConfigurerSupport;
8+
import org.springframework.cache.annotation.EnableCaching;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
import org.springframework.data.redis.cache.RedisCacheConfiguration;
12+
import org.springframework.data.redis.cache.RedisCacheManager;
13+
import org.springframework.data.redis.cache.RedisCacheWriter;
14+
import org.springframework.data.redis.connection.RedisConnectionFactory;
15+
import org.springframework.data.redis.core.RedisTemplate;
16+
import org.springframework.data.redis.core.StringRedisTemplate;
17+
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
18+
19+
import java.time.Duration;
20+
21+
@Configuration
22+
@EnableCaching
23+
public class RedisConfig extends CachingConfigurerSupport {
24+
25+
@Bean
26+
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
27+
ObjectMapper om = new ObjectMapper();
28+
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
29+
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
30+
//redis序列化
31+
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
32+
jackson2JsonRedisSerializer.setObjectMapper(om);
33+
34+
StringRedisTemplate template = new StringRedisTemplate(factory);
35+
template.setValueSerializer(jackson2JsonRedisSerializer);
36+
template.afterPropertiesSet();
37+
return template;
38+
}
39+
40+
@Bean
41+
public CacheManager cacheManager(RedisTemplate redisTemplate) {
42+
//全局redis缓存过期时间
43+
RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(1));
44+
RedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisTemplate.getConnectionFactory());
45+
return new RedisCacheManager(redisCacheWriter, redisCacheConfiguration);
46+
}
47+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.springboot.cloud.sysadmin.organization.config;
2+
3+
import org.springframework.context.annotation.Bean;
4+
import org.springframework.context.annotation.Configuration;
5+
import springfox.documentation.builders.ApiInfoBuilder;
6+
import springfox.documentation.builders.PathSelectors;
7+
import springfox.documentation.builders.RequestHandlerSelectors;
8+
import springfox.documentation.service.ApiInfo;
9+
import springfox.documentation.spi.DocumentationType;
10+
import springfox.documentation.spring.web.plugins.Docket;
11+
import springfox.documentation.swagger2.annotations.EnableSwagger2;
12+
13+
@Configuration
14+
@EnableSwagger2
15+
public class SwaggerConfig {
16+
@Bean
17+
public Docket createRestApi() {
18+
return new Docket(DocumentationType.SWAGGER_2)
19+
.apiInfo(apiInfo())
20+
.select()
21+
.apis(RequestHandlerSelectors.basePackage("com.springboot.services.producer"))
22+
.paths(PathSelectors.any())
23+
.build();
24+
}
25+
26+
private ApiInfo apiInfo() {
27+
return new ApiInfoBuilder()
28+
.title("Spring Boot中使用Swagger2构建RESTful APIs")
29+
.description("更多Spring Boot API")
30+
.termsOfServiceUrl("https://github.com/zhoutaoo/SpringCloud")
31+
.version("2.0")
32+
.build();
33+
}
34+
35+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.springboot.cloud.sysadmin.organization.config;
2+
3+
import com.springboot.common.web.interceptor.UserInterceptor;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.web.servlet.HandlerInterceptor;
7+
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
8+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
9+
10+
@Configuration
11+
public class WebServerMvcConfigurerAdapter implements WebMvcConfigurer {
12+
13+
@Bean
14+
public HandlerInterceptor userInterceptor() {
15+
return new UserInterceptor();
16+
}
17+
18+
@Override
19+
public void addInterceptors(InterceptorRegistry registry) {
20+
registry.addInterceptor(userInterceptor());
21+
}
22+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.springboot.cloud.sysadmin.organization.dao;
2+
3+
import com.springboot.cloud.sysadmin.organization.entity.param.GroupQueryParam;
4+
import com.springboot.cloud.sysadmin.organization.entity.po.Group;
5+
import org.apache.ibatis.annotations.*;
6+
import org.springframework.stereotype.Repository;
7+
8+
import java.util.List;
9+
10+
@Mapper
11+
@Repository
12+
public interface GroupMapper {
13+
14+
@Options(useGeneratedKeys = true)
15+
@Insert("insert into \"group\"(parent_id,name,description,updated_time,created_time,updated_by,created_by)" +
16+
" values(#{name},#{description},now(),now(),#{updatedBy},#{createdBy})")
17+
long insert(Group group);
18+
19+
@Delete("delete from \"group\" where id=#{id}")
20+
void delete(long id);
21+
22+
@Update("update \"group\" set name=#{name},description=#{description},updated_by=#{updatedBy},updated_time=now()" +
23+
" where id=#{id}")
24+
void update(Group group);
25+
26+
@Select("select id,parent_id,name,description,updated_time,created_time,updated_by,created_by" +
27+
" from \"group\" where id=#{id}")
28+
Group select(long id);
29+
30+
@Select("<script>" +
31+
"select id,parent_id,name,description,updated_time,created_time,updated_by,created_by" +
32+
" from \"group\"" +
33+
" where name=#{name}" +
34+
"<if test='createdTimeStart!=null'>" +
35+
" and <![CDATA[created_time>#{createdTimeStart}]]>" +
36+
"</if>" +
37+
"<if test='createdTimeEnd!=null'>" +
38+
" and <![CDATA[created_time<#{createdTimeEnd}]]>" +
39+
"</if>" +
40+
"</script>")
41+
List<Group> query(GroupQueryParam groupQueryParam);
42+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.springboot.cloud.sysadmin.organization.entity.form;
2+
3+
import com.springboot.cloud.common.core.entity.form.BaseForm;
4+
import com.springboot.cloud.sysadmin.organization.entity.po.Group;
5+
import io.swagger.annotations.ApiModel;
6+
import io.swagger.annotations.ApiModelProperty;
7+
import lombok.Data;
8+
9+
import javax.validation.constraints.NotBlank;
10+
11+
@ApiModel
12+
@Data
13+
public class GroupForm extends BaseForm<Group> {
14+
15+
@NotBlank(message = "用户组父id不能为空")
16+
@ApiModelProperty(value = "用户组父id")
17+
private String parentId;
18+
19+
@NotBlank(message = "用户组名称不能为空")
20+
@ApiModelProperty(value = "用户组名称")
21+
private String name;
22+
23+
@ApiModelProperty(value = "用户组描述")
24+
private String description;
25+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.springboot.cloud.sysadmin.organization.entity.form;
2+
3+
import com.springboot.cloud.common.core.entity.form.BaseQueryForm;
4+
import com.springboot.cloud.sysadmin.organization.entity.param.GroupQueryParam;
5+
import io.swagger.annotations.ApiModel;
6+
import io.swagger.annotations.ApiModelProperty;
7+
import lombok.Data;
8+
import org.springframework.format.annotation.DateTimeFormat;
9+
10+
import javax.validation.constraints.NotBlank;
11+
import javax.validation.constraints.Past;
12+
import java.util.Date;
13+
14+
@ApiModel
15+
@Data
16+
public class GroupQueryForm extends BaseQueryForm<GroupQueryParam> {
17+
18+
@NotBlank(message = "名称不能为空")
19+
@ApiModelProperty(value = "产品名称", required = true)
20+
private String name;
21+
22+
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
23+
@Past(message = "查询开始时间必须小于当前日期")
24+
@ApiModelProperty(value = "查询开始时间")
25+
private Date createdTimeStart;
26+
27+
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
28+
@Past(message = "查询结束时间必须小于当前日期")
29+
@ApiModelProperty(value = "查询结束时间")
30+
private Date createdTimeEnd;
31+
}

0 commit comments

Comments
 (0)