diff --git a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
index 3b4518b..130b35f 100644
--- a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
+++ b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/controller/api/CrudApiController.java
@@ -19,8 +19,6 @@
 import com.supwisdom.leaveschool.common.repository.BaseJpaRepository;
 import com.supwisdom.leaveschool.common.util.DomainUtils;
 
-import io.swagger.annotations.ApiOperation;
-
 public abstract class CrudApiController<D extends ABaseDomain, R extends BaseJpaRepository<D>> {
   
   protected abstract R getRepository();
@@ -72,7 +70,6 @@
   @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   @ResponseStatus(value = HttpStatus.OK)
   @ResponseBody
-  @ApiOperation(value="分页查询",notes="注意问题点")
   public PagerResponseModel<D> list(PagerRequestModel pagerRequestModel) {
     
     Page<D> page = getRepository().selectPageList(pagerRequestModel.getPageIndex(), pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
@@ -133,7 +130,6 @@
   @GetMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   @ResponseStatus(value = HttpStatus.OK)
   @ResponseBody
-  @ApiOperation(value="根据id查询",notes="注意问题点")
   public D get(@PathVariable("id") String id) {
     
     if (id == null || id.length() == 0) {
@@ -187,7 +183,6 @@
   @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   @ResponseStatus(value = HttpStatus.OK)
   @ResponseBody
-  @ApiOperation(value="新增",notes="注意问题点")
   public SuccessResponseModel create(@RequestBody D d) {
     
     @SuppressWarnings("unused")
@@ -254,7 +249,6 @@
   @PutMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   @ResponseStatus(value = HttpStatus.OK)
   @ResponseBody
-  @ApiOperation(value="更新",notes="注意问题点")
   public SuccessResponseModel update(@RequestBody D d) {
     
     if (d.getId() == null || d.getId().length() == 0) {
@@ -315,7 +309,6 @@
   @DeleteMapping(path = "/{id}", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
   @ResponseStatus(value = HttpStatus.OK)
   @ResponseBody
-  @ApiOperation(value="删除",notes="注意问题点")
   public SuccessResponseModel delete(@PathVariable("id") String id) {
     
     if (id == null || id.length() == 0) {
