From eb9767c2d1bf977a25d936f53acae17fc9149e13 Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Mon, 10 Feb 2020 18:32:28 +0800 Subject: [PATCH] add user api --- .../io/metersphere/commons/MSException.java | 14 +++ .../controller/UserController.java | 25 +++++ .../main/java/io/metersphere/dto/UserDTO.java | 90 ++++++++++++++++++ .../io/metersphere/dto/UserOperateDTO.java | 19 ++++ .../io/metersphere/service/UserService.java | 92 +++++++++++++++++++ 5 files changed, 240 insertions(+) create mode 100644 backend/src/main/java/io/metersphere/commons/MSException.java create mode 100644 backend/src/main/java/io/metersphere/controller/UserController.java create mode 100644 backend/src/main/java/io/metersphere/dto/UserDTO.java create mode 100644 backend/src/main/java/io/metersphere/dto/UserOperateDTO.java create mode 100644 backend/src/main/java/io/metersphere/service/UserService.java diff --git a/backend/src/main/java/io/metersphere/commons/MSException.java b/backend/src/main/java/io/metersphere/commons/MSException.java new file mode 100644 index 0000000000..1cacd04294 --- /dev/null +++ b/backend/src/main/java/io/metersphere/commons/MSException.java @@ -0,0 +1,14 @@ +package io.metersphere.commons; + +public class MSException extends RuntimeException{ + + private MSException(String message) { super(message); } + + private MSException(Throwable t) { super(t); } + + public static void throwException(String message) { throw new MSException(message); } + + public static MSException getException(String message) { throw new MSException(message); } + + public static void throwException(Throwable t) { throw new MSException(t); } +} diff --git a/backend/src/main/java/io/metersphere/controller/UserController.java b/backend/src/main/java/io/metersphere/controller/UserController.java new file mode 100644 index 0000000000..a9957d1e6b --- /dev/null +++ b/backend/src/main/java/io/metersphere/controller/UserController.java @@ -0,0 +1,25 @@ +package io.metersphere.controller; + +import io.metersphere.base.domain.User; +import io.metersphere.dto.UserDTO; +import io.metersphere.service.UserService; +import org.springframework.stereotype.Controller; +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.RestController; + +import javax.annotation.Resource; + +@RequestMapping("user") +@RestController +public class UserController { + + @Resource + private UserService userService; + + @PostMapping("/add") + public UserDTO insertUser(@RequestBody User user) { + return userService.insert(user); + } +} diff --git a/backend/src/main/java/io/metersphere/dto/UserDTO.java b/backend/src/main/java/io/metersphere/dto/UserDTO.java new file mode 100644 index 0000000000..54a38270ca --- /dev/null +++ b/backend/src/main/java/io/metersphere/dto/UserDTO.java @@ -0,0 +1,90 @@ +package io.metersphere.dto; + +import io.metersphere.base.domain.Role; + +import java.util.ArrayList; +import java.util.List; + +public class UserDTO { + private String id; + + private String name; + + private String email; + + private String phone; + + private String status; + + private Long createTime; + + private Long updateTime; + + private List roles = new ArrayList<>(); + + public List getRoles() { + return roles; + } + + public void setRoles(List roles) { + this.roles = roles; + } + + private static final long serialVersionUID = 1L; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id == null ? null : id.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone == null ? null : phone.trim(); + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status == null ? null : status.trim(); + } + + public Long getCreateTime() { + return createTime; + } + + public void setCreateTime(Long createTime) { + this.createTime = createTime; + } + + public Long getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Long updateTime) { + this.updateTime = updateTime; + } +} diff --git a/backend/src/main/java/io/metersphere/dto/UserOperateDTO.java b/backend/src/main/java/io/metersphere/dto/UserOperateDTO.java new file mode 100644 index 0000000000..b1af90cce8 --- /dev/null +++ b/backend/src/main/java/io/metersphere/dto/UserOperateDTO.java @@ -0,0 +1,19 @@ +package io.metersphere.dto; + +import io.metersphere.base.domain.Role; +import io.metersphere.base.domain.User; + +import java.util.List; + +public class UserOperateDTO extends User { + + private List roleList; + + public List getRoleList() { + return roleList; + } + + public void setRoleList(List roleList) { + this.roleList = roleList; + } +} diff --git a/backend/src/main/java/io/metersphere/service/UserService.java b/backend/src/main/java/io/metersphere/service/UserService.java new file mode 100644 index 0000000000..e35885429e --- /dev/null +++ b/backend/src/main/java/io/metersphere/service/UserService.java @@ -0,0 +1,92 @@ +package io.metersphere.service; + +import io.metersphere.base.domain.*; +import io.metersphere.base.mapper.RoleMapper; +import io.metersphere.base.mapper.UserMapper; +import io.metersphere.base.mapper.UserRoleMapper; +import io.metersphere.commons.MSException; +import io.metersphere.dto.UserDTO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class UserService { + + @Resource + private UserMapper userMapper; + @Resource + private RoleMapper roleMapper; + @Resource + private UserRoleMapper userRoleMapper; + + public UserDTO insert(User user) { + checkUserParam(user); + createUser(user); + return getUserDTO(user.getId()); + } + + private void checkUserParam(User user) { + if (StringUtils.isBlank(user.getName())) { + MSException.throwException("user_name_empty"); + } + + if (StringUtils.isBlank(user.getEmail())) { + MSException.throwException("user_email_empty"); + } + // password + } + + private void createUser(User userRequest) { + User user = new User(); + BeanUtils.copyProperties(userRequest, user); + user.setCreateTime(System.currentTimeMillis()); + user.setUpdateTime(System.currentTimeMillis()); + user.setStatus("0"); + + UserExample userExample = new UserExample(); + UserExample.Criteria criteria = userExample.createCriteria(); + criteria.andEmailEqualTo(user.getEmail()); + List userList = userMapper.selectByExample(userExample); + if (!CollectionUtils.isEmpty(userList)) { + MSException.throwException("user_email_is_exist"); + } + userMapper.insertSelective(user); + } + + public UserDTO getUserDTO(String userId) { + + User user = userMapper.selectByPrimaryKey(userId); + if (user == null) { + return null; + } + UserDTO userDTO = new UserDTO(); + BeanUtils.copyProperties(user, userDTO); + // + UserRoleExample userRoleExample = new UserRoleExample(); + userRoleExample.createCriteria().andUserIdEqualTo(userId); + List userRoleList = userRoleMapper.selectByExample(userRoleExample); + + if (CollectionUtils.isEmpty(userRoleList)) { + return userDTO; + } + + List roleIds = userRoleList.stream().map(UserRole::getRoleId).collect(Collectors.toList()); + + RoleExample roleExample = new RoleExample(); + roleExample.createCriteria().andIdIn(roleIds); + + List roleList = roleMapper.selectByExample(roleExample); + userDTO.setRoles(roleList); + + return userDTO; + } + + + +}