mirror of
				https://github.com/continew-org/continew-starter.git
				synced 2025-11-01 08:57:18 +08:00 
			
		
		
		
	refactor(extension/crud): 调整 BaseController、BaseService 到 crud-core 模块
This commit is contained in:
		| @@ -31,7 +31,7 @@ import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.req.BaseReq; | ||||
| import top.continew.starter.extension.crud.model.resp.BaseIdResp; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
| import top.continew.starter.extension.crud.model.resp.BasePageResp; | ||||
| import top.continew.starter.extension.crud.service.BaseService; | ||||
| import top.continew.starter.extension.crud.util.ValidateGroup; | ||||
| 
 | ||||
| @@ -64,7 +64,7 @@ public abstract class BaseController<S extends BaseService<L, D, Q, C>, L, D, Q, | ||||
|     @Operation(summary = "分页查询列表", description = "分页查询列表") | ||||
|     @ResponseBody | ||||
|     @GetMapping | ||||
|     public PageResp<L> page(Q query, @Validated PageQuery pageQuery) { | ||||
|     public BasePageResp<L> page(Q query, @Validated PageQuery pageQuery) { | ||||
|         return baseService.page(query, pageQuery); | ||||
|     } | ||||
| 
 | ||||
| @@ -20,8 +20,8 @@ import cn.hutool.core.lang.tree.Tree; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.resp.BasePageResp; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| @@ -44,7 +44,7 @@ public interface BaseService<L, D, Q, C> { | ||||
|      * @param pageQuery 分页查询条件 | ||||
|      * @return 分页列表信息 | ||||
|      */ | ||||
|     PageResp<L> page(Q query, PageQuery pageQuery); | ||||
|     BasePageResp<L> page(Q query, PageQuery pageQuery); | ||||
| 
 | ||||
|     /** | ||||
|      * 查询列表 | ||||
| @@ -1,120 +0,0 @@ | ||||
| /* | ||||
|  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||
|  * <p> | ||||
|  * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * <p> | ||||
|  * http://www.gnu.org/licenses/lgpl.html | ||||
|  * <p> | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| package top.continew.starter.extension.crud.service; | ||||
|  | ||||
| import cn.hutool.core.lang.tree.Tree; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * 业务接口基类 | ||||
|  * | ||||
|  * @param <L> 列表类型 | ||||
|  * @param <D> 详情类型 | ||||
|  * @param <Q> 查询条件 | ||||
|  * @param <C> 创建或修改类型 | ||||
|  * @author Charles7c | ||||
|  * @since 1.0.0 | ||||
|  */ | ||||
| public interface BaseService<L, D, Q, C> { | ||||
|  | ||||
|     /** | ||||
|      * 分页查询列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param pageQuery 分页查询条件 | ||||
|      * @return 分页列表信息 | ||||
|      */ | ||||
|     PageResp<L> page(Q query, PageQuery pageQuery); | ||||
|  | ||||
|     /** | ||||
|      * 查询列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @return 列表信息 | ||||
|      */ | ||||
|     List<L> list(Q query, SortQuery sortQuery); | ||||
|  | ||||
|     /** | ||||
|      * 查询树列表 | ||||
|      * <p> | ||||
|      * 虽然提供了查询条件,但不建议使用,容易因缺失根节点导致树节点丢失。 | ||||
|      * 建议在前端进行查询过滤,如需使用建议重写方法。 | ||||
|      * </p> | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @param isSimple  是否为简单树结构(不包含基本树结构之外的扩展字段,简单树(下拉列表)使用全局配置结构,复杂树(表格)使用 @DictField 局部配置) | ||||
|      * @return 树列表信息 | ||||
|      */ | ||||
|     List<Tree<Long>> tree(Q query, SortQuery sortQuery, boolean isSimple); | ||||
|  | ||||
|     /** | ||||
|      * 查看详情 | ||||
|      * | ||||
|      * @param id ID | ||||
|      * @return 详情信息 | ||||
|      */ | ||||
|     D get(Long id); | ||||
|  | ||||
|     /** | ||||
|      * 查询字典列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @return 字典列表信息 | ||||
|      */ | ||||
|     List<LabelValueResp> listDict(Q query, SortQuery sortQuery); | ||||
|  | ||||
|     /** | ||||
|      * 新增 | ||||
|      * | ||||
|      * @param req 创建信息 | ||||
|      * @return 自增 ID | ||||
|      */ | ||||
|     Long add(C req); | ||||
|  | ||||
|     /** | ||||
|      * 修改 | ||||
|      * | ||||
|      * @param req 修改信息 | ||||
|      * @param id  ID | ||||
|      */ | ||||
|     void update(C req, Long id); | ||||
|  | ||||
|     /** | ||||
|      * 删除 | ||||
|      * | ||||
|      * @param ids ID 列表 | ||||
|      */ | ||||
|     void delete(List<Long> ids); | ||||
|  | ||||
|     /** | ||||
|      * 导出 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @param response  响应对象 | ||||
|      */ | ||||
|     void export(Q query, SortQuery sortQuery, HttpServletResponse response); | ||||
| } | ||||
| @@ -14,7 +14,7 @@ | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package top.continew.starter.extension.crud.service.impl; | ||||
| package top.continew.starter.extension.crud.service; | ||||
| 
 | ||||
| import cn.crane4j.core.support.OperateTemplate; | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| @@ -44,7 +44,6 @@ import top.continew.starter.extension.crud.model.entity.BaseIdDO; | ||||
| import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
| import top.continew.starter.extension.crud.service.BaseService; | ||||
| import top.continew.starter.file.excel.util.ExcelUtils; | ||||
| 
 | ||||
| import java.lang.reflect.Field; | ||||
| @@ -1,173 +0,0 @@ | ||||
| /* | ||||
|  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||
|  * <p> | ||||
|  * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0; | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * <p> | ||||
|  * http://www.gnu.org/licenses/lgpl.html | ||||
|  * <p> | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
|  | ||||
| package top.continew.starter.extension.crud.controller; | ||||
|  | ||||
| import cn.hutool.core.lang.tree.Tree; | ||||
| import com.feiniaojin.gracefulresponse.api.ExcludeFromGracefulResponse; | ||||
| import io.swagger.v3.oas.annotations.Operation; | ||||
| import io.swagger.v3.oas.annotations.Parameter; | ||||
| import io.swagger.v3.oas.annotations.enums.ParameterIn; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| import top.continew.starter.extension.crud.annotation.CrudApi; | ||||
| import top.continew.starter.extension.crud.enums.Api; | ||||
| import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.req.BaseReq; | ||||
| import top.continew.starter.extension.crud.model.resp.BaseIdResp; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
| import top.continew.starter.extension.crud.service.BaseService; | ||||
| import top.continew.starter.extension.crud.util.ValidateGroup; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * 控制器基类 | ||||
|  * | ||||
|  * @param <S> 业务接口 | ||||
|  * @param <L> 列表类型 | ||||
|  * @param <D> 详情类型 | ||||
|  * @param <Q> 查询条件 | ||||
|  * @param <C> 创建或修改类型 | ||||
|  * @author Charles7c | ||||
|  * @since 1.0.0 | ||||
|  */ | ||||
| public abstract class BaseController<S extends BaseService<L, D, Q, C>, L, D, Q, C extends BaseReq> { | ||||
|  | ||||
|     @Autowired | ||||
|     protected S baseService; | ||||
|  | ||||
|     /** | ||||
|      * 分页查询列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param pageQuery 分页查询条件 | ||||
|      * @return 分页信息 | ||||
|      */ | ||||
|     @CrudApi(Api.PAGE) | ||||
|     @Operation(summary = "分页查询列表", description = "分页查询列表") | ||||
|     @ResponseBody | ||||
|     @GetMapping | ||||
|     public PageResp<L> page(Q query, @Validated PageQuery pageQuery) { | ||||
|         return baseService.page(query, pageQuery); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @return 列表信息 | ||||
|      */ | ||||
|     @CrudApi(Api.LIST) | ||||
|     @Operation(summary = "查询列表", description = "查询列表") | ||||
|     @ResponseBody | ||||
|     @GetMapping("/list") | ||||
|     public List<L> list(Q query, SortQuery sortQuery) { | ||||
|         return baseService.list(query, sortQuery); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询树列表 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @return 树列表信息 | ||||
|      */ | ||||
|     @CrudApi(Api.TREE) | ||||
|     @Operation(summary = "查询树列表", description = "查询树列表") | ||||
|     @ResponseBody | ||||
|     @GetMapping("/tree") | ||||
|     public List<Tree<Long>> tree(Q query, SortQuery sortQuery) { | ||||
|         return baseService.tree(query, sortQuery, false); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询详情 | ||||
|      * | ||||
|      * @param id ID | ||||
|      * @return 详情信息 | ||||
|      */ | ||||
|     @CrudApi(Api.DETAIL) | ||||
|     @Operation(summary = "查询详情", description = "查询详情") | ||||
|     @Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH) | ||||
|     @ResponseBody | ||||
|     @GetMapping("/{id}") | ||||
|     public D detail(@PathVariable("id") Long id) { | ||||
|         return baseService.get(id); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增 | ||||
|      * | ||||
|      * @param req 创建参数 | ||||
|      * @return ID | ||||
|      */ | ||||
|     @CrudApi(Api.ADD) | ||||
|     @Operation(summary = "新增数据", description = "新增数据") | ||||
|     @ResponseBody | ||||
|     @PostMapping | ||||
|     public BaseIdResp<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody C req) { | ||||
|         return new BaseIdResp<>(baseService.add(req)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改 | ||||
|      * | ||||
|      * @param req 修改参数 | ||||
|      * @param id  ID | ||||
|      */ | ||||
|     @CrudApi(Api.UPDATE) | ||||
|     @Operation(summary = "修改数据", description = "修改数据") | ||||
|     @Parameter(name = "id", description = "ID", example = "1", in = ParameterIn.PATH) | ||||
|     @ResponseBody | ||||
|     @PutMapping("/{id}") | ||||
|     public void update(@Validated(ValidateGroup.Crud.Update.class) @RequestBody C req, @PathVariable("id") Long id) { | ||||
|         baseService.update(req, id); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除 | ||||
|      * | ||||
|      * @param ids ID 列表 | ||||
|      */ | ||||
|     @CrudApi(Api.DELETE) | ||||
|     @Operation(summary = "删除数据", description = "删除数据") | ||||
|     @Parameter(name = "ids", description = "ID 列表", example = "1,2", in = ParameterIn.PATH) | ||||
|     @ResponseBody | ||||
|     @DeleteMapping("/{ids}") | ||||
|     public void delete(@PathVariable("ids") List<Long> ids) { | ||||
|         baseService.delete(ids); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 导出 | ||||
|      * | ||||
|      * @param query     查询条件 | ||||
|      * @param sortQuery 排序查询条件 | ||||
|      * @param response  响应对象 | ||||
|      */ | ||||
|     @CrudApi(Api.EXPORT) | ||||
|     @ExcludeFromGracefulResponse | ||||
|     @Operation(summary = "导出数据", description = "导出数据") | ||||
|     @GetMapping("/export") | ||||
|     public void export(Q query, SortQuery sortQuery, HttpServletResponse response) { | ||||
|         baseService.export(query, sortQuery, response); | ||||
|     } | ||||
| } | ||||
| @@ -14,7 +14,7 @@ | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| 
 | ||||
| package top.continew.starter.extension.crud.service.impl; | ||||
| package top.continew.starter.extension.crud.service; | ||||
| 
 | ||||
| import cn.crane4j.core.support.OperateTemplate; | ||||
| import cn.hutool.core.bean.BeanUtil; | ||||
| @@ -51,7 +51,6 @@ import top.continew.starter.extension.crud.model.query.PageQuery; | ||||
| import top.continew.starter.extension.crud.model.query.SortQuery; | ||||
| import top.continew.starter.extension.crud.model.resp.LabelValueResp; | ||||
| import top.continew.starter.extension.crud.model.resp.PageResp; | ||||
| import top.continew.starter.extension.crud.service.BaseService; | ||||
| import top.continew.starter.file.excel.util.ExcelUtils; | ||||
| 
 | ||||
| import java.lang.reflect.Field; | ||||
		Reference in New Issue
	
	Block a user