diff --git a/web-adapter/src/main/java/com/zcloud/edu/web/TrainingTypeController.java b/web-adapter/src/main/java/com/zcloud/edu/web/TrainingTypeController.java index 4ba0cb1..d3dd1c1 100644 --- a/web-adapter/src/main/java/com/zcloud/edu/web/TrainingTypeController.java +++ b/web-adapter/src/main/java/com/zcloud/edu/web/TrainingTypeController.java @@ -2,10 +2,7 @@ package com.zcloud.edu.web; import com.zcloud.edu.api.TrainingTypeServiceI; -import com.zcloud.edu.dto.TrainingTypeAddCmd; -import com.zcloud.edu.dto.TrainingTypePageQry; -import com.zcloud.edu.dto.TrainingTypeUpdateCmd; -import com.zcloud.edu.dto.TrainingTypeRemoveCmd; +import com.zcloud.edu.dto.*; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.Response; @@ -53,8 +50,8 @@ public class TrainingTypeController { @ApiOperation("所有数据") @PostMapping("/listAll") - public MultiResponse listAll() { - return MultiResponse.of(new ArrayList()); + public MultiResponse listAll(@RequestBody TrainingTypeListQry qry) { + return trainingTypeService.list(qry); } @ApiOperation("详情") diff --git a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeAddExe.java b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeAddExe.java index afc4050..9563c18 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeAddExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeAddExe.java @@ -4,12 +4,14 @@ import com.zcloud.edu.domain.gateway.TrainingTypeGateway; import com.zcloud.edu.domain.model.TrainingTypeE; import com.zcloud.edu.dto.TrainingTypeAddCmd; import com.alibaba.cola.exception.BizException; +import com.zcloud.edu.persistence.dataobject.TrainingTypeDO; +import com.zcloud.edu.persistence.repository.TrainingTypeRepository; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; - +import java.util.List; /** @@ -21,10 +23,15 @@ import org.springframework.transaction.annotation.Transactional; @AllArgsConstructor public class TrainingTypeAddExe { private final TrainingTypeGateway trainingTypeGateway; + private final TrainingTypeRepository trainingTypeRepository; @Transactional(rollbackFor = Exception.class) public boolean execute(TrainingTypeAddCmd cmd) { TrainingTypeE trainingTypeE = new TrainingTypeE(); + + List trainingTypeDOS = trainingTypeRepository.listByName(cmd.getName()); + trainingTypeE.checkList(trainingTypeDOS == null ? 0 : trainingTypeDOS.size()); + BeanUtils.copyProperties(cmd, trainingTypeE); boolean res = false; try { diff --git a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeRemoveExe.java b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeRemoveExe.java index b62da6e..fd51981 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeRemoveExe.java @@ -21,6 +21,8 @@ public class TrainingTypeRemoveExe { @Transactional(rollbackFor = Exception.class) public boolean execute(Long id) { + // todo 校验是否有其他业务调用 + boolean res = trainingTypeGateway.deletedTrainingTypeById(id); if(!res){ throw new BizException("删除失败"); @@ -30,6 +32,8 @@ public class TrainingTypeRemoveExe { @Transactional(rollbackFor = Exception.class) public boolean execute(Long[] ids) { + // todo 校验是否有其他业务调用 + boolean res = trainingTypeGateway.deletedTrainingTypeByIds(ids); if(!res){ throw new BizException("删除失败"); diff --git a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeUpdateExe.java b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeUpdateExe.java index 9dfc9ba..da3d4c4 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/TrainingTypeUpdateExe.java @@ -4,12 +4,14 @@ 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.persistence.dataobject.TrainingTypeDO; +import com.zcloud.edu.persistence.repository.TrainingTypeRepository; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; - +import java.util.List; /** @@ -21,10 +23,15 @@ import org.springframework.transaction.annotation.Transactional; @AllArgsConstructor public class TrainingTypeUpdateExe { private final TrainingTypeGateway trainingTypeGateway; + private final TrainingTypeRepository trainingTypeRepository; @Transactional(rollbackFor = Exception.class) public void execute(TrainingTypeUpdateCmd cmd) { TrainingTypeE trainingTypeE = new TrainingTypeE(); + + List trainingTypeDOS = trainingTypeRepository.listByNameAndId(cmd.getName(), cmd.getId()); + trainingTypeE.checkList(trainingTypeDOS == null ? 0 : trainingTypeDOS.size()); + BeanUtils.copyProperties(cmd, trainingTypeE); boolean res = trainingTypeGateway.update(trainingTypeE); if (!res) { diff --git a/web-app/src/main/java/com/zcloud/edu/command/query/TrainingTypeQueryExe.java b/web-app/src/main/java/com/zcloud/edu/command/query/TrainingTypeQueryExe.java index d08a838..410426d 100644 --- a/web-app/src/main/java/com/zcloud/edu/command/query/TrainingTypeQueryExe.java +++ b/web-app/src/main/java/com/zcloud/edu/command/query/TrainingTypeQueryExe.java @@ -1,6 +1,8 @@ package com.zcloud.edu.command.query; +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.persistence.dataobject.TrainingTypeDO; @@ -31,23 +33,27 @@ public class TrainingTypeQueryExe { /** * 分页 * - * @param trainingTypePageQry * @return */ - public PageResponse execute(TrainingTypePageQry trainingTypePageQry) { - Map params = PageQueryHelper.toHashMap(trainingTypePageQry); + public PageResponse execute(TrainingTypePageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); PageResponse pageResponse = trainingTypeRepository.listPage(params); List examCenterCOS = trainingTypeCoConvertor.converDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); } + public MultiResponse execute(TrainingTypeListQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + List list = trainingTypeRepository.list(params); + List examCenterCOS = trainingTypeCoConvertor.converDOsToCOs(list); + return MultiResponse.of(examCenterCOS); + } + public SingleResponse execute(Long id) { SingleResponse trainingTypeDO = trainingTypeRepository.getInfoById(id); - SingleResponse trainingTypeCO = new SingleResponse<>(); TrainingTypeCO co = new TrainingTypeCO(); BeanUtils.copyProperties(trainingTypeDO.getData(), co); - trainingTypeCO.setData(co); - return trainingTypeCO; + return SingleResponse.of(co); } } diff --git a/web-app/src/main/java/com/zcloud/edu/service/TrainingTypeServiceImpl.java b/web-app/src/main/java/com/zcloud/edu/service/TrainingTypeServiceImpl.java index e6d575e..49292c8 100644 --- a/web-app/src/main/java/com/zcloud/edu/service/TrainingTypeServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/edu/service/TrainingTypeServiceImpl.java @@ -1,11 +1,13 @@ package com.zcloud.edu.service; +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; @@ -33,6 +35,11 @@ public class TrainingTypeServiceImpl implements TrainingTypeServiceI { return trainingTypeQueryExe.execute(qry); } + @Override + public MultiResponse list(TrainingTypeListQry qry) { + return trainingTypeQueryExe.execute(qry); + } + @Override public SingleResponse getInfoById(Long id){ return trainingTypeQueryExe.execute(id); diff --git a/web-client/src/main/java/com/zcloud/edu/api/TrainingTypeServiceI.java b/web-client/src/main/java/com/zcloud/edu/api/TrainingTypeServiceI.java index bd50b64..b8e2182 100644 --- a/web-client/src/main/java/com/zcloud/edu/api/TrainingTypeServiceI.java +++ b/web-client/src/main/java/com/zcloud/edu/api/TrainingTypeServiceI.java @@ -1,6 +1,8 @@ package com.zcloud.edu.api; +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; @@ -16,6 +18,8 @@ import com.zcloud.edu.dto.clientobject.TrainingTypeCO; public interface TrainingTypeServiceI { PageResponse listPage(TrainingTypePageQry qry); + MultiResponse list(TrainingTypeListQry qry); + SingleResponse getInfoById(Long id); SingleResponse add(TrainingTypeAddCmd cmd); diff --git a/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeListQry.java b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeListQry.java new file mode 100644 index 0000000..a8b3849 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeListQry.java @@ -0,0 +1,27 @@ +package com.zcloud.edu.dto; + +import com.alibaba.cola.dto.PageQuery; +import lombok.Data; + + +/** +* web-client +* @Author SondonYong +* @Date 2025-11-26 15:04:07 +*/ +@Data +public class TrainingTypeListQry extends PageQuery { + +/** +* 查询条件操作前缀,支持以下几种数据库查询操作: +* - `like`: 模糊匹配查询,对应SQL的LIKE操作符 +* - `eq`: 等值查询,对应SQL的=操作符 +* - `gt`: 大于比较查询 +* - `lt`: 小于比较查询 +* - `ge`: 大于等于比较查询 +* - `le`: 小于等于比较查询 +* - `ne`: 不等比较查询,对应SQL的!=操作符 +*/ + private String likeName; +} + diff --git a/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypePageQry.java b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypePageQry.java index 24aa57a..4f0e11c 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypePageQry.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypePageQry.java @@ -23,6 +23,6 @@ public class TrainingTypePageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ - private String likeTrainingTypeId; + private String likeName; } diff --git a/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeUpdateCmd.java b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeUpdateCmd.java index fab1cac..3938307 100644 --- a/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeUpdateCmd.java +++ b/web-client/src/main/java/com/zcloud/edu/dto/TrainingTypeUpdateCmd.java @@ -18,15 +18,19 @@ import javax.validation.constraints.*; @NoArgsConstructor @AllArgsConstructor public class TrainingTypeUpdateCmd extends Command { + @ApiModelProperty(value = "id", name = "id", required = true) @NotNull(message = "id不能为空") private Long id; + @ApiModelProperty(value = "业务主键id", name = "trainingTypeId", required = true) @NotEmpty(message = "业务主键id不能为空") private String trainingTypeId; + @ApiModelProperty(value = "名称", name = "name", required = true) @NotEmpty(message = "名称不能为空") private String name; + @ApiModelProperty(value = "排序", name = "sort", required = true) @NotNull(message = "排序不能为空") private Integer sort; diff --git a/web-domain/src/main/java/com/zcloud/edu/domain/model/TrainingTypeE.java b/web-domain/src/main/java/com/zcloud/edu/domain/model/TrainingTypeE.java index b839fb0..77a1de8 100644 --- a/web-domain/src/main/java/com/zcloud/edu/domain/model/TrainingTypeE.java +++ b/web-domain/src/main/java/com/zcloud/edu/domain/model/TrainingTypeE.java @@ -1,5 +1,6 @@ package com.zcloud.edu.domain.model; +import com.alibaba.cola.exception.BizException; import com.jjb.saas.framework.domain.model.BaseE; import lombok.Data; @@ -20,5 +21,12 @@ public class TrainingTypeE extends BaseE { private String name; //排序 private Integer sort; + + + public void checkList(int size){ + if(size > 0){ + throw new BizException("培训类型名称重复。"); + } + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/TrainingTypeRepository.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/TrainingTypeRepository.java index 71442eb..2550dfe 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/TrainingTypeRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/TrainingTypeRepository.java @@ -4,6 +4,8 @@ import com.zcloud.edu.persistence.dataobject.TrainingTypeDO; import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; + +import java.util.List; import java.util.Map; /** @@ -15,6 +17,12 @@ public interface TrainingTypeRepository extends BaseRepository { PageResponse listPage(Map params); + List list(Map params); + + List listByName(String name); + + List listByNameAndId(String name, Long id); + SingleResponse getInfoById(Long id); } diff --git a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/TrainingTypeRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/TrainingTypeRepositoryImpl.java index 1340ba7..e6a1dd2 100644 --- a/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/TrainingTypeRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/edu/persistence/repository/impl/TrainingTypeRepositoryImpl.java @@ -13,6 +13,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; import java.util.Map; /** @@ -30,11 +33,35 @@ public class TrainingTypeRepositoryImpl extends BaseRepositoryImpl iPage = new Query().getPage(params); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); - queryWrapper.orderByDesc("create_time"); + queryWrapper.orderByAsc("sort"); IPage result = trainingTypeMapper.selectPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); } + @Override + public List list(Map params) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); + queryWrapper.orderByAsc("sort"); + List trainingTypeDOS = trainingTypeMapper.selectList(queryWrapper); + return trainingTypeDOS; + } + + @Override + public List listByName(String name) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("name", name); + return list(queryWrapper); + } + + @Override + public List listByNameAndId(String name, Long id) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.ne("id", id); + queryWrapper.eq("name", name); + return list(queryWrapper); + } + @Override public SingleResponse getInfoById(Long id) { return SingleResponse.of(trainingTypeMapper.selectById(id));