添加课程章节管理功能并更新课程信息

dev
zhangyue 2026-01-16 10:33:24 +08:00
parent 8d3bf31835
commit 8c316c711b
39 changed files with 875 additions and 21 deletions

View File

@ -0,0 +1,82 @@
package com.zcloud.edu.web.study;
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.study.ClassCurriculumChapterServiceI;
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
import com.zcloud.edu.dto.study.ClassCurriculumChapterAddCmd;
import com.zcloud.edu.dto.study.ClassCurriculumChapterPageQry;
import com.zcloud.edu.dto.study.ClassCurriculumChapterUpdateCmd;
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 zhangyue
* @Date 2026-01-16 09:54:35
*/
@Api(tags = "课程章节信息")
@RequestMapping("/${application.gateway}/classCurriculumChapter")
@RestController
@AllArgsConstructor
public class ClassCurriculumChapterController {
private final ClassCurriculumChapterServiceI classCurriculumChapterService;
@ApiOperation("新增")
@PostMapping("/save")
public SingleResponse<ClassCurriculumChapterCO> add(@Validated @RequestBody ClassCurriculumChapterAddCmd cmd) {
SSOUser ssoUser = AuthContext.getCurrentUser();
return classCurriculumChapterService.add(cmd);
}
@ApiOperation("分页")
@PostMapping("/list")
public PageResponse<ClassCurriculumChapterCO> page(@RequestBody ClassCurriculumChapterPageQry qry) {
return classCurriculumChapterService.listPage(qry);
}
@ApiOperation("所有数据")
@GetMapping("/listAll")
public MultiResponse<ClassCurriculumChapterCO> listAll() {
return MultiResponse.of(new ArrayList<ClassCurriculumChapterCO>());
}
@ApiOperation("详情")
@GetMapping("/{id}")
public SingleResponse<ClassCurriculumChapterCO> getInfoById(@PathVariable("id") Long id) {
return SingleResponse.of(new ClassCurriculumChapterCO());
}
@ApiOperation("删除")
@DeleteMapping("/{id}")
public Response remove(@PathVariable("id") Long id) {
classCurriculumChapterService.remove(id);
return SingleResponse.buildSuccess();
}
@ApiOperation("删除多个")
@DeleteMapping("/ids")
public Response removeBatch(@RequestParam Long[] ids) {
classCurriculumChapterService.removeBatch(ids);
return SingleResponse.buildSuccess();
}
@ApiOperation("修改")
@PutMapping("/edit")
public SingleResponse edit(@Validated @RequestBody ClassCurriculumChapterUpdateCmd classCurriculumChapterUpdateCmd) {
classCurriculumChapterService.edit(classCurriculumChapterUpdateCmd);
return SingleResponse.buildSuccess();
}
}

View File

@ -24,7 +24,7 @@ import java.util.ArrayList;
* web-adapter
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Api(tags = "班级信息")
@RequestMapping("/${application.gateway}/classCurriculum")

View File

@ -0,0 +1,24 @@
package com.zcloud.edu.command.convertor.study;
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import org.mapstruct.Mapper;
import java.util.List;
/**
* web-app
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Mapper(componentModel = "spring")
public interface ClassCurriculumChapterCoConvertor {
/**
* @param classCurriculumChapterDOs
* @return
*/
List<ClassCurriculumChapterCO> converDOsToCOs(List<ClassCurriculumChapterDO> classCurriculumChapterDOs);
}

View File

@ -11,7 +11,7 @@ import java.util.List;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Mapper(componentModel = "spring")
public interface ClassCurriculumCoConvertor {

View File

@ -0,0 +1,42 @@
package com.zcloud.edu.command.query.study;
import com.alibaba.cola.dto.PageResponse;
import com.zcloud.edu.command.convertor.study.ClassCurriculumChapterCoConvertor;
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
import com.zcloud.edu.dto.study.ClassCurriculumChapterPageQry;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import com.zcloud.edu.persistence.repository.study.ClassCurriculumChapterRepository;
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 zhangyue
* @Date 2026-01-16 09:54:35
*/
@Component
@AllArgsConstructor
public class ClassCurriculumChapterQueryExe {
private final ClassCurriculumChapterRepository classCurriculumChapterRepository;
private final ClassCurriculumChapterCoConvertor classCurriculumChapterCoConvertor;
/**
*
*
* @param classCurriculumChapterPageQry
* @return
*/
public PageResponse<ClassCurriculumChapterCO> execute(ClassCurriculumChapterPageQry classCurriculumChapterPageQry) {
Map<String, Object> params = PageQueryHelper.toHashMap(classCurriculumChapterPageQry);
PageResponse<ClassCurriculumChapterDO> pageResponse = classCurriculumChapterRepository.listPage(params);
List<ClassCurriculumChapterCO> examCenterCOS = classCurriculumChapterCoConvertor.converDOsToCOs(pageResponse.getData());
return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex());
}
}

View File

@ -18,7 +18,7 @@ import java.util.Map;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:33
*/
@Component
@AllArgsConstructor

View File

@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Component
@AllArgsConstructor

View File

@ -0,0 +1,40 @@
package com.zcloud.edu.command.study;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.study.ClassCurriculumChapterGateway;
import com.zcloud.edu.domain.model.study.ClassCurriculumChapterE;
import com.zcloud.edu.dto.study.ClassCurriculumChapterAddCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhangyue
* @Date 2026-01-16 09:54:34
*/
@Component
@AllArgsConstructor
public class ClassCurriculumChapterAddExe {
private final ClassCurriculumChapterGateway classCurriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(ClassCurriculumChapterAddCmd cmd) {
ClassCurriculumChapterE classCurriculumChapterE = new ClassCurriculumChapterE();
BeanUtils.copyProperties(cmd, classCurriculumChapterE);
boolean res = false;
try {
res = classCurriculumChapterGateway.add(classCurriculumChapterE);
} catch (Exception e) {
throw new RuntimeException(e);
}
if (!res) {
throw new BizException("保存失败");
}
return true;
}
}

View File

@ -0,0 +1,39 @@
package com.zcloud.edu.command.study;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.study.ClassCurriculumChapterGateway;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Component
@AllArgsConstructor
public class ClassCurriculumChapterRemoveExe {
private final ClassCurriculumChapterGateway classCurriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long id) {
boolean res = classCurriculumChapterGateway.deletedClassCurriculumChapterById(id);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public boolean execute(Long[] ids) {
boolean res = classCurriculumChapterGateway.deletedClassCurriculumChapterByIds(ids);
if (!res) {
throw new BizException("删除失败");
}
return true;
}
}

View File

@ -0,0 +1,34 @@
package com.zcloud.edu.command.study;
import com.alibaba.cola.exception.BizException;
import com.zcloud.edu.domain.gateway.study.ClassCurriculumChapterGateway;
import com.zcloud.edu.domain.model.study.ClassCurriculumChapterE;
import com.zcloud.edu.dto.study.ClassCurriculumChapterUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* web-app
*
* @Author zhangyue
* @Date 2026-01-16 09:54:36
*/
@Component
@AllArgsConstructor
public class ClassCurriculumChapterUpdateExe {
private final ClassCurriculumChapterGateway classCurriculumChapterGateway;
@Transactional(rollbackFor = Exception.class)
public void execute(ClassCurriculumChapterUpdateCmd classCurriculumChapterUpdateCmd) {
ClassCurriculumChapterE classCurriculumChapterE = new ClassCurriculumChapterE();
BeanUtils.copyProperties(classCurriculumChapterUpdateCmd, classCurriculumChapterE);
boolean res = classCurriculumChapterGateway.update(classCurriculumChapterE);
if (!res) {
throw new BizException("修改失败");
}
}
}

View File

@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.Transactional;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
@Component
@AllArgsConstructor

View File

@ -14,7 +14,7 @@ import org.springframework.transaction.annotation.Transactional;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
@Component
@AllArgsConstructor

View File

@ -0,0 +1,59 @@
package com.zcloud.edu.service.study;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.api.study.ClassCurriculumChapterServiceI;
import com.zcloud.edu.command.query.study.ClassCurriculumChapterQueryExe;
import com.zcloud.edu.command.study.ClassCurriculumChapterAddExe;
import com.zcloud.edu.command.study.ClassCurriculumChapterRemoveExe;
import com.zcloud.edu.command.study.ClassCurriculumChapterUpdateExe;
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
import com.zcloud.edu.dto.study.ClassCurriculumChapterAddCmd;
import com.zcloud.edu.dto.study.ClassCurriculumChapterPageQry;
import com.zcloud.edu.dto.study.ClassCurriculumChapterUpdateCmd;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* web-app
*
* @Author zhangyue
* @Date 2026-01-16 09:54:36
*/
@Service
@AllArgsConstructor
public class ClassCurriculumChapterServiceImpl implements ClassCurriculumChapterServiceI {
private final ClassCurriculumChapterAddExe classCurriculumChapterAddExe;
private final ClassCurriculumChapterUpdateExe classCurriculumChapterUpdateExe;
private final ClassCurriculumChapterRemoveExe classCurriculumChapterRemoveExe;
private final ClassCurriculumChapterQueryExe classCurriculumChapterQueryExe;
@Override
public PageResponse<ClassCurriculumChapterCO> listPage(ClassCurriculumChapterPageQry qry) {
return classCurriculumChapterQueryExe.execute(qry);
}
@Override
public SingleResponse add(ClassCurriculumChapterAddCmd cmd) {
classCurriculumChapterAddExe.execute(cmd);
return SingleResponse.buildSuccess();
}
@Override
public void edit(ClassCurriculumChapterUpdateCmd classCurriculumChapterUpdateCmd) {
classCurriculumChapterUpdateExe.execute(classCurriculumChapterUpdateCmd);
}
@Override
public void remove(Long id) {
classCurriculumChapterRemoveExe.execute(id);
}
@Override
public void removeBatch(Long[] ids) {
classCurriculumChapterRemoveExe.execute(ids);
}
}

View File

@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
* web-app
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
@Service
@AllArgsConstructor

View File

@ -0,0 +1,27 @@
package com.zcloud.edu.api.study;
import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.zcloud.edu.dto.clientobject.study.ClassCurriculumChapterCO;
import com.zcloud.edu.dto.study.ClassCurriculumChapterAddCmd;
import com.zcloud.edu.dto.study.ClassCurriculumChapterPageQry;
import com.zcloud.edu.dto.study.ClassCurriculumChapterUpdateCmd;
/**
* web-client
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
public interface ClassCurriculumChapterServiceI {
PageResponse<ClassCurriculumChapterCO> listPage(ClassCurriculumChapterPageQry qry);
SingleResponse<ClassCurriculumChapterCO> add(ClassCurriculumChapterAddCmd cmd);
void edit(ClassCurriculumChapterUpdateCmd cmd);
void remove(Long id);
void removeBatch(Long[] ids);
}

View File

@ -11,7 +11,7 @@ import com.zcloud.edu.dto.study.ClassCurriculumUpdateCmd;
* web-client
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
public interface ClassCurriculumServiceI {
PageResponse<ClassCurriculumCO> listPage(ClassCurriculumPageQry qry);

View File

@ -2,6 +2,7 @@ package com.zcloud.edu.dto.clientobject.study;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.google.type.Decimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -12,7 +13,7 @@ import java.time.LocalDateTime;
* web-client
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Data
public class ClassCurriculumCO extends ClientObject {
@ -29,6 +30,9 @@ public class ClassCurriculumCO extends ClientObject {
//课程名称
@ApiModelProperty(value = "课程名称")
private String curriculumName;
//课程总时长
@ApiModelProperty(value = "课程总时长")
private Decimal videoTotalTime;
//删除标识true false
@ApiModelProperty(value = "删除标识true false")
private String deleteEnum;

View File

@ -0,0 +1,85 @@
package com.zcloud.edu.dto.clientobject.study;
import com.alibaba.cola.dto.ClientObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-client
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Data
public class ClassCurriculumChapterCO extends ClientObject {
//主键
@ApiModelProperty(value = "主键")
private Long id;
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String curriculumChapterId;
//班级id
@ApiModelProperty(value = "班级id")
private String classId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//班级-课程id
@ApiModelProperty(value = "班级-课程id")
private String classCurriculumId;
//章节名字
@ApiModelProperty(value = "章节名字")
private String name;
//视频课件id
@ApiModelProperty(value = "视频课件id")
private String videoCoursewareId;
//排序
@ApiModelProperty(value = "排序")
private Integer sort;
//上级ID
@ApiModelProperty(value = "上级ID")
private String parentId;
//删除标识true false
@ApiModelProperty(value = "删除标识true false")
private String deleteEnum;
//备注
@ApiModelProperty(value = "备注")
private String remarks;
//创建人姓名
@ApiModelProperty(value = "创建人姓名")
private String createName;
//更新人姓名
@ApiModelProperty(value = "更新人姓名")
private String updateName;
//租户id
@ApiModelProperty(value = "租户id")
private Long tenantId;
//单位id
@ApiModelProperty(value = "单位id")
private Long orgId;
//版本
@ApiModelProperty(value = "版本")
private Integer version;
//创建时间
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime createTime;
//修改时间
@ApiModelProperty(value = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime updateTime;
//创建人id
@ApiModelProperty(value = "创建人id")
private Long createId;
//修改人id
@ApiModelProperty(value = "修改人id")
private Long updateId;
//环境
@ApiModelProperty(value = "环境")
private String env;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.dto.study;
import com.alibaba.cola.dto.Command;
import com.google.type.Decimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -8,12 +9,13 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* web-client
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:32
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ -36,5 +38,9 @@ public class ClassCurriculumAddCmd extends Command {
@NotEmpty(message = "课程名称不能为空")
private String curriculumName;
@ApiModelProperty(value = "课程总时长", name = "videoTotalTime", required = true)
@NotNull(message = "课程总时长不能为空")
private Decimal videoTotalTime;
}

View File

@ -0,0 +1,53 @@
package com.zcloud.edu.dto.study;
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 zhangyue
* @Date 2026-01-16 09:54:34
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClassCurriculumChapterAddCmd extends Command {
@ApiModelProperty(value = "班级id", name = "classId", required = true)
@NotEmpty(message = "班级id不能为空")
private String classId;
@ApiModelProperty(value = "企业ID", name = "corpinfoId", required = true)
@NotNull(message = "企业ID不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "班级-课程id", name = "classCurriculumId", required = true)
@NotEmpty(message = "班级-课程id不能为空")
private String classCurriculumId;
@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,28 @@
package com.zcloud.edu.dto.study;
import com.alibaba.cola.dto.PageQuery;
import lombok.Data;
/**
* web-client
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Data
public class ClassCurriculumChapterPageQry extends PageQuery {
/**
* ,
* - `like`: SQLLIKE
* - `eq`: SQL=
* - `gt`:
* - `lt`:
* - `ge`:
* - `le`:
* - `ne`: SQL!=
*/
private String likeCurriculumChapterId;
}

View File

@ -0,0 +1,52 @@
package com.zcloud.edu.dto.study;
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 zhangyue
* @Date 2026-01-16 09:54:36
*/
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClassCurriculumChapterUpdateCmd 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 = "classId", required = true)
@NotEmpty(message = "班级id不能为空")
private String classId;
@ApiModelProperty(value = "企业ID", name = "corpinfoId", required = true)
@NotNull(message = "企业ID不能为空")
private Long corpinfoId;
@ApiModelProperty(value = "班级-课程id", name = "classCurriculumId", required = true)
@NotEmpty(message = "班级-课程id不能为空")
private String classCurriculumId;
@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

@ -8,7 +8,7 @@ import lombok.Data;
* web-client
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:33
*/
@Data
public class ClassCurriculumPageQry extends PageQuery {
@ -24,6 +24,5 @@ public class ClassCurriculumPageQry extends PageQuery {
* - `ne`: SQL!=
*/
private String likeClassCurriculumId;
private String eqClassId;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.dto.study;
import com.alibaba.cola.dto.Command;
import com.google.type.Decimal;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
@ -14,7 +15,7 @@ import javax.validation.constraints.NotNull;
* web-client
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ -36,5 +37,8 @@ public class ClassCurriculumUpdateCmd extends Command {
@ApiModelProperty(value = "课程名称", name = "curriculumName", required = true)
@NotEmpty(message = "课程名称不能为空")
private String curriculumName;
@ApiModelProperty(value = "课程总时长", name = "videoTotalTime", required = true)
@NotNull(message = "课程总时长不能为空")
private Decimal videoTotalTime;
}

View File

@ -0,0 +1,31 @@
package com.zcloud.edu.domain.gateway.study;
import com.zcloud.edu.domain.model.study.ClassCurriculumChapterE;
/**
* web-domain
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
public interface ClassCurriculumChapterGateway {
/**
*
*/
Boolean add(ClassCurriculumChapterE classCurriculumChapterE);
/**
*
*/
Boolean update(ClassCurriculumChapterE classCurriculumChapterE);
/**
*
*/
Boolean deletedClassCurriculumChapterById(Long id);
Boolean deletedClassCurriculumChapterByIds(Long[] id);
}

View File

@ -7,7 +7,7 @@ import com.zcloud.edu.domain.model.study.ClassCurriculumE;
* web-domain
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
public interface ClassCurriculumGateway {

View File

@ -0,0 +1,59 @@
package com.zcloud.edu.domain.model.study;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
import java.time.LocalDateTime;
/**
* web-domain
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Data
public class ClassCurriculumChapterE extends BaseE {
//主键
private Long id;
//业务主键id
private String curriculumChapterId;
//班级id
private String classId;
//企业ID
private Long corpinfoId;
//班级-课程id
private String classCurriculumId;
//章节名字
private String name;
//视频课件id
private String videoCoursewareId;
//排序
private Integer sort;
//上级ID
private String parentId;
//删除标识true false
private String deleteEnum;
//备注
private String remarks;
//创建人姓名
private String createName;
//更新人姓名
private String updateName;
//租户id
private Long tenantId;
//单位id
private Long orgId;
//版本
private Integer version;
//创建时间
private LocalDateTime createTime;
//修改时间
private LocalDateTime updateTime;
//创建人id
private Long createId;
//修改人id
private Long updateId;
//环境
private String env;
}

View File

@ -1,5 +1,6 @@
package com.zcloud.edu.domain.model.study;
import com.google.type.Decimal;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
@ -9,7 +10,7 @@ import java.time.LocalDateTime;
* web-domain
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Data
public class ClassCurriculumE extends BaseE {
@ -22,6 +23,8 @@ public class ClassCurriculumE extends BaseE {
private String classId;
//课程名称
private String curriculumName;
//课程总时长
private Decimal videoTotalTime;
//删除标识true false
private String deleteEnum;
//备注

View File

@ -0,0 +1,50 @@
package com.zcloud.edu.gatewayimpl.study;
import com.zcloud.edu.domain.gateway.study.ClassCurriculumChapterGateway;
import com.zcloud.edu.domain.model.study.ClassCurriculumChapterE;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import com.zcloud.edu.persistence.repository.study.ClassCurriculumChapterRepository;
import lombok.AllArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Collections;
/**
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Service
@AllArgsConstructor
public class ClassCurriculumChapterGatewayImpl implements ClassCurriculumChapterGateway {
private final ClassCurriculumChapterRepository classCurriculumChapterRepository;
@Override
public Boolean add(ClassCurriculumChapterE classCurriculumChapterE) {
ClassCurriculumChapterDO d = new ClassCurriculumChapterDO();
BeanUtils.copyProperties(classCurriculumChapterE, d);
classCurriculumChapterRepository.save(d);
return true;
}
@Override
public Boolean update(ClassCurriculumChapterE classCurriculumChapterE) {
ClassCurriculumChapterDO d = new ClassCurriculumChapterDO();
BeanUtils.copyProperties(classCurriculumChapterE, d);
classCurriculumChapterRepository.updateById(d);
return true;
}
@Override
public Boolean deletedClassCurriculumChapterById(Long id) {
return classCurriculumChapterRepository.removeById(id);
}
@Override
public Boolean deletedClassCurriculumChapterByIds(Long[] ids) {
return classCurriculumChapterRepository.removeByIds(Collections.singletonList(ids));
}
}

View File

@ -14,7 +14,7 @@ import java.util.Collections;
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Service
@AllArgsConstructor

View File

@ -0,0 +1,48 @@
package com.zcloud.edu.persistence.dataobject.study;
import com.baomidou.mybatisplus.annotation.TableName;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
/**
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Data
@TableName("class_curriculum_chapter")
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class ClassCurriculumChapterDO extends BaseDO {
//业务主键id
@ApiModelProperty(value = "业务主键id")
private String curriculumChapterId;
//班级id
@ApiModelProperty(value = "班级id")
private String classId;
//企业ID
@ApiModelProperty(value = "企业ID")
private Long corpinfoId;
//班级-课程id
@ApiModelProperty(value = "班级-课程id")
private String classCurriculumId;
//章节名字
@ApiModelProperty(value = "章节名字")
private String name;
//视频课件id
@ApiModelProperty(value = "视频课件id")
private String videoCoursewareId;
//排序
@ApiModelProperty(value = "排序")
private Integer sort;
//上级ID
@ApiModelProperty(value = "上级ID")
private String parentId;
}

View File

@ -1,6 +1,7 @@
package com.zcloud.edu.persistence.dataobject.study;
import com.baomidou.mybatisplus.annotation.TableName;
import com.google.type.Decimal;
import com.jjb.saas.framework.repository.basedo.BaseDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -11,7 +12,7 @@ import lombok.NoArgsConstructor;
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Data
@TableName("class_curriculum")
@ -30,6 +31,9 @@ public class ClassCurriculumDO extends BaseDO {
//课程名称
@ApiModelProperty(value = "课程名称")
private String curriculumName;
//课程总时长
@ApiModelProperty(value = "课程总时长")
private Decimal videoTotalTime;
}

View File

@ -0,0 +1,17 @@
package com.zcloud.edu.persistence.mapper.study;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import org.apache.ibatis.annotations.Mapper;
/**
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Mapper
public interface ClassCurriculumChapterMapper extends BaseMapper<ClassCurriculumChapterDO> {
}

View File

@ -8,7 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-13 14:18:13
* @Date 2026-01-16 09:54:33
*/
@Mapper
public interface ClassCurriculumMapper extends BaseMapper<ClassCurriculumDO> {

View File

@ -0,0 +1,39 @@
package com.zcloud.edu.persistence.repository.impl.study;
import com.alibaba.cola.dto.PageResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import com.zcloud.edu.persistence.mapper.study.ClassCurriculumChapterMapper;
import com.zcloud.edu.persistence.repository.study.ClassCurriculumChapterRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
import com.zcloud.gbscommon.utils.Query;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
@Service
@RequiredArgsConstructor
public class ClassCurriculumChapterRepositoryImpl extends BaseRepositoryImpl<ClassCurriculumChapterMapper, ClassCurriculumChapterDO> implements ClassCurriculumChapterRepository {
private final ClassCurriculumChapterMapper classCurriculumChapterMapper;
@Override
public PageResponse<ClassCurriculumChapterDO> listPage(Map<String, Object> params) {
IPage<ClassCurriculumChapterDO> iPage = new Query<ClassCurriculumChapterDO>().getPage(params);
QueryWrapper<ClassCurriculumChapterDO> queryWrapper = new QueryWrapper<>();
queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params);
queryWrapper.orderByDesc("create_time");
IPage<ClassCurriculumChapterDO> result = classCurriculumChapterMapper.selectPage(iPage, queryWrapper);
return PageHelper.pageToResponse(result, result.getRecords());
}
}

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.repository.common.PageHelper;
import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumDO;
import com.zcloud.edu.persistence.dataobject.study.StudentDO;
import com.zcloud.edu.persistence.mapper.study.ClassCurriculumMapper;
import com.zcloud.edu.persistence.repository.study.ClassCurriculumRepository;
import com.zcloud.gbscommon.utils.PageQueryHelper;
@ -20,7 +19,7 @@ import java.util.Map;
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
@Service
@RequiredArgsConstructor

View File

@ -0,0 +1,18 @@
package com.zcloud.edu.persistence.repository.study;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import com.zcloud.edu.persistence.dataobject.study.ClassCurriculumChapterDO;
import java.util.Map;
/**
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-16 09:54:35
*/
public interface ClassCurriculumChapterRepository extends BaseRepository<ClassCurriculumChapterDO> {
PageResponse<ClassCurriculumChapterDO> listPage(Map<String, Object> params);
}

View File

@ -10,7 +10,7 @@ import java.util.Map;
* web-infrastructure
*
* @Author zhangyue
* @Date 2026-01-13 14:18:14
* @Date 2026-01-16 09:54:34
*/
public interface ClassCurriculumRepository extends BaseRepository<ClassCurriculumDO> {
PageResponse<ClassCurriculumDO> listPage(Map<String, Object> params);

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zcloud.edu.persistence.mapper.study.ClassCurriculumChapterMapper">
</mapper>