Skip to content

Commit e662d60

Browse files
committed
部分api增加swagger
1 parent 269367c commit e662d60

File tree

28 files changed

+465
-76
lines changed

28 files changed

+465
-76
lines changed

hsweb-commons/hsweb-commons-controller/pom.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@
5757
<groupId>org.springframework</groupId>
5858
<artifactId>spring-webmvc</artifactId>
5959
</dependency>
60-
60+
<dependency>
61+
<groupId>org.hswebframework.web</groupId>
62+
<artifactId>hsweb-commons-model</artifactId>
63+
<version>${project.version}</version>
64+
</dependency>
6165
</dependencies>
6266
</project>

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/CreateController.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@
1717

1818
package org.hswebframework.web.controller;
1919

20+
import io.swagger.annotations.ApiOperation;
21+
import io.swagger.annotations.ApiResponse;
22+
import io.swagger.annotations.ApiResponses;
2023
import org.hswebframework.web.authorization.Permission;
2124
import org.hswebframework.web.authorization.annotation.Authorize;
2225
import org.hswebframework.web.controller.message.ResponseMessage;
2326
import org.hswebframework.web.logging.AccessLogger;
27+
import org.hswebframework.web.service.CreateEntityService;
2428
import org.hswebframework.web.service.InsertService;
2529
import org.springframework.http.HttpStatus;
2630
import org.springframework.web.bind.annotation.PostMapping;
@@ -40,15 +44,24 @@
4044
* @author zhouhao
4145
* @since 3.0
4246
*/
43-
public interface CreateController<E, PK> {
47+
public interface CreateController<E, PK, M> {
4448

45-
InsertService<E, PK> getService();
49+
<S extends InsertService<E, PK> & CreateEntityService<E>> S getService();
4650

4751
@Authorize(action = Permission.ACTION_ADD)
4852
@PostMapping
4953
@AccessLogger("{action_add}")
5054
@ResponseStatus(HttpStatus.CREATED)
51-
default ResponseMessage add(@RequestBody E data) {
52-
return ok(getService().insert(data));
55+
@ApiOperation(value = "创建数据")
56+
@ApiResponses({
57+
@ApiResponse(code = 201, message = "创建成功,返回创建数据的ID"),
58+
@ApiResponse(code = 401, message = "未授权"),
59+
@ApiResponse(code = 403, message = "无权限")
60+
})
61+
default ResponseMessage<PK> add(@RequestBody M data) {
62+
E entity = getService().createEntity();
63+
return ok(getService().insert(modelToEntity(data, entity)));
5364
}
65+
66+
E modelToEntity(M model, E entity);
5467
}

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/CrudController.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import org.hswebframework.web.commons.entity.Entity;
2222
import org.hswebframework.web.service.CrudService;
23+
import org.springframework.beans.BeanUtils;
2324

2425
/**
2526
* 通用增删改查控制器
@@ -32,10 +33,18 @@
3233
* @see CrudService
3334
* @since 3.0
3435
*/
35-
public interface CrudController<E, PK, Q extends Entity>
36-
extends QueryController<E, PK, Q>, UpdateController<E, PK>, CreateController<E, PK>, DeleteController<PK> {
36+
public interface CrudController<E, PK, Q extends Entity, M>
37+
extends QueryController<E, PK, Q>
38+
, UpdateController<E, PK, M>
39+
, CreateController<E, PK, M>
40+
, DeleteController<PK> {
3741

3842
@SuppressWarnings("unchecked")
3943
CrudService<E, PK> getService();
4044

45+
@Override
46+
default E modelToEntity(M model, E entity) {
47+
BeanUtils.copyProperties(model, entity);
48+
return entity;
49+
}
4150
}

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/DeleteController.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
package org.hswebframework.web.controller;
1919

20+
import io.swagger.annotations.ApiOperation;
21+
import io.swagger.annotations.ApiResponse;
22+
import io.swagger.annotations.ApiResponses;
2023
import org.hswebframework.web.authorization.Permission;
2124
import org.hswebframework.web.authorization.annotation.Authorize;
2225
import org.hswebframework.web.controller.message.ResponseMessage;
@@ -37,8 +40,15 @@ public interface DeleteController<PK> {
3740
DeleteService<PK> getService();
3841

3942
@Authorize(action = Permission.ACTION_DELETE)
40-
@DeleteMapping(path = "/{id}")
43+
@DeleteMapping(path = "/{id:.+}")
4144
@AccessLogger("{delete_by_primary_key}")
45+
@ApiOperation("根据ID删除数据")
46+
@ApiResponses({
47+
@ApiResponse(code = 200, message = "删除成功"),
48+
@ApiResponse(code = 401, message = "未授权"),
49+
@ApiResponse(code = 403, message = "无权限"),
50+
@ApiResponse(code = 404, message = "要删除的数据不存在")
51+
})
4252
default ResponseMessage deleteByPrimaryKey(@PathVariable PK id) {
4353
return ok(getService().deleteByPk(id));
4454
}

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/GenericEntityController.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,19 @@
1818

1919
package org.hswebframework.web.controller;
2020

21+
import io.swagger.annotations.ApiOperation;
22+
import io.swagger.annotations.ApiResponse;
23+
import io.swagger.annotations.ApiResponses;
24+
import org.hswebframework.web.authorization.Permission;
25+
import org.hswebframework.web.authorization.annotation.Authorize;
2126
import org.hswebframework.web.commons.entity.Entity;
2227
import org.hswebframework.web.commons.entity.GenericEntity;
28+
import org.hswebframework.web.controller.message.ResponseMessage;
29+
import org.hswebframework.web.logging.AccessLogger;
2330
import org.hswebframework.web.service.CrudService;
31+
import org.springframework.web.bind.annotation.PatchMapping;
32+
import org.springframework.web.bind.annotation.PathVariable;
33+
import org.springframework.web.bind.annotation.RequestBody;
2434

2535
/**
2636
* 通用实体的增删改查控制器
@@ -30,8 +40,24 @@
3040
* @see CrudController
3141
* @see CrudService
3242
*/
33-
public interface GenericEntityController<E extends GenericEntity<PK>, PK, Q extends Entity>
34-
extends CrudController<E, PK, Q> {
43+
public interface GenericEntityController<E extends GenericEntity<PK>, PK, Q extends Entity, M>
44+
extends CrudController<E, PK, Q, M> {
3545

3646
CrudService<E, PK> getService();
47+
48+
@Authorize(action = {Permission.ACTION_UPDATE, Permission.ACTION_ADD})
49+
@PatchMapping(path = "/{id}")
50+
@AccessLogger("{save_or_update}")
51+
@ApiOperation("根据ID修改数据,如果数据不存在则新增一条数据")
52+
@ApiResponses({
53+
@ApiResponse(code = 200, message = "修改(新增)成功,返回数据ID"),
54+
@ApiResponse(code = 401, message = "未授权"),
55+
@ApiResponse(code = 403, message = "无权限"),
56+
@ApiResponse(code = 409, message = "存在重复的资源")
57+
})
58+
default ResponseMessage saveOrUpdate(@PathVariable PK id, @RequestBody M data) {
59+
E entity = getService().createEntity();
60+
entity.setId(id);
61+
return ResponseMessage.ok(getService().saveOrUpdate(modelToEntity(data, entity)));
62+
}
3763
}

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/QueryController.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@
1717

1818
package org.hswebframework.web.controller;
1919

20+
import io.swagger.annotations.ApiOperation;
21+
import io.swagger.annotations.ApiResponse;
22+
import io.swagger.annotations.ApiResponses;
2023
import org.hswebframework.web.NotFoundException;
2124
import org.hswebframework.web.authorization.Permission;
2225
import org.hswebframework.web.authorization.annotation.Authorize;
2326
import org.hswebframework.web.commons.entity.Entity;
27+
import org.hswebframework.web.commons.entity.PagerResult;
2428
import org.hswebframework.web.commons.entity.param.QueryParamEntity;
2529
import org.hswebframework.web.controller.message.ResponseMessage;
2630
import org.hswebframework.web.logging.AccessLogger;
@@ -64,18 +68,31 @@ public interface QueryController<E, PK, Q extends Entity> {
6468
@Authorize(action = Permission.ACTION_QUERY)
6569
@GetMapping
6670
@AccessLogger("{dynamic_query}")
67-
default ResponseMessage list(Q param) {
71+
@ApiOperation("根据动态条件查询数据")
72+
@ApiResponses({
73+
@ApiResponse(code = 200, message = "查询成功"),
74+
@ApiResponse(code = 401, message = "未授权"),
75+
@ApiResponse(code = 403, message = "无权限")
76+
})
77+
default ResponseMessage<PagerResult<E>> list(Q param) {
6878
return ok(getService().selectPager(param));
6979
}
7080

7181
@Authorize(action = Permission.ACTION_GET)
72-
@GetMapping(path = "/{id}")
82+
@GetMapping(path = "/{id:.+}")
7383
@AccessLogger("{get_by_id}")
74-
default ResponseMessage getByPrimaryKey(@PathVariable PK id) {
84+
@ApiOperation("根据主键查询数据")
85+
@ApiResponses({
86+
@ApiResponse(code = 200, message = "查询成功"),
87+
@ApiResponse(code = 401, message = "未授权"),
88+
@ApiResponse(code = 403, message = "无权限"),
89+
@ApiResponse(code = 404, message = "数据不存在")
90+
})
91+
default ResponseMessage<E> getByPrimaryKey(@PathVariable PK id) {
7592
return ok(assertNotNull(getService().selectByPk(id)));
7693
}
7794

78-
static Object assertNotNull(Object obj) {
95+
static <T> T assertNotNull(T obj) {
7996
if (null == obj) throw new NotFoundException("{data_not_exist}");
8097
return obj;
8198
}

hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/UpdateController.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,14 @@
1818
package org.hswebframework.web.controller;
1919

2020

21+
import io.swagger.annotations.ApiOperation;
22+
import io.swagger.annotations.ApiResponse;
23+
import io.swagger.annotations.ApiResponses;
2124
import org.hswebframework.web.authorization.Permission;
2225
import org.hswebframework.web.authorization.annotation.Authorize;
2326
import org.hswebframework.web.controller.message.ResponseMessage;
2427
import org.hswebframework.web.logging.AccessLogger;
28+
import org.hswebframework.web.service.CreateEntityService;
2529
import org.hswebframework.web.service.UpdateService;
2630
import org.springframework.web.bind.annotation.PathVariable;
2731
import org.springframework.web.bind.annotation.PutMapping;
@@ -32,13 +36,33 @@
3236
*
3337
* @author zhouhao
3438
*/
35-
public interface UpdateController<E, PK> {
36-
UpdateService<E, PK> getService();
39+
public interface UpdateController<E, PK, M> {
40+
<S extends UpdateService<E, PK> & CreateEntityService<E>> S getService();
3741

3842
@Authorize(action = Permission.ACTION_UPDATE)
3943
@PutMapping(path = "/{id}")
4044
@AccessLogger("{update_by_primary_key}")
41-
default ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody E data) {
42-
return ResponseMessage.ok(getService().updateByPk(id, data));
45+
@ApiOperation("根据ID修改数据")
46+
@ApiResponses({
47+
@ApiResponse(code = 200, message = "修改成功"),
48+
@ApiResponse(code = 401, message = "未授权"),
49+
@ApiResponse(code = 403, message = "无权限"),
50+
@ApiResponse(code = 404, message = "要修改的数据不存在"),
51+
@ApiResponse(code = 409, message = "存在重复的资源")
52+
})
53+
default ResponseMessage updateByPrimaryKey(@PathVariable PK id, @RequestBody M data) {
54+
E entity = getService().createEntity();
55+
return ResponseMessage.ok(getService().updateByPk(id, modelToEntity(data, entity)));
4356
}
57+
58+
/**
59+
* 将model转为entity
60+
*
61+
* @param model
62+
* @param entity
63+
* @return 转换后的结果
64+
* @see org.hswebframework.web.commons.model.Model
65+
* @see org.hswebframework.web.commons.entity.Entity
66+
*/
67+
E modelToEntity(M model, E entity);
4468
}

0 commit comments

Comments
 (0)