build: dto demo
This commit is contained in:
parent
f7eb9a33c7
commit
e6383778d1
|
@ -30,10 +30,10 @@ CREATE TABLE IF NOT EXISTS `user`
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `user_extend`
|
CREATE TABLE IF NOT EXISTS `user_extend`
|
||||||
(
|
(
|
||||||
`user_id` VARCHAR(50) NOT NULL COMMENT '用户ID',
|
`id` VARCHAR(50) NOT NULL COMMENT '用户ID',
|
||||||
`platform_info` BLOB COMMENT '其他平台对接信息',
|
`platform_info` BLOB COMMENT '其他平台对接信息',
|
||||||
`selenium_server` VARCHAR(255) DEFAULT NULL COMMENT 'UI本地调试地址',
|
`selenium_server` VARCHAR(255) DEFAULT NULL COMMENT 'UI本地调试地址',
|
||||||
PRIMARY KEY (`user_id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE = InnoDB
|
) ENGINE = InnoDB
|
||||||
DEFAULT CHARSET = utf8mb4
|
DEFAULT CHARSET = utf8mb4
|
||||||
COLLATE = utf8mb4_general_ci COMMENT ='用户扩展';
|
COLLATE = utf8mb4_general_ci COMMENT ='用户扩展';
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package io.metersphere.sdk.dto;
|
||||||
|
|
||||||
|
import io.metersphere.system.domain.User;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
public class UserDTO extends User {
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "其他平台对接信息", required = false, allowableValues = "range[1, 2000]")
|
||||||
|
private byte[] platformInfo;
|
||||||
|
|
||||||
|
@ApiModelProperty(name = "UI本地调试地址", required = false, allowableValues = "range[1, 255]")
|
||||||
|
private String seleniumServer;
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package io.metersphere.sdk.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import io.metersphere.system.domain.UserExtend;
|
||||||
|
|
||||||
|
public interface UserExtendMapper extends BaseMapper<UserExtend> {
|
||||||
|
}
|
|
@ -1,7 +1,9 @@
|
||||||
package io.metersphere.sdk.mapper;
|
package io.metersphere.sdk.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import io.metersphere.sdk.dto.UserDTO;
|
||||||
import io.metersphere.system.domain.User;
|
import io.metersphere.system.domain.User;
|
||||||
|
|
||||||
public interface UserMapper extends BaseMapper<User> {
|
public interface UserMapper extends BaseMapper<User> {
|
||||||
|
UserDTO selectById(String id);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="io.metersphere.sdk.mapper.UserMapper">
|
||||||
|
|
||||||
|
<select id="selectById" resultType="io.metersphere.sdk.dto.UserDTO">
|
||||||
|
SELECT *
|
||||||
|
FROM user
|
||||||
|
LEFT JOIN user_extend ON user.id = user_extend.id
|
||||||
|
WHERE user.id = #{id}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -5,6 +5,7 @@ import io.metersphere.system.domain.User;
|
||||||
import io.metersphere.sdk.mapper.UserMapper;
|
import io.metersphere.sdk.mapper.UserMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class UserService extends ServiceImpl<UserMapper, User> {
|
public class BaseUserService extends ServiceImpl<UserMapper, User> {
|
||||||
}
|
}
|
|
@ -1,8 +1,9 @@
|
||||||
package io.metersphere.system.controller;
|
package io.metersphere.system.controller;
|
||||||
|
|
||||||
|
|
||||||
import io.metersphere.sdk.service.UserService;
|
|
||||||
import io.metersphere.system.domain.User;
|
import io.metersphere.system.domain.User;
|
||||||
|
import io.metersphere.sdk.dto.UserDTO;
|
||||||
|
import io.metersphere.system.service.UserService;
|
||||||
import io.metersphere.validation.groups.Created;
|
import io.metersphere.validation.groups.Created;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
@ -27,7 +28,7 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public boolean addUser(@Validated({Created.class}) @RequestBody User user) {
|
public boolean addUser(@Validated({Created.class}) @RequestBody UserDTO user) {
|
||||||
return userService.save(user);
|
return userService.save(user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package io.metersphere.system.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import io.metersphere.sdk.mapper.UserExtendMapper;
|
||||||
|
import io.metersphere.sdk.mapper.UserMapper;
|
||||||
|
import io.metersphere.sdk.util.BeanUtils;
|
||||||
|
import io.metersphere.system.domain.User;
|
||||||
|
import io.metersphere.system.domain.UserExtend;
|
||||||
|
import io.metersphere.sdk.dto.UserDTO;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public class UserService {
|
||||||
|
@Resource
|
||||||
|
private UserMapper userMapper;
|
||||||
|
@Resource
|
||||||
|
private UserExtendMapper userExtendMapper;
|
||||||
|
|
||||||
|
public boolean save(UserDTO entity) {
|
||||||
|
userMapper.insert(entity);
|
||||||
|
|
||||||
|
UserExtend userExtend = new UserExtend();
|
||||||
|
BeanUtils.copyBean(userExtend, entity);
|
||||||
|
userExtendMapper.insert(userExtend);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserDTO getById(String id) {
|
||||||
|
return userMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<User> list() {
|
||||||
|
QueryWrapper<User> userQueryWrapper = new QueryWrapper<>(new User());
|
||||||
|
return userMapper.selectList(userQueryWrapper);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
package io.metersphere.system.controller;
|
package io.metersphere.system.controller;
|
||||||
|
|
||||||
import io.metersphere.sdk.util.JSON;
|
import io.metersphere.sdk.util.JSON;
|
||||||
import io.metersphere.system.domain.User;
|
import io.metersphere.sdk.dto.UserDTO;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
|
||||||
|
@ -10,8 +10,6 @@ import org.springframework.http.MediaType;
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
|
||||||
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
|
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
||||||
|
|
||||||
|
@ -32,26 +30,47 @@ public class UserControllerTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSelectAll2() throws Exception {
|
public void testGetUser() throws Exception {
|
||||||
mockMvc.perform(MockMvcRequestBuilders.get("/user/get/admin"))
|
mockMvc.perform(MockMvcRequestBuilders.get("/user/get/admin"))
|
||||||
.andExpect(status().isOk())
|
.andExpect(status().isOk())
|
||||||
// .andExpect(content().contentType(MediaType.APPLICATION_JSON))
|
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
|
||||||
// .andExpect(jsonPath("$.person.name").value("Jason"))
|
.andExpect(jsonPath("$.data.id").value("admin"));
|
||||||
.andDo(print());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAddUser() throws Exception {
|
public void testAddUser() throws Exception {
|
||||||
User user = new User();
|
UserDTO user = new UserDTO();
|
||||||
user.setId("admin");
|
user.setId("admin");
|
||||||
user.setName("admin");
|
user.setName("admin");
|
||||||
|
user.setCreateUser("system");
|
||||||
|
user.setSource("LOCAL");
|
||||||
|
user.setEmail("bin@fit2cloud.com");
|
||||||
|
user.setStatus("enabled");
|
||||||
|
user.setCreateTime(System.currentTimeMillis());
|
||||||
|
user.setUpdateTime(System.currentTimeMillis());
|
||||||
|
|
||||||
|
user.setSeleniumServer("http://localhost:4444");
|
||||||
|
|
||||||
|
mockMvc.perform(MockMvcRequestBuilders.post("/user/add")
|
||||||
|
.content(JSON.toJSONString(user))
|
||||||
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddUserFailed() throws Exception {
|
||||||
|
UserDTO user = new UserDTO();
|
||||||
|
user.setId("admin2");
|
||||||
|
user.setCreateTime(System.currentTimeMillis());
|
||||||
|
user.setUpdateTime(System.currentTimeMillis());
|
||||||
|
|
||||||
|
user.setSeleniumServer("http://localhost:4444");
|
||||||
|
|
||||||
mockMvc.perform(MockMvcRequestBuilders.post("/user/add")
|
mockMvc.perform(MockMvcRequestBuilders.post("/user/add")
|
||||||
.content(JSON.toJSONString(user))
|
.content(JSON.toJSONString(user))
|
||||||
.contentType(MediaType.APPLICATION_JSON))
|
.contentType(MediaType.APPLICATION_JSON))
|
||||||
.andExpect(status().isBadRequest())
|
.andExpect(status().isBadRequest())
|
||||||
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
|
.andExpect(content().contentType(MediaType.APPLICATION_JSON));
|
||||||
.andExpect(jsonPath("$.code").value("100400"))
|
|
||||||
.andDo(print());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue