Skip to content

Commit f38b366

Browse files
committed
增加 save or update
1 parent fac2554 commit f38b366

File tree

3 files changed

+55
-18
lines changed

3 files changed

+55
-18
lines changed

hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-api/src/main/java/org/hswebframework/web/service/form/DynamicFormOperationService.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* @since 3.0
1515
*/
1616
public interface DynamicFormOperationService {
17+
String idProperty = "id";
18+
1719
<T> PagerResult<T> selectPager(String formId, QueryParamEntity paramEntity);
1820

1921
<T> T selectSingle(String formId, QueryParamEntity paramEntity);
@@ -24,13 +26,15 @@ public interface DynamicFormOperationService {
2426

2527
<T> int update(String formId, UpdateParamEntity<T> paramEntity);
2628

27-
<T> T updateById(String formId, String id, T data);
29+
<T> T updateById(String formId, Object id, T data);
30+
31+
<T> T insert(String formId, T entity);
2832

29-
<T> void insert(String formId, T entity);
33+
<T> T saveOrUpdate(String formId, T entity);
3034

3135
int delete(String formId, DeleteParamEntity paramEntity);
3236

33-
int deleteById(String formId, String id);
37+
int deleteById(String formId, Object id);
3438

3539

3640
}

hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-local/src/main/java/org/hswebframework/web/service/form/simple/SimpleDynamicFormOperationService.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import org.hswebframework.ezorm.rdb.RDBQuery;
99
import org.hswebframework.ezorm.rdb.RDBTable;
1010
import org.hswebframework.web.NotFoundException;
11+
import org.hswebframework.web.bean.FastBeanCopier;
1112
import org.hswebframework.web.commons.entity.PagerResult;
1213
import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
1314
import org.hswebframework.web.commons.entity.param.QueryParamEntity;
@@ -25,7 +26,9 @@
2526
import org.springframework.util.StringUtils;
2627

2728
import java.sql.SQLException;
29+
import java.util.HashMap;
2830
import java.util.List;
31+
import java.util.Map;
2932
import java.util.Objects;
3033

3134
@Service("dynamicFormOperationService")
@@ -114,11 +117,30 @@ public <T> int update(String formId, UpdateParamEntity<T> paramEntity) {
114117

115118
@Override
116119
@SneakyThrows
117-
public <T> void insert(String formId, T entity) {
120+
public <T> T insert(String formId, T entity) {
118121
RDBTable<T> table = getTable(formId);
119122
Insert<T> insert = table.createInsert();
120123
eventPublisher.publishEvent(new FormDataInsertBeforeEvent<>(formId, table, entity));
121124
insert.value(entity).exec();
125+
return entity;
126+
}
127+
128+
@Override
129+
@SneakyThrows
130+
public <T> T saveOrUpdate(String formId, T entity) {
131+
132+
Map<String, Object> map = FastBeanCopier.copy(entity, new HashMap<>(), FastBeanCopier.include(idProperty));
133+
134+
Object id = map.get(idProperty);
135+
if (id == null) {
136+
return insert(formId, entity);
137+
}
138+
int total = getTable(formId).createQuery().where(idProperty, id).total();
139+
if (total > 0) {
140+
return updateById(formId, String.valueOf(id), entity);
141+
}
142+
143+
return insert(formId, entity);
122144
}
123145

124146
@Override
@@ -134,21 +156,21 @@ public int delete(String formId, DeleteParamEntity paramEntity) {
134156

135157
@Override
136158
@SneakyThrows
137-
public int deleteById(String formId, String id) {
159+
public int deleteById(String formId, Object id) {
138160
Objects.requireNonNull(id, "主键不能为空");
139161
RDBTable table = getTable(formId);
140-
return table.createDelete().where("id", id).exec();
162+
return table.createDelete().where(idProperty, id).exec();
141163
}
142164

143165
@Override
144166
@SneakyThrows
145-
public <T> T updateById(String formId, String id, T data) {
167+
public <T> T updateById(String formId, Object id, T data) {
146168
Objects.requireNonNull(id, "主键不能为空");
147169
RDBTable<T> table = getTable(formId);
148170
eventPublisher.publishEvent(new FormDataUpdateBeforeEvent<>(formId, table, data, id));
149171
table.createUpdate()
150172
.set(data)
151-
.where("id", id)
173+
.where(idProperty, id)
152174
.exec();
153175
return data;
154176
}

hsweb-system/hsweb-system-dynamic-form/hsweb-system-dynamic-form-web/src/main/java/org/hswebframework/web/controller/form/DynamicFormOperationController.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,18 @@
22

33
import io.swagger.annotations.Api;
44
import io.swagger.annotations.ApiOperation;
5+
import io.swagger.annotations.ResponseHeader;
56
import org.hswebframework.web.authorization.Permission;
67
import org.hswebframework.web.authorization.annotation.Authorize;
8+
import org.hswebframework.web.authorization.annotation.Logical;
79
import org.hswebframework.web.commons.entity.PagerResult;
810
import org.hswebframework.web.commons.entity.param.DeleteParamEntity;
911
import org.hswebframework.web.commons.entity.param.QueryParamEntity;
1012
import org.hswebframework.web.commons.entity.param.UpdateParamEntity;
1113
import org.hswebframework.web.controller.message.ResponseMessage;
1214
import org.hswebframework.web.service.form.DynamicFormOperationService;
1315
import org.springframework.beans.factory.annotation.Autowired;
16+
import org.springframework.http.HttpStatus;
1417
import org.springframework.web.bind.annotation.*;
1518

1619
import java.util.List;
@@ -45,7 +48,7 @@ public ResponseMessage<PagerResult<Object>> selectPager(@PathVariable String for
4548
@GetMapping("/{formId}/no-paging")
4649
@ApiOperation("不分页动态查询")
4750
@Authorize(action = Permission.ACTION_QUERY)
48-
public ResponseMessage<List<Object>> select(@PathVariable String formId, QueryParamEntity paramEntity) {
51+
public ResponseMessage<List<Object>> selectNoPaging(@PathVariable String formId, QueryParamEntity paramEntity) {
4952
paramEntity.setPaging(false);
5053
return ResponseMessage.ok(dynamicFormOperationService.select(formId, paramEntity));
5154
}
@@ -67,34 +70,42 @@ public ResponseMessage<Object> selectCount(@PathVariable String formId, QueryPar
6770
@PostMapping("/{formId}")
6871
@ApiOperation("新增")
6972
@Authorize(action = Permission.ACTION_ADD)
73+
@ResponseStatus(HttpStatus.CREATED)
7074
public ResponseMessage<Map<String, Object>> add(@PathVariable String formId,
7175
@RequestBody Map<String, Object> data) {
72-
dynamicFormOperationService.insert(formId, data);
73-
return ResponseMessage.ok(data);
76+
return ResponseMessage.ok(dynamicFormOperationService.insert(formId, data));
77+
}
78+
79+
@PatchMapping("/{formId}")
80+
@ApiOperation("新增或者修改")
81+
@Authorize(action = {Permission.ACTION_ADD, Permission.ACTION_UPDATE}, logical = Logical.OR)
82+
public ResponseMessage<Object> saveOrUpdate(@PathVariable String formId,
83+
@RequestBody Map<String, Object> data) {
84+
return ResponseMessage.ok(dynamicFormOperationService.saveOrUpdate(formId, data));
7485
}
7586

7687
@PutMapping("/{formId}")
7788
@ApiOperation("动态修改")
7889
@Authorize(action = Permission.ACTION_UPDATE)
79-
public ResponseMessage<Integer> update(@PathVariable String formId,
80-
@RequestBody UpdateParamEntity<Map<String, Object>> paramEntity) {
90+
public ResponseMessage<Integer> dynamicUpdate(@PathVariable String formId,
91+
@RequestBody UpdateParamEntity<Map<String, Object>> paramEntity) {
8192
return ResponseMessage.ok(dynamicFormOperationService.update(formId, paramEntity));
8293
}
8394

8495
@PutMapping("/{formId}/{id}")
8596
@ApiOperation("根据主键修改")
8697
@Authorize(action = Permission.ACTION_UPDATE)
87-
public ResponseMessage<Map<String, Object>> update(@PathVariable String formId,
88-
@PathVariable String id,
89-
@RequestBody Map<String, Object> param) {
98+
public ResponseMessage<Map<String, Object>> updateById(@PathVariable String formId,
99+
@PathVariable String id,
100+
@RequestBody Map<String, Object> param) {
90101
return ResponseMessage.ok(dynamicFormOperationService.updateById(formId, id, param));
91102
}
92103

93104
@DeleteMapping("/{formId}/{id}")
94105
@ApiOperation("根据主键删除")
95106
@Authorize(action = Permission.ACTION_DELETE)
96-
public ResponseMessage<Integer> delete(@PathVariable String formId,
97-
@PathVariable String id) {
107+
public ResponseMessage<Integer> deleteById(@PathVariable String formId,
108+
@PathVariable String id) {
98109
return ResponseMessage.ok(dynamicFormOperationService.deleteById(formId, id));
99110
}
100111
}

0 commit comments

Comments
 (0)