Skip to content

Commit b9c3108

Browse files
新增支持假删除
1、access表新增字段 `deletedKey` varchar(255) DEFAULT NULL COMMENT '假删除字段名', `deletedValue` int(11) DEFAULT NULL COMMENT '假删除, 删除状态,字段值', 2、DemoSQLConfig 实现isFakeDelete()、onFakeDelete()方法 isFakeDelete() //是否启用假删除 onFakeDelete() //​假删除需要更新的其他字段,比如:删除时间 deletedTime 之类的 3、业务侧 如果启用假删除,不要忘记数据库表添加 deletedKey、onFakeDelete() 字段
1 parent d4ee7e8 commit b9c3108

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/main/java/apijson/framework/APIJSONSQLConfig.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static apijson.framework.APIJSONConstant.USER_ID;
2121

2222
import java.util.List;
23+
import java.util.Map;
2324

2425
import com.alibaba.fastjson.JSONObject;
2526
import com.alibaba.fastjson.annotation.JSONField;
@@ -253,5 +254,13 @@ public static SQLConfig newSQLConfig(RequestMethod method, String table, String
253254
return newSQLConfig(method, table, alias, request, joinList, isProcedure, SIMPLE_CALLBACK);
254255
}
255256

257+
@Override
258+
public boolean isFakeDelete() {
259+
return false;
260+
}
256261

262+
@Override
263+
public void onFakeDelete(Map<String, Object> map) {
264+
265+
}
257266
}

src/main/java/apijson/framework/APIJSONVerifier.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ public static <T> JSONObject initAccess(boolean shutdownWhenServerError, APIJSON
182182
Log.d(TAG, "initAccess < for ACCESS_MAP.size() = " + ACCESS_MAP.size() + " <<<<<<<<<<<<<<<<<<<<<<<<");
183183

184184
Map<String, Map<RequestMethod, String[]>> newMap = new LinkedHashMap<>();
185+
Map<String, Map<String, Object>> fakeDeleteMap = new LinkedHashMap<>();
185186
Map<String, String> newTKMap = new LinkedHashMap<>();
186187

187188
for (int i = 0; i < size; i++) {
@@ -198,9 +199,18 @@ public static <T> JSONObject initAccess(boolean shutdownWhenServerError, APIJSON
198199
map.put(RequestMethod.POST, JSON.parseObject(item.getString("post"), String[].class));
199200
map.put(RequestMethod.PUT, JSON.parseObject(item.getString("put"), String[].class));
200201
map.put(RequestMethod.DELETE, JSON.parseObject(item.getString("delete"), String[].class));
201-
202+
202203
String name = item.getString("name");
203204
String alias = item.getString("alias");
205+
206+
Map<String, Object> fakemap = new HashMap<>();
207+
if(StringUtil.isNotEmpty(item.getString("deletedKey"), true)) {
208+
if (StringUtil.isEmpty(item.getString("deletedValue"), true)) {
209+
onServerError("Access表 id= "+ item.getString("id") +", deletedKey,deletedValue 的值不能为空!", shutdownWhenServerError);
210+
}
211+
fakemap.put("deletedKey", item.getString("deletedKey"));
212+
fakemap.put("deletedValue", item.getString("deletedValue"));
213+
}
204214

205215
/**TODO
206216
* 以下判断写得比较复杂,因为表设计不够好,但为了兼容旧版 APIJSON 服务 和 APIAuto 工具而保留了下来。
@@ -217,24 +227,28 @@ public static <T> JSONObject initAccess(boolean shutdownWhenServerError, APIJSON
217227
}
218228

219229
newMap.put(name, map);
230+
fakeDeleteMap.put(name, fakemap);
220231
}
221232
else {
222233
if (JSONRequest.isTableKey(alias) == false) {
223234
onServerError("alias: " + alias + "不合法!字段 alias 的值只能为 空 或者 合法表名!", shutdownWhenServerError);
224235
}
225236

226237
newMap.put(alias, map);
238+
fakeDeleteMap.put(alias, fakemap);
227239
}
228240

229241
newTKMap.put(alias, name);
230242
}
231243

232244
if (isAll) { // 全量更新
233245
ACCESS_MAP = newMap;
246+
ACCESS_FAKE_DELETE_MAP = fakeDeleteMap;
234247
APIJSONSQLConfig.TABLE_KEY_MAP = newTKMap;
235248
}
236249
else {
237250
ACCESS_MAP.putAll(newMap);
251+
ACCESS_FAKE_DELETE_MAP.putAll(fakeDeleteMap);
238252
APIJSONSQLConfig.TABLE_KEY_MAP.putAll(newTKMap);
239253
}
240254

0 commit comments

Comments
 (0)