Skip to content

Commit

Permalink
增加Role、Permission、User之间的assign API
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhuXS committed Sep 25, 2017
1 parent 754f02a commit 4ead8f5
Show file tree
Hide file tree
Showing 6 changed files with 69 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import scala.App;

Expand All @@ -37,9 +34,11 @@
public class AdminController {
public static final String PATH = "admin";

public static final String SUBPATH_ROLE = "roles";
public static final String SUBPATH_USER = "users";
public static final String SUBPATH_PERMISSION = "permissions";
public static final String SUBPATH_ROLE = "/roles";
public static final String SUBPATH_USER = "/users";
public static final String SUBPATH_PERMISSION = "/permissions";

public static final String PATHVARIABLE_ID = "/{id}";

@Autowired
private ModelMapper modelMapper;
Expand Down Expand Up @@ -92,6 +91,18 @@ public ResponseEntity<List<RoleDto>> listRoles(UriComponentsBuilder uriComponent
return new ResponseEntity<List<RoleDto>>(roleDtos,headers,HttpStatus.OK);
}

@PutMapping(value = SUBPATH_ROLE + PATHVARIABLE_ID + SUBPATH_PERMISSION)
public ResponseEntity<RoleDto> updatePermissionsById(@PathVariable long id,@RequestBody List<PermissionDto> permissionDtos,
UriComponentsBuilder uriComponentsBuilder){
HttpHeaders headers = ApplicationUtil.getHttpHeaders(uriComponentsBuilder,PATH + SUBPATH_ROLE + PATHVARIABLE_ID + SUBPATH_PERMISSION);
List<Permission> permissions = permissionDtos.stream()
.map(permissionDto -> convertToEntity(permissionDto))
.collect(Collectors.toList());
Role role = roleService.updatePermissionsById(id,permissions);
RoleDto roleDto = convertToDto(role);
return new ResponseEntity<RoleDto>(roleDto,headers,HttpStatus.OK);
}

@PostMapping(value = SUBPATH_USER)
public ResponseEntity<UserDto> addUser(@RequestBody UserDto userDto,
UriComponentsBuilder uriComponentsBuilder){
Expand All @@ -113,6 +124,18 @@ public ResponseEntity<List<UserDto>> listUsers(UriComponentsBuilder uriComponen
return new ResponseEntity<List<UserDto>>(userDtos,headers,HttpStatus.OK);
}

@PutMapping(value = SUBPATH_USER + PATHVARIABLE_ID + SUBPATH_ROLE)
public ResponseEntity<UserDto> updateRolesById(@PathVariable long id, @RequestBody List<RoleDto> roleDtos,
UriComponentsBuilder uriComponentsBuilder){
HttpHeaders headers = ApplicationUtil.getHttpHeaders(uriComponentsBuilder,SUBPATH_USER + PATHVARIABLE_ID + SUBPATH_ROLE);
List<Role> roles = roleDtos.stream()
.map(roleDto -> convertToEntity(roleDto))
.collect(Collectors.toList());
User user = userService.updateRolesById(id,roles);
UserDto userDto = convertToDto(user);
return new ResponseEntity<UserDto>(userDto,headers,HttpStatus.OK);
}

private Permission convertToEntity(PermissionDto permissionDto){
return modelMapper.map(permissionDto,Permission.class);
}
Expand Down
6 changes: 5 additions & 1 deletion Server/src/main/java/com/zhuxs/result/dto/PermissionDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,11 @@ public void setResourceType(ResourceType resourceType) {
this.resourceType = resourceType;
}

public PermissionDto(long id) {
public long getId() {
return id;
}

public void setId(long id) {
this.id = id;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,5 @@ public interface RoleService {

List<Role> listRoles();

Role updatePermissionsById(List<Permission> permissions);
Role updatePermissionsById(long id,List<Permission> permissions);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.zhuxs.result.service;

import com.zhuxs.result.domain.entity.Role;
import com.zhuxs.result.domain.entity.User;
import com.zhuxs.result.dto.UserDto;

Expand All @@ -11,4 +12,5 @@
public interface UserService {
User addUser(User user);
List<User> listUsers();
User updateRolesById(long id, List<Role> roles);
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.zhuxs.result.service.impl;

import com.sun.org.apache.regexp.internal.RE;
import com.zhuxs.result.Exception.ResultException;
import com.zhuxs.result.domain.RoleDao;
import com.zhuxs.result.domain.entity.Permission;
import com.zhuxs.result.domain.entity.Role;
Expand Down Expand Up @@ -29,7 +31,17 @@ public List<Role> listRoles() {
}

@Override
public Role updatePermissionsById(List<Permission> permissions) {
return null;
public Role updatePermissionsById(long id, List<Permission> permissions){
if(!roleDao.exists(id)){
throw new ResultException();
}
try {
Role role = roleDao.findOne(id);
role.setPermissions(permissions);
role = roleDao.save(role);
return role;
} catch (Exception e){
throw new ResultException();
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.zhuxs.result.service.impl;

import com.zhuxs.result.Exception.ResultException;
import com.zhuxs.result.domain.UserDao;
import com.zhuxs.result.domain.entity.Role;
import com.zhuxs.result.domain.entity.User;
import com.zhuxs.result.dto.UserDto;
import com.zhuxs.result.service.UserService;
Expand All @@ -25,4 +27,19 @@ public List<User> listUsers() {
List<User> users = userDao.findAll();
return users;
}

@Override
public User updateRolesById(long id, List<Role> roles) {
if(!userDao.exists(id)){
throw new ResultException();
}
try {
User user = userDao.findOne(id);
user.setRoles(roles);
user = userDao.save(user);
return user;
}catch (Exception e){
throw new ResultException();
}
}
}

0 comments on commit 4ead8f5

Please sign in to comment.