feat: 使用record作为vo更加便捷
This commit is contained in:
@@ -12,7 +12,6 @@ import com.lanyuanxiaoyao.service.template.entity.QEmployee;
|
||||
import com.lanyuanxiaoyao.service.template.entity.Report;
|
||||
import com.lanyuanxiaoyao.service.template.entity.Report_;
|
||||
import com.lanyuanxiaoyao.service.template.repository.EmployeeRepository;
|
||||
import io.github.linpeilie.annotations.ComponentModelConfig;
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
import org.slf4j.Logger;
|
||||
@@ -35,7 +34,6 @@ import org.springframework.web.client.RestTemplate;
|
||||
@SpringBootApplication
|
||||
@EnableFenix
|
||||
@EnableJpaAuditing
|
||||
@ComponentModelConfig
|
||||
public class TestApplication {
|
||||
private static final Logger log = LoggerFactory.getLogger(TestApplication.class);
|
||||
private static final String BASE_URL = "http://localhost:2490";
|
||||
|
||||
@@ -2,77 +2,69 @@ package com.lanyuanxiaoyao.service.template.controller;
|
||||
|
||||
import com.lanyuanxiaoyao.service.template.entity.Company;
|
||||
import com.lanyuanxiaoyao.service.template.service.CompanyService;
|
||||
import io.github.linpeilie.Converter;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.function.Function;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("company")
|
||||
public class CompanyController extends SimpleControllerSupport<Company, CompanyController.SaveItem, CompanyController.ListItem, CompanyController.DetailItem> {
|
||||
private static final Converter converter = new Converter();
|
||||
|
||||
public CompanyController(CompanyService service) {
|
||||
super(service);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<SaveItem, Company> saveItemMapper() {
|
||||
return item -> converter.convert(item, Company.class);
|
||||
return item -> {
|
||||
var company = new Company();
|
||||
company.setId(item.id());
|
||||
company.setName(item.name());
|
||||
company.setMembers(item.members());
|
||||
return company;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Company, ListItem> listItemMapper() {
|
||||
return company -> converter.convert(company, ListItem.class);
|
||||
return company -> new ListItem(
|
||||
company.getId(),
|
||||
company.getName(),
|
||||
company.getMembers()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Company, DetailItem> detailItemMapper() {
|
||||
return company -> converter.convert(company, DetailItem.class);
|
||||
return company -> new DetailItem(
|
||||
company.getId(),
|
||||
company.getName(),
|
||||
company.getMembers(),
|
||||
company.getCreatedTime(),
|
||||
company.getModifiedTime()
|
||||
);
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Company.class, reverseConvertGenerate = false)
|
||||
public static class SaveItem {
|
||||
private Long id;
|
||||
private String name;
|
||||
private Integer members;
|
||||
public record SaveItem(
|
||||
Long id,
|
||||
String name,
|
||||
Integer members
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Company.class, convertGenerate = false)
|
||||
public static class ListItem {
|
||||
private Long id;
|
||||
private String name;
|
||||
private Integer members;
|
||||
public record ListItem(
|
||||
Long id,
|
||||
String name,
|
||||
Integer members
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Company.class, convertGenerate = false)
|
||||
public static class DetailItem {
|
||||
private Long id;
|
||||
private String name;
|
||||
private Integer members;
|
||||
private LocalDateTime createdTime;
|
||||
private LocalDateTime modifiedTime;
|
||||
public record DetailItem(
|
||||
Long id,
|
||||
String name,
|
||||
Integer members,
|
||||
LocalDateTime createdTime,
|
||||
LocalDateTime modifiedTime
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,87 +3,82 @@ package com.lanyuanxiaoyao.service.template.controller;
|
||||
import com.lanyuanxiaoyao.service.template.entity.Employee;
|
||||
import com.lanyuanxiaoyao.service.template.service.CompanyService;
|
||||
import com.lanyuanxiaoyao.service.template.service.EmployeeService;
|
||||
import io.github.linpeilie.Converter;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import io.github.linpeilie.annotations.AutoMapping;
|
||||
import io.github.linpeilie.annotations.ReverseAutoMapping;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.function.Function;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("employee")
|
||||
public class EmployeeController extends SimpleControllerSupport<Employee, EmployeeController.SaveItem, EmployeeController.ListItem, EmployeeController.DetailItem> {
|
||||
private final Converter converter = new Converter();
|
||||
private final CompanyService companyService;
|
||||
|
||||
public EmployeeController(EmployeeService service) {
|
||||
public EmployeeController(EmployeeService service, CompanyService companyService) {
|
||||
super(service);
|
||||
this.companyService = companyService;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<SaveItem, Employee> saveItemMapper() {
|
||||
return item -> converter.convert(item, Employee.class);
|
||||
return item -> {
|
||||
var employee = new Employee();
|
||||
employee.setId(item.id());
|
||||
employee.setName(item.name());
|
||||
employee.setAge(item.age());
|
||||
employee.setRole(Employee.Role.USER);
|
||||
employee.setCompany(companyService.detailOrThrow(item.companyId()));
|
||||
return employee;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Employee, ListItem> listItemMapper() {
|
||||
return employee -> converter.convert(employee, ListItem.class);
|
||||
return employee -> new ListItem(
|
||||
employee.getId(),
|
||||
employee.getName(),
|
||||
employee.getAge(),
|
||||
employee.getRole()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Employee, DetailItem> detailItemMapper() {
|
||||
return employee -> converter.convert(employee, DetailItem.class);
|
||||
return employee -> new DetailItem(
|
||||
employee.getId(),
|
||||
employee.getCompany().getId(),
|
||||
employee.getName(),
|
||||
employee.getAge(),
|
||||
employee.getRole(),
|
||||
employee.getCreatedTime(),
|
||||
employee.getModifiedTime()
|
||||
);
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Employee.class, uses = CompanyService.class, reverseConvertGenerate = false)
|
||||
public static class SaveItem {
|
||||
private Long id;
|
||||
@AutoMapping(target = "company", qualifiedByName = "detailOrThrow")
|
||||
private Long companyId;
|
||||
private String name;
|
||||
private Integer age;
|
||||
@AutoMapping(defaultValue = "USER")
|
||||
private Employee.Role role;
|
||||
public record SaveItem(
|
||||
Long id,
|
||||
Long companyId,
|
||||
String name,
|
||||
Integer age,
|
||||
Employee.Role role
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Employee.class, convertGenerate = false)
|
||||
public static class ListItem {
|
||||
private Long id;
|
||||
private String name;
|
||||
private Integer age;
|
||||
private Employee.Role role;
|
||||
public record ListItem(
|
||||
Long id,
|
||||
String name,
|
||||
Integer age,
|
||||
Employee.Role role
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Employee.class, convertGenerate = false)
|
||||
public static class DetailItem {
|
||||
private Long id;
|
||||
@ReverseAutoMapping(source = "company.id")
|
||||
private Long companyId;
|
||||
private String name;
|
||||
private Integer age;
|
||||
private Employee.Role role;
|
||||
private LocalDateTime createdTime;
|
||||
private LocalDateTime modifiedTime;
|
||||
public record DetailItem(
|
||||
Long id,
|
||||
Long companyId,
|
||||
String name,
|
||||
Integer age,
|
||||
Employee.Role role,
|
||||
LocalDateTime createdTime,
|
||||
LocalDateTime modifiedTime
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,16 @@
|
||||
package com.lanyuanxiaoyao.service.template.controller;
|
||||
|
||||
import com.lanyuanxiaoyao.service.template.entity.Employee;
|
||||
import com.lanyuanxiaoyao.service.template.entity.Report;
|
||||
import com.lanyuanxiaoyao.service.template.service.EmployeeService;
|
||||
import com.lanyuanxiaoyao.service.template.service.ReportService;
|
||||
import io.github.linpeilie.Converter;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.function.Function;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("report")
|
||||
public class ReportController extends SimpleControllerSupport<Report, ReportController.SaveItem, ReportController.ListItem, ReportController.DetailItem> {
|
||||
private final Converter converter = new Converter();
|
||||
private final EmployeeService employeeService;
|
||||
|
||||
public ReportController(ReportService service, EmployeeService employeeService) {
|
||||
@@ -31,83 +20,71 @@ public class ReportController extends SimpleControllerSupport<Report, ReportCont
|
||||
|
||||
@Override
|
||||
protected Function<SaveItem, Report> saveItemMapper() {
|
||||
return item -> converter.convert(item, Report.class);
|
||||
return item -> {
|
||||
var report = new Report();
|
||||
report.setId(item.id());
|
||||
report.setScore(item.score());
|
||||
report.setLevel(item.level());
|
||||
report.setEmployeeId(item.employeeId());
|
||||
return report;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Report, ListItem> listItemMapper() {
|
||||
var mapper = Mappers.getMapper(ListItem.Mapper.class);
|
||||
return report -> {
|
||||
var employee = employeeService.detailOrThrow(report.getEmployeeId());
|
||||
return mapper.map(report, employee);
|
||||
return new ListItem(
|
||||
report.getId(),
|
||||
employee.getId(),
|
||||
employee.getName(),
|
||||
report.getScore(),
|
||||
report.getLevel()
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Function<Report, DetailItem> detailItemMapper() {
|
||||
var mapper = Mappers.getMapper(DetailItem.Mapper.class);
|
||||
return report -> {
|
||||
var employee = employeeService.detailOrThrow(report.getEmployeeId());
|
||||
return mapper.map(report, employee);
|
||||
return new DetailItem(
|
||||
report.getId(),
|
||||
employee.getId(),
|
||||
employee.getName(),
|
||||
report.getScore(),
|
||||
report.getLevel(),
|
||||
report.getCreatedTime(),
|
||||
report.getModifiedTime()
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@AutoMapper(target = Report.class, reverseConvertGenerate = false)
|
||||
public static class SaveItem {
|
||||
private Long id;
|
||||
private Double score;
|
||||
private Report.Level level;
|
||||
private Long employeeId;
|
||||
public record SaveItem(
|
||||
Long id,
|
||||
Double score,
|
||||
Report.Level level,
|
||||
Long employeeId
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class ListItem {
|
||||
private Long id;
|
||||
private Long employeeId;
|
||||
private String employeeName;
|
||||
private Double score;
|
||||
private Report.Level level;
|
||||
|
||||
@org.mapstruct.Mapper
|
||||
public interface Mapper {
|
||||
@Mapping(target = "id", source = "report.id")
|
||||
@Mapping(target = "employeeId", source = "employee.id")
|
||||
@Mapping(target = "employeeName", source = "employee.name")
|
||||
ListItem map(Report report, Employee employee);
|
||||
}
|
||||
public record ListItem(
|
||||
Long id,
|
||||
Long employeeId,
|
||||
String employeeName,
|
||||
Double score,
|
||||
Report.Level level
|
||||
) {
|
||||
}
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public static class DetailItem {
|
||||
private Long id;
|
||||
private Long employeeId;
|
||||
private String employeeName;
|
||||
private Double score;
|
||||
private Report.Level level;
|
||||
private LocalDateTime createdTime;
|
||||
private LocalDateTime modifiedTime;
|
||||
|
||||
@org.mapstruct.Mapper
|
||||
public interface Mapper {
|
||||
@Mapping(target = "id", source = "report.id")
|
||||
@Mapping(target = "employeeId", source = "employee.id")
|
||||
@Mapping(target = "employeeName", source = "employee.name")
|
||||
@Mapping(target = "createdTime", source = "report.createdTime")
|
||||
@Mapping(target = "modifiedTime", source = "report.modifiedTime")
|
||||
DetailItem map(Report report, Employee employee);
|
||||
}
|
||||
public record DetailItem(
|
||||
Long id,
|
||||
Long employeeId,
|
||||
String employeeName,
|
||||
Double score,
|
||||
Report.Level level,
|
||||
LocalDateTime createdTime,
|
||||
LocalDateTime modifiedTime
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user