Skip to content

Commit

Permalink
add:初始化创建数据库 支持大多数主流数据库
Browse files Browse the repository at this point in the history
  • Loading branch information
TomYule committed Aug 3, 2020
1 parent 9d2d2a1 commit 8e4d067
Show file tree
Hide file tree
Showing 16 changed files with 32,506 additions and 75 deletions.
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ MainLauncher是入口,启动即可

## 环境要求

* 必须JDK8+ 支持OpenJDK
* MySQL 5.6 ~ 8.0
* 建议 JDK8+ 支持OpenJDK
* 数据库 任意SQL数据库,例如MySQL,Oracle,SqlServer等等
* eclipse或idea等IDE开发工具,可选

## 配置信息位置
Expand Down Expand Up @@ -97,6 +97,7 @@ mvn clean package nutzboot:shade nutzboot:war
* 部分代码 参考 [nutzwk](https://github.com/Wizzercn/NutzWk/tree/bak-delete-v3-bootstrap)

## 鸣谢
* nutz 项目的所有贡献者
* [@wendal](https://github.com/wendal) (代码贡献者,技术大牛,Nutz主要作者,无所不知且乐于助人)

## 我想改变行业的未来,因为我有一颗改变世界的心
Expand Down
10 changes: 9 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,19 @@
<groupId>org.nutz</groupId>
<artifactId>nutzboot-starter-jdbc</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
</dependency>

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
<version>8.0.16</version>
</dependency>

<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutzboot-starter-thymeleaf</artifactId>
Expand Down
60 changes: 54 additions & 6 deletions src/main/java/io/nutz/nutzsite/MainLauncher.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.alibaba.fastjson.JSON;
import io.nutz.nutzsite.common.base.Globals;
import io.nutz.nutzsite.common.config.GenConfig;
import io.nutz.nutzsite.common.manager.AsyncManager;
import io.nutz.nutzsite.common.mvc.MyActionChainMaker;
import io.nutz.nutzsite.common.utils.ShiroUtils;
Expand All @@ -22,6 +23,7 @@
import org.nutz.ioc.loader.annotation.*;
import org.nutz.lang.Encoding;
import org.nutz.lang.Mirror;
import org.nutz.lang.random.R;
import org.nutz.lang.util.NutMap;
import org.nutz.log.Log;
import org.nutz.log.Logs;
Expand Down Expand Up @@ -60,10 +62,6 @@ public class MainLauncher {
@Inject
private MenuService menuService;
@Inject
private ImageService imageService;
@Inject
private DeptService deptService;
@Inject
private TaskService taskService;

/**
Expand Down Expand Up @@ -111,6 +109,7 @@ public void init() {
}
// 初始化系统变量
Globals.getInstance();
initSysData();
initSysTask(ioc);
/**
* 自定义EL表达式
Expand All @@ -128,8 +127,7 @@ public String fetchSelf() {
return "array2str";
}
});
// 创建数据库
Daos.createTablesInPackage(dao, "io.nutz.nutzsite", false);

}

/**
Expand Down Expand Up @@ -182,6 +180,56 @@ public void depose() {
}
}

/**
* 初始化数据库
*/
private void initSysData() {
// 创建数据库
Daos.createTablesInPackage(dao, "io.nutz.nutzsite", false);
Daos.createTablesInPackage(dao, "org.nutz.plugins.slog.bean", false);
// 若必要的数据不存在,则初始化数据库
if (0 == dao.count(User.class)) {
String data = GenConfig.getFileData("data/menu.json");
List<Menu> menuList = JSON.parseArray(data,Menu.class);
menuList = Menu.getMenuList(menuList,"0");
for(Menu menu:menuList){
dao.fastInsert(menu);
}
String roleJson = GenConfig.getFileData("data/role.json");
List<Role> roleList = JSON.parseArray(roleJson,Role.class);
for(Role role:roleList){
role.setId(R.UU32().toLowerCase());
dao.fastInsert(role);
if("admin".equals(role.getRoleKey())){
role.setMenus(menuList);
dao.insertRelation(role, "menus");
}
}
String userJson = GenConfig.getFileData("data/user.json");
List<User> userList = JSON.parseArray(userJson,User.class);
for(User user:userList){
user.setId(R.UU32().toLowerCase());
dao.fastInsert(user);
if("admin".equals(user.getLoginName())){
user.setRoles(roleList);
dao.insertRelation(user, "roles");
}
}

String deptJson = GenConfig.getFileData("data/dept.json");
List<Dept> deptList = JSON.parseArray(deptJson,Dept.class);
for(Dept d:deptList){
dao.fastInsert(d);
}
String taskJson = GenConfig.getFileData("data/task.json");
List<Task> taskList = JSON.parseArray(taskJson,Task.class);
for(Task t:taskList){
dao.fastInsert(t);
}
}
//其他表懒得写了 有需要 自行添加
}

/**
* 初始化 定时任务
* @param ioc
Expand Down
29 changes: 28 additions & 1 deletion src/main/java/io/nutz/nutzsite/common/config/GenConfig.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package io.nutz.nutzsite.common.config;

import io.nutz.nutzsite.common.base.Globals;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;

/**
Expand Down Expand Up @@ -42,7 +46,6 @@ public class GenConfig {
Properties properties = new Properties();
//加载输入流
properties.load(is);

author = properties.getProperty("author");
packageName = properties.getProperty("packageName");
autoRemovePre = properties.getProperty("autoRemovePre");
Expand Down Expand Up @@ -100,6 +103,30 @@ public static void setPackageNameOpen(String packageNameOpen) {
GenConfig.packageNameOpen = packageNameOpen;
}


/**
* 读取文件
* @param path
* @return
*/
public static String getFileData(String path){
ClassLoader cl = GenConfig.class.getClassLoader();
InputStream is = cl.getResourceAsStream(path);
//读取文件
StringBuffer sb = new StringBuffer();
//这里可以控制编码
try ( BufferedReader br = new BufferedReader(new InputStreamReader(is,Globals.UTF8))) {
String line = null;
while((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
String data = new String(sb);
return data;
}

@Override
public String toString() {
return "GenConfig [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import io.nutz.nutzsite.common.bean.Amap;
import io.nutz.nutzsite.common.bean.Districts;
import io.nutz.nutzsite.common.config.GenConfig;
import io.nutz.nutzsite.common.exception.ErrorException;
import io.nutz.nutzsite.common.utils.ShiroUtils;
import io.nutz.nutzsite.module.sys.models.Area;
Expand Down Expand Up @@ -198,62 +199,20 @@ public List<Map<String, Object>> treeData(@Param("parentId") String parentId,
return tree;
}

public static void getAreaList(List<Districts> list,String pid){
list.forEach(districts -> {
Area area =new Area();
area.setId(R.UU32().toLowerCase());
area.setParentId(pid);
area.setAdcode(districts.getAdcode());
area.setName(districts.getName());
area.setLevel(districts.getLevel());
if(districts.getCitycode()!=null && districts.getCitycode().size()>0){
area.setCitycode(districts.getCitycode().get(0));
}

areaList.add(area);
if(districts.getDistricts()!=null && districts.getDistricts().size()>0){
getAreaList(districts.getDistricts(),area.getId());
}
});
}

/**
* 初始化行政区域的数据
* @return
*/
@At
@Ok("json")
public String initData(){
//读取文件
String fileName = "/Users/apple/Desktop/area.txt";
//读取文件
BufferedReader br = null;
StringBuffer sb = null;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"UTF-8")); //这里可以控制编码
sb = new StringBuffer();
String line = null;
while((line = br.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
e.printStackTrace();
public String initData(){
if(0==areaService.count()){
String areaJson = GenConfig.getFileData("data/area.json");
List<Area> areaList = JSON.parseArray(areaJson,Area.class);
for(Area a:areaList){
areaService.fastInsert(a);
}
}

String data = new String(sb); //StringBuffer ==> String
Amap amap = JSON.parseObject(data,Amap.class);
if(amap!=null && amap.getDistricts()!=null && amap.getDistricts().size()>0){
getAreaList(amap.getDistricts(),"0");
}
// if(areaList!=null && areaList.size()>0){
// areaList.forEach(area -> {
// areaService.insert(area);
// });
// }
return "successs";

}

}
42 changes: 42 additions & 0 deletions src/main/java/io/nutz/nutzsite/module/sys/models/Menu.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import io.nutz.nutzsite.common.base.BaseModel;
import org.nutz.dao.entity.annotation.*;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import org.nutz.lang.random.R;
import org.nutz.plugins.validation.annotation.Validations;

import java.io.Serializable;
Expand Down Expand Up @@ -240,4 +243,43 @@ public Date getUpdateTime() {
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}


public static List<Menu> getMenuList(List<Menu> list,String pid){
List<Menu> allMenu =new ArrayList<>();
list.forEach(menu -> {
menu.setId(R.UU32().toLowerCase());
menu.setParentId(pid);
allMenu.add(menu);
if(Lang.isNotEmpty(menu.getChildren()) && menu.getChildren().size()>0){
List<Menu> tmp = getMenuList(menu.getChildren(),menu.getId());
allMenu.addAll(tmp);
}
});
return allMenu;
}

/**
* 子方法
**/
public static List<Menu> getChild(String id, List<Menu> allMenu) {
// 子菜单
List<Menu> childList = new ArrayList<>();
for (Menu menu : allMenu) {
// 遍历所有节点,将父菜单id与传过来的id比较
if (Strings.isNotBlank(menu.getParentId())) {
if (menu.getParentId().equals(id)) {
childList.add(menu);
}
}
}
// 把子菜单的子菜单再循环一遍
for (Menu menu : childList) {
menu.setChildren(getChild(menu.getId(), allMenu));
} // 递归退出条件
if (childList.size() == 0) {
return null;
}
return childList;
}
}
23 changes: 14 additions & 9 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version=1.1
version=1.2
#项目启动端口
server.port=8099
server.port=8080
server.host=0.0.0.0
#tomcat.port=8090
#tomcat.host=0.0.0.0
Expand All @@ -18,13 +18,18 @@ tomcat.page.403=/error/unauth.html

druid.web.filter.principalSessionName=sid

#mysql
jdbc.type=druid
jdbc.url=jdbc:mysql://127.0.0.1:3306/nutzsite?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
#h2
jdbc.url=jdbc:h2:mem:~
jdbc.username=root
#jdbc.password=gptrbrt5683RR
jdbc.password=ikmcy2O1904
jdbc.validationQuery=select 1
jdbc.password=root

#mysql
#jdbc.url=jdbc:mysql://127.0.0.1:3306/nutzsite?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
#jdbc.username=root
#jdbc.password=ikmcy2O1904

#jdbc.validationQuery=select 1
jdbc.maxActive=50
jdbc.testWhileIdle=true
jdbc.filters=mergeStat
Expand Down Expand Up @@ -75,9 +80,9 @@ shiro.ini.urls:
/open/** = anon

#HTML thymeleaf热更新
thymeleaf.resolver.rootLocal=/Users/tony/IdeaProjects/NutzSite/src/main/resources/template
#thymeleaf.resolver.rootLocal=/Users/tony/IdeaProjects/NutzSite/src/main/resources/template
#下面这句必须是绝对路径,这样才能保证开发模式下修改静态文件后进行热更新
jetty.staticPathLocal=/Users/tony/IdeaProjects/NutzSite/src/main/resources/static
#jetty.staticPathLocal=/Users/tony/IdeaProjects/NutzSite/src/main/resources/static

#上传文件路径
upload.path=/mnt/upload
Expand Down
Loading

0 comments on commit 8e4d067

Please sign in to comment.