diff --git a/pom.xml b/pom.xml
index 0df2230..153c387 100644
--- a/pom.xml
+++ b/pom.xml
@@ -80,6 +80,11 @@
druid
1.1.3
+
+ com.jfinal
+ jfinal
+ 3.2
+
diff --git a/src/main/java/Main.kt b/src/main/java/Main.kt
index ed645f4..bccc7e4 100644
--- a/src/main/java/Main.kt
+++ b/src/main/java/Main.kt
@@ -1,3 +1,5 @@
+import com.alibaba.druid.pool.DruidDataSource
+import com.jfinal.plugin.activerecord.ActiveRecordPlugin
import org.slf4j.LoggerFactory
import ro.pippo.controller.ControllerApplication
import ro.pippo.core.Pippo
@@ -18,6 +20,7 @@ object Main {
class BasicApplication : ControllerApplication() {
private val log = LoggerFactory.getLogger(BasicApplication::class.java)
+// private val druidDataSource: DruidDataSource = DruidDataSource()
override fun onInit() {
getRouter().ignorePaths("/favicon.ico")
@@ -50,6 +53,10 @@ class BasicApplication : ControllerApplication() {
addControllers(CtrlMenu::class.java)
addControllers(CtrlPerm::class.java)
addControllers(CtrlRole::class.java)
+
+
+// val activeRecord = ActiveRecordPlugin(druidDataSource)
+// activeRecord.start()
}
override fun createRequestResponseFactory(): RequestResponseFactory {
diff --git a/src/main/java/model/ResponseModel.kt b/src/main/java/model/ResponseModel.kt
index 7fe5727..66d09b0 100644
--- a/src/main/java/model/ResponseModel.kt
+++ b/src/main/java/model/ResponseModel.kt
@@ -1,3 +1,5 @@
package model
-data class JSONResponse(val code: Int, val msg: String, val result: Any?)
\ No newline at end of file
+data class JSONResponse(val code: Int, val msg: String, val result: Any?)
+
+data class JSONResponseWithExtra(val code: Int, val msg: String, val result: Any?, val extra:Any?)
\ No newline at end of file
diff --git a/src/main/java/service/Service.kt b/src/main/java/service/Service.kt
index a9b18eb..b45ff4b 100644
--- a/src/main/java/service/Service.kt
+++ b/src/main/java/service/Service.kt
@@ -6,23 +6,30 @@ import util.*
class Service {
fun getUserById(id: Int): ModelUser? {
- val rs = DBUtil.getConnection().createStatement()
+ val conn = DBUtil.getConnection()
+ val rs = conn.createStatement()
.executeQuery("select * from `user` where id=$id")
return if (rs.next()) {
- return rsToUser(rs)
+ val user = rsToUser(rs)
+ conn.close()
+ return user
} else {
null
}
}
fun saveUser(user: ModelUser): Boolean {
+ val conn = DBUtil.getConnection()
try {
- DBUtil.getConnection().createStatement()
+ conn.createStatement()
.executeUpdate(userToInsertSQL(user))
+
return true
} catch (e: Exception) {
return false
+ } finally {
+ conn.close()
}
}
@@ -31,8 +38,13 @@ class Service {
}
fun deleteUser(userId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from `user` where id=$userId") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from `user` where id=$userId") > 1
+ } finally {
+ conn.close()
+ }
}
fun changePasswd(user: ModelUser, passwd: String): Boolean {
@@ -44,24 +56,32 @@ class Service {
if (user == null) {
return null
}
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `group` where id=${user.groupId}")
- return if (rs.next()) {
- return rsToGroup(rs)
- } else {
- null
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `group` where id=${user.groupId}")
+ return if (rs.next()) {
+ return rsToGroup(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
fun saveGroup(group: ModelGroup): Boolean {
+ val conn = DBUtil.getConnection()
try {
println(groupToInsertSQL(group))
- DBUtil.getConnection().createStatement()
+ conn.createStatement()
.execute(groupToInsertSQL(group))
return true
} catch (e: Exception) {
e.printStackTrace()
return false
+ } finally {
+ conn.close()
}
}
@@ -70,18 +90,28 @@ class Service {
}
fun deleteGroup(groupId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from `group` where id=$groupId") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from `group` where id=$groupId") > 1
+ } finally {
+ conn.close()
+ }
}
fun getGroupById(groupId: Int): ModelGroup? {
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `group` where id=$groupId")
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `group` where id=$groupId")
- return if (rs.next()) {
- return rsToGroup(rs)
- } else {
- null
+ return if (rs.next()) {
+ return rsToGroup(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
@@ -91,23 +121,38 @@ class Service {
return false
}
- return DBUtil.getConnection().createStatement()
- .execute("update `user` set groupId=$groupId where id=$userId")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("update `user` set groupId=$groupId where id=$userId")
+ } finally {
+ conn.close()
+ }
}
fun unbindUserToGroup(userId: Int, groupId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .execute("update `user` set groupId=-1 where id=$userId")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("update `user` set groupId=-1 where id=$userId")
+ } finally {
+ conn.close()
+ }
}
fun getRoleById(roleId: Int): ModelRole? {
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `role` where id=$roleId")
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `role` where id=$roleId")
- return if (rs.next()) {
- return rsToRole(rs)
- } else {
- null
+ return if (rs.next()) {
+ return rsToRole(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
@@ -116,28 +161,41 @@ class Service {
if (user == null) {
return null
}
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `role` where id=${user.roleId}")
- return if (rs.next()) {
- return rsToRole(rs)
- } else {
- null
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `role` where id=${user.roleId}")
+ return if (rs.next()) {
+ return rsToRole(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
fun saveRole(role: ModelRole): Boolean {
+ val conn = DBUtil.getConnection()
try {
- DBUtil.getConnection().createStatement()
+ conn.createStatement()
.execute(roleToInsertSQL(role))
return true
} catch (e: Exception) {
return false
+ } finally {
+ conn.close()
}
}
fun deleteRole(roleId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from `role` where id=$roleId") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from `role` where id=$roleId") > 1
+ } finally {
+ conn.close()
+ }
}
fun updateRole(role: ModelRole): Boolean {
@@ -150,8 +208,13 @@ class Service {
return false
}
- return DBUtil.getConnection().createStatement()
- .execute("update `user` set roleId=$roleId where id=$userId")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("update `user` set roleId=$roleId where id=$userId")
+ } finally {
+ conn.close()
+ }
}
fun unbindUserToRole(userId: Int, roleId: Int): Boolean {
@@ -160,44 +223,61 @@ class Service {
return false
}
- return DBUtil.getConnection().createStatement()
- .execute("update `user` set roleId=-1 where id=$userId")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("update `user` set roleId=-1 where id=$userId")
+ } finally {
+ conn.close()
+ }
}
fun getPermById(permId: Int): ModelPerm? {
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `perm` where id=$permId")
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `perm` where id=$permId")
- return if (rs.next()) {
- return rsToPerm(rs)
- } else {
- null
+ return if (rs.next()) {
+ return rsToPerm(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
fun getPermByRoleId(roleId: Int): List {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("""
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("""
select * from perm t
where exists(
select * from mapping_perm_role m where m.roleid = $roleId
)
""".trim())
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToPerm(rs))
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToPerm(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
fun savePerm(perm: ModelPerm): Boolean {
+ val conn = DBUtil.getConnection()
try {
- DBUtil.getConnection().createStatement()
+ conn.createStatement()
.executeUpdate(permToInsertSQL(perm))
return true
} catch (e: Exception) {
return false
+ } finally {
+ conn.close()
}
}
@@ -206,8 +286,13 @@ class Service {
}
fun deletePerm(permId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from `perm` where id=$permId") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from `perm` where id=$permId") > 1
+ } finally {
+ conn.close()
+ }
}
fun bindPermToRole(permId: Int, roleId: Int): Boolean {
@@ -217,23 +302,38 @@ class Service {
return false
}
- return DBUtil.getConnection().createStatement()
- .execute("insert into mapping_perm_role($permId,$roleId)")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("insert into mapping_perm_role($permId,$roleId)")
+ } finally {
+ conn.close()
+ }
}
fun unbindPermToRole(permId: Int, roleId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from mapping_perm_role where permId=$permId and roleId=$roleId)") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from mapping_perm_role where permId=$permId and roleId=$roleId)") > 1
+ } finally {
+ conn.close()
+ }
}
fun getMenuById(menuId: Int): ModelMenu? {
- val rs = DBUtil.getConnection().createStatement()
- .executeQuery("select * from `menu` where id=$menuId")
+ val conn = DBUtil.getConnection()
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `menu` where id=$menuId")
- return if (rs.next()) {
- return rsToMenu(rs)
- } else {
- null
+ return if (rs.next()) {
+ return rsToMenu(rs)
+ } else {
+ null
+ }
+ } finally {
+ conn.close()
}
}
@@ -243,12 +343,15 @@ class Service {
}
fun saveMenu(menu: ModelMenu): Boolean {
+ val conn = DBUtil.getConnection()
try {
- DBUtil.getConnection().createStatement()
+ conn.createStatement()
.execute(menuToInsertSQL(menu))
return true
} catch (e: Exception) {
return false
+ } finally {
+ conn.close()
}
}
@@ -257,8 +360,13 @@ class Service {
}
fun deleteMenu(menuId: Int): Boolean {
- return DBUtil.getConnection().createStatement()
- .executeUpdate("delete from `menu` where id=$menuId") > 1
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .executeUpdate("delete from `menu` where id=$menuId") > 1
+ } finally {
+ conn.close()
+ }
}
fun bindMenuToPerm(menuId: Int, permId: Int): Boolean {
@@ -267,8 +375,13 @@ class Service {
return false
}
- return DBUtil.getConnection().createStatement()
- .execute("update `menu` set permId=$permId where id=$menuId")
+ val conn = DBUtil.getConnection()
+ try {
+ return conn.createStatement()
+ .execute("update `menu` set permId=$permId where id=$menuId")
+ } finally {
+ conn.close()
+ }
}
fun unbindMenuToPerm(menuId: Int, permId: Int): Boolean {
@@ -278,56 +391,76 @@ class Service {
fun pagiUser(page: Int, size: Int): MutableList {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("select * from `user` limit $size offset ${(page - 1) * size}")
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToUser(rs))
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `user` limit $size offset ${(page - 1) * size}")
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToUser(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
fun pagiGroup(page: Int, size: Int): MutableList {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("select * from `group` limit $size offset ${(page - 1) * size}")
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToGroup(rs))
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `group` limit $size offset ${(page - 1) * size}")
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToGroup(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
fun pagiMenu(page: Int, size: Int): MutableList {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("select * from `menu` limit $size offset ${(page - 1) * size}")
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToMenu(rs))
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `menu` limit $size offset ${(page - 1) * size}")
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToMenu(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
fun pagiPerm(page: Int, size: Int): MutableList {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("select * from `perm` limit $size offset ${(page - 1) * size}")
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToPerm(rs))
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `perm` limit $size offset ${(page - 1) * size}")
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToPerm(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
fun pagiRole(page: Int, size: Int): MutableList {
val conn = DBUtil.getConnection()
- val rs = conn.createStatement()
- .executeQuery("select * from `role` limit $size offset ${(page - 1) * size}")
- val list = mutableListOf()
- while (rs.next()) {
- list.add(rsToRole(rs))
+ try {
+ val rs = conn.createStatement()
+ .executeQuery("select * from `role` limit $size offset ${(page - 1) * size}")
+ val list = mutableListOf()
+ while (rs.next()) {
+ list.add(rsToRole(rs))
+ }
+ return list
+ } finally {
+ conn.close()
}
- return list
}
}
\ No newline at end of file
diff --git a/src/main/java/util/ext.kt b/src/main/java/util/ext.kt
new file mode 100644
index 0000000..c7d8682
--- /dev/null
+++ b/src/main/java/util/ext.kt
@@ -0,0 +1 @@
+package util