diff --git a/root/index.html b/root/index.html
index 02fed0d..e990677 100644
--- a/root/index.html
+++ b/root/index.html
@@ -30,15 +30,15 @@
-
+
+ 退出
+
-
- root
-
+
@@ -111,11 +111,14 @@
{name: "关于", url: "/single/about.html"}
],
- menus: red.getData("menus", [
- {url:"/qtask/plat.html", name:"业务平台"},
- {url:"/qtask/list.html", name:"QTask"},
- {url:"/qtask/debug.html", name:"QT-Debug"},
- ]),
+ menus: red.getData("menus", {name: "MetaData", url: "/meta", nodes: [
+ /*{url:"/metadata/metatable/list.html", name:"TableList"},*/
+ {url:"/metadata/metatable/metaTable.html", name:"MetaTable"},
+ /*{url:"/metadata/metaLink.html", name:"MetaLink"},*/
+ {url:"/metadata/metaService.html", name:"MetaService"},
+ {url:"/metadata/dataList.html", name:"数据查询"},
+ ]
+ }),
page: red.getData("page", {url:"/qtask/list.html", name:"QTask"}),
pageId: red.getData("pageId", "QTask")
},
@@ -143,6 +146,14 @@
loadMain: function (item) {
this.menus = item.nodes || [item];
this.pageId = item.name;
+ },
+ logout: function () {
+ red.getJSON("/user/logout",{}, function () {
+ red.showMsg({msg:"退出成功"});
+ setTimeout(() => {
+ location.href = "/user/login.html";
+ }, 2000)
+ })
}
},
mounted: function () {
diff --git a/root/metadata/metaService.html b/root/metadata/metaService.html
index 46820d2..ea90317 100644
--- a/root/metadata/metaService.html
+++ b/root/metadata/metaService.html
@@ -7,6 +7,8 @@
.tlist>li.active>a:hover,
.tlist>li>a:hover {
background-color: #92b0cb;
+ border-bottom: 2px solid #607d8b;
+ color: #fff;
}
diff --git a/root/res/css/red-kit.css b/root/res/css/red-kit.css
index 4b280db..f146ab3 100644
--- a/root/res/css/red-kit.css
+++ b/root/res/css/red-kit.css
@@ -28,21 +28,23 @@ body {
}
#top a {
color: #ddd;
+ font-size: 15px;
}
#top .nav-tabs{
border-bottom:0;
}
-.nav-tabs>li>a{
+#top>.nav-tabs>li>a{
border: 0;
- font-size: 15px;
}
-
-.nav-tabs>li.active>a, .nav-tabs>li.active>a:focus, .nav-tabs>li.active>a:hover, .nav-tabs>li>a:hover {
+#top>.nav-tabs>li.active>a,
+#top>.nav-tabs>li.active>a:focus,
+#top>.nav-tabs>li.active>a:hover,
+#top>.nav-tabs>li>a:hover {
background-color: #404a53;
color: #fff;
border: 0;
- border-bottom: 2px solid #607d8b;
+ border-bottom: 3px solid #607d8b;
}
#left {
diff --git a/root/user/login.html b/root/user/login.html
index f69c089..9707e41 100644
--- a/root/user/login.html
+++ b/root/user/login.html
@@ -100,12 +100,12 @@
doc:"sys_plat",
shows: JSON.stringify(["_id", "_key", "name", "token","remark", "status"])
};
- red.getJSON("/meta/find", para, function (json) {
- vm.sysPlats = json.rows;
+ red.getJSON("/meta/plat_list", {}, function (json) {
+ vm.sysPlats = json;
if (!vm.sysPlat) {
- vm.sysPlat = json.rows[0];
+ vm.sysPlat = json[0];
}
- red.setData("sysPlats", json.rows);
+ red.setData("sysPlats", json);
});
},
goIndex: function () {
diff --git a/src/main/java/net/tccn/service/BaseServlet.java b/src/main/java/net/tccn/service/BaseServlet.java
index 8566fc7..cc0770e 100644
--- a/src/main/java/net/tccn/service/BaseServlet.java
+++ b/src/main/java/net/tccn/service/BaseServlet.java
@@ -2,12 +2,17 @@ package net.tccn.service;
import com.arangodb.ArangoDBException;
import com.google.gson.Gson;
+import net.tccn.base.JBean;
import net.tccn.base.Kv;
import net.tccn.base.arango.ArangoSource;
+import net.tccn.user.User;
+import net.tccn.user.UserService;
import org.redkale.net.http.HttpRequest;
import org.redkale.net.http.HttpResponse;
+import org.redkale.net.http.HttpScope;
import org.redkale.net.http.HttpServlet;
+import javax.annotation.Resource;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -17,6 +22,9 @@ import java.util.logging.Logger;
*/
public class BaseServlet extends HttpServlet {
+ @Resource
+ private UserService userService;
+
public Logger logger = Logger.getLogger(this.getClass().getSimpleName());
protected static Gson gson = new Gson();
@@ -31,8 +39,8 @@ public class BaseServlet extends HttpServlet {
}
if (sessionid != null) {
- //User user = userService.current(sessionid);
- //request.setCurrentUser(user);
+ User user = userService.current(sessionid);
+ request.setCurrentUser(user);
}
super.preExecute(request, response);
@@ -40,7 +48,7 @@ public class BaseServlet extends HttpServlet {
@Override
protected void authenticate(HttpRequest request, HttpResponse response) throws IOException {
- /* fixme: 权限拦截
+ //fixme: 权限拦截
if (request.currentUser() == null) {
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){
response.finish(JBean.by(-2, "未登陆"));
@@ -48,7 +56,7 @@ public class BaseServlet extends HttpServlet {
response.finish(HttpScope.refer("/user/login.html"));
}
return;
- }*/
+ }
super.authenticate(request, response);
}
diff --git a/src/main/java/net/tccn/service/MetadataService.java b/src/main/java/net/tccn/service/MetadataService.java
index 7b86ab8..5c5aae3 100644
--- a/src/main/java/net/tccn/service/MetadataService.java
+++ b/src/main/java/net/tccn/service/MetadataService.java
@@ -199,4 +199,13 @@ public class MetadataService extends BaseService { //arango
return JBean.by(0, "");
}
+ @RestMapping(name = "plat_list", comment = "平台列表")
+ public JBean platList() {
+ JBean jBean = new JBean();
+ List plats = SysPlat.dao.find();
+
+ jBean.setBody(plats);
+ return jBean;
+ }
+
}
diff --git a/src/main/java/net/tccn/user/User.java b/src/main/java/net/tccn/user/User.java
new file mode 100644
index 0000000..a6d7202
--- /dev/null
+++ b/src/main/java/net/tccn/user/User.java
@@ -0,0 +1,108 @@
+package net.tccn.user;
+
+import net.tccn.base.JBean;
+import net.tccn.base.arango.Doc;
+import org.redkale.convert.ConvertColumn;
+import org.redkale.convert.ConvertType;
+import org.redkale.convert.json.JsonConvert;
+import org.redkale.util.Utility;
+
+import javax.persistence.Table;
+
+/**
+ * @author: liangxianyou at 2018/11/22 17:37.
+ */
+@Table(name = "sys_user", catalog = "db_dev")
+public class User extends Doc {
+ public static User dao = dao(User.class);
+
+ private String username;
+ private String pwd;
+ private Long createTime;
+ private Long loginTime;
+ private Integer status;
+ private String sessionid;
+
+ public User() {
+ }
+
+ public User(String sessionid) {
+ this.sessionid = sessionid;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @ConvertColumn(ignore = true,type = ConvertType.JSON)
+ public String getPwd() {
+ return pwd;
+ }
+
+ public void setPwd(String pwd) {
+ this.pwd = pwd;
+ }
+
+ public Long getCreateTime() {
+ return createTime;
+ }
+
+ public void setCreateTime(Long createTime) {
+ this.createTime = createTime;
+ }
+
+ public Long getLoginTime() {
+ return loginTime;
+ }
+
+ public void setLoginTime(Long loginTime) {
+ this.loginTime = loginTime;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+
+ public String getSessionid() {
+ return sessionid;
+ }
+
+ public void setSessionid(String sessionid) {
+ this.sessionid = sessionid;
+ }
+
+ @Override
+ public String toString() {
+ return JsonConvert.root().convertTo(this);
+ }
+
+ //-------------------------------
+
+ public static String md5IfNeed(String password){
+ if (password == null || password.length() == 0) {
+ return "";
+ }
+ return Utility.md5Hex(password);
+ }
+
+ public JBean checkLogin(String pwd) {
+ JBean jBean = JBean.by(0, "");
+
+ if (!this.pwd.equalsIgnoreCase(md5IfNeed(pwd))) {
+ jBean.set(-1, "密码错误");
+ } else if (status != 1) {
+ jBean.set(-1, "登陆失败,限制登陆。");
+ }
+ jBean.setBody(this);
+ return jBean;
+ }
+
+}
diff --git a/src/main/java/net/tccn/user/UserService.java b/src/main/java/net/tccn/user/UserService.java
new file mode 100644
index 0000000..d90ce9d
--- /dev/null
+++ b/src/main/java/net/tccn/user/UserService.java
@@ -0,0 +1,56 @@
+package net.tccn.user;
+
+import net.tccn.base.JBean;
+import net.tccn.service.BaseService;
+import org.redkale.net.http.RestMapping;
+import org.redkale.net.http.RestService;
+import org.redkale.net.http.RestSessionid;
+
+/**
+ * @author: liangxianyou at 2018/11/22 17:16.
+ */
+@RestService(name = "user", automapping = true, comment = "用户服务")
+public class UserService extends BaseService {
+
+ @RestMapping(name = "login", auth = false, comment = "登陆验证")
+ public JBean login(@RestSessionid String sessionid,
+ String username,
+ String pwd) {
+ User bean = new User();
+ bean.setUsername(username);
+
+ User user = User.dao.findFirst(bean);
+ if (user == null) {
+ return JBean.by(-1, "登陆失败:账号无效");
+ }
+
+ JBean jBean = user.checkLogin(pwd);
+ if (jBean.getCode() == 0) {
+ cacheSource.set(30 * 60 * 2,sessionid, User.class, user);
+
+ user.setSessionid(sessionid);
+ user.setLoginTime(System.currentTimeMillis());
+ user.update();
+ }
+
+ return jBean;
+ }
+
+ @RestMapping(name = "current")
+ public User current(@RestSessionid String sessionid) {
+ return getT("user_" + sessionid, User.class, () -> User.dao.findFirst(new User(sessionid)));
+ }
+
+ @RestMapping(name = "logout", comment = "退出登陆")
+ public JBean logout(@RestSessionid String sessionid) {
+ User user = User.dao.findFirst(new User(sessionid));
+ if (user != null) {
+ user.setSessionid("");
+ user.update();
+ }
+ cacheSource.removeAsync("user_" + sessionid);
+
+ return new JBean();
+ }
+
+}
diff --git a/src/test/java/RunTest.java b/src/test/java/RunTest.java
index 23b7912..ad619f1 100644
--- a/src/test/java/RunTest.java
+++ b/src/test/java/RunTest.java
@@ -39,7 +39,7 @@ public class RunTest {
//System.out.println(query.getClass());
}
ParseMysql parser = new ParseMysql();
- @Test
+ //@Test
public void parseFBeanTest() {
FBean fBean = new Gson().fromJson("{name:'user_service', filters:[{col:'a.username',type:'like',value:'lxy'}], orders:[{col:a.`id`,desc: -1},{col:a.`deptName`,desc: 1}], limit:{ps:2,pn:10}}", FBean.class);
@@ -96,8 +96,8 @@ public class RunTest {
System.out.println(s);
System.out.println("--------------");
- Date date1 = Kv.toAs("Sun Mar 17 12:11:12 CST 2019", Date.class);
- System.out.println(date1);
+ //Date date1 = Kv.toAs("Sun Mar 17 12:11:12 CST 2019", Date.class);
+ //System.out.println(date1);
}