perf:【INFRA 基础设施】vben5-antd-schema 主主子表normal代码生成时,可生成批量删除

This commit is contained in:
puhui999 2025-05-19 17:58:57 +08:00
parent ef1e7b312b
commit e10425e049
21 changed files with 685 additions and 100 deletions

View File

@ -17,7 +17,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import jakarta.validation.constraints.Size;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -65,7 +64,7 @@ public class Demo01ContactController {
@Parameter(name = "ids", description = "编号", required = true) @Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除示例联系人") @Operation(summary = "批量删除示例联系人")
@PreAuthorize("@ss.hasPermission('infra:demo01-contact:delete')") @PreAuthorize("@ss.hasPermission('infra:demo01-contact:delete')")
public CommonResult<Boolean> deleteDemo01Contact(@RequestParam("ids") @Size(max = 100, message = "最多允许100个") List<Long> ids) { public CommonResult<Boolean> deleteDemo01Contact(@RequestParam("ids") List<Long> ids) {
demo01ContactService.deleteDemo01ContactByIds(ids); demo01ContactService.deleteDemo01ContactByIds(ids);
return success(true); return success(true);
} }

View File

@ -6,13 +6,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentPageReqVO; import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentErpPageReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentRespVO; import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentErpRespVO;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentSaveReqVO; import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentErpSaveReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import cn.iocoder.yudao.module.infra.service.demo.demo03.erp.Demo03StudentService; import cn.iocoder.yudao.module.infra.service.demo.demo03.erp.Demo03StudentErpService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -33,23 +33,23 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@RestController @RestController
@RequestMapping("/infra/demo03-student-erp") @RequestMapping("/infra/demo03-student-erp")
@Validated @Validated
public class Demo03StudentController { public class Demo03StudentErpController {
@Resource @Resource
private Demo03StudentService demo03StudentService; private Demo03StudentErpService demo03StudentErpService;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建学生") @Operation(summary = "创建学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:create')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:create')")
public CommonResult<Long> createDemo03Student(@Valid @RequestBody Demo03StudentSaveReqVO createReqVO) { public CommonResult<Long> createDemo03Student(@Valid @RequestBody Demo03StudentErpSaveReqVO createReqVO) {
return success(demo03StudentService.createDemo03Student(createReqVO)); return success(demo03StudentErpService.createDemo03Student(createReqVO));
} }
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新学生") @Operation(summary = "更新学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:update')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:update')")
public CommonResult<Boolean> updateDemo03Student(@Valid @RequestBody Demo03StudentSaveReqVO updateReqVO) { public CommonResult<Boolean> updateDemo03Student(@Valid @RequestBody Demo03StudentErpSaveReqVO updateReqVO) {
demo03StudentService.updateDemo03Student(updateReqVO); demo03StudentErpService.updateDemo03Student(updateReqVO);
return success(true); return success(true);
} }
@ -58,7 +58,7 @@ public class Demo03StudentController {
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Student(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteDemo03Student(@RequestParam("id") Long id) {
demo03StudentService.deleteDemo03Student(id); demo03StudentErpService.deleteDemo03Student(id);
return success(true); return success(true);
} }
@ -67,7 +67,7 @@ public class Demo03StudentController {
@Operation(summary = "批量删除学生") @Operation(summary = "批量删除学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Student(@RequestParam("ids") List<Long> ids) { public CommonResult<Boolean> deleteDemo03Student(@RequestParam("ids") List<Long> ids) {
demo03StudentService.deleteDemo03StudentByIds(ids); demo03StudentErpService.deleteDemo03StudentByIds(ids);
return success(true); return success(true);
} }
@ -75,30 +75,30 @@ public class Demo03StudentController {
@Operation(summary = "获得学生") @Operation(summary = "获得学生")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03StudentRespVO> getDemo03Student(@RequestParam("id") Long id) { public CommonResult<Demo03StudentErpRespVO> getDemo03Student(@RequestParam("id") Long id) {
Demo03StudentDO demo03Student = demo03StudentService.getDemo03Student(id); Demo03StudentDO demo03Student = demo03StudentErpService.getDemo03Student(id);
return success(BeanUtils.toBean(demo03Student, Demo03StudentRespVO.class)); return success(BeanUtils.toBean(demo03Student, Demo03StudentErpRespVO.class));
} }
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得学生分页") @Operation(summary = "获得学生分页")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03StudentRespVO>> getDemo03StudentPage(@Valid Demo03StudentPageReqVO pageReqVO) { public CommonResult<PageResult<Demo03StudentErpRespVO>> getDemo03StudentPage(@Valid Demo03StudentErpPageReqVO pageReqVO) {
PageResult<Demo03StudentDO> pageResult = demo03StudentService.getDemo03StudentPage(pageReqVO); PageResult<Demo03StudentDO> pageResult = demo03StudentErpService.getDemo03StudentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, Demo03StudentRespVO.class)); return success(BeanUtils.toBean(pageResult, Demo03StudentErpRespVO.class));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")
@Operation(summary = "导出学生 Excel") @Operation(summary = "导出学生 Excel")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:export')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:export')")
@ApiAccessLog(operateType = EXPORT) @ApiAccessLog(operateType = EXPORT)
public void exportDemo03StudentExcel(@Valid Demo03StudentPageReqVO pageReqVO, public void exportDemo03StudentExcel(@Valid Demo03StudentErpPageReqVO pageReqVO,
HttpServletResponse response) throws IOException { HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<Demo03StudentDO> list = demo03StudentService.getDemo03StudentPage(pageReqVO).getList(); List<Demo03StudentDO> list = demo03StudentErpService.getDemo03StudentPage(pageReqVO).getList();
// 导出 Excel // 导出 Excel
ExcelUtils.write(response, "学生.xls", "数据", Demo03StudentRespVO.class, ExcelUtils.write(response, "学生.xls", "数据", Demo03StudentErpRespVO.class,
BeanUtils.toBean(list, Demo03StudentRespVO.class)); BeanUtils.toBean(list, Demo03StudentErpRespVO.class));
} }
// ==================== 子表学生课程 ==================== // ==================== 子表学生课程 ====================
@ -109,21 +109,21 @@ public class Demo03StudentController {
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03CourseDO>> getDemo03CoursePage(PageParam pageReqVO, public CommonResult<PageResult<Demo03CourseDO>> getDemo03CoursePage(PageParam pageReqVO,
@RequestParam("studentId") Long studentId) { @RequestParam("studentId") Long studentId) {
return success(demo03StudentService.getDemo03CoursePage(pageReqVO, studentId)); return success(demo03StudentErpService.getDemo03CoursePage(pageReqVO, studentId));
} }
@PostMapping("/demo03-course/create") @PostMapping("/demo03-course/create")
@Operation(summary = "创建学生课程") @Operation(summary = "创建学生课程")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:create')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:create')")
public CommonResult<Long> createDemo03Course(@Valid @RequestBody Demo03CourseDO demo03Course) { public CommonResult<Long> createDemo03Course(@Valid @RequestBody Demo03CourseDO demo03Course) {
return success(demo03StudentService.createDemo03Course(demo03Course)); return success(demo03StudentErpService.createDemo03Course(demo03Course));
} }
@PutMapping("/demo03-course/update") @PutMapping("/demo03-course/update")
@Operation(summary = "更新学生课程") @Operation(summary = "更新学生课程")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:update')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:update')")
public CommonResult<Boolean> updateDemo03Course(@Valid @RequestBody Demo03CourseDO demo03Course) { public CommonResult<Boolean> updateDemo03Course(@Valid @RequestBody Demo03CourseDO demo03Course) {
demo03StudentService.updateDemo03Course(demo03Course); demo03StudentErpService.updateDemo03Course(demo03Course);
return success(true); return success(true);
} }
@ -132,7 +132,7 @@ public class Demo03StudentController {
@Operation(summary = "删除学生课程") @Operation(summary = "删除学生课程")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Course(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteDemo03Course(@RequestParam("id") Long id) {
demo03StudentService.deleteDemo03Course(id); demo03StudentErpService.deleteDemo03Course(id);
return success(true); return success(true);
} }
@ -141,7 +141,7 @@ public class Demo03StudentController {
@Operation(summary = "批量删除学生课程") @Operation(summary = "批量删除学生课程")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Course(@RequestParam("ids") List<Long> ids) { public CommonResult<Boolean> deleteDemo03Course(@RequestParam("ids") List<Long> ids) {
demo03StudentService.deleteDemo03CourseByIds(ids); demo03StudentErpService.deleteDemo03CourseByIds(ids);
return success(true); return success(true);
} }
@ -150,7 +150,7 @@ public class Demo03StudentController {
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03CourseDO> getDemo03Course(@RequestParam("id") Long id) { public CommonResult<Demo03CourseDO> getDemo03Course(@RequestParam("id") Long id) {
return success(demo03StudentService.getDemo03Course(id)); return success(demo03StudentErpService.getDemo03Course(id));
} }
// ==================== 子表学生班级 ==================== // ==================== 子表学生班级 ====================
@ -161,21 +161,21 @@ public class Demo03StudentController {
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03GradeDO>> getDemo03GradePage(PageParam pageReqVO, public CommonResult<PageResult<Demo03GradeDO>> getDemo03GradePage(PageParam pageReqVO,
@RequestParam("studentId") Long studentId) { @RequestParam("studentId") Long studentId) {
return success(demo03StudentService.getDemo03GradePage(pageReqVO, studentId)); return success(demo03StudentErpService.getDemo03GradePage(pageReqVO, studentId));
} }
@PostMapping("/demo03-grade/create") @PostMapping("/demo03-grade/create")
@Operation(summary = "创建学生班级") @Operation(summary = "创建学生班级")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:create')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:create')")
public CommonResult<Long> createDemo03Grade(@Valid @RequestBody Demo03GradeDO demo03Grade) { public CommonResult<Long> createDemo03Grade(@Valid @RequestBody Demo03GradeDO demo03Grade) {
return success(demo03StudentService.createDemo03Grade(demo03Grade)); return success(demo03StudentErpService.createDemo03Grade(demo03Grade));
} }
@PutMapping("/demo03-grade/update") @PutMapping("/demo03-grade/update")
@Operation(summary = "更新学生班级") @Operation(summary = "更新学生班级")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:update')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:update')")
public CommonResult<Boolean> updateDemo03Grade(@Valid @RequestBody Demo03GradeDO demo03Grade) { public CommonResult<Boolean> updateDemo03Grade(@Valid @RequestBody Demo03GradeDO demo03Grade) {
demo03StudentService.updateDemo03Grade(demo03Grade); demo03StudentErpService.updateDemo03Grade(demo03Grade);
return success(true); return success(true);
} }
@ -184,7 +184,7 @@ public class Demo03StudentController {
@Operation(summary = "删除学生班级") @Operation(summary = "删除学生班级")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Grade(@RequestParam("id") Long id) { public CommonResult<Boolean> deleteDemo03Grade(@RequestParam("id") Long id) {
demo03StudentService.deleteDemo03Grade(id); demo03StudentErpService.deleteDemo03Grade(id);
return success(true); return success(true);
} }
@ -193,7 +193,7 @@ public class Demo03StudentController {
@Operation(summary = "批量删除学生班级") @Operation(summary = "批量删除学生班级")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Grade(@RequestParam("ids") List<Long> ids) { public CommonResult<Boolean> deleteDemo03Grade(@RequestParam("ids") List<Long> ids) {
demo03StudentService.deleteDemo03GradeByIds(ids); demo03StudentErpService.deleteDemo03GradeByIds(ids);
return success(true); return success(true);
} }
@ -202,7 +202,7 @@ public class Demo03StudentController {
@Parameter(name = "id", description = "编号", required = true) @Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')") @PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03GradeDO> getDemo03Grade(@RequestParam("id") Long id) { public CommonResult<Demo03GradeDO> getDemo03Grade(@RequestParam("id") Long id) {
return success(demo03StudentService.getDemo03Grade(id)); return success(demo03StudentErpService.getDemo03Grade(id));
} }
} }

View File

@ -12,7 +12,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class Demo03StudentPageReqVO extends PageParam { public class Demo03StudentErpPageReqVO extends PageParam {
@Schema(description = "名字", example = "芋艿") @Schema(description = "名字", example = "芋艿")
private String name; private String name;

View File

@ -11,7 +11,7 @@ import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 学生 Response VO") @Schema(description = "管理后台 - 学生 Response VO")
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class Demo03StudentRespVO { public class Demo03StudentErpRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525") @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525")
@ExcelProperty("编号") @ExcelProperty("编号")

View File

@ -8,7 +8,7 @@ import java.time.LocalDateTime;
@Schema(description = "管理后台 - 学生新增/修改 Request VO") @Schema(description = "管理后台 - 学生新增/修改 Request VO")
@Data @Data
public class Demo03StudentSaveReqVO { public class Demo03StudentErpSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525") @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525")
private Long id; private Long id;

View File

@ -0,0 +1,125 @@
package cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal;
import org.springframework.web.bind.annotation.*;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.validation.*;
import jakarta.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo.*;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import cn.iocoder.yudao.module.infra.service.demo.demo03.normal.Demo03StudentNormalService;
@Tag(name = "管理后台 - 学生")
@RestController
@RequestMapping("/infra/demo03-student-normal")
@Validated
public class Demo03StudentNormalController {
@Resource
private Demo03StudentNormalService demo03StudentNormalService;
@PostMapping("/create")
@Operation(summary = "创建学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:create')")
public CommonResult<Long> createDemo03Student(@Valid @RequestBody Demo03StudentNormalSaveReqVO createReqVO) {
return success(demo03StudentNormalService.createDemo03Student(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:update')")
public CommonResult<Boolean> updateDemo03Student(@Valid @RequestBody Demo03StudentNormalSaveReqVO updateReqVO) {
demo03StudentNormalService.updateDemo03Student(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除学生")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Student(@RequestParam("id") Long id) {
demo03StudentNormalService.deleteDemo03Student(id);
return success(true);
}
@DeleteMapping("/delete-batch")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除学生")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:delete')")
public CommonResult<Boolean> deleteDemo03Student(@RequestParam("ids") List<Long> ids) {
demo03StudentNormalService.deleteDemo03StudentByIds(ids);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得学生")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03StudentNormalRespVO> getDemo03Student(@RequestParam("id") Long id) {
Demo03StudentDO demo03Student = demo03StudentNormalService.getDemo03Student(id);
return success(BeanUtils.toBean(demo03Student, Demo03StudentNormalRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得学生分页")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<PageResult<Demo03StudentNormalRespVO>> getDemo03StudentPage(@Valid Demo03StudentNormalPageReqVO pageReqVO) {
PageResult<Demo03StudentDO> pageResult = demo03StudentNormalService.getDemo03StudentPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, Demo03StudentNormalRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出学生 Excel")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDemo03StudentExcel(@Valid Demo03StudentNormalPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<Demo03StudentDO> list = demo03StudentNormalService.getDemo03StudentPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "学生.xls", "数据", Demo03StudentNormalRespVO.class,
BeanUtils.toBean(list, Demo03StudentNormalRespVO.class));
}
// ==================== 子表学生课程 ====================
@GetMapping("/demo03-course/list-by-student-id")
@Operation(summary = "获得学生课程列表")
@Parameter(name = "studentId", description = "学生编号")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<List<Demo03CourseDO>> getDemo03CourseListByStudentId(@RequestParam("studentId") Long studentId) {
return success(demo03StudentNormalService.getDemo03CourseListByStudentId(studentId));
}
// ==================== 子表学生班级 ====================
@GetMapping("/demo03-grade/get-by-student-id")
@Operation(summary = "获得学生班级")
@Parameter(name = "studentId", description = "学生编号")
@PreAuthorize("@ss.hasPermission('infra:demo03-student:query')")
public CommonResult<Demo03GradeDO> getDemo03GradeByStudentId(@RequestParam("studentId") Long studentId) {
return success(demo03StudentNormalService.getDemo03GradeByStudentId(studentId));
}
}

View File

@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 学生分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class Demo03StudentNormalPageReqVO extends PageParam {
@Schema(description = "名字", example = "芋艿")
private String name;
@Schema(description = "性别")
private Integer sex;
@Schema(description = "简介", example = "随便")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 学生 Response VO")
@Data
@ExcelIgnoreUnannotated
public class Demo03StudentNormalRespVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525")
@ExcelProperty("编号")
private Long id;
@Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@ExcelProperty("名字")
private String name;
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "性别", converter = DictConvert.class)
@DictFormat("system_user_sex") // TODO 代码优化建议设置到对应的 DictTypeConstants 枚举类中
private Integer sex;
@Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("出生日期")
private LocalDateTime birthday;
@Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@ExcelProperty("简介")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

View File

@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import java.time.LocalDateTime;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
@Schema(description = "管理后台 - 学生新增/修改 Request VO")
@Data
public class Demo03StudentNormalSaveReqVO {
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "8525")
private Long id;
@Schema(description = "名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
@NotEmpty(message = "名字不能为空")
private String name;
@Schema(description = "性别", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "性别不能为空")
private Integer sex;
@Schema(description = "出生日期", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "出生日期不能为空")
private LocalDateTime birthday;
@Schema(description = "简介", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@NotEmpty(message = "简介不能为空")
private String description;
@Schema(description = "学生课程列表")
private List<Demo03CourseDO> demo03Courses;
@Schema(description = "学生班级")
private Demo03GradeDO demo03Grade;
}

View File

@ -15,7 +15,7 @@ import java.util.List;
* @author 芋道源码 * @author 芋道源码
*/ */
@Mapper @Mapper
public interface Demo03CourseMapper extends BaseMapperX<Demo03CourseDO> { public interface Demo03CourseErpMapper extends BaseMapperX<Demo03CourseDO> {
default PageResult<Demo03CourseDO> selectPage(PageParam reqVO, Long studentId) { default PageResult<Demo03CourseDO> selectPage(PageParam reqVO, Long studentId) {
return selectPage(reqVO, new LambdaQueryWrapperX<Demo03CourseDO>() return selectPage(reqVO, new LambdaQueryWrapperX<Demo03CourseDO>()

View File

@ -15,7 +15,7 @@ import java.util.List;
* @author 芋道源码 * @author 芋道源码
*/ */
@Mapper @Mapper
public interface Demo03GradeMapper extends BaseMapperX<Demo03GradeDO> { public interface Demo03GradeErpMapper extends BaseMapperX<Demo03GradeDO> {
default PageResult<Demo03GradeDO> selectPage(PageParam reqVO, Long studentId) { default PageResult<Demo03GradeDO> selectPage(PageParam reqVO, Long studentId) {
return selectPage(reqVO, new LambdaQueryWrapperX<Demo03GradeDO>() return selectPage(reqVO, new LambdaQueryWrapperX<Demo03GradeDO>()

View File

@ -13,9 +13,9 @@ import org.apache.ibatis.annotations.Mapper;
* @author 芋道源码 * @author 芋道源码
*/ */
@Mapper @Mapper
public interface Demo03StudentMapper extends BaseMapperX<Demo03StudentDO> { public interface Demo03StudentErpMapper extends BaseMapperX<Demo03StudentDO> {
default PageResult<Demo03StudentDO> selectPage(Demo03StudentPageReqVO reqVO) { default PageResult<Demo03StudentDO> selectPage(Demo03StudentErpPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<Demo03StudentDO>() return selectPage(reqVO, new LambdaQueryWrapperX<Demo03StudentDO>()
.likeIfPresent(Demo03StudentDO::getName, reqVO.getName()) .likeIfPresent(Demo03StudentDO::getName, reqVO.getName())
.eqIfPresent(Demo03StudentDO::getSex, reqVO.getSex()) .eqIfPresent(Demo03StudentDO::getSex, reqVO.getSex())

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal;
import java.util.*;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 学生课程 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface Demo03CourseNormalMapper extends BaseMapperX<Demo03CourseDO> {
default List<Demo03CourseDO> selectListByStudentId(Long studentId) {
return selectList(Demo03CourseDO::getStudentId, studentId);
}
default int deleteByStudentId(Long studentId) {
return delete(Demo03CourseDO::getStudentId, studentId);
}
default int deleteByStudentIds(List<Long> studentIds) {
return delete(Demo03CourseDO::getStudentId, studentIds);
}
}

View File

@ -0,0 +1,29 @@
package cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal;
import java.util.*;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import org.apache.ibatis.annotations.Mapper;
/**
* 学生班级 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface Demo03GradeNormalMapper extends BaseMapperX<Demo03GradeDO> {
default Demo03GradeDO selectByStudentId(Long studentId) {
return selectOne(Demo03GradeDO::getStudentId, studentId);
}
default int deleteByStudentId(Long studentId) {
return delete(Demo03GradeDO::getStudentId, studentId);
}
default int deleteByStudentIds(List<Long> studentIds) {
return delete(Demo03GradeDO::getStudentId, studentIds);
}
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo.*;
/**
* 学生 Mapper
*
* @author 芋道源码
*/
@Mapper
public interface Demo03StudentNormalMapper extends BaseMapperX<Demo03StudentDO> {
default PageResult<Demo03StudentDO> selectPage(Demo03StudentNormalPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<Demo03StudentDO>()
.likeIfPresent(Demo03StudentDO::getName, reqVO.getName())
.eqIfPresent(Demo03StudentDO::getSex, reqVO.getSex())
.eqIfPresent(Demo03StudentDO::getDescription, reqVO.getDescription())
.betweenIfPresent(Demo03StudentDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(Demo03StudentDO::getId));
}
}

View File

@ -14,7 +14,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
* *
* @author 芋道源码 * @author 芋道源码
*/ */
public interface Demo03StudentService { public interface Demo03StudentErpService {
/** /**
* 创建学生 * 创建学生
@ -22,14 +22,14 @@ public interface Demo03StudentService {
* @param createReqVO 创建信息 * @param createReqVO 创建信息
* @return 编号 * @return 编号
*/ */
Long createDemo03Student(@Valid Demo03StudentSaveReqVO createReqVO); Long createDemo03Student(@Valid Demo03StudentErpSaveReqVO createReqVO);
/** /**
* 更新学生 * 更新学生
* *
* @param updateReqVO 更新信息 * @param updateReqVO 更新信息
*/ */
void updateDemo03Student(@Valid Demo03StudentSaveReqVO updateReqVO); void updateDemo03Student(@Valid Demo03StudentErpSaveReqVO updateReqVO);
/** /**
* 删除学生 * 删除学生
@ -59,7 +59,7 @@ public interface Demo03StudentService {
* @param pageReqVO 分页查询 * @param pageReqVO 分页查询
* @return 学生分页 * @return 学生分页
*/ */
PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentPageReqVO pageReqVO); PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentErpPageReqVO pageReqVO);
// ==================== 子表学生课程 ==================== // ==================== 子表学生课程 ====================

View File

@ -4,14 +4,14 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentPageReqVO; import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentErpPageReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentSaveReqVO; import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.erp.vo.Demo03StudentErpSaveReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO; import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03CourseMapper; import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03CourseErpMapper;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03GradeMapper; import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03GradeErpMapper;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03StudentMapper; import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.erp.Demo03StudentErpMapper;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -29,31 +29,31 @@ import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
*/ */
@Service @Service
@Validated @Validated
public class Demo03StudentServiceImpl implements Demo03StudentService { public class Demo03StudentErpServiceImpl implements Demo03StudentErpService {
@Resource @Resource
private Demo03StudentMapper demo03StudentMapper; private Demo03StudentErpMapper demo03StudentErpMapper;
@Resource @Resource
private Demo03CourseMapper demo03CourseMapper; private Demo03CourseErpMapper demo03CourseErpMapper;
@Resource @Resource
private Demo03GradeMapper demo03GradeMapper; private Demo03GradeErpMapper demo03GradeErpMapper;
@Override @Override
public Long createDemo03Student(Demo03StudentSaveReqVO createReqVO) { public Long createDemo03Student(Demo03StudentErpSaveReqVO createReqVO) {
// 插入 // 插入
Demo03StudentDO demo03Student = BeanUtils.toBean(createReqVO, Demo03StudentDO.class); Demo03StudentDO demo03Student = BeanUtils.toBean(createReqVO, Demo03StudentDO.class);
demo03StudentMapper.insert(demo03Student); demo03StudentErpMapper.insert(demo03Student);
// 返回 // 返回
return demo03Student.getId(); return demo03Student.getId();
} }
@Override @Override
public void updateDemo03Student(Demo03StudentSaveReqVO updateReqVO) { public void updateDemo03Student(Demo03StudentErpSaveReqVO updateReqVO) {
// 校验存在 // 校验存在
validateDemo03StudentExists(updateReqVO.getId()); validateDemo03StudentExists(updateReqVO.getId());
// 更新 // 更新
Demo03StudentDO updateObj = BeanUtils.toBean(updateReqVO, Demo03StudentDO.class); Demo03StudentDO updateObj = BeanUtils.toBean(updateReqVO, Demo03StudentDO.class);
demo03StudentMapper.updateById(updateObj); demo03StudentErpMapper.updateById(updateObj);
} }
@Override @Override
@ -62,7 +62,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03StudentExists(id); validateDemo03StudentExists(id);
// 删除 // 删除
demo03StudentMapper.deleteById(id); demo03StudentErpMapper.deleteById(id);
// 删除子表 // 删除子表
deleteDemo03CourseByStudentId(id); deleteDemo03CourseByStudentId(id);
@ -75,7 +75,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03StudentExists(ids); validateDemo03StudentExists(ids);
// 删除 // 删除
demo03StudentMapper.deleteByIds(ids); demo03StudentErpMapper.deleteByIds(ids);
// 删除子表 // 删除子表
deleteDemo03CourseByStudentIds(ids); deleteDemo03CourseByStudentIds(ids);
@ -83,38 +83,38 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
} }
private void validateDemo03StudentExists(List<Long> ids) { private void validateDemo03StudentExists(List<Long> ids) {
List<Demo03StudentDO> list = demo03StudentMapper.selectByIds(ids); List<Demo03StudentDO> list = demo03StudentErpMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) { if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(DEMO03_STUDENT_NOT_EXISTS); throw exception(DEMO03_STUDENT_NOT_EXISTS);
} }
} }
private void validateDemo03StudentExists(Long id) { private void validateDemo03StudentExists(Long id) {
if (demo03StudentMapper.selectById(id) == null) { if (demo03StudentErpMapper.selectById(id) == null) {
throw exception(DEMO03_STUDENT_NOT_EXISTS); throw exception(DEMO03_STUDENT_NOT_EXISTS);
} }
} }
@Override @Override
public Demo03StudentDO getDemo03Student(Long id) { public Demo03StudentDO getDemo03Student(Long id) {
return demo03StudentMapper.selectById(id); return demo03StudentErpMapper.selectById(id);
} }
@Override @Override
public PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentPageReqVO pageReqVO) { public PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentErpPageReqVO pageReqVO) {
return demo03StudentMapper.selectPage(pageReqVO); return demo03StudentErpMapper.selectPage(pageReqVO);
} }
// ==================== 子表学生课程 ==================== // ==================== 子表学生课程 ====================
@Override @Override
public PageResult<Demo03CourseDO> getDemo03CoursePage(PageParam pageReqVO, Long studentId) { public PageResult<Demo03CourseDO> getDemo03CoursePage(PageParam pageReqVO, Long studentId) {
return demo03CourseMapper.selectPage(pageReqVO, studentId); return demo03CourseErpMapper.selectPage(pageReqVO, studentId);
} }
@Override @Override
public Long createDemo03Course(Demo03CourseDO demo03Course) { public Long createDemo03Course(Demo03CourseDO demo03Course) {
demo03CourseMapper.insert(demo03Course); demo03CourseErpMapper.insert(demo03Course);
return demo03Course.getId(); return demo03Course.getId();
} }
@ -124,7 +124,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
validateDemo03CourseExists(demo03Course.getId()); validateDemo03CourseExists(demo03Course.getId());
// 更新 // 更新
demo03Course.setUpdater(null).setUpdateTime(null); // 解决更新情况下updateTime 不更新 demo03Course.setUpdater(null).setUpdateTime(null); // 解决更新情况下updateTime 不更新
demo03CourseMapper.updateById(demo03Course); demo03CourseErpMapper.updateById(demo03Course);
} }
@Override @Override
@ -132,7 +132,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03CourseExists(id); validateDemo03CourseExists(id);
// 删除 // 删除
demo03CourseMapper.deleteById(id); demo03CourseErpMapper.deleteById(id);
} }
@Override @Override
@ -140,50 +140,50 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03CourseExists(ids); validateDemo03CourseExists(ids);
// 删除 // 删除
demo03CourseMapper.deleteByIds(ids); demo03CourseErpMapper.deleteByIds(ids);
} }
@Override @Override
public Demo03CourseDO getDemo03Course(Long id) { public Demo03CourseDO getDemo03Course(Long id) {
return demo03CourseMapper.selectById(id); return demo03CourseErpMapper.selectById(id);
} }
private void validateDemo03CourseExists(Long id) { private void validateDemo03CourseExists(Long id) {
if (demo03CourseMapper.selectById(id) == null) { if (demo03CourseErpMapper.selectById(id) == null) {
throw exception(DEMO03_COURSE_NOT_EXISTS); throw exception(DEMO03_COURSE_NOT_EXISTS);
} }
} }
private void validateDemo03CourseExists(List<Long> ids) { private void validateDemo03CourseExists(List<Long> ids) {
List<Demo03CourseDO> list = demo03CourseMapper.selectByIds(ids); List<Demo03CourseDO> list = demo03CourseErpMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) { if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(DEMO03_COURSE_NOT_EXISTS); throw exception(DEMO03_COURSE_NOT_EXISTS);
} }
} }
private void deleteDemo03CourseByStudentId(Long studentId) { private void deleteDemo03CourseByStudentId(Long studentId) {
demo03CourseMapper.deleteByStudentId(studentId); demo03CourseErpMapper.deleteByStudentId(studentId);
} }
private void deleteDemo03CourseByStudentIds(List<Long> studentIds) { private void deleteDemo03CourseByStudentIds(List<Long> studentIds) {
demo03CourseMapper.deleteByStudentIds(studentIds); demo03CourseErpMapper.deleteByStudentIds(studentIds);
} }
// ==================== 子表学生班级 ==================== // ==================== 子表学生班级 ====================
@Override @Override
public PageResult<Demo03GradeDO> getDemo03GradePage(PageParam pageReqVO, Long studentId) { public PageResult<Demo03GradeDO> getDemo03GradePage(PageParam pageReqVO, Long studentId) {
return demo03GradeMapper.selectPage(pageReqVO, studentId); return demo03GradeErpMapper.selectPage(pageReqVO, studentId);
} }
@Override @Override
public Long createDemo03Grade(Demo03GradeDO demo03Grade) { public Long createDemo03Grade(Demo03GradeDO demo03Grade) {
// 校验是否已经存在 // 校验是否已经存在
if (demo03GradeMapper.selectByStudentId(demo03Grade.getStudentId()) != null) { if (demo03GradeErpMapper.selectByStudentId(demo03Grade.getStudentId()) != null) {
throw exception(DEMO03_GRADE_EXISTS); throw exception(DEMO03_GRADE_EXISTS);
} }
// 插入 // 插入
demo03GradeMapper.insert(demo03Grade); demo03GradeErpMapper.insert(demo03Grade);
return demo03Grade.getId(); return demo03Grade.getId();
} }
@ -193,7 +193,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
validateDemo03GradeExists(demo03Grade.getId()); validateDemo03GradeExists(demo03Grade.getId());
// 更新 // 更新
demo03Grade.setUpdater(null).setUpdateTime(null); // 解决更新情况下updateTime 不更新 demo03Grade.setUpdater(null).setUpdateTime(null); // 解决更新情况下updateTime 不更新
demo03GradeMapper.updateById(demo03Grade); demo03GradeErpMapper.updateById(demo03Grade);
} }
@Override @Override
@ -201,7 +201,7 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03GradeExists(id); validateDemo03GradeExists(id);
// 删除 // 删除
demo03GradeMapper.deleteById(id); demo03GradeErpMapper.deleteById(id);
} }
@Override @Override
@ -209,33 +209,33 @@ public class Demo03StudentServiceImpl implements Demo03StudentService {
// 校验存在 // 校验存在
validateDemo03GradeExists(ids); validateDemo03GradeExists(ids);
// 删除 // 删除
demo03GradeMapper.deleteByIds(ids); demo03GradeErpMapper.deleteByIds(ids);
} }
@Override @Override
public Demo03GradeDO getDemo03Grade(Long id) { public Demo03GradeDO getDemo03Grade(Long id) {
return demo03GradeMapper.selectById(id); return demo03GradeErpMapper.selectById(id);
} }
private void validateDemo03GradeExists(Long id) { private void validateDemo03GradeExists(Long id) {
if (demo03GradeMapper.selectById(id) == null) { if (demo03GradeErpMapper.selectById(id) == null) {
throw exception(DEMO03_GRADE_NOT_EXISTS); throw exception(DEMO03_GRADE_NOT_EXISTS);
} }
} }
private void validateDemo03GradeExists(List<Long> ids) { private void validateDemo03GradeExists(List<Long> ids) {
List<Demo03GradeDO> list = demo03GradeMapper.selectByIds(ids); List<Demo03GradeDO> list = demo03GradeErpMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) { if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(DEMO03_GRADE_NOT_EXISTS); throw exception(DEMO03_GRADE_NOT_EXISTS);
} }
} }
private void deleteDemo03GradeByStudentId(Long studentId) { private void deleteDemo03GradeByStudentId(Long studentId) {
demo03GradeMapper.deleteByStudentId(studentId); demo03GradeErpMapper.deleteByStudentId(studentId);
} }
private void deleteDemo03GradeByStudentIds(List<Long> studentIds) { private void deleteDemo03GradeByStudentIds(List<Long> studentIds) {
demo03GradeMapper.deleteByStudentIds(studentIds); demo03GradeErpMapper.deleteByStudentIds(studentIds);
} }
} }

View File

@ -0,0 +1,83 @@
package cn.iocoder.yudao.module.infra.service.demo.demo03.normal;
import java.util.*;
import jakarta.validation.*;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo.*;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
/**
* 学生 Service 接口
*
* @author 芋道源码
*/
public interface Demo03StudentNormalService {
/**
* 创建学生
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createDemo03Student(@Valid Demo03StudentNormalSaveReqVO createReqVO);
/**
* 更新学生
*
* @param updateReqVO 更新信息
*/
void updateDemo03Student(@Valid Demo03StudentNormalSaveReqVO updateReqVO);
/**
* 删除学生
*
* @param id 编号
*/
void deleteDemo03Student(Long id);
/**
* 批量删除学生
*
* @param ids 编号
*/
void deleteDemo03StudentByIds(List<Long> ids);
/**
* 获得学生
*
* @param id 编号
* @return 学生
*/
Demo03StudentDO getDemo03Student(Long id);
/**
* 获得学生分页
*
* @param pageReqVO 分页查询
* @return 学生分页
*/
PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentNormalPageReqVO pageReqVO);
// ==================== 子表学生课程 ====================
/**
* 获得学生课程列表
*
* @param studentId 学生编号
* @return 学生课程列表
*/
List<Demo03CourseDO> getDemo03CourseListByStudentId(Long studentId);
// ==================== 子表学生班级 ====================
/**
* 获得学生班级
*
* @param studentId 学生编号
* @return 学生班级
*/
Demo03GradeDO getDemo03GradeByStudentId(Long studentId);
}

View File

@ -0,0 +1,175 @@
package cn.iocoder.yudao.module.infra.service.demo.demo03.normal;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo.Demo03StudentNormalPageReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.demo.demo03.normal.vo.Demo03StudentNormalSaveReqVO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03CourseDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03GradeDO;
import cn.iocoder.yudao.module.infra.dal.dataobject.demo.demo03.Demo03StudentDO;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal.Demo03CourseNormalMapper;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal.Demo03GradeNormalMapper;
import cn.iocoder.yudao.module.infra.dal.mysql.demo.demo03.normal.Demo03StudentNormalMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.DEMO03_STUDENT_NOT_EXISTS;
/**
* 学生 Service 实现类
*
* @author 芋道源码
*/
@Service
@Validated
public class Demo03StudentNormalServiceImpl implements Demo03StudentNormalService {
@Resource
private Demo03StudentNormalMapper demo03StudentNormalMapper;
@Resource
private Demo03CourseNormalMapper demo03CourseNormalMapper;
@Resource
private Demo03GradeNormalMapper demo03GradeNormalMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createDemo03Student(Demo03StudentNormalSaveReqVO createReqVO) {
// 插入
Demo03StudentDO demo03Student = BeanUtils.toBean(createReqVO, Demo03StudentDO.class);
demo03StudentNormalMapper.insert(demo03Student);
// 插入子表
createDemo03CourseList(demo03Student.getId(), createReqVO.getDemo03Courses());
createDemo03Grade(demo03Student.getId(), createReqVO.getDemo03Grade());
// 返回
return demo03Student.getId();
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDemo03Student(Demo03StudentNormalSaveReqVO updateReqVO) {
// 校验存在
validateDemo03StudentExists(updateReqVO.getId());
// 更新
Demo03StudentDO updateObj = BeanUtils.toBean(updateReqVO, Demo03StudentDO.class);
demo03StudentNormalMapper.updateById(updateObj);
// 更新子表
updateDemo03CourseList(updateReqVO.getId(), updateReqVO.getDemo03Courses());
updateDemo03Grade(updateReqVO.getId(), updateReqVO.getDemo03Grade());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDemo03Student(Long id) {
// 校验存在
validateDemo03StudentExists(id);
// 删除
demo03StudentNormalMapper.deleteById(id);
// 删除子表
deleteDemo03CourseByStudentId(id);
deleteDemo03GradeByStudentId(id);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteDemo03StudentByIds(List<Long> ids) {
// 校验存在
validateDemo03StudentExists(ids);
// 删除
demo03StudentNormalMapper.deleteByIds(ids);
// 删除子表
deleteDemo03CourseByStudentIds(ids);
deleteDemo03GradeByStudentIds(ids);
}
private void validateDemo03StudentExists(List<Long> ids) {
List<Demo03StudentDO> list = demo03StudentNormalMapper.selectByIds(ids);
if (CollUtil.isEmpty(list) || list.size() != ids.size()) {
throw exception(DEMO03_STUDENT_NOT_EXISTS);
}
}
private void validateDemo03StudentExists(Long id) {
if (demo03StudentNormalMapper.selectById(id) == null) {
throw exception(DEMO03_STUDENT_NOT_EXISTS);
}
}
@Override
public Demo03StudentDO getDemo03Student(Long id) {
return demo03StudentNormalMapper.selectById(id);
}
@Override
public PageResult<Demo03StudentDO> getDemo03StudentPage(Demo03StudentNormalPageReqVO pageReqVO) {
return demo03StudentNormalMapper.selectPage(pageReqVO);
}
// ==================== 子表学生课程 ====================
@Override
public List<Demo03CourseDO> getDemo03CourseListByStudentId(Long studentId) {
return demo03CourseNormalMapper.selectListByStudentId(studentId);
}
private void createDemo03CourseList(Long studentId, List<Demo03CourseDO> list) {
list.forEach(o -> o.setStudentId(studentId));
demo03CourseNormalMapper.insertBatch(list);
}
private void updateDemo03CourseList(Long studentId, List<Demo03CourseDO> list) {
deleteDemo03CourseByStudentId(studentId);
list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下1id 冲突2updateTime 不更新
createDemo03CourseList(studentId, list);
}
private void deleteDemo03CourseByStudentId(Long studentId) {
demo03CourseNormalMapper.deleteByStudentId(studentId);
}
private void deleteDemo03CourseByStudentIds(List<Long> studentIds) {
demo03CourseNormalMapper.deleteByStudentIds(studentIds);
}
// ==================== 子表学生班级 ====================
@Override
public Demo03GradeDO getDemo03GradeByStudentId(Long studentId) {
return demo03GradeNormalMapper.selectByStudentId(studentId);
}
private void createDemo03Grade(Long studentId, Demo03GradeDO demo03Grade) {
if (demo03Grade == null) {
return;
}
demo03Grade.setStudentId(studentId);
demo03GradeNormalMapper.insert(demo03Grade);
}
private void updateDemo03Grade(Long studentId, Demo03GradeDO demo03Grade) {
if (demo03Grade == null) {
return;
}
demo03Grade.setStudentId(studentId);
demo03Grade.setUpdater(null).setUpdateTime(null); // 解决更新情况下updateTime 不更新
demo03GradeNormalMapper.insertOrUpdate(demo03Grade);
}
private void deleteDemo03GradeByStudentId(Long studentId) {
demo03GradeNormalMapper.deleteByStudentId(studentId);
}
private void deleteDemo03GradeByStudentIds(List<Long> studentIds) {
demo03GradeNormalMapper.deleteByStudentIds(studentIds);
}
}

View File

@ -95,6 +95,13 @@ async function onDelete(row: ${simpleClassName}Api.${simpleClassName}) {
#if ($table.templateType != 2 && $table.deleteBatch) #if ($table.templateType != 2 && $table.deleteBatch)
const deleteIds = ref<number[]>([]) // 待删除${table.classComment} ID const deleteIds = ref<number[]>([]) // 待删除${table.classComment} ID
const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value));
function setDeleteIds({
records,
}: {
records: ${simpleClassName}Api.${simpleClassName}[];
}) {
deleteIds.value = records.map((item) => item.id);
}
/** 批量删除${table.classComment} */ /** 批量删除${table.classComment} */
async function onDeleteBatch() { async function onDeleteBatch() {
const hideLoading = message.loading({ const hideLoading = message.loading({
@ -205,12 +212,8 @@ const [Grid, gridApi] = useVbenVxeGrid({
}, },
#end #end
#if($table.deleteBatch) #if($table.deleteBatch)
checkboxAll: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => { checkboxAll: setDeleteIds,
deleteIds.value = records.map((item) => item.id); checkboxChange: setDeleteIds,
},
checkboxChange: ({records,}: { records: ${simpleClassName}Api.${simpleClassName}[];}) => {
deleteIds.value = records.map((item) => item.id);
},
#end #end
} }
#end #end

View File

@ -76,6 +76,13 @@ async function onDelete(row: ${simpleClassName}Api.${subSimpleClassName}) {
#if ($table.deleteBatch) #if ($table.deleteBatch)
const deleteIds = ref<number[]>([]) // 待删除${subTable.classComment} ID const deleteIds = ref<number[]>([]) // 待删除${subTable.classComment} ID
const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value)); const showDeleteBatchBtn = computed(() => isEmpty(deleteIds.value));
function setDeleteIds({
records,
}: {
records: ${simpleClassName}Api.${subSimpleClassName}[];
}) {
deleteIds.value = records.map((item) => item.id);
}
/** 批量删除${subTable.classComment} */ /** 批量删除${subTable.classComment} */
async function onDeleteBatch() { async function onDeleteBatch() {
const hideLoading = message.loading({ const hideLoading = message.loading({
@ -159,12 +166,8 @@ function onActionClick({
} as VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>, } as VxeTableGridOptions<${simpleClassName}Api.${subSimpleClassName}>,
#if (${table.templateType} == 11 && $table.deleteBatch) #if (${table.templateType} == 11 && $table.deleteBatch)
gridEvents:{ gridEvents:{
checkboxAll: ({records,}: { records: ${simpleClassName}Api.${subSimpleClassName}[];}) => { checkboxAll: setDeleteIds,
deleteIds.value = records.map((item) => item.id); checkboxChange: setDeleteIds,
},
checkboxChange: ({records,}: { records: ${simpleClassName}Api.${subSimpleClassName}[];}) => {
deleteIds.value = records.map((item) => item.id);
},
} }
#end #end
}); });