培训资源管理

main
zhaokai 2026-01-13 13:38:14 +08:00
parent 35edc5633c
commit 44f82ebddb
189 changed files with 5012 additions and 1335 deletions

View File

@ -2,10 +2,10 @@ nacos:
url: 192.168.20.100:30290
namespace: jjb-dragon
application:
name: jjb-saas-zcloud-risk
name: jjb-saas-zcloud-edu
version:
gateway: risk
cn-name: 风险中心
gateway: edu
cn-name: 教育中心
spring:
application:
name: ${application.name}${application.version}

View File

@ -0,0 +1,82 @@
package com.zcloud.edu.web.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.api.resource.CurriculumChapterServiceI;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.dto.resource.CurriculumChapterPageQry;
import com.zcloud.edu.dto.resource.CurriculumChapterUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Api(tags = "课程章节信息",hidden = true)
@RequestMapping("/${application.gateway}/curriculumChapter")
@RestController
@AllArgsConstructor
public class CurriculumChapterController {
private final CurriculumChapterServiceI curriculumChapterService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<CurriculumChapterCO> add(@Validated @RequestBody CurriculumChapterAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return curriculumChapterService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<CurriculumChapterCO> page(@RequestBody CurriculumChapterPageQry qry) {
return curriculumChapterService.listPage(qry);
}
@ApiOperation("所有数据")
@PostMapping("/listAll")
public MultiResponse<CurriculumChapterCO> listAll() {
return MultiResponse.of(new ArrayList<CurriculumChapterCO>());
}
@ApiOperation("详情")
@PostMapping("/getInfoById")
public SingleResponse<CurriculumChapterCO> getInfoById(@RequestParam("id") Long id) {
return SingleResponse.of(new CurriculumChapterCO());
}
@ApiOperation("删除")
@PostMapping("/remove/")
public Response remove(@RequestParam("id") Long id) {
curriculumChapterService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PostMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
curriculumChapterService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody CurriculumChapterUpdateCmd curriculumChapterUpdateCmd) {
curriculumChapterService.edit(curriculumChapterUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,84 @@
package com.zcloud.edu.web.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.resource.CurriculumServiceI;
import com.zcloud.edu.dto.clientobject.resource.CurriculumCO;
import com.zcloud.edu.dto.resource.CurriculumAddCmd;
import com.zcloud.edu.dto.resource.CurriculumPageQry;
import com.zcloud.edu.dto.resource.CurriculumUpdateCmd;
import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* web-adapter
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Api(tags = "课程信息")
@RequestMapping("/${application.gateway}/curriculum")
@RestController
@AllArgsConstructor
public class CurriculumController {
private final CurriculumServiceI curriculumService;
@ApiOperation("新增课程")
@PostMapping("/save")
public SingleResponse<CurriculumCO> add(@Validated @RequestBody CurriculumAddCmd cmd) {
return curriculumService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<CurriculumCO> page(@RequestBody CurriculumPageQry qry) {
return curriculumService.listPage(qry);
}
/* @ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<CurriculumCO> listAll() {
return MultiResponse.of(new ArrayList<CurriculumCO>());
}*/
@ApiOperation("修改")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody CurriculumUpdateCmd curriculumUpdateCmd) {
curriculumService.edit(curriculumUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("课程详情")
@PostMapping("/getInfoById")
public SingleResponse<CurriculumCO> getInfoById(@RequestParam("id") Long id) {
return SingleResponse.of(curriculumService.getInfoById(id));
}
@ApiOperation("上架/下架")
@PostMapping("/editState")
public SingleResponse editState(@Validated @RequestBody CurriculumUpdateStateCmd cmd) {
curriculumService.editState(cmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除")
@PostMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
curriculumService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PostMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
curriculumService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
}

View File

@ -0,0 +1,87 @@
package com.zcloud.edu.web.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.resource.ExamPaperServiceI;
import com.zcloud.edu.dto.resource.ExamPaperAddCmd;
import com.zcloud.edu.dto.resource.ExamPaperPageQry;
import com.zcloud.edu.dto.resource.ExamPaperRemoveCmd;
import com.zcloud.edu.dto.resource.ExamPaperUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* web-adapter
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Api(tags = "试卷信息")
@RequestMapping("/${application.gateway}/examPaper")
@RestController
@AllArgsConstructor
public class ExamPaperController {
private final ExamPaperServiceI examPaperService;
@ApiOperation("新增试卷")
@PostMapping("/save")
public SingleResponse<ExamPaperCO> add(@Validated @RequestParam ExamPaperAddCmd cmd) {
return examPaperService.add(cmd);
}
@ApiOperation("试卷分页")
@PostMapping("/list")
public PageResponse<ExamPaperCO> page(@RequestBody ExamPaperPageQry qry) {
return examPaperService.listPage(qry);
}
/* @ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<ExamPaperCO> listAll() {
return MultiResponse.of(new ArrayList<ExamPaperCO>());
}*/
@ApiOperation("试卷详情")
@PostMapping("/getInfoById")
public SingleResponse<ExamPaperCO> getInfoById(@RequestParam("id") Long id) {
return SingleResponse.of(examPaperService.getInfoById(id));
}
@ApiOperation("上架,下架")
@PostMapping("/editSellFlag")
public SingleResponse editSellFlag(@Validated @RequestBody ExamPaperUpdateCmd examPaperUpdateCmd) {
examPaperService.editSellFlag(examPaperUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestPart(value = "file") MultipartFile file, @RequestParam(value = "examPaperUpdateCmd") ExamPaperUpdateCmd examPaperUpdateCmd) {
examPaperService.edit(file,examPaperUpdateCmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除试卷")
@PostMapping("/delete/{id}")
public Response remove(@PathVariable("id") Long id) {
examPaperService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PostMapping("/ids")
public Response removeBatch(@RequestBody ExamPaperRemoveCmd examPaperRemoveCmd) {
examPaperService.removeBatch(examPaperRemoveCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -1,19 +1,18 @@
package com.zcloud.edu.web;
package com.zcloud.edu.web.resource;
import com.zcloud.edu.api.QuestionServiceI;
import com.zcloud.edu.dto.QuestionAddCmd;
import com.zcloud.edu.dto.QuestionPageQry;
import com.zcloud.edu.dto.QuestionListQry;
import com.zcloud.edu.dto.QuestionUpdateCmd;
import com.zcloud.edu.dto.QuestionRemoveCmd;
import com.zcloud.edu.dto.clientobject.QuestionCO;
import com.zcloud.edu.api.resource.QuestionServiceI;
import com.zcloud.edu.dto.resource.QuestionAddCmd;
import com.zcloud.edu.dto.resource.QuestionPageQry;
import com.zcloud.edu.dto.resource.QuestionListQry;
import com.zcloud.edu.dto.resource.QuestionUpdateCmd;
import com.zcloud.edu.dto.resource.QuestionRemoveCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -34,15 +33,20 @@ import org.springframework.web.multipart.MultipartFile;
public class QuestionController {
private final QuestionServiceI questionService;
@ApiOperation("新增")
@ApiOperation("新增习题")
@PostMapping("/save")
public SingleResponse<QuestionCO> add(@Validated @RequestBody QuestionAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return questionService.add(cmd);
}
@ApiOperation("修改")
@PutMapping("/edit")
@ApiOperation("修改试卷习题")
@PostMapping("/editPaper")
public SingleResponse<ExamPaperCO> editPaper(@Validated @RequestBody QuestionUpdateCmd cmd) {
ExamPaperCO examPaperCO =questionService.editPaper(cmd);
return SingleResponse.of(examPaperCO);
}
@ApiOperation("修改课件习题")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody QuestionUpdateCmd cmd) {
questionService.edit(cmd);
return SingleResponse.buildSuccess();
@ -61,20 +65,20 @@ public class QuestionController {
}
@ApiOperation("详情")
@GetMapping("/getInfoById")
@PostMapping("/getInfoById")
public SingleResponse<QuestionCO> getInfoById(@RequestParam(value = "id") Long id) {
return questionService.getInfoById(id);
}
@ApiOperation("删除")
@PutMapping("/remove")
@PostMapping("/remove")
public Response remove(@RequestParam(value = "id") Long id) {
questionService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PutMapping("/removeBatch")
@PostMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody QuestionRemoveCmd cmd) {
questionService.removeBatch(cmd.getIds());
return SingleResponse.buildSuccess();

View File

@ -1,13 +1,13 @@
package com.zcloud.edu.web;
package com.zcloud.edu.web.resource;
import com.zcloud.edu.api.TeacherCertificateServiceI;
import com.zcloud.edu.dto.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.TeacherCertificatePageQry;
import com.zcloud.edu.dto.TeacherCertificateListQry;
import com.zcloud.edu.dto.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.TeacherCertificateRemoveCmd;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.api.resource.TeacherCertificateServiceI;
import com.zcloud.edu.dto.resource.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.resource.TeacherCertificatePageQry;
import com.zcloud.edu.dto.resource.TeacherCertificateListQry;
import com.zcloud.edu.dto.resource.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.resource.TeacherCertificateRemoveCmd;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
@ -20,8 +20,6 @@ import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
@ -43,7 +41,7 @@ public class TeacherCertificateController {
}
@ApiOperation("修改")
@PutMapping("/edit")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TeacherCertificateUpdateCmd cmd) {
teacherCertificateService.edit(cmd);
return SingleResponse.buildSuccess();
@ -62,20 +60,20 @@ public class TeacherCertificateController {
}
@ApiOperation("详情")
@GetMapping("/getInfoById")
@PostMapping("/getInfoById")
public SingleResponse<TeacherCertificateCO> getInfoById(@RequestParam(value = "id") Long id) {
return teacherCertificateService.getInfoById(id);
}
@ApiOperation("删除")
@PutMapping("/remove")
@PostMapping("/remove")
public Response remove(@RequestParam(value = "id") Long id) {
teacherCertificateService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PutMapping("/removeBatch")
@PostMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody TeacherCertificateRemoveCmd cmd) {
teacherCertificateService.removeBatch(cmd.getIds());
return SingleResponse.buildSuccess();

View File

@ -1,15 +1,13 @@
package com.zcloud.edu.web;
package com.zcloud.edu.web.resource;
import com.zcloud.edu.api.TeacherServiceI;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.api.resource.TeacherServiceI;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.dto.clientobject.TeacherCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCO;
import com.zcloud.edu.dto.resource.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
@ -32,19 +30,18 @@ public class TeacherController {
@ApiOperation("新增(从人员列表选择)")
@PostMapping("/save")
public SingleResponse<TeacherCO> add(@Validated @RequestBody TeacherAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return teacherService.add(cmd);
}
@ApiOperation("修改")
@PutMapping("/edit")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TeacherUpdateCmd cmd) {
teacherService.edit(cmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("启用/禁用")
@PutMapping("/editState")
@PostMapping("/editState")
public SingleResponse editState(@Validated @RequestBody TeacherUpdateStateCmd cmd) {
teacherService.editState(cmd);
return SingleResponse.buildSuccess();
@ -63,20 +60,20 @@ public class TeacherController {
}
@ApiOperation("详情")
@GetMapping("/getInfoById")
@PostMapping("/getInfoById")
public SingleResponse<TeacherCO> getInfoById(@RequestParam(value = "id") Long id) {
return teacherService.getInfoById(id);
}
@ApiOperation("删除")
@PutMapping("/remove")
@PostMapping("/remove")
public Response remove(@RequestParam(value = "id") Long id) {
teacherService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PutMapping("/removeBatch")
@PostMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody TeacherRemoveCmd cmd) {
teacherService.removeBatch(cmd.getIds());
return SingleResponse.buildSuccess();

View File

@ -1,27 +1,25 @@
package com.zcloud.edu.web;
package com.zcloud.edu.web.resource;
import com.zcloud.edu.api.TrainingTypeServiceI;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.api.resource.TrainingTypeServiceI;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.dto.clientobject.TrainingTypeCO;
import com.zcloud.edu.dto.clientobject.resource.TrainingTypeCO;
import com.zcloud.edu.dto.resource.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
* @Author SondonYong
* @Date 2025-11-26 15:04:06
*/
* web-adapter
*
* @Author SondonYong
* @Date 2025-11-26 15:04:06
*/
@Api(tags = "培训类型信息")
@RequestMapping("/${application.gateway}/trainingType")
@RestController
@ -36,7 +34,7 @@ public class TrainingTypeController {
}
@ApiOperation("修改")
@PutMapping("/edit")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody TrainingTypeUpdateCmd cmd) {
trainingTypeService.edit(cmd);
return SingleResponse.buildSuccess();
@ -55,21 +53,21 @@ public class TrainingTypeController {
}
@ApiOperation("详情")
@GetMapping("/getInfoById")
@PostMapping("/getInfoById")
public SingleResponse<TrainingTypeCO> getInfoById(@RequestParam(value = "id") Long id) {
return trainingTypeService.getInfoById(id);
}
@ApiOperation("删除")
@PutMapping("/remove")
@PostMapping("/remove")
public Response remove(@RequestParam(value = "id") Long id) {
trainingTypeService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PutMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody TrainingTypeRemoveCmd cmd) {
@PostMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody TrainingTypeRemoveCmd cmd) {
trainingTypeService.removeBatch(cmd.getIds());
return SingleResponse.buildSuccess();
}

View File

@ -1,23 +1,19 @@
package com.zcloud.edu.web;
package com.zcloud.edu.web.resource;
import com.zcloud.edu.api.VideoCoursewareServiceI;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.dto.clientobject.VideoCoursewareCO;
import com.zcloud.edu.api.resource.VideoCoursewareServiceI;
import com.zcloud.edu.dto.clientobject.resource.VideoCoursewareCO;
import com.alibaba.cola.dto.MultiResponse;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.Response;
import com.alibaba.cola.dto.SingleResponse;
import com.jjb.saas.framework.auth.model.SSOUser;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.dto.resource.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
/**
* web-adapter
*
@ -34,19 +30,18 @@ public class VideoCoursewareController {
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<VideoCoursewareCO> add(@Validated @RequestBody VideoCoursewareAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return videoCoursewareService.add(cmd);
}
@ApiOperation("修改")
@PutMapping("/edit")
@PostMapping("/edit")
public SingleResponse edit(@Validated @RequestBody VideoCoursewareUpdateCmd cmd) {
videoCoursewareService.edit(cmd);
return SingleResponse.buildSuccess();
}
@ApiOperation("启用/禁用")
@PutMapping("/editState")
@PostMapping("/editState")
public SingleResponse editState(@Validated @RequestBody VideoCoursewareUpdateStateCmd cmd) {
videoCoursewareService.editState(cmd);
return SingleResponse.buildSuccess();
@ -65,20 +60,20 @@ public class VideoCoursewareController {
}
@ApiOperation("详情")
@GetMapping("/getInfoById")
@PostMapping("/getInfoById")
public SingleResponse<VideoCoursewareCO> getInfoById(@RequestParam(value = "id") Long id) {
return videoCoursewareService.getInfoById(id);
}
@ApiOperation("删除")
@PutMapping("/remove")
@PostMapping("/remove")
public Response remove(@RequestParam(value = "id") Long id) {
videoCoursewareService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@PutMapping("/removeBatch")
@PostMapping("/removeBatch")
public Response removeBatch(@Validated @RequestBody VideoCoursewareRemoveCmd cmd) {
videoCoursewareService.removeBatch(cmd.getIds());
return SingleResponse.buildSuccess();

View File

@ -1,35 +0,0 @@
package com.zcloud.edu.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.QuestionGateway;
import com.zcloud.edu.domain.model.QuestionE;
import com.zcloud.edu.dto.QuestionUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:06:11
*/
@Component
@AllArgsConstructor
public class QuestionUpdateExe {
private final QuestionGateway questionGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(QuestionUpdateCmd cmd) {
QuestionE questionE = new QuestionE();
BeanUtils.copyProperties(cmd, questionE);
questionE.checkQuestion(questionE);
boolean res = questionGateway.update(questionE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -1,44 +0,0 @@
package com.zcloud.edu.command;
import com.zcloud.edu.domain.gateway.TrainingTypeGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author SondonYong
* @Date 2025-11-26 15:04:07
*/
@Component
@AllArgsConstructor
public class TrainingTypeRemoveExe {
private final TrainingTypeGateway trainingTypeGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
// todo 校验是否有其他业务调用
boolean res = trainingTypeGateway.deletedTrainingTypeById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
// todo 校验是否有其他业务调用
boolean res = trainingTypeGateway.deletedTrainingTypeByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -1,45 +0,0 @@
package com.zcloud.edu.command;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.VideoCoursewareGateway;
import com.zcloud.edu.domain.model.VideoCoursewareE;
import com.zcloud.edu.dto.VideoCoursewareUpdateCmd;
import com.zcloud.edu.dto.VideoCoursewareUpdateStateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:33
*/
@Component
@AllArgsConstructor
public class VideoCoursewareUpdateExe {
private final VideoCoursewareGateway videoCoursewareGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(VideoCoursewareUpdateCmd cmd) {
VideoCoursewareE videoCoursewareE = new VideoCoursewareE();
BeanUtils.copyProperties(cmd, videoCoursewareE);
boolean res = videoCoursewareGateway.update(videoCoursewareE);
if (!res) {
throw new BizException("修改失败");
}
}
@Transactional(rollbackFor = Exception.class)
public void execute(VideoCoursewareUpdateStateCmd cmd) {
VideoCoursewareE videoCoursewareE = new VideoCoursewareE();
BeanUtils.copyProperties(cmd, videoCoursewareE);
boolean res = videoCoursewareGateway.update(videoCoursewareE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,32 @@
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.domain.model.resource.CurriculumChapterE;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
import com.zcloud.edu.persistence.dataobject.CurriculumChapterDO;
import org.mapstruct.Mapper;
import java.util.Collection;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Mapper(componentModel = "spring")
public interface CurriculumChapterCoConvertor {
/**
* @param curriculumChapterDOs
* @return
*/
List<CurriculumChapterCO> converDOsToCOs(List<CurriculumChapterDO> curriculumChapterDOs);
List<CurriculumChapterE> converCmdsToEs(List<CurriculumChapterAddCmd> curriculumChapterAddCmdList1);
Collection<CurriculumChapterDO> converEsToDOs(List<CurriculumChapterE> curriculumChapterES);
}

View File

@ -0,0 +1,26 @@
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.resource.CurriculumCO;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Mapper(componentModel = "spring")
public interface CurriculumCoConvertor {
/**
* @param curriculumDOs
* @return
*/
List<CurriculumCO> converDOsToCOs(List<CurriculumDO> curriculumDOs);
CurriculumCO converDOToCO(CurriculumDO curriculumDO);
}

View File

@ -0,0 +1,24 @@
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Mapper(componentModel = "spring")
public interface ExamPaperCoConvertor {
/**
* @param examPaperDOs
* @return
*/
List<ExamPaperCO> converDOsToCOs(List<ExamPaperDO> examPaperDOs);
}

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command.convertor;
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.QuestionCO;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import org.mapstruct.Mapper;

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command.convertor;
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.zcloud.edu.persistence.dataobject.TeacherCertificateDO;
import org.mapstruct.Mapper;

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command.convertor;
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.TeacherCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCO;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import org.mapstruct.Mapper;

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command.convertor;
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.TrainingTypeCO;
import com.zcloud.edu.dto.clientobject.resource.TrainingTypeCO;
import com.zcloud.edu.persistence.dataobject.TrainingTypeDO;
import org.mapstruct.Mapper;

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command.convertor;
package com.zcloud.edu.command.convertor.resource;
import com.zcloud.edu.dto.clientobject.VideoCoursewareCO;
import com.zcloud.edu.dto.clientobject.resource.VideoCoursewareCO;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import org.mapstruct.Mapper;

View File

@ -1,60 +0,0 @@
package com.zcloud.edu.command.query;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.VideoCoursewareCoConvertor;
import com.zcloud.edu.dto.VideoCoursewarePageQry;
import com.zcloud.edu.dto.VideoCoursewareListQry;
import com.zcloud.edu.dto.clientobject.VideoCoursewareCO;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.repository.VideoCoursewareRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.Map;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
*/
@Component
@AllArgsConstructor
public class VideoCoursewareQueryExe {
private final VideoCoursewareRepository videoCoursewareRepository;
private final VideoCoursewareCoConvertor videoCoursewareCoConvertor;
/**
*
*
* @return
*/
public PageResponse<VideoCoursewareCO> execute(VideoCoursewarePageQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
PageResponse<VideoCoursewareDO> pageResponse = videoCoursewareRepository.listPage(params);
List<VideoCoursewareCO> examCenterCOS = videoCoursewareCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public MultiResponse<VideoCoursewareCO> execute(VideoCoursewareListQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
List<VideoCoursewareDO> list = videoCoursewareRepository.list(params);
List<VideoCoursewareCO> examCenterCOS = videoCoursewareCoConvertor.converDOsToCOs(list);
return MultiResponse.of(examCenterCOS);
}
public SingleResponse<VideoCoursewareCO> execute(Long id) {
SingleResponse<VideoCoursewareDO> videoCoursewareDO = videoCoursewareRepository.getInfoById(id);
VideoCoursewareCO co = new VideoCoursewareCO();
BeanUtils.copyProperties(videoCoursewareDO.getData(), co);
return SingleResponse.of(co);
}
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.edu.command.convertor.resource.CurriculumChapterCoConvertor;
import com.zcloud.edu.dto.resource.CurriculumChapterPageQry;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
import com.zcloud.edu.persistence.dataobject.CurriculumChapterDO;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Component
@AllArgsConstructor
public class CurriculumChapterQueryExe {
private final CurriculumChapterRepository curriculumChapterRepository;
private final CurriculumChapterCoConvertor curriculumChapterCoConvertor;
/**
*
*
* @param curriculumChapterPageQry
* @return
*/
public PageResponse<CurriculumChapterCO> execute(CurriculumChapterPageQry curriculumChapterPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(curriculumChapterPageQry);
PageResponse<CurriculumChapterDO> pageResponse = curriculumChapterRepository.listPage(params);
List<CurriculumChapterCO> examCenterCOS = curriculumChapterCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -0,0 +1,92 @@
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.command.convertor.resource.CurriculumChapterCoConvertor;
import com.zcloud.edu.command.convertor.resource.CurriculumCoConvertor;
import com.zcloud.edu.domain.enums.CorpTypeEnum;
import com.zcloud.edu.dto.resource.CurriculumPageQry;
import com.zcloud.edu.dto.clientobject.resource.CurriculumCO;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
import com.zcloud.edu.persistence.dataobject.CorpInfoDO;
import com.zcloud.edu.persistence.dataobject.CurriculumChapterDO;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Tools;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Component
@AllArgsConstructor
public class CurriculumQueryExe {
private final CurriculumRepository curriculumRepository;
private final CurriculumCoConvertor curriculumCoConvertor;
private final CurriculumChapterRepository curriculumChapterRepository;
private final CurriculumChapterCoConvertor curriculumChapterCoConvertor;
private final CorpInfoRepository corpInfoRepository;
/**
*
*
* @param curriculumPageQry
* @return
*/
public PageResponse<CurriculumCO> execute(CurriculumPageQry curriculumPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(curriculumPageQry);
//判断企业是股份端还是企业端
boolean supper = corpInfoRepository.isSupper();
//股份端展示股份端创建的和各企业创建的,
//企业端展示本企业创建的和股份端创建的
if(!supper){
//不是股份端,显示
List<Integer> typeList = Arrays.asList(CorpTypeEnum.share.getCode());
List<CorpInfoDO> corpInfoDOS = corpInfoRepository.listByCorpType(typeList);
List<Long> inCorpinfoId = corpInfoDOS.stream().map(CorpInfoDO::getId).collect(Collectors.toList());
inCorpinfoId.add(AuthContext.getTenantId());
params.put("inCorpinfoId", inCorpinfoId);
}
PageResponse<CurriculumDO> pageResponse = curriculumRepository.listPage(params);
if(pageResponse.getData() == null){
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
List<CurriculumCO> examCenterCOS = curriculumCoConvertor.converDOsToCOs(pageResponse.getData());
examCenterCOS.forEach(examCenterCO -> {
if(AuthContext.getUserId().equals(examCenterCO.getCreateId())){
//是本人
examCenterCO.setIsUserCreate(true);
}
});
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public CurriculumCO getInfoById(Long id) {
CurriculumDO curriculumDO = curriculumRepository.getById(id);
if(curriculumDO == null){
return null;
}
CurriculumCO curriculumCO = curriculumCoConvertor.converDOToCO(curriculumDO);
//查询出所有的课程章节信息
List<CurriculumChapterDO> curriculumChapterDOList = curriculumChapterRepository.getListByCurriculumId(curriculumCO.getCurriculumId());
List<CurriculumChapterCO> curriculumChapterCOList = curriculumChapterCoConvertor.converDOsToCOs(curriculumChapterDOList);
List<CurriculumChapterCO> treeList = Tools.buildEntityTree(curriculumChapterCOList, "curriculumChapterId", "parentId", "childCurriculumChapterCOList", "0");
curriculumCO.setCurriculumChapterCOList(treeList);
return curriculumCO;
}
}

View File

@ -0,0 +1,88 @@
package com.zcloud.edu.command.query.resource;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.command.convertor.resource.ExamPaperCoConvertor;
import com.zcloud.edu.command.convertor.resource.QuestionCoConvertor;
import com.zcloud.edu.domain.enums.CorpTypeEnum;
import com.zcloud.edu.dto.resource.ExamPaperPageQry;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.zcloud.edu.persistence.dataobject.CorpInfoDO;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.ExamPaperRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Component
@AllArgsConstructor
public class ExamPaperQueryExe {
private final ExamPaperRepository examPaperRepository;
private final ExamPaperCoConvertor examPaperCoConvertor;
private final CorpInfoRepository corpInfoRepository;
private final QuestionRepository questionRepository;
private final QuestionCoConvertor questionCoConvertor;
/**
*
*
* @param examPaperPageQry
* @return
*/
public PageResponse<ExamPaperCO> execute(ExamPaperPageQry examPaperPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(examPaperPageQry);
//判断企业是股份端还是企业端
boolean supper = corpInfoRepository.isSupper();
//股份端展示股份端创建的和各企业创建的,
//企业端展示本企业创建的和股份端创建的
if(!supper){
//不是股份端,显示
List<Integer> typeList = Arrays.asList(CorpTypeEnum.share.getCode());
List<CorpInfoDO> corpInfoDOS = corpInfoRepository.listByCorpType(typeList);
List<Long> inCorpinfoId = corpInfoDOS.stream().map(CorpInfoDO::getId).collect(Collectors.toList());
inCorpinfoId.add(AuthContext.getTenantId());
params.put("inCorpinfoId", inCorpinfoId);
}
PageResponse<ExamPaperDO> pageResponse = examPaperRepository.listPage(params);
List<ExamPaperCO> examCenterCOS = examPaperCoConvertor.converDOsToCOs(pageResponse.getData());
examCenterCOS.forEach(examCenterCO -> {
if(examCenterCO.getCreateId().equals(AuthContext.getUserId())){
//是本人
examCenterCO.setIsUserCreate(true);
}
});
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public ExamPaperCO getInfoById(Long id) {
ExamPaperDO examPaperDO =examPaperRepository.getInfoById(id);
if(examPaperDO==null){
throw new RuntimeException("试卷不存在");
}
ExamPaperCO examPaperCO =new ExamPaperCO();
BeanUtil.copyProperties(examPaperDO,examPaperCO);
//查找课题
List<QuestionDO> questionDOList = questionRepository.getListByExamPaperId(examPaperDO.getExamPaperId());
List<QuestionCO> questionCOS = questionCoConvertor.converDOsToCOs(questionDOList);
examPaperCO.setQuestionCOList(questionCOS);
return examPaperCO;
}
}

View File

@ -1,12 +1,12 @@
package com.zcloud.edu.command.query;
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.QuestionCoConvertor;
import com.zcloud.edu.dto.QuestionPageQry;
import com.zcloud.edu.dto.QuestionListQry;
import com.zcloud.edu.dto.clientobject.QuestionCO;
import com.zcloud.edu.command.convertor.resource.QuestionCoConvertor;
import com.zcloud.edu.dto.resource.QuestionPageQry;
import com.zcloud.edu.dto.resource.QuestionListQry;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.QuestionRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;

View File

@ -1,12 +1,12 @@
package com.zcloud.edu.command.query;
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.TeacherCertificateCoConvertor;
import com.zcloud.edu.dto.TeacherCertificateListQry;
import com.zcloud.edu.dto.TeacherCertificatePageQry;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.command.convertor.resource.TeacherCertificateCoConvertor;
import com.zcloud.edu.dto.resource.TeacherCertificateListQry;
import com.zcloud.edu.dto.resource.TeacherCertificatePageQry;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.zcloud.edu.persistence.dataobject.TeacherCertificateDO;
import com.zcloud.edu.persistence.repository.TeacherCertificateRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherCertificateRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;

View File

@ -1,16 +1,16 @@
package com.zcloud.edu.command.query;
package com.zcloud.edu.command.query.resource;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.TeacherCoConvertor;
import com.zcloud.edu.dto.TeacherListQry;
import com.zcloud.edu.dto.TeacherPageQry;
import com.zcloud.edu.dto.clientobject.TeacherCO;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.command.convertor.resource.TeacherCoConvertor;
import com.zcloud.edu.dto.resource.TeacherListQry;
import com.zcloud.edu.dto.resource.TeacherPageQry;
import com.zcloud.edu.dto.clientobject.resource.TeacherCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.zcloud.edu.persistence.dataobject.TeacherCertificateDO;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import com.zcloud.edu.persistence.repository.TeacherCertificateRepository;
import com.zcloud.edu.persistence.repository.TeacherRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherCertificateRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
@ -54,15 +54,17 @@ public class TeacherQueryExe {
return MultiResponse.of(examCenterCOS);
}
public SingleResponse<TeacherCO> execute(Long id) {
public SingleResponse<TeacherCO> getInfoById(Long id) {
SingleResponse<TeacherDO> teacherDO = teacherRepository.getInfoById(id);
if(teacherDO.getData() == null){
return SingleResponse.of(null);
}
TeacherCO co = new TeacherCO();
BeanUtils.copyProperties(teacherDO.getData(), co);
if(co != null){
List<TeacherCertificateDO> teacherCertificateDOS = teacherCertificateRepository.listByTeacherId(co.getTeacherId());
co.setTeacherCertificateList(BeanUtil.copyToList(teacherCertificateDOS, TeacherCertificateCO.class));
}
return SingleResponse.of(co);
}

View File

@ -1,12 +1,12 @@
package com.zcloud.edu.command.query;
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.command.convertor.TrainingTypeCoConvertor;
import com.zcloud.edu.dto.TrainingTypeListQry;
import com.zcloud.edu.dto.TrainingTypePageQry;
import com.zcloud.edu.dto.clientobject.TrainingTypeCO;
import com.zcloud.edu.command.convertor.resource.TrainingTypeCoConvertor;
import com.zcloud.edu.dto.resource.TrainingTypeListQry;
import com.zcloud.edu.dto.resource.TrainingTypePageQry;
import com.zcloud.edu.dto.clientobject.resource.TrainingTypeCO;
import com.zcloud.edu.persistence.dataobject.TrainingTypeDO;
import com.zcloud.edu.persistence.repository.TrainingTypeRepository;
import com.zcloud.edu.persistence.repository.resource.TrainingTypeRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;

View File

@ -0,0 +1,95 @@
package com.zcloud.edu.command.query.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.jjb.saas.framework.auth.utils.AuthContext;
import com.zcloud.edu.command.convertor.resource.VideoCoursewareCoConvertor;
import com.zcloud.edu.domain.enums.CorpTypeEnum;
import com.zcloud.edu.dto.resource.VideoCoursewarePageQry;
import com.zcloud.edu.dto.resource.VideoCoursewareListQry;
import com.zcloud.edu.dto.clientobject.resource.VideoCoursewareCO;
import com.zcloud.edu.persistence.dataobject.CorpInfoDO;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.beans.BeanUtils;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
*/
@Component
@AllArgsConstructor
public class VideoCoursewareQueryExe {
private final VideoCoursewareRepository videoCoursewareRepository;
private final VideoCoursewareCoConvertor videoCoursewareCoConvertor;
private final CorpInfoRepository corpInfoRepository;
/**
*
*
* @return
*/
public PageResponse<VideoCoursewareCO> execute(VideoCoursewarePageQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
//判断企业是股份端还是企业端
boolean supper = corpInfoRepository.isSupper();
//股份端展示股份端创建的和各企业创建的,
//企业端展示本企业创建的和股份端创建的
if(!supper){
//不是股份端,显示
List<Integer> typeList = Arrays.asList(CorpTypeEnum.share.getCode());
List<CorpInfoDO> corpInfoDOS = corpInfoRepository.listByCorpType(typeList);
List<Long> inCorpinfoId = corpInfoDOS.stream().map(CorpInfoDO::getId).collect(Collectors.toList());
inCorpinfoId.add(AuthContext.getTenantId());
params.put("inCorpinfoId", inCorpinfoId);
}
PageResponse<VideoCoursewareDO> pageResponse = videoCoursewareRepository.listPage(params);
if(pageResponse.getData() == null){
return PageResponse.of(null, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
List<VideoCoursewareCO> examCenterCOS = videoCoursewareCoConvertor.converDOsToCOs(pageResponse.getData());
examCenterCOS.forEach(examCenterCO -> {
if(examCenterCO.getCreateId().equals(AuthContext.getUserId())){
//是本人
examCenterCO.setIsUserCreate(true);
}
});
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
public MultiResponse<VideoCoursewareCO> execute(VideoCoursewareListQry qry) {
Map<String, Object> params = PageQueryHelper.toHashMap(qry);
List<VideoCoursewareDO> list = videoCoursewareRepository.list(params);
List<VideoCoursewareCO> examCenterCOS = videoCoursewareCoConvertor.converDOsToCOs(list);
return MultiResponse.of(examCenterCOS);
}
public SingleResponse<VideoCoursewareCO> getInfoById(Long id) {
SingleResponse<VideoCoursewareDO> videoCoursewareDO = videoCoursewareRepository.getInfoById(id);
if(videoCoursewareDO.getData() == null){
return SingleResponse.of(null);
}
VideoCoursewareCO co = new VideoCoursewareCO();
BeanUtils.copyProperties(videoCoursewareDO.getData(), co);
return SingleResponse.of(co);
}
}

View File

@ -0,0 +1,103 @@
package com.zcloud.edu.command.resource;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.command.convertor.resource.CurriculumChapterCoConvertor;
import com.zcloud.edu.domain.enums.CatalogueLevelEnum;
import com.zcloud.edu.domain.gateway.resource.CurriculumChapterGateway;
import com.zcloud.edu.domain.gateway.resource.CurriculumGateway;
import com.zcloud.edu.domain.model.resource.CurriculumChapterE;
import com.zcloud.edu.domain.model.resource.CurriculumE;
import com.zcloud.edu.dto.resource.CurriculumAddCmd;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Component
@AllArgsConstructor
public class CurriculumAddExe {
private final CurriculumGateway curriculumGateway;
private final CurriculumChapterGateway curriculumChapterGateway;
private final CurriculumChapterCoConvertor curriculumChapterCoConvertor;
private final CurriculumChapterRepository curriculumChapterRepository;
private final VideoCoursewareRepository videoCoursewareRepository;
private final QuestionRepository questionRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(CurriculumAddCmd cmd) {
CurriculumE curriculumE = new CurriculumE();
BeanUtils.copyProperties(cmd, curriculumE);
boolean res = false;
try {
res = curriculumGateway.add(curriculumE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("课程保存失败");
}
List<String> videoCoursewareIds =new ArrayList<>();
//判断课程习题数量大于5
if(CatalogueLevelEnum.FIRST_LEVEL.getCode().equals(cmd.getCatalogueLevel())){
//一级目录
videoCoursewareIds = cmd.getCurriculumChapterAddCmdList().stream()
.filter(curriculumChapterAddCmd -> curriculumChapterAddCmd.getVideoCoursewareId() != null)
.map(CurriculumChapterAddCmd::getVideoCoursewareId).collect(Collectors.toList());
}else{
//二级目录
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList();
//curriculumChapterAddCmdList过滤掉"0".equals(curriculumChapterAddCmd.getParentId()) 的数据拿到videoCoursewareIds
// curriculumChapterAddCmdList.stream()
//curriculumChapterAddCmdList中curriculumChapterAddCmdList.get().getCurriculumChapterAddCmdList() 下所有的getVideoCoursewareId
List<String> finalVideoCoursewareIds = videoCoursewareIds;
curriculumChapterAddCmdList.forEach(info->{
List<String> collect = info.getCurriculumChapterAddCmdList().stream().filter(curriculumChapterAddCmd -> curriculumChapterAddCmd.getVideoCoursewareId() != null)
.map(CurriculumChapterAddCmd::getVideoCoursewareId).collect(Collectors.toList());
finalVideoCoursewareIds.addAll(collect);
});
}
if(CollUtil.isEmpty(videoCoursewareIds)){
throw new BizException("请选择课程");
}
Long videoCoursewareCount = questionRepository.getCountByVideoCoursewareList(videoCoursewareIds);
if(videoCoursewareCount<5){
throw new BizException("课程习题数量不能小于5");
}
//处理课程章节
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList = cmd.getCurriculumChapterAddCmdList();
curriculumChapterAddCmdList.forEach(curriculumChapterAddCmd -> {
CurriculumChapterE curriculumChapterE = new CurriculumChapterE();
BeanUtils.copyProperties(curriculumChapterAddCmd, curriculumChapterE);
curriculumChapterE.setCurriculumId(curriculumE.getCurriculumId());
curriculumChapterE.setParentId("0");
curriculumChapterGateway.add(curriculumChapterE);
if( CatalogueLevelEnum.SECOND_LEVEL.getCode().equals(cmd.getCatalogueLevel())){
//二级目录
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList1 = curriculumChapterAddCmd.getCurriculumChapterAddCmdList();
List<CurriculumChapterE> curriculumChapterES = curriculumChapterCoConvertor.converCmdsToEs(curriculumChapterAddCmdList1);
CurriculumChapterE.initBath(curriculumChapterES,curriculumChapterE.getCurriculumChapterId(),curriculumChapterE.getCurriculumId());
curriculumChapterRepository.saveBatch( curriculumChapterCoConvertor.converEsToDOs(curriculumChapterES));
}
});
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.resource.CurriculumChapterGateway;
import com.zcloud.edu.domain.model.resource.CurriculumChapterE;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Component
@AllArgsConstructor
public class CurriculumChapterAddExe {
private final CurriculumChapterGateway curriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(CurriculumChapterAddCmd cmd) {
CurriculumChapterE curriculumChapterE = new CurriculumChapterE();
BeanUtils.copyProperties(cmd, curriculumChapterE);
boolean res = false;
try {
res = curriculumChapterGateway.add(curriculumChapterE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -1,7 +1,7 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.VideoCoursewareGateway;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.resource.CurriculumChapterGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -10,17 +10,17 @@ import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Component
@AllArgsConstructor
public class VideoCoursewareRemoveExe {
private final VideoCoursewareGateway videoCoursewareGateway;
public class CurriculumChapterRemoveExe {
private final CurriculumChapterGateway curriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = videoCoursewareGateway.deletedVideoCoursewareById(id);
boolean res = curriculumChapterGateway.deletedCurriculumChapterById(id);
if (!res) {
throw new BizException("删除失败");
}
@ -29,7 +29,7 @@ public class VideoCoursewareRemoveExe {
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = videoCoursewareGateway.deletedVideoCoursewareByIds(ids);
boolean res = curriculumChapterGateway.deletedCurriculumChapterByIds(ids);
if (!res) {
throw new BizException("删除失败");
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.resource.CurriculumChapterGateway;
import com.zcloud.edu.domain.model.resource.CurriculumChapterE;
import com.zcloud.edu.dto.resource.CurriculumChapterUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Component
@AllArgsConstructor
public class CurriculumChapterUpdateExe {
private final CurriculumChapterGateway curriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(CurriculumChapterUpdateCmd curriculumChapterUpdateCmd) {
CurriculumChapterE curriculumChapterE = new CurriculumChapterE();
BeanUtils.copyProperties(curriculumChapterUpdateCmd, curriculumChapterE);
boolean res = curriculumChapterGateway.update(curriculumChapterE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,71 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.resource.CurriculumGateway;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Component
@AllArgsConstructor
public class CurriculumRemoveExe {
private final CurriculumGateway curriculumGateway;
private final CorpInfoRepository corpInfoRepository;
private final CurriculumRepository curriculumRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
CurriculumDO curriculumDO = curriculumRepository.getById(id);
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(curriculumDO.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能删除");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能删除");
}
//TODO 校验是否被使用
boolean res = curriculumGateway.deletedCurriculumById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
for (Long id : ids) {
CurriculumDO curriculumDO = curriculumRepository.getById(id);
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(curriculumDO.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能删除");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能删除");
}
//TODO 校验是否被使用
}
boolean res = curriculumGateway.deletedCurriculumByIds(ids);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,109 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.command.convertor.resource.CurriculumChapterCoConvertor;
import com.zcloud.edu.domain.enums.CatalogueLevelEnum;
import com.zcloud.edu.domain.enums.CurriculumSellFlagEnum;
import com.zcloud.edu.domain.gateway.resource.CurriculumChapterGateway;
import com.zcloud.edu.domain.gateway.resource.CurriculumGateway;
import com.zcloud.edu.domain.model.resource.CurriculumChapterE;
import com.zcloud.edu.domain.model.resource.CurriculumE;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.dto.resource.CurriculumUpdateCmd;
import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd;
import com.zcloud.edu.persistence.dataobject.CurriculumDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:39
*/
@Component
@AllArgsConstructor
public class CurriculumUpdateExe {
private final CurriculumGateway curriculumGateway;
private final CurriculumRepository curriculumRepository;
private final CurriculumChapterRepository curriculumChapterRepository;
private final CurriculumChapterCoConvertor curriculumChapterCoConvertor;
private final CurriculumChapterGateway curriculumChapterGateway;
private final CorpInfoRepository corpInfoRepository;
@Transactional(rollbackFor = Exception.class)
public void execute(CurriculumUpdateCmd curriculumUpdateCmd) {
CurriculumDO curriculumDO = curriculumRepository.getById(curriculumUpdateCmd.getId());
if (curriculumDO == null) {
throw new BizException("课程不存在");
}
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(curriculumDO.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能编辑");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能编辑");
}
//TODo 校验是否 被使用
CurriculumE curriculumE = new CurriculumE();
BeanUtils.copyProperties(curriculumUpdateCmd, curriculumE);
boolean res = curriculumGateway.update(curriculumE);
if (!res) {
throw new BizException("修改失败");
}
//删除课程章节信息,添加新的课程章节信息
curriculumChapterRepository.deleteByCurriculumId(curriculumDO.getCurriculumId());
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList = curriculumUpdateCmd.getCurriculumChapterAddCmdList();
curriculumChapterAddCmdList.forEach(curriculumChapterAddCmd -> {
CurriculumChapterE curriculumChapterE = new CurriculumChapterE();
BeanUtils.copyProperties(curriculumChapterAddCmd, curriculumChapterE);
curriculumChapterE.setCurriculumId(curriculumE.getCurriculumId());
curriculumChapterGateway.add(curriculumChapterE);
if("0".equals(curriculumChapterAddCmd.getParentId())&& CatalogueLevelEnum.SECOND_LEVEL.getCode().equals(curriculumUpdateCmd.getCatalogueLevel())){
//二级目录
List<CurriculumChapterAddCmd> curriculumChapterAddCmdList1 = curriculumChapterAddCmd.getCurriculumChapterAddCmdList();
List<CurriculumChapterE> curriculumChapterES = curriculumChapterCoConvertor.converCmdsToEs(curriculumChapterAddCmdList1);
CurriculumChapterE.initBath(curriculumChapterES,curriculumChapterE.getCurriculumChapterId(),curriculumChapterE.getCurriculumId());
curriculumChapterRepository.saveBatch( curriculumChapterCoConvertor.converEsToDOs(curriculumChapterES));
}
});
}
public void editState(CurriculumUpdateStateCmd cmd) {
for (Long id : cmd.getId()) {
CurriculumDO curriculumDO = curriculumRepository.getById(id);
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(curriculumDO.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能修改状态");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能修改状态");
}
//TODO 校验是否被使用,如果是下架判断是否被使用
if(CurriculumSellFlagEnum.UNENABLED.getCode().equals(cmd.getSellFlag())){
}
}
curriculumRepository.updateState(cmd.getId(), cmd.getSellFlag());
}
}

View File

@ -0,0 +1,69 @@
package com.zcloud.edu.command.resource;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.enums.CoursewareTypeEnum;
import com.zcloud.edu.domain.gateway.resource.ExamPaperGateway;
import com.zcloud.edu.domain.model.resource.ExamPaperE;
import com.zcloud.edu.domain.model.resource.QuestionE;
import com.zcloud.edu.dto.resource.ExamPaperAddCmd;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Component
@AllArgsConstructor
public class ExamPaperAddExe {
private final ExamPaperGateway examPaperGateway;
private final QuestionRepository questionRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(ExamPaperAddCmd cmd) {
ExamPaperE examPaperE = new ExamPaperE();
BeanUtils.copyProperties(cmd, examPaperE);
boolean res = false;
try {
res = examPaperGateway.add(examPaperE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
QuestionE questionE = new QuestionE();
List<QuestionE> questionES = questionE.parseImportTemplateData(cmd.getFile(),null, examPaperE.getExamPaperId(), CoursewareTypeEnum.EXAM_QUESTION.getCode());
BigDecimal examScore = questionES.stream().map(QuestionE::getScore).reduce(BigDecimal.ZERO, BigDecimal::add);
//判断总分数量是否一致
if (examScore.compareTo(examPaperE.getExamScore())!=0) {
throw new BizException("总分数和试题分数不一致");
}
// 批量插入
boolean questionRes = false;
try {
questionRes = questionRepository.saveBatch(BeanUtil.copyToList(questionES, QuestionDO.class));
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!questionRes) {
throw new BizException("试题导入失败");
}
return true;
}
}

View File

@ -0,0 +1,95 @@
package com.zcloud.edu.command.resource;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.resource.ExamPaperGateway;
import com.zcloud.edu.dto.resource.ExamPaperRemoveCmd;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.ExamPaperRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
@Component
@AllArgsConstructor
public class ExamPaperRemoveExe {
private final ExamPaperGateway examPaperGateway;
private final ExamPaperRepository examPaperRepository;
private final QuestionRepository questionRepository;
private final CorpInfoRepository corpInfoRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
ExamPaperDO examPaperDO = examPaperRepository.getById(id);
if(examPaperDO==null){
throw new RuntimeException("试卷不存在");
}
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(examPaperDO.getCorpinfoId());
if (corpInfoRepository.isSupper() && !b) {
throw new BizException("企业端数据不能修改状态");
}
if (!corpInfoRepository.isSupper() && b) {
throw new BizException("股份端数据不能修改状态");
}
//TODO 是否被使用
boolean res = examPaperGateway.deletedExamPaperById(id);
if (!res) {
throw new BizException("删除失败");
}
//删除对应试题
questionRepository.removeByExampaperId(examPaperDO.getExamPaperId());
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(ExamPaperRemoveCmd examPaperRemoveCmd) {
List<ExamPaperDO> examPaperDOList =examPaperRepository.getListByIdList(examPaperRemoveCmd.getId());
if(CollUtil.isEmpty(examPaperDOList)){
throw new RuntimeException("试卷不存在");
}
//获取试卷idlist
List<String> examPaperIdList = examPaperDOList.stream().map(ExamPaperDO::getExamPaperId).collect(Collectors.toList());
//判断是否被使用
for (ExamPaperDO examPaperDO : examPaperDOList) {
Boolean b = corpInfoRepository.checkSupper(examPaperDO.getCorpinfoId());
if (corpInfoRepository.isSupper() && !b) {
throw new BizException("企业端数据不能修改状态");
}
if (!corpInfoRepository.isSupper() && b) {
throw new BizException("股份端数据不能修改状态");
}
//TODO 判断是否被使用
}
boolean res = examPaperGateway.deletedExamPaperByIds(examPaperRemoveCmd.getId());
if (!res) {
throw new BizException("删除失败");
}
//删除对应试题
questionRepository.removeByExampaperIdList(examPaperIdList);
return true;
}
}

View File

@ -0,0 +1,98 @@
package com.zcloud.edu.command.resource;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.enums.CoursewareTypeEnum;
import com.zcloud.edu.domain.gateway.resource.ExamPaperGateway;
import com.zcloud.edu.domain.model.resource.ExamPaperE;
import com.zcloud.edu.domain.model.resource.QuestionE;
import com.zcloud.edu.dto.resource.ExamPaperUpdateCmd;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.ExamPaperRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.math.BigDecimal;
import java.util.List;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
@Component
@AllArgsConstructor
public class ExamPaperUpdateExe {
private final ExamPaperGateway examPaperGateway;
private final ExamPaperRepository examPaperRepository;
private final CorpInfoRepository corpInfoRepository;
private final QuestionRepository questionRepository;
@Transactional(rollbackFor = Exception.class)
public void execute(MultipartFile file, ExamPaperUpdateCmd examPaperUpdateCmd) {
ExamPaperDO examPaperDO = examPaperRepository.getById(examPaperUpdateCmd.getId());
if( examPaperDO == null){
throw new BizException("试卷不存在");
}
ExamPaperE examPaperE = new ExamPaperE();
BeanUtils.copyProperties(examPaperUpdateCmd, examPaperE);
boolean res = examPaperGateway.update(examPaperE);
if (!res) {
throw new BizException("修改失败");
}
if (!file.isEmpty()) {
//删除之前的试题
questionRepository.removeByExampaperId( examPaperDO.getExamPaperId());
QuestionE questionE = new QuestionE();
List<QuestionE> questionES = questionE.parseImportTemplateData(file, null, examPaperE.getExamPaperId(), CoursewareTypeEnum.EXAM_QUESTION.getCode());
BigDecimal examScore = questionES.stream().map(QuestionE::getScore).reduce(BigDecimal.ZERO, BigDecimal::add);
//判断总分数量是否一致
if (examScore.compareTo(examPaperE.getExamScore()) != 0) {
throw new BizException("总分数和试题分数不一致");
}
// 批量插入
boolean questionRes = false;
try {
questionRes = questionRepository.saveBatch(BeanUtil.copyToList(questionES, QuestionDO.class));
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!questionRes) {
throw new BizException("试题导入失败");
}
}
}
public void editSellFlag(ExamPaperUpdateCmd examPaperUpdateCmd) {
ExamPaperDO examPaperDO = examPaperRepository.getById(examPaperUpdateCmd.getId());
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(examPaperDO.getCorpinfoId());
if (corpInfoRepository.isSupper() && !b) {
throw new BizException("企业端数据不能修改状态");
}
if (!corpInfoRepository.isSupper() && b) {
throw new BizException("股份端数据不能修改状态");
}
//TODO 是否被使用
ExamPaperE examPaperE = new ExamPaperE();
BeanUtils.copyProperties(examPaperUpdateCmd, examPaperE);
boolean res = examPaperGateway.update(examPaperE);
}
}

View File

@ -1,12 +1,13 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import cn.hutool.core.bean.BeanUtil;
import com.zcloud.edu.domain.gateway.QuestionGateway;
import com.zcloud.edu.domain.model.QuestionE;
import com.zcloud.edu.dto.QuestionAddCmd;
import com.zcloud.edu.domain.enums.CoursewareTypeEnum;
import com.zcloud.edu.domain.gateway.resource.QuestionGateway;
import com.zcloud.edu.domain.model.resource.QuestionE;
import com.zcloud.edu.dto.resource.QuestionAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.QuestionRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
@ -49,8 +50,8 @@ public class QuestionAddExe {
@Transactional(rollbackFor = Exception.class)
public void importQuestionVideoTable(MultipartFile file, String videoCoursewareId){
QuestionE questionE = new QuestionE();
Integer maxQuestionNumber = questionRepository.getMaxQuestionNumber(videoCoursewareId);
List<QuestionE> questionES = questionE.parseImportTemplateData(file, videoCoursewareId, maxQuestionNumber);
// Integer maxQuestionNumber = questionRepository.getMaxQuestionNumber(videoCoursewareId);
List<QuestionE> questionES = questionE.parseImportTemplateData(file, videoCoursewareId,null, CoursewareTypeEnum.VIDEO_COURSEWARE.getCode());
// 批量插入
boolean res = false;

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.QuestionGateway;
import com.zcloud.edu.domain.gateway.resource.QuestionGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@ -29,6 +29,7 @@ public class QuestionRemoveExe {
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = questionGateway.deletedQuestionByIds(ids);
if (!res) {
throw new BizException("删除失败");

View File

@ -0,0 +1,80 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.enums.CoursewareTypeEnum;
import com.zcloud.edu.domain.gateway.resource.QuestionGateway;
import com.zcloud.edu.domain.model.resource.QuestionE;
import com.zcloud.edu.dto.resource.QuestionUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.persistence.dataobject.ExamPaperDO;
import com.zcloud.edu.persistence.dataobject.QuestionDO;
import com.zcloud.edu.persistence.repository.resource.ExamPaperRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:06:11
*/
@Component
@AllArgsConstructor
public class QuestionUpdateExe {
private final QuestionGateway questionGateway;
private final QuestionRepository questionRepository;
private final ExamPaperRepository examPaperRepository;
@Transactional(rollbackFor = Exception.class)
public void execute(QuestionUpdateCmd cmd) {
QuestionDO questionDO = questionRepository.getById(cmd.getId());
if (questionDO == null) {
throw new BizException("试题不存在");
}
QuestionE questionE = new QuestionE();
BeanUtils.copyProperties(cmd, questionE);
questionE.checkQuestion(questionE);
boolean res = questionGateway.update(questionE);
if (!res) {
throw new BizException("修改失败");
}
}
public ExamPaperCO editPaper(QuestionUpdateCmd cmd) {
QuestionDO questionDO = questionRepository.getById(cmd.getId());
if (questionDO == null) {
throw new BizException("试题不存在");
}
QuestionE questionE = new QuestionE();
BeanUtils.copyProperties(cmd, questionE);
questionE.checkQuestion(questionE);
boolean res = questionGateway.update(questionE);
if (!res) {
throw new BizException("修改失败");
}
ExamPaperCO examPaperCO = new ExamPaperCO();
//如果是试卷习题,需要修改试卷对应的总分
if(CoursewareTypeEnum.EXAM_QUESTION.getCode().equals(questionDO.getCoursewareType())){
//修改试卷对应总分
BigDecimal bigDecimal = cmd.getScore().subtract(questionDO.getScore()).setScale(2, BigDecimal.ROUND_HALF_UP);
String examPaperId = questionDO.getExamPaperId();
ExamPaperDO examPaperDO = examPaperRepository.getInfoByUUid(examPaperId);
if(examPaperDO == null){
throw new BizException("试卷不存在");
}
BigDecimal add = examPaperDO.getExamScore().add(bigDecimal);
examPaperDO.setExamScore(add);
examPaperRepository.updateById(examPaperDO);
BeanUtils.copyProperties(examPaperDO, examPaperCO);
}
return examPaperCO;
}
}

View File

@ -1,16 +1,15 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.zcloud.edu.domain.gateway.TeacherGateway;
import com.zcloud.edu.domain.model.TeacherE;
import com.zcloud.edu.domain.model.UserAddE;
import com.zcloud.edu.dto.TeacherAddCmd;
import com.zcloud.edu.domain.gateway.resource.TeacherGateway;
import com.zcloud.edu.domain.model.resource.TeacherE;
import com.zcloud.edu.domain.model.resource.UserAddE;
import com.zcloud.edu.dto.resource.TeacherAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import com.zcloud.edu.persistence.repository.TeacherRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

View File

@ -1,14 +1,19 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.TeacherCertificateGateway;
import com.zcloud.edu.domain.model.TeacherCertificateE;
import com.zcloud.edu.dto.TeacherCertificateAddCmd;
import cn.hutool.core.collection.CollUtil;
import com.zcloud.edu.domain.gateway.resource.TeacherCertificateGateway;
import com.zcloud.edu.domain.model.resource.TeacherCertificateE;
import com.zcloud.edu.dto.resource.TeacherCertificateAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.TeacherCertificateDO;
import com.zcloud.edu.persistence.repository.resource.TeacherCertificateRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* web-app
@ -20,11 +25,18 @@ import org.springframework.transaction.annotation.Transactional;
@AllArgsConstructor
public class TeacherCertificateAddExe {
private final TeacherCertificateGateway teacherCertificateGateway;
private final TeacherCertificateRepository teacherCertificateRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(TeacherCertificateAddCmd cmd) {
TeacherCertificateE teacherCertificateE = new TeacherCertificateE();
BeanUtils.copyProperties(cmd, teacherCertificateE);
//证书编号全局验证重复
List<TeacherCertificateDO> list = teacherCertificateRepository.getListByNumber(cmd.getVocationalCertificateNumber());
if(CollUtil.isNotEmpty( list)){
throw new BizException("该职业证书编号已存在");
}
boolean res = false;
try {
res = teacherCertificateGateway.add(teacherCertificateE);

View File

@ -1,6 +1,6 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.TeacherCertificateGateway;
import com.zcloud.edu.domain.gateway.resource.TeacherCertificateGateway;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;

View File

@ -1,9 +1,9 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.TeacherCertificateGateway;
import com.zcloud.edu.domain.model.TeacherCertificateE;
import com.zcloud.edu.dto.TeacherCertificateUpdateCmd;
import com.zcloud.edu.domain.gateway.resource.TeacherCertificateGateway;
import com.zcloud.edu.domain.model.resource.TeacherCertificateE;
import com.zcloud.edu.dto.resource.TeacherCertificateUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

View File

@ -1,15 +1,15 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.domain.gateway.TeacherGateway;
import com.zcloud.edu.domain.gateway.resource.TeacherGateway;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.model.TeacherE;
import com.zcloud.edu.domain.model.resource.TeacherE;
import com.zcloud.edu.persistence.dataobject.TeacherDO;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.repository.TeacherCertificateRepository;
import com.zcloud.edu.persistence.repository.TeacherRepository;
import com.zcloud.edu.persistence.repository.VideoCoursewareRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherCertificateRepository;
import com.zcloud.edu.persistence.repository.resource.TeacherRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

View File

@ -1,10 +1,10 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.TeacherGateway;
import com.zcloud.edu.domain.model.TeacherE;
import com.zcloud.edu.dto.TeacherUpdateCmd;
import com.zcloud.edu.dto.TeacherUpdateStateCmd;
import com.zcloud.edu.domain.gateway.resource.TeacherGateway;
import com.zcloud.edu.domain.model.resource.TeacherE;
import com.zcloud.edu.dto.resource.TeacherUpdateCmd;
import com.zcloud.edu.dto.resource.TeacherUpdateStateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

View File

@ -1,11 +1,11 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.TrainingTypeGateway;
import com.zcloud.edu.domain.model.TrainingTypeE;
import com.zcloud.edu.dto.TrainingTypeAddCmd;
import com.zcloud.edu.domain.gateway.resource.TrainingTypeGateway;
import com.zcloud.edu.domain.model.resource.TrainingTypeE;
import com.zcloud.edu.dto.resource.TrainingTypeAddCmd;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.TrainingTypeDO;
import com.zcloud.edu.persistence.repository.TrainingTypeRepository;
import com.zcloud.edu.persistence.repository.resource.TrainingTypeRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

View File

@ -0,0 +1,62 @@
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.resource.TrainingTypeGateway;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.TrainingTypeDO;
import com.zcloud.edu.persistence.repository.resource.CurriculumRepository;
import com.zcloud.edu.persistence.repository.resource.TrainingTypeRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
* @Author SondonYong
* @Date 2025-11-26 15:04:07
*/
@Component
@AllArgsConstructor
public class TrainingTypeRemoveExe {
private final TrainingTypeGateway trainingTypeGateway;
private final VideoCoursewareRepository videoCoursewareRepository;
private final TrainingTypeRepository trainingTypeRepository;
private final CurriculumRepository curriculumRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
// todo 校验是否有其他业务调用
TrainingTypeDO trainingTypeDO = trainingTypeRepository.getById(id);
if(trainingTypeDO==null){
return true;
}
Long count = videoCoursewareRepository.getListByTraingId(trainingTypeDO.getTrainingTypeId());
if(count>0){
throw new BizException("请先删除该培训类型下所有课件");
}
Long countCurriculu =curriculumRepository.getListByTraingId(trainingTypeDO.getTrainingTypeId());
if(countCurriculu>0){
throw new BizException("请先删除该培训类型下所有课程");
}
boolean res = trainingTypeGateway.deletedTrainingTypeById(id);
if(!res){
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
// todo 校验是否有其他业务调用
boolean res = trainingTypeGateway.deletedTrainingTypeByIds(ids);
if(!res){
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -1,11 +1,11 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.TrainingTypeGateway;
import com.zcloud.edu.domain.model.TrainingTypeE;
import com.zcloud.edu.dto.TrainingTypeUpdateCmd;
import com.zcloud.edu.domain.gateway.resource.TrainingTypeGateway;
import com.zcloud.edu.domain.model.resource.TrainingTypeE;
import com.zcloud.edu.dto.resource.TrainingTypeUpdateCmd;
import com.zcloud.edu.persistence.dataobject.TrainingTypeDO;
import com.zcloud.edu.persistence.repository.TrainingTypeRepository;
import com.zcloud.edu.persistence.repository.resource.TrainingTypeRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;

View File

@ -1,8 +1,8 @@
package com.zcloud.edu.command;
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.VideoCoursewareGateway;
import com.zcloud.edu.domain.model.VideoCoursewareE;
import com.zcloud.edu.dto.VideoCoursewareAddCmd;
import com.zcloud.edu.domain.gateway.resource.VideoCoursewareGateway;
import com.zcloud.edu.domain.model.resource.VideoCoursewareE;
import com.zcloud.edu.dto.resource.VideoCoursewareAddCmd;
import com.alibaba.cola.exception.BizException;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
@ -21,8 +21,10 @@ import org.springframework.transaction.annotation.Transactional;
public class VideoCoursewareAddExe {
private final VideoCoursewareGateway videoCoursewareGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(VideoCoursewareAddCmd cmd) {
VideoCoursewareE videoCoursewareE = new VideoCoursewareE();
BeanUtils.copyProperties(cmd, videoCoursewareE);
boolean res = false;

View File

@ -0,0 +1,78 @@
package com.zcloud.edu.command.resource;
import com.zcloud.edu.domain.gateway.resource.VideoCoursewareGateway;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
*/
@Component
@AllArgsConstructor
public class VideoCoursewareRemoveExe {
private final VideoCoursewareGateway videoCoursewareGateway;
private final VideoCoursewareRepository videoCoursewareRepository;
private final CorpInfoRepository corpInfoRepository;
private final CurriculumChapterRepository curriculumChapterRepository;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
VideoCoursewareDO videoCoursewareDOInfo = videoCoursewareRepository.getById(id);
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(videoCoursewareDOInfo.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能删除");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能删除");
}
// 被使用的课件不能删除
Long count = curriculumChapterRepository.getListByVideoCoursewareId(videoCoursewareDOInfo.getVideoCoursewareId());
if(count>0){
throw new BizException("被使用的课件不能删除");
}
boolean res = videoCoursewareGateway.deletedVideoCoursewareById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
for (Long id : ids) {
VideoCoursewareDO videoCoursewareDOInfo = videoCoursewareRepository.getById(id);
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(videoCoursewareDOInfo.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能删除");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能删除");
}
// 被使用的课件不能删除
Long count = curriculumChapterRepository.getListByVideoCoursewareId(videoCoursewareDOInfo.getVideoCoursewareId());
if(count>0){
throw new BizException("被使用的课件不能删除");
}
}
boolean res = videoCoursewareGateway.deletedVideoCoursewareByIds(ids);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,93 @@
package com.zcloud.edu.command.resource;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.enums.VideoCoursewareState;
import com.zcloud.edu.domain.gateway.resource.VideoCoursewareGateway;
import com.zcloud.edu.domain.model.resource.VideoCoursewareE;
import com.zcloud.edu.dto.resource.VideoCoursewareUpdateCmd;
import com.zcloud.edu.dto.resource.VideoCoursewareUpdateStateCmd;
import com.zcloud.edu.persistence.dataobject.VideoCoursewareDO;
import com.zcloud.edu.persistence.repository.resource.CorpInfoRepository;
import com.zcloud.edu.persistence.repository.resource.CurriculumChapterRepository;
import com.zcloud.edu.persistence.repository.resource.QuestionRepository;
import com.zcloud.edu.persistence.repository.resource.VideoCoursewareRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author SondonYong
* @Date 2025-11-27 14:05:33
*/
@Component
@AllArgsConstructor
public class VideoCoursewareUpdateExe {
private final VideoCoursewareGateway videoCoursewareGateway;
private final QuestionRepository questionRepository;
private final VideoCoursewareRepository videoCoursewareRepository;
private final CorpInfoRepository corpInfoRepository;
private final CurriculumChapterRepository curriculumChapterRepository;
@Transactional(rollbackFor = Exception.class)
public void execute(VideoCoursewareUpdateCmd cmd) {
VideoCoursewareDO videoCoursewareDOInfo = videoCoursewareRepository.getById(cmd.getId());
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(videoCoursewareDOInfo.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能编辑");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能编辑");
}
// 课件是否被使用
Long count = curriculumChapterRepository.getListByVideoCoursewareId(videoCoursewareDOInfo.getVideoCoursewareId());
if(count>0){
throw new BizException("被使用的课件不能修改");
}
VideoCoursewareE videoCoursewareE = new VideoCoursewareE();
BeanUtils.copyProperties(cmd, videoCoursewareE);
boolean res = videoCoursewareGateway.update(videoCoursewareE);
if (!res) {
throw new BizException("修改失败");
}
}
@Transactional(rollbackFor = Exception.class)
public void execute(VideoCoursewareUpdateStateCmd cmd) {
VideoCoursewareDO videoCoursewareDOInfo = videoCoursewareRepository.getById(cmd.getId());
if(videoCoursewareDOInfo==null){
throw new BizException("课件信息不存在");
}
if(VideoCoursewareState.UNENABLED.getCode().equals(cmd.getState())){
//如果是启用判断习题数量小于5
Long count = questionRepository.getCountByVideoCourseware(videoCoursewareDOInfo.getVideoCoursewareId());
if(count<5){
throw new BizException("请添加5个以上习题");
}
}else{
//企业端禁用:所属单位为股份的不能禁用
//股份端禁用:所属单位为各企业的不能禁用
Boolean b = corpInfoRepository.checkSupper(videoCoursewareDOInfo.getCorpinfoId());
if(corpInfoRepository.isSupper() && !b){
throw new BizException("企业端数据不能禁用");
}
if(!corpInfoRepository.isSupper() && b){
throw new BizException("股份端数据不能禁用");
}
}
VideoCoursewareE videoCoursewareE = new VideoCoursewareE();
BeanUtils.copyProperties(cmd, videoCoursewareE);
boolean res = videoCoursewareGateway.update(videoCoursewareE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -0,0 +1,59 @@
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.resource.CurriculumChapterServiceI;
import com.zcloud.edu.command.resource.CurriculumChapterAddExe;
import com.zcloud.edu.command.resource.CurriculumChapterRemoveExe;
import com.zcloud.edu.command.resource.CurriculumChapterUpdateExe;
import com.zcloud.edu.command.query.resource.CurriculumChapterQueryExe;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.dto.resource.CurriculumChapterPageQry;
import com.zcloud.edu.dto.resource.CurriculumChapterUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Service
@AllArgsConstructor
public class CurriculumChapterServiceImpl implements CurriculumChapterServiceI {
private final CurriculumChapterAddExe curriculumChapterAddExe;
private final CurriculumChapterUpdateExe curriculumChapterUpdateExe;
private final CurriculumChapterRemoveExe curriculumChapterRemoveExe;
private final CurriculumChapterQueryExe curriculumChapterQueryExe;
@Override
public PageResponse<CurriculumChapterCO> listPage(CurriculumChapterPageQry qry) {
return curriculumChapterQueryExe.execute(qry);
}
@Override
public SingleResponse add(CurriculumChapterAddCmd cmd) {
curriculumChapterAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(CurriculumChapterUpdateCmd curriculumChapterUpdateCmd) {
curriculumChapterUpdateExe.execute(curriculumChapterUpdateCmd);
}
@Override
public void remove(Long id) {
curriculumChapterRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
curriculumChapterRemoveExe.execute(ids);
}
}

View File

@ -0,0 +1,70 @@
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.resource.CurriculumServiceI;
import com.zcloud.edu.command.resource.CurriculumAddExe;
import com.zcloud.edu.command.resource.CurriculumRemoveExe;
import com.zcloud.edu.command.resource.CurriculumUpdateExe;
import com.zcloud.edu.command.query.resource.CurriculumQueryExe;
import com.zcloud.edu.dto.resource.CurriculumAddCmd;
import com.zcloud.edu.dto.resource.CurriculumPageQry;
import com.zcloud.edu.dto.resource.CurriculumUpdateCmd;
import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 13:45:39
*/
@Service
@AllArgsConstructor
public class CurriculumServiceImpl implements CurriculumServiceI {
private final CurriculumAddExe curriculumAddExe;
private final CurriculumUpdateExe curriculumUpdateExe;
private final CurriculumRemoveExe curriculumRemoveExe;
private final CurriculumQueryExe curriculumQueryExe;
@Override
public PageResponse<CurriculumCO> listPage(CurriculumPageQry qry) {
return curriculumQueryExe.execute(qry);
}
@Override
public SingleResponse add(CurriculumAddCmd cmd) {
curriculumAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(CurriculumUpdateCmd curriculumUpdateCmd) {
curriculumUpdateExe.execute(curriculumUpdateCmd);
}
@Override
public void remove(Long id) {
curriculumRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
curriculumRemoveExe.execute(ids);
}
@Override
public CurriculumCO getInfoById(Long id) {
return curriculumQueryExe.getInfoById(id);
}
@Override
public void editState(CurriculumUpdateStateCmd cmd) {
curriculumUpdateExe.editState(cmd);
}
}

View File

@ -0,0 +1,71 @@
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.resource.ExamPaperServiceI;
import com.zcloud.edu.command.resource.ExamPaperAddExe;
import com.zcloud.edu.command.resource.ExamPaperRemoveExe;
import com.zcloud.edu.command.resource.ExamPaperUpdateExe;
import com.zcloud.edu.command.query.resource.ExamPaperQueryExe;
import com.zcloud.edu.dto.resource.ExamPaperAddCmd;
import com.zcloud.edu.dto.resource.ExamPaperPageQry;
import com.zcloud.edu.dto.resource.ExamPaperRemoveCmd;
import com.zcloud.edu.dto.resource.ExamPaperUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* web-app
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
@Service
@AllArgsConstructor
public class ExamPaperServiceImpl implements ExamPaperServiceI {
private final ExamPaperAddExe examPaperAddExe;
private final ExamPaperUpdateExe examPaperUpdateExe;
private final ExamPaperRemoveExe examPaperRemoveExe;
private final ExamPaperQueryExe examPaperQueryExe;
@Override
public PageResponse<ExamPaperCO> listPage(ExamPaperPageQry qry) {
return examPaperQueryExe.execute(qry);
}
@Override
public SingleResponse add(ExamPaperAddCmd cmd) {
examPaperAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(MultipartFile file,ExamPaperUpdateCmd examPaperUpdateCmd) {
examPaperUpdateExe.execute(file,examPaperUpdateCmd);
}
@Override
public void remove(Long id) {
examPaperRemoveExe.execute(id);
}
@Override
public void removeBatch(ExamPaperRemoveCmd examPaperRemoveCmd) {
examPaperRemoveExe.execute(examPaperRemoveCmd);
}
@Override
public ExamPaperCO getInfoById(Long id) {
return examPaperQueryExe.getInfoById(id);
}
@Override
public void editSellFlag(ExamPaperUpdateCmd examPaperUpdateCmd) {
examPaperUpdateExe.editSellFlag(examPaperUpdateCmd);
}
}

View File

@ -1,16 +1,17 @@
package com.zcloud.edu.service;
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.QuestionServiceI;
import com.zcloud.edu.command.QuestionAddExe;
import com.zcloud.edu.command.QuestionRemoveExe;
import com.zcloud.edu.command.QuestionUpdateExe;
import com.zcloud.edu.command.query.QuestionQueryExe;
import com.zcloud.edu.dto.QuestionAddCmd;
import com.zcloud.edu.dto.QuestionPageQry;
import com.zcloud.edu.dto.QuestionListQry;
import com.zcloud.edu.dto.QuestionUpdateCmd;
import com.zcloud.edu.dto.clientobject.QuestionCO;
import com.zcloud.edu.api.resource.QuestionServiceI;
import com.zcloud.edu.command.resource.QuestionAddExe;
import com.zcloud.edu.command.resource.QuestionRemoveExe;
import com.zcloud.edu.command.resource.QuestionUpdateExe;
import com.zcloud.edu.command.query.resource.QuestionQueryExe;
import com.zcloud.edu.dto.resource.QuestionAddCmd;
import com.zcloud.edu.dto.resource.QuestionPageQry;
import com.zcloud.edu.dto.resource.QuestionListQry;
import com.zcloud.edu.dto.resource.QuestionUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
@ -72,5 +73,10 @@ public class QuestionServiceImpl implements QuestionServiceI {
public void importQuestionVideoTable(MultipartFile file, String videoCoursewareId) {
questionAddExe.importQuestionVideoTable(file, videoCoursewareId);
}
@Override
public ExamPaperCO editPaper(QuestionUpdateCmd cmd) {
return questionUpdateExe.editPaper(cmd);
}
}

View File

@ -1,16 +1,16 @@
package com.zcloud.edu.service;
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.TeacherCertificateServiceI;
import com.zcloud.edu.command.TeacherCertificateAddExe;
import com.zcloud.edu.command.TeacherCertificateRemoveExe;
import com.zcloud.edu.command.TeacherCertificateUpdateExe;
import com.zcloud.edu.command.query.TeacherCertificateQueryExe;
import com.zcloud.edu.dto.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.TeacherCertificatePageQry;
import com.zcloud.edu.dto.TeacherCertificateListQry;
import com.zcloud.edu.dto.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.api.resource.TeacherCertificateServiceI;
import com.zcloud.edu.command.resource.TeacherCertificateAddExe;
import com.zcloud.edu.command.resource.TeacherCertificateRemoveExe;
import com.zcloud.edu.command.resource.TeacherCertificateUpdateExe;
import com.zcloud.edu.command.query.resource.TeacherCertificateQueryExe;
import com.zcloud.edu.dto.resource.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.resource.TeacherCertificatePageQry;
import com.zcloud.edu.dto.resource.TeacherCertificateListQry;
import com.zcloud.edu.dto.resource.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;

View File

@ -1,16 +1,16 @@
package com.zcloud.edu.service;
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.TeacherServiceI;
import com.zcloud.edu.command.TeacherAddExe;
import com.zcloud.edu.command.TeacherRemoveExe;
import com.zcloud.edu.command.TeacherUpdateExe;
import com.zcloud.edu.command.query.TeacherQueryExe;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.api.resource.TeacherServiceI;
import com.zcloud.edu.command.resource.TeacherAddExe;
import com.zcloud.edu.command.resource.TeacherRemoveExe;
import com.zcloud.edu.command.resource.TeacherUpdateExe;
import com.zcloud.edu.command.query.resource.TeacherQueryExe;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.clientobject.TeacherCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCO;
import com.zcloud.edu.dto.resource.*;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -40,7 +40,7 @@ public class TeacherServiceImpl implements TeacherServiceI {
@Override
public SingleResponse<TeacherCO> getInfoById(Long id) {
return teacherQueryExe.execute(id);
return teacherQueryExe.getInfoById(id);
}
@Override

View File

@ -1,19 +1,19 @@
package com.zcloud.edu.service;
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.TrainingTypeServiceI;
import com.zcloud.edu.command.TrainingTypeAddExe;
import com.zcloud.edu.command.TrainingTypeRemoveExe;
import com.zcloud.edu.command.TrainingTypeUpdateExe;
import com.zcloud.edu.command.query.TrainingTypeQueryExe;
import com.zcloud.edu.dto.TrainingTypeAddCmd;
import com.zcloud.edu.dto.TrainingTypeListQry;
import com.zcloud.edu.dto.TrainingTypePageQry;
import com.zcloud.edu.dto.TrainingTypeUpdateCmd;
import com.zcloud.edu.api.resource.TrainingTypeServiceI;
import com.zcloud.edu.command.resource.TrainingTypeAddExe;
import com.zcloud.edu.command.resource.TrainingTypeRemoveExe;
import com.zcloud.edu.command.resource.TrainingTypeUpdateExe;
import com.zcloud.edu.command.query.resource.TrainingTypeQueryExe;
import com.zcloud.edu.dto.resource.TrainingTypeAddCmd;
import com.zcloud.edu.dto.resource.TrainingTypeListQry;
import com.zcloud.edu.dto.resource.TrainingTypePageQry;
import com.zcloud.edu.dto.resource.TrainingTypeUpdateCmd;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.clientobject.TrainingTypeCO;
import com.zcloud.edu.dto.clientobject.resource.TrainingTypeCO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

View File

@ -1,16 +1,16 @@
package com.zcloud.edu.service;
package com.zcloud.edu.service.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.api.VideoCoursewareServiceI;
import com.zcloud.edu.command.VideoCoursewareAddExe;
import com.zcloud.edu.command.VideoCoursewareRemoveExe;
import com.zcloud.edu.command.VideoCoursewareUpdateExe;
import com.zcloud.edu.command.query.VideoCoursewareQueryExe;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.dto.clientobject.VideoCoursewareCO;
import com.zcloud.edu.api.resource.VideoCoursewareServiceI;
import com.zcloud.edu.command.resource.VideoCoursewareAddExe;
import com.zcloud.edu.command.resource.VideoCoursewareRemoveExe;
import com.zcloud.edu.command.resource.VideoCoursewareUpdateExe;
import com.zcloud.edu.command.query.resource.VideoCoursewareQueryExe;
import com.zcloud.edu.dto.clientobject.resource.VideoCoursewareCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.resource.*;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@ -40,7 +40,7 @@ public class VideoCoursewareServiceImpl implements VideoCoursewareServiceI {
@Override
public SingleResponse<VideoCoursewareCO> getInfoById(Long id) {
return videoCoursewareQueryExe.execute(id);
return videoCoursewareQueryExe.getInfoById(id);
}
@Override

View File

@ -0,0 +1,27 @@
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.resource.CurriculumChapterAddCmd;
import com.zcloud.edu.dto.resource.CurriculumChapterPageQry;
import com.zcloud.edu.dto.resource.CurriculumChapterUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumChapterCO;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
public interface CurriculumChapterServiceI {
PageResponse<CurriculumChapterCO> listPage(CurriculumChapterPageQry qry);
SingleResponse<CurriculumChapterCO> add(CurriculumChapterAddCmd cmd);
void edit(CurriculumChapterUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -0,0 +1,32 @@
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.resource.CurriculumAddCmd;
import com.zcloud.edu.dto.resource.CurriculumPageQry;
import com.zcloud.edu.dto.resource.CurriculumUpdateCmd;
import com.zcloud.edu.dto.resource.CurriculumUpdateStateCmd;
import com.zcloud.edu.dto.clientobject.resource.CurriculumCO;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:45:39
*/
public interface CurriculumServiceI {
PageResponse<CurriculumCO> listPage(CurriculumPageQry qry);
SingleResponse<CurriculumCO> add(CurriculumAddCmd cmd);
void edit(CurriculumUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
CurriculumCO getInfoById(Long id);
void editState(CurriculumUpdateStateCmd cmd);
}

View File

@ -0,0 +1,33 @@
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.resource.ExamPaperAddCmd;
import com.zcloud.edu.dto.resource.ExamPaperPageQry;
import com.zcloud.edu.dto.resource.ExamPaperRemoveCmd;
import com.zcloud.edu.dto.resource.ExamPaperUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import org.springframework.web.multipart.MultipartFile;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
public interface ExamPaperServiceI {
PageResponse<ExamPaperCO> listPage(ExamPaperPageQry qry);
SingleResponse<ExamPaperCO> add(ExamPaperAddCmd cmd);
void edit(MultipartFile file,ExamPaperUpdateCmd cmd);
void remove(Long id);
void removeBatch(ExamPaperRemoveCmd cmd);
ExamPaperCO getInfoById(Long id);
void editSellFlag(ExamPaperUpdateCmd examPaperUpdateCmd);
}

View File

@ -1,11 +1,12 @@
package com.zcloud.edu.api;
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.QuestionAddCmd;
import com.zcloud.edu.dto.QuestionPageQry;
import com.zcloud.edu.dto.QuestionListQry;
import com.zcloud.edu.dto.QuestionUpdateCmd;
import com.zcloud.edu.dto.clientobject.QuestionCO;
import com.zcloud.edu.dto.resource.QuestionAddCmd;
import com.zcloud.edu.dto.resource.QuestionPageQry;
import com.zcloud.edu.dto.resource.QuestionListQry;
import com.zcloud.edu.dto.resource.QuestionUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.ExamPaperCO;
import com.zcloud.edu.dto.clientobject.resource.QuestionCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
@ -33,5 +34,7 @@ public interface QuestionServiceI {
void removeBatch(Long[] ids);
void importQuestionVideoTable(MultipartFile file, String videoCoursewareId);
ExamPaperCO editPaper(QuestionUpdateCmd cmd);
}

View File

@ -1,11 +1,11 @@
package com.zcloud.edu.api;
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.TeacherCertificatePageQry;
import com.zcloud.edu.dto.TeacherCertificateListQry;
import com.zcloud.edu.dto.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.clientobject.TeacherCertificateCO;
import com.zcloud.edu.dto.resource.TeacherCertificateAddCmd;
import com.zcloud.edu.dto.resource.TeacherCertificatePageQry;
import com.zcloud.edu.dto.resource.TeacherCertificateListQry;
import com.zcloud.edu.dto.resource.TeacherCertificateUpdateCmd;
import com.zcloud.edu.dto.clientobject.resource.TeacherCertificateCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;

View File

@ -1,11 +1,11 @@
package com.zcloud.edu.api;
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.*;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.clientobject.TeacherCO;
import com.zcloud.edu.dto.clientobject.resource.TeacherCO;
import com.zcloud.edu.dto.resource.*;
/**
* web-client

View File

@ -1,14 +1,14 @@
package com.zcloud.edu.api;
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.TrainingTypeAddCmd;
import com.zcloud.edu.dto.TrainingTypeListQry;
import com.zcloud.edu.dto.TrainingTypePageQry;
import com.zcloud.edu.dto.TrainingTypeUpdateCmd;
import com.zcloud.edu.dto.resource.TrainingTypeAddCmd;
import com.zcloud.edu.dto.resource.TrainingTypeListQry;
import com.zcloud.edu.dto.resource.TrainingTypePageQry;
import com.zcloud.edu.dto.resource.TrainingTypeUpdateCmd;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.clientobject.TrainingTypeCO;
import com.zcloud.edu.dto.clientobject.resource.TrainingTypeCO;
/**
* web-client

View File

@ -1,11 +1,11 @@
package com.zcloud.edu.api;
package com.zcloud.edu.api.resource;
import com.alibaba.cola.dto.MultiResponse;
import com.zcloud.edu.dto.*;
import com.zcloud.edu.dto.clientobject.VideoCoursewareCO;
import com.zcloud.edu.dto.clientobject.resource.VideoCoursewareCO;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.resource.*;
/**
* web-client

View File

@ -1,43 +0,0 @@
package com.zcloud.edu.dto;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author SondonYong
* @Date 2025-11-26 17:04:44
*/
@Data
public class TeacherPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(name = "likeTeacherName", value = "教师名称")
private String likeTeacherName;
@ApiModelProperty(name = "eqCorpinfoId", value = "企业ID")
private Long eqCorpinfoId;
@ApiModelProperty(name = "qualificationType", value = "资格类型")
private String qualificationType;
@ApiModelProperty(name = "corpFlag 监管端1,企业端2", value = "corpFlag", required = true)
@NotNull(message = "监管/企业标识不能为空")
private Integer corpFlag;
}

View File

@ -1,181 +0,0 @@
package com.zcloud.edu.dto;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zcloud.gbscommon.translateaop.TranslateEunm;
import com.zcloud.gbscommon.translateaop.ZCloudTranslate;
import com.zcloud.gbscommon.translateaop.ZCloudTranslates;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* web-client
*
* @Author zhangyue
* @Date 2025-11-04 14:07:33
*/
@Data
public class UserAddCmd extends ClientObject {
//GBS用户id
@ApiModelProperty(value = "GBS用户id")
private Long id;
//业务主键id老系统id
@ApiModelProperty(value = "业务主键id老系统id")
private String userId;
//登录账号
@ApiModelProperty(value = "登录账号")
private String username;
//姓名
@ApiModelProperty(value = "姓名")
private String name;
//企业id
@ApiModelProperty(value = "企业id")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpinfoName;
//是否主账号1是0否
@ApiModelProperty(value = "是否主账号1是0否")
private Integer mainCorpFlag;
//用户类型,1监管2企业3相关方
@ApiModelProperty(value = "用户类型,1监管2企业3相关方")
private Integer userType;
//部门id
@ApiModelProperty(value = "部门id")
private Long departmentId;
//部门id
@ApiModelProperty(value = "部门名称")
private String departmentName;
//岗位id
@ApiModelProperty(value = "岗位id")
private Long postId;
//岗位id
@ApiModelProperty(value = "岗位名称")
private String postName;
//角色id
@ApiModelProperty(value = "角色id")
private Long roleId;
//邮箱
@ApiModelProperty(value = "邮箱")
private String email;
//人员类型编码(主要负责人等)
@ApiModelProperty(value = "人员类型编码(主要负责人等)")
private String personnelType;
//人员类型翻译
@ApiModelProperty(value = "人员类型翻译")
private String personnelTypeName;
//民族编码问一下有没有组件
@ApiModelProperty(value = "民族编码问一下有没有组件")
private String nation;
//民族名称
@ApiModelProperty(value = "民族名称")
private String nationName;
//身份证号
@ApiModelProperty(value = "身份证号")
private String userIdCard;
//人脸头像url
@ApiModelProperty(value = "人脸头像url")
private String userAvatarUrl;
//现住址
@ApiModelProperty(value = "现住址")
private String currentAddress;
//户口所在地
@ApiModelProperty(value = "户口所在地")
private String locationAddress;
@ApiModelProperty(value = "职级")
private String rankLevel;
@ApiModelProperty(value = "职级名称")
private String rankLevelName;
@ApiModelProperty(value = "手机号")
private String phone;
//人员在部门中的排序
@ApiModelProperty(value = "人员在部门中的排序")
private Integer sort;
//乐观锁
@ApiModelProperty(value = "乐观锁")
private Integer version;
//创建人
@ApiModelProperty(value = "创建人")
private Long createId;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date createTime;
//更新人
@ApiModelProperty(value = "更新人")
private Long updateId;
//修改人名称
@ApiModelProperty(value = "修改人名称")
private String updateName;
//更新时间
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date updateTime;
//描述
@ApiModelProperty(value = "描述")
private String remarks;
//是否删除
@ApiModelProperty(value = "是否删除")
private String deleteEnum;
//租户ID
@ApiModelProperty(value = "租户ID")
private Long tenantId;
//机构ID
@ApiModelProperty(value = "机构ID")
private Long orgId;
//环境
@ApiModelProperty(value = "环境")
private String env;
//是否部门领导0否1是
@ApiModelProperty(value = "是否部门领导0否1是")
private Integer departmentLeaderFlag;
//是否分管领导0否1是
@ApiModelProperty(value = "是否分管领导0否1是")
private Integer deputyLeaderFlag;
//文化程度 数据字典
@ApiModelProperty(value = "文化程度 数据字典")
private String culturalLevel;
//文化程度名称
@ApiModelProperty(value = "文化程度名称")
private String culturalLevelName;
//婚姻状态
@ApiModelProperty(value = "婚姻状态")
private String maritalStatus;
//婚姻状态名称
@ApiModelProperty(value = "婚姻状态名称")
private String maritalStatusName;
//政治面貌
@ApiModelProperty(value = "政治面貌")
private String politicalAffiliation;
//政治面貌名称
@ApiModelProperty(value = "政治面貌名称")
private String politicalAffiliationName;
private String mappingName;
private String mappingUserName;
private String mappingPostName;
private String mappingDeptName;
// 入职状态
@ApiModelProperty(value = "入职状态")
private Integer employmentFlag;
// 年龄
@ApiModelProperty(value = "年龄")
private Integer age;
//生日
@ApiModelProperty(value = "生日")
private String birthday;
// 性别
@ApiModelProperty(value = "性别")
private String sex;
}

View File

@ -0,0 +1,64 @@
package com.zcloud.edu.dto.clientobject.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Data
public class CurriculumCO {
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String curriculumId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//课程名称
@ApiModelProperty(value = "课程名称")
private String curriculumName;
//培训类型id
@ApiModelProperty(value = "培训类型id")
private String trainingTypeId;
//课程描述
@ApiModelProperty(value = "课程描述")
private String curriculumIntroduce;
//封面路径url
@ApiModelProperty(value = "封面路径url")
private String coverPath;
//课程状态 1-上架 0-下架
@ApiModelProperty(value = "课程状态 1-上架 0-下架")
private Integer sellFlag;
//目录级别 1-一级目录 2-二级目录
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录")
private Integer catalogueLevel;
@ApiModelProperty(value = "创建人id")
private Long createId;
@ApiModelProperty(value = "企业名称")
private String corpName;
@ApiModelProperty(value = "培训类型名称")
private String trainingTypeName;
@ApiModelProperty(value = "课件数量")
private Integer chapterCount;
//总视频时长
@ApiModelProperty(value = "总视频时长")
private Integer videoTime;
@ApiModelProperty(value = "是否是当前用户创建的数据")
private Boolean isUserCreate = false;
@ApiModelProperty(value = "课程目录")
private List<CurriculumChapterCO> curriculumChapterCOList;
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.dto.clientobject.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Data
public class CurriculumChapterCO {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String curriculumChapterId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//课程id
@ApiModelProperty(value = "课程id")
private String curriculumId;
//章节名字
@ApiModelProperty(value = "章节名字")
private String name;
//视频课件id
@ApiModelProperty(value = "视频课件id")
private String videoCoursewareId;
//上级ID
@ApiModelProperty(value = "上级ID")
private String parentId;
@ApiModelProperty(value = "子课程目录")
private List<CurriculumChapterCO> childCurriculumChapterCOList;
}

View File

@ -0,0 +1,71 @@
package com.zcloud.edu.dto.clientobject.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Data
public class ExamPaperCO {
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String examPaperId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//试卷名称
@ApiModelProperty(value = "试卷名称")
private String examName;
//试卷总分数
@ApiModelProperty(value = "试卷总分数")
private BigDecimal examScore;
//合格分数
@ApiModelProperty(value = "合格分数")
private BigDecimal passScore;
//是否上架0否 1是
@ApiModelProperty(value = "是否上架0否 1是")
private Integer sellFlag;
//考试时长(分钟)
@ApiModelProperty(value = "考试时长(分钟)")
private String examTime;
//试卷类型 1-自建试卷 2-班级中自动生成试卷
@ApiModelProperty(value = "试卷类型 1-自建试卷 2-班级中自动生成试卷")
private Integer type;
//备注
@ApiModelProperty(value = "备注")
private String remarks;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//创建时间
@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;
@ApiModelProperty(value = "企业名称")
private String corpName;
@ApiModelProperty(value = "企业类型(0-普通企业1-集团单位2-股份单位3-相关方企业4-货主单位5-驻港单位, 6-物资中心)")
private Integer corpType;
@ApiModelProperty(value = "创建人id")
private Long createId;
@ApiModelProperty(value = "是否是当前用户创建的数据")
private Boolean isUserCreate = false;
private List<QuestionCO> questionCOList;
}

View File

@ -1,12 +1,10 @@
package com.zcloud.edu.dto.clientobject;
package com.zcloud.edu.dto.clientobject.resource;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.math.BigDecimal;
/**
* web-client
@ -31,9 +29,8 @@ public class QuestionCO extends ClientObject {
private String examPaperId;
//题号
@ApiModelProperty(value = "题号")
private Integer questionNumber;
// @ApiModelProperty(value = "题号")
// private Integer questionNumber;
//试题类型(单选题、多选题、判断题、填空题)
@ApiModelProperty(value = "试题类型1单选题、2多选题、3判断题")
@ -73,5 +70,5 @@ public class QuestionCO extends ClientObject {
//分值
@ApiModelProperty(value = "分值")
private String score;
private BigDecimal score;
}

View File

@ -1,13 +1,11 @@
package com.zcloud.edu.dto.clientobject;
package com.zcloud.edu.dto.clientobject.resource;
import com.alibaba.cola.dto.ClientObject;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.util.List;
/**
@ -20,72 +18,44 @@ import java.util.List;
public class TeacherCO extends ClientObject {
//教师id
@ApiModelProperty(value = "教师id")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String teacherId;
//用户id
@ApiModelProperty(value = "用户id")
private Long userId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//教师姓名
@ApiModelProperty(value = "教师姓名")
private String teacherName;
//手机号
@ApiModelProperty(value = "手机号")
private String phone;
//身份证号
@ApiModelProperty(value = "身份证号")
private String identityNumber;
//文化程度
@ApiModelProperty(value = "文化程度")
private String educationLevel;
//文化程度名称
@ApiModelProperty(value = "文化程度名称")
private String educationLevelName;
//专业
@ApiModelProperty(value = "专业")
private String profession;
//工作年限
@ApiModelProperty(value = "工作年限")
private Integer workyear;
//考核部门
@ApiModelProperty(value = "考核部门")
private String assessmentDepartment;
//考核时间
@ApiModelProperty(value = "考核时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate assessmentTime;
private LocalDateTime assessmentTime;
//考核结果
@ApiModelProperty(value = "考核结果")
private String assessmentResult;
//状态0-禁用 1-启用)(老项目0启用,1禁用)
@ApiModelProperty(value = "状态0-禁用 1-启用)")
@ApiModelProperty(value = "状态0-禁用 1-启用)(老项目0启用,1禁用)")
private Integer state;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty(value = "资质类型名称")
private String qualificationTypeNames;
@ApiModelProperty(value = "证书数量")
private Integer certificateCount;
@ApiModelProperty(value = "单位名称")
private String corpinfoName;

View File

@ -1,11 +1,10 @@
package com.zcloud.edu.dto.clientobject;
package com.zcloud.edu.dto.clientobject.resource;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalDate;
/**
@ -52,10 +51,7 @@ public class TeacherCertificateCO extends ClientObject {
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate certificateDateEnd;
//证书照片
@ApiModelProperty(value = "证书照片")
private String certificateFilepath;
//企业ID
@ApiModelProperty(value = "企业ID")

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto.clientobject;
package com.zcloud.edu.dto.clientobject.resource;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;

View File

@ -1,73 +1,66 @@
package com.zcloud.edu.dto.clientobject;
package com.zcloud.edu.dto.clientobject.resource;
import com.alibaba.cola.dto.ClientObject;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalDate;
/**
* web-client
*
* @Author SondonYong
* @Date 2025-11-27 14:05:31
* @Author zhaokai
* @Date 2026-01-08 14:36:21
*/
@Data
public class VideoCoursewareCO extends ClientObject {
//id
@ApiModelProperty(value = "id")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String videoCoursewareId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
@ApiModelProperty(value = "企业名称")
private String corpName;
//课件名称
@ApiModelProperty(value = "课件名称")
private String coursewareName;
//培训类型id
@ApiModelProperty(value = "培训类型id")
private String trainingTypeId;
//培训类型名称
@ApiModelProperty(value = "培训类型名称")
private String trainingTypeName;
//教师id
@ApiModelProperty(value = "教师id")
private String teacherId;
@ApiModelProperty(value = "教师名称")
private String teacherName;
//课件文件路径
@ApiModelProperty(value = "课件文件路径")
private String videoFiles;
//课件描述
@ApiModelProperty(value = "课件描述")
private String coursewareIntroduce;
//课件状态 0未启用, 1-启用
@ApiModelProperty(value = "课件状态 0未启用, 1-启用")
private Integer state;
//课件时长(视频时间)-秒
@ApiModelProperty(value = "课件时长(视频时间)-秒")
private Integer videoTime;
@ApiModelProperty(value = "课件截图url")
private String screenshotUrl;
//学时,单位分钟
@ApiModelProperty(value = "学时,单位分钟")
private String classHour;
//备注
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty(value = "创建人id")
private Long createId;
//课件时长(视频时间)-分钟
@ApiModelProperty(value = "课件时长(视频时间)-分钟")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime videoTime;
@ApiModelProperty(value = "企业名称")
private String corpName;
@ApiModelProperty(value = "教师名称")
private String teacherName;
@ApiModelProperty(value = "培训类型名称")
private String trainingTypeName;
@ApiModelProperty(value = "企业类型")
private Integer corpType;
@ApiModelProperty(value = "是否是当前用户创建的数据")
private Boolean isUserCreate = false;
}

View File

@ -0,0 +1,53 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumAddCmd {
@ApiModelProperty(value = "课程名称", name = "curriculumName", required = true)
@NotEmpty(message = "课程名称不能为空")
private String curriculumName;
@ApiModelProperty(value = "培训类型id", name = "trainingTypeId", required = true)
@NotEmpty(message = "培训类型不能为空")
private String trainingTypeId;
@ApiModelProperty(value = "课程描述", name = "curriculumIntroduce", required = true)
@NotEmpty(message = "课程描述不能为空")
private String curriculumIntroduce;
@ApiModelProperty(value = "封面路径url", name = "coverPath", required = true)
@NotEmpty(message = "封面路径url不能为空")
private String coverPath;
@ApiModelProperty(value = "课程状态 1-上架 0-下架", name = "sellFlag", required = true)
@NotNull(message = "课程状态不能为空")
private Integer sellFlag;
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录", name = "catalogueLevel", required = true)
@NotNull(message = "目录级别不能为空")
private Integer catalogueLevel;
@ApiModelProperty(value = "目录课件", name = "catalogueLevel", required = true)
private List<CurriculumChapterAddCmd> curriculumChapterAddCmdList;
}

View File

@ -0,0 +1,39 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumChapterAddCmd {
@ApiModelProperty(value = "章节名字", name = "name", required = true)
@NotEmpty(message = "章节名字不能为空")
private String name;
@ApiModelProperty(value = "视频课件id", name = "videoCoursewareId", required = true)
private String videoCoursewareId;
@ApiModelProperty(value = "排序", name = "sort", required = true)
private Integer sort;
@ApiModelProperty(value = "上级ID", name = "parentId", required = true)
private String parentId;
@ApiModelProperty(value = "目录课件", name = "catalogueLevel", required = true)
private List<CurriculumChapterAddCmd> curriculumChapterAddCmdList;
}

View File

@ -0,0 +1,28 @@
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@Data
public class CurriculumChapterPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeCurriculumChapterId;
}

View File

@ -0,0 +1,49 @@
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:50:13
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumChapterUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "curriculumChapterId", required = true)
@NotEmpty(message = "业务主键id不能为空")
private String curriculumChapterId;
@ApiModelProperty(value = "企业ID", name = "corpinfoId", required = true)
@NotNull(message = "企业ID不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "课程id", name = "curriculumId", required = true)
@NotEmpty(message = "课程id不能为空")
private String curriculumId;
@ApiModelProperty(value = "章节名字", name = "name", required = true)
@NotEmpty(message = "章节名字不能为空")
private String name;
@ApiModelProperty(value = "视频课件id", name = "videoCoursewareId", required = true)
@NotEmpty(message = "视频课件id不能为空")
private String videoCoursewareId;
@ApiModelProperty(value = "排序", name = "sort", required = true)
@NotNull(message = "排序不能为空")
private Integer sort;
@ApiModelProperty(value = "上级ID", name = "parentId", required = true)
@NotEmpty(message = "上级ID不能为空")
private String parentId;
}

View File

@ -0,0 +1,44 @@
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:45:38
*/
@Data
public class CurriculumPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(value = "企业id", name = "corpinfoId")
private Long corpinfoId;
//课程名称
@ApiModelProperty(value = "课程名称", name = "curriculumName")
private String curriculumName;
//培训id
@ApiModelProperty(value = "培训类型id", name = "trainingTypeId")
private String trainingTypeId;
//课程状态 1-上架 0-下架
@ApiModelProperty(value = "课程状态 1-上架 0-下架", name = "sellFlag")
private Integer sellFlag;
//上传开始时间,结束时间
@ApiModelProperty(value = "上传开始时间", name = "uploadStartTime")
private String uploadStartTime;
@ApiModelProperty(value = "上传结束时间", name = "uploadEndTime")
private String uploadEndTime;
}

View File

@ -0,0 +1,49 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 13:45:39
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumUpdateCmd {
@ApiModelProperty(value = "id", name = "id", required = true)
@NotNull(message = "id不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "curriculumId", required = true)
private String curriculumId;
@ApiModelProperty(value = "课程名称", name = "curriculumName", required = true)
@NotEmpty(message = "课程名称不能为空")
private String curriculumName;
@ApiModelProperty(value = "培训类型id", name = "trainingTypeId", required = true)
@NotEmpty(message = "培训类型id不能为空")
private String trainingTypeId;
@ApiModelProperty(value = "课程描述", name = "curriculumIntroduce", required = true)
@NotEmpty(message = "课程描述不能为空")
private String curriculumIntroduce;
@ApiModelProperty(value = "封面路径url", name = "coverPath", required = true)
@NotEmpty(message = "封面路径url不能为空")
private String coverPath;
@ApiModelProperty(value = "课程状态 1-上架 0-下架", name = "sellFlag", required = true)
@NotNull(message = "课程状态 1-上架 0-下架不能为空")
private Integer sellFlag;
@ApiModelProperty(value = "目录级别 1-一级目录 2-二级目录", name = "catalogueLevel", required = true)
@NotNull(message = "目录级别 1-一级目录 2-二级目录不能为空")
private Integer catalogueLevel;
@ApiModelProperty(value = "目录课件", name = "catalogueLevel", required = true)
private List<CurriculumChapterAddCmd> curriculumChapterAddCmdList;
}

View File

@ -0,0 +1,31 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* web-client
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CurriculumUpdateStateCmd {
@ApiModelProperty(value = "id", name = "id", required = true)
@NotNull(message = "id不能为空")
private List<Long> id;
@ApiModelProperty(value = "课程状态 1-上架 0-下架", name = "state", required = true)
@NotNull(message = "课程状态不能为空")
private Integer sellFlag;
}

View File

@ -0,0 +1,53 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExamPaperAddCmd {
@ApiModelProperty(value = "试卷名称", name = "examName", required = true)
@NotEmpty(message = "试卷名称不能为空")
private String examName;
@ApiModelProperty(value = "试卷总分数", name = "examScore", required = true)
@NotEmpty(message = "试卷总分数不能为空")
private BigDecimal examScore;
@ApiModelProperty(value = "合格分数", name = "passScore", required = true)
@NotEmpty(message = "合格分数不能为空")
private BigDecimal passScore;
@ApiModelProperty(value = "是否上架0否 1是", name = "sellFlag", required = true)
@NotNull(message = "是否上架0否 1是不能为空")
private Integer sellFlag;
@ApiModelProperty(value = "考试时长(分钟)", name = "examTime", required = true)
@NotEmpty(message = "考试时长(分钟)不能为空")
private String examTime;
@ApiModelProperty(value = "试卷类型 1-自建试卷 2-班级中自动生成试卷", name = "type", required = true)
@NotNull(message = "试卷类型 1-自建试卷 2-班级中自动生成试卷不能为空")
private Integer type;
@ApiModelProperty(value = "试题文件", name = "file", required = true)
@NotNull(message = "试题文件不能为空")
private MultipartFile file;
}

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Data
public class ExamPaperPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(value = "试卷名称")
private String examPaperName;
@ApiModelProperty(value = "试卷总分数")
private String examScore;
@ApiModelProperty(value = "及格分数")
private String passScore;
@ApiModelProperty(value = "是否上架0否 1是")
private Integer sellFlag;
//上传开始时间
@ApiModelProperty(value = "上传开始时间")
private String uploadStartTime;
//上传结束时间
@ApiModelProperty(value = "上传结束时间")
private String uploadEndTime;
}

View File

@ -1,18 +1,19 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* web-client
*
* @Author SondonYong
* @Date 2025-11-27 14:05:32
* @Author zhaokai
* @Date 2026-01-09 17:04:42
*/
@Data
public class VideoCoursewarePageQry extends PageQuery {
public class ExamPaperRemoveCmd {
/**
* ,
@ -24,14 +25,8 @@ public class VideoCoursewarePageQry extends PageQuery {
* - `le`:
* - `ne`: SQL!=
*/
@ApiModelProperty(value = "试卷id list")
private List<Long> id;
@ApiModelProperty(value = "课件名称")
private String likeCoursewareName;
@ApiModelProperty(value = "培训类型")
private String eqTrainingTypeId;
@ApiModelProperty(value = "启用:1, 禁用:0")
private Integer eqState;
}

View File

@ -0,0 +1,50 @@
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExamPaperUpdateCmd extends Command {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "主键不能为空")
private Long id;
@ApiModelProperty(value = "业务主键id", name = "examPaperId", required = true)
private String examPaperId;
@ApiModelProperty(value = "试卷名称", name = "examName", required = true)
@NotEmpty(message = "试卷名称不能为空")
private String examName;
@ApiModelProperty(value = "试卷总分数", name = "examScore", required = true)
@NotEmpty(message = "试卷总分数不能为空")
private BigDecimal examScore;
@ApiModelProperty(value = "合格分数", name = "passScore", required = true)
@NotEmpty(message = "合格分数不能为空")
private BigDecimal passScore;
@ApiModelProperty(value = "是否上架0否 1是", name = "sellFlag", required = true)
@NotNull(message = "是否上架0否 1是不能为空")
private Integer sellFlag;
@ApiModelProperty(value = "考试时长(分钟)", name = "examTime", required = true)
@NotEmpty(message = "考试时长(分钟)不能为空")
private String examTime;
@ApiModelProperty(value = "试卷类型 1-自建试卷 2-班级中自动生成试卷", name = "type", required = true)
@NotNull(message = "试卷类型 1-自建试卷 2-班级中自动生成试卷不能为空")
private Integer type;
}

View File

@ -0,0 +1,29 @@
package com.zcloud.edu.dto.resource;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author zhaokai
* @Date 2026-01-09 17:04:43
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ExamPaperUpdateSellFlagCmd {
@ApiModelProperty(value = "主键", name = "id", required = true)
@NotNull(message = "id不能为空")
private Long id;
@ApiModelProperty(value = "是否上架0否 1是", name = "sellFlag", required = true)
@NotNull(message = "是否上架0否 1是不能为空")
private Integer sellFlag;
}

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.math.BigDecimal;
/**
* web-client
@ -59,7 +60,7 @@ public class QuestionAddCmd extends Command {
private String descr;
@ApiModelProperty(value = "分值", name = "score")
private String score;
private BigDecimal score;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -23,6 +24,7 @@ public class QuestionListQry extends PageQuery {
* - `le`:
* - `ne`: SQL!=
*/
private String likeQuestionId;
@ApiModelProperty(value = "企业id", name = "eqCorpinfoId", required = true)
private String eqCorpinfoId;
}

View File

@ -1,11 +1,9 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* web-client

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import io.swagger.annotations.ApiModelProperty;
@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.math.BigDecimal;
/**
* web-client
@ -24,7 +25,7 @@ public class QuestionUpdateCmd extends Command {
@NotNull(message = "id不能为空")
private Long id;
@ApiModelProperty(value = "主键id", name = "questionNumber", required = true)
@ApiModelProperty(value = "主键id", name = "questionId", required = true)
@NotEmpty(message = "主键id不能为空")
private String questionId;
@ -66,6 +67,6 @@ public class QuestionUpdateCmd extends Command {
private String descr;
@ApiModelProperty(value = "分值", name = "score")
private String score;
private BigDecimal score;
}

View File

@ -1,7 +1,6 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -10,7 +9,6 @@ import lombok.NoArgsConstructor;
import javax.validation.constraints.*;
import java.util.Date;
import java.util.List;
/**

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;

View File

@ -1,4 +1,4 @@
package com.zcloud.edu.dto;
package com.zcloud.edu.dto.resource;
import com.alibaba.cola.dto.PageQuery;
import io.swagger.annotations.ApiModelProperty;

Some files were not shown because too many files have changed in this diff Show More