From 131c6c82b5e80b7561ec96c10fd61b17af99a4c0 Mon Sep 17 00:00:00 2001 From: lyf666 Date: Mon, 20 Feb 2017 13:36:55 +0800 Subject: [PATCH] . --- pom.xml | 4 +- src/main/java/cn/cloudowr/dict/Config.java | 8 +- .../java/cn/cloudowr/dict/Controller.java | 121 +++++++++++++++++- src/main/webapp/doc/api.txt | 26 ++++ 4 files changed, 155 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index e9eb004..58a3ac1 100644 --- a/pom.xml +++ b/pom.xml @@ -74,7 +74,7 @@ com.alibaba fastjson - 1.2.6 + 1.2.24 org.mongodb @@ -84,7 +84,7 @@ cn.cloudowr sdk - 1.1.1 + 1.2.3 \ No newline at end of file diff --git a/src/main/java/cn/cloudowr/dict/Config.java b/src/main/java/cn/cloudowr/dict/Config.java index 155a043..3978f5b 100644 --- a/src/main/java/cn/cloudowr/dict/Config.java +++ b/src/main/java/cn/cloudowr/dict/Config.java @@ -1,7 +1,13 @@ package cn.cloudowr.dict; import cn.cloudowr.sdk.JQueryParameterFilter; +import cn.cloudowr.sdk.jfinal.ErrorInterceptor; +import cn.cloudowr.sdk.jfinal.ErrorRender; +import com.jfinal.aop.Interceptor; +import com.jfinal.aop.Invocation; import com.jfinal.config.*; +import com.jfinal.core.ActionException; +import com.jfinal.render.Render; import com.jfinal.template.Engine; import com.mongodb.MongoClient; import com.mongodb.MongoCredential; @@ -40,11 +46,11 @@ public class Config extends com.jfinal.config.JFinalConfig{ @Override public void configInterceptor(Interceptors me) { me.add(new JQueryParameterFilter()); + me.add(new ErrorInterceptor()); } @Override public void configHandler(Handlers me) { - } @Override diff --git a/src/main/java/cn/cloudowr/dict/Controller.java b/src/main/java/cn/cloudowr/dict/Controller.java index dbc9f32..35e1d15 100644 --- a/src/main/java/cn/cloudowr/dict/Controller.java +++ b/src/main/java/cn/cloudowr/dict/Controller.java @@ -2,6 +2,7 @@ package cn.cloudowr.dict; import cn.cloudowr.sdk.FastJSONUtil; import cn.cloudowr.sdk.IdInterceptor; +import cn.cloudowr.sdk.jfinal.RestfulStyle; import com.jfinal.aop.Before; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -21,11 +22,128 @@ import java.util.Map; /** * Created by lyf66 on 2017/2/16. */ -public class Controller extends com.jfinal.core.Controller { +public class Controller extends cn.cloudowr.sdk.jfinal.Controller implements RestfulStyle { + + @Override + public void index() { + int pageSize = getParaToInt("pageSize", 20); + int pageNum = getParaToInt("pageNum", 1); + String json = getPara("json"); + Document document = null; + if (json != null) { + document = Document.parse(json); + } + + List filter = new ArrayList<>(); + if (document != null) { + document.forEach((key, value) -> { + filter.add(Filters.eq(key, value)); + }); + } + + List result = new ArrayList<>(); + if (filter.size() != 0) { + getCollection().find(Filters.and(filter)).skip(pageSize * (pageNum - 1)).limit(pageSize).into(result); + } else { + getCollection().find().skip(pageSize * (pageNum - 1)).limit(pageSize).into(result); + } + renderJson(result); + } + + @Override + @Before(IdInterceptor.class) + public void show() { + Document document = getCollection().find(Filters.eq("_id", new ObjectId(getPara("id")))).first(); + renderJson(document); + } + + @Override + public void save() { + String json = getPara("json"); + Document document = null; + try { + document = Document.parse(json); + } catch (Exception e) { + renderError(400, "invalid json"); + return; + } + getCollection().insertOne(document); + renderJson(document); + } + + @Override + @Before(IdInterceptor.class) + public void update() { + String id = getPara("id"); + String json = getPara("json"); + + Document document = null; + try { + document = Document.parse(json); + } catch (Exception e) { + renderError(400, "invalid json"); + return; + } + + Document filterDoc = document.get("filter", Document.class); + List filterOps = new ArrayList<>(); + filterDoc.forEach((key, value) -> { + if ("id".equals(key) || "_id".equals(key)) return; + filterOps.add(Filters.eq(key, value)); + }); + + Document updateDoc = document.get("update", Document.class); + List updateOps = new ArrayList<>(); + Document $set = updateDoc.get("$set", Document.class); + if ($set != null) { + $set.forEach((key, value) -> { + updateOps.add(Updates.set(key, value)); + }); + } + List $unset = updateDoc.get("$unset", List.class); + if ($unset != null) { + for (Object o : $unset) { + updateOps.add(Updates.unset(o.toString())); + } + } + Document $rename = updateDoc.get("$rename", Document.class); + if ($rename != null) { + $rename.forEach((oldKey, newKey) -> { + updateOps.add(Updates.rename(oldKey, newKey.toString())); + }); + } + Bson combine = Updates.combine(updateOps); + UpdateResult updateResult = getCollection().updateOne( + Filters.eq("_id", new ObjectId(id)), + combine + ); + renderJson("result", updateResult.getMatchedCount() >= 1); + } + + @Override + @Before(IdInterceptor.class) + public void delete() { + String id = getPara("id"); + + DeleteResult deleteResult = getCollection().deleteOne( + Filters.eq("_id", new ObjectId(id)) + ); + renderJson("result", deleteResult.getDeletedCount() == 1); + } + public void ping() { renderText("dict pong"); } + + + + + + + + + public void dict() { Map paraMap = getParaMap(); List ops = new ArrayList<>(); @@ -143,4 +261,5 @@ public class Controller extends com.jfinal.core.Controller { MongoCollection collection = mongoDataBase.getCollection("dict"); return collection; } + } diff --git a/src/main/webapp/doc/api.txt b/src/main/webapp/doc/api.txt index d6b8380..6e54bde 100644 --- a/src/main/webapp/doc/api.txt +++ b/src/main/webapp/doc/api.txt @@ -1,3 +1,29 @@ +index ( + pageSize optional default 20, + pageNum optional default 1, + json optional + ) { + return dict list json +} +show (id required) { + return dict json +} +save (json required) { + return saved dict json with id +} +update (id required, json required) { + return {result : true or false} +} +delete (id required) { + return {result: true or false} +} + + + + + + +@Deprecated dict (key-value pairs) { return dict list json }