diff --git a/pom.xml b/pom.xml
index d20a5b49175447116b0e1d01888ab980df27e821..2f5f8aaf8e8bedafb1dd65364eac702d388404b8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -216,6 +216,12 @@
rboat-activiti
${rboat.version}
+
+
+ com.rboat
+ rboat-blog
+ 4.0.0
+
@@ -228,6 +234,7 @@
rboat-common
rboat-exam
rboat-activiti
+ rboat-blog
pom
diff --git a/rboat-admin/pom.xml b/rboat-admin/pom.xml
index 2b7e673bab32bc1079c65814fed429288d64ad96..5ea018deb082612df5c539075f7b5c9622b28d5b 100644
--- a/rboat-admin/pom.xml
+++ b/rboat-admin/pom.xml
@@ -84,6 +84,12 @@
rboat-activiti
4.0.0
+
+
+ com.rboat
+ rboat-blog
+ 4.0.0
+
diff --git a/rboat-admin/src/main/java/com/rboat/TestMain.java b/rboat-admin/src/main/java/com/rboat/TestMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..c98fd93b069f8eb53a767a06e7e51b3e796bba46
--- /dev/null
+++ b/rboat-admin/src/main/java/com/rboat/TestMain.java
@@ -0,0 +1,10 @@
+package com.rboat;
+
+public class TestMain {
+
+ public static void main(String[] args) {
+ System.out.println( TestMain.class.getResource("/"));
+ System.out.println( TestMain.class.getResource("../../"));
+ System.out.println( TestMain.class.getResource("../../../"));
+ }
+}
diff --git a/rboat-admin/src/main/java/com/rboat/diagramUtil.java b/rboat-admin/src/main/java/com/rboat/diagramUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..2c5072651599ea6e69acdb7961895fa6f256dd6c
--- /dev/null
+++ b/rboat-admin/src/main/java/com/rboat/diagramUtil.java
@@ -0,0 +1,35 @@
+package com.rboat;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+
+public class diagramUtil {
+ public static void createAsciiPic(final String path) {
+ //final String base = "@#&$%*o!;.";// 字符串由复杂到简单
+ final String base = "KSPksp;.";
+ try {
+ final BufferedImage image = ImageIO.read(new File(path));
+ System.out.println("W:" + image.getWidth() + " H:" + image.getHeight());
+ for (int y = 0; y < image.getHeight(); y += 2) {
+ for (int x = 0; x < image.getWidth(); x++) {
+ final int pixel = image.getRGB(x, y);
+ final int r = (pixel & 0xff0000) >> 16, g = (pixel & 0xff00) >> 8, b = pixel & 0xff;
+ final float gray = 0.299f * r + 0.578f * g + 0.114f * b;
+ final int index = Math.round(gray * (base.length() + 1) / 255);
+ System.out.print(index >= base.length() ? " " : String.valueOf(base.charAt(index)));
+ }
+ System.out.println();
+ }
+ } catch (final IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void main(String args[]) {
+ diagramUtil.createAsciiPic("F:\\favicon.ico");
+ }
+
+
+}
diff --git a/rboat-admin/src/main/resources/banner.txt b/rboat-admin/src/main/resources/banner.txt
index 1a2e383384532591dfa678539b15da5260bab1d0..245feb909af9610ec772cfbbb3d185607d332a17 100644
--- a/rboat-admin/src/main/resources/banner.txt
+++ b/rboat-admin/src/main/resources/banner.txt
@@ -1,24 +1,67 @@
Application Version: ${rboat.version}
Spring Boot Version: ${spring-boot.version}
-////////////////////////////////////////////////////////////////////
-// _ooOoo_ //
-// o8888888o //
-// 88" . "88 //
-// (| ^_^ |) //
-// O\ = /O //
-// ____/`---'\____ //
-// .' \\| |// `. //
-// / \\||| : |||// \ //
-// / _||||| -:- |||||- \ //
-// | | \\\ - /// | | //
-// | \_| ''\---/'' | | //
-// \ .-\__ `-` ___/-. / //
-// ___`. .' /--.--\ `. . ___ //
-// ."" '< `.___\_<|>_/___.' >'"". //
-// | | : `- \`.;`\ _ /`;.`/ - ` : | | //
-// \ \ `-. \_ __\ /__ _/ .-` / / //
-// ========`-.____`-.___\_____/___.-`____.-'======== //
-// `=---=' //
-// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ //
-// 佛祖保佑 永不宕机 永无BUG //
-////////////////////////////////////////////////////////////////////
\ No newline at end of file
+ *****************************************************************************************************************************************
+* ;kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk; .sPPSSSSSSSSSSSSSSSSSSSSSSSSSSSSSPkp *
+* k k kSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS. *
+* ;p p; PSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSp *
+* k k ;SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSP *
+* k k pSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS *
+* k s. kk .Ps k pSSSSSSSSSSSSSSSSk .SSSSSSSSSSSSSSSSSSSSSSSS *
+* k ;Ss ;Sp kSp k pSSSSSSSSSSSSPSS; PSSSSSSSSSSPPSSSSSSSSSSSS *
+* k pSs PSSSSSSSSSSSSSSSSSS; k pSSSSSSSSSSSSp; ; .SSSSSSSSSSSS *
+* k .p k pSSSSSSSSSSSS;.pskPSSSSSSPks; .SSSSSSSSSSSS *
+* k . p; ; k pSSSSSSSSSSSS.kSSSS..PSSSSSSSS SSSSSSSSSSSS *
+* k pSSSSk pp P. ss k pSSSSSSSSSSSS sSSSSP kSSSSSSS SSSSSSSSSSSS *
+* k PS ;P S Sp k pSSSSSSSSSSSS pSSSSSP kSSSSSS PSSSSSSSSSSS *
+* k kS ;S ;S .Sp k pSSSSSSSSSSSS pSSSSSSS .SSSSSS PSSSSSSSSSSS *
+* k kS ;S pP .Sp k pSSSSSSSSSSSS pSSSSSSSSSSSSSSS kSSSSSSSSSSS *
+* k kS sS;;;;;kP;;;;;Sk k pSSSSSS; ;SSSSSSS *
+* k kS PSSSSSSSSSSSSSSS k pSSSSSSsppppp .pppppp;;ppppppp ;pppkSSSSSSS *
+* k kS ;P Ps ks k pSSSSSSSSSSSP ;SSSSSSp;SSSSSSP kSSSSSSSSSSS *
+* k kS s Sp k pSSSSSSSSSSSP ;SSSSSS; SSSSSSP kSSSSSSSSSSS *
+* k kS .Sp k pSSSSSSSSSSSP ;SSSSSS; SSSSSSP sSSSSSSSSSSS *
+* k kS ;S; k pSSSSSSSSSSSP .SSSSSS. SSSSSSP sSSSSSSSSSSS *
+* k kS pS. k pSSSSSSSSSSSP ;SSSSSS. SSSSSSP sSSSSSSSSSSS *
+* k kS kS k pSSSSSSSSSSSP ;SSSSSS; SSSSSSP sSSSSSSSSSSS *
+* k kS PP k pSSSSSSSSSSSP ;SSSSSS; SSSSSSP sSSSSSSSSSSS *
+* k kS .Ss k pSSSSSSSSSSSk ;SSSSSSs.SSSSSSP sSSSSSSSSSSS *
+* k kS pS; k pSSSSSSSSSSSk pSSSSSSPsSSSSSSP sSSSSSSSSSSS *
+* k kS kS k pSSSSSSSSSSSs pSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k kS Sk k pSSSSSSSSSSSs sSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k kS ;S; k pSSSSSSSSSSSp kSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k PS kP k pSSSSSSSSSSS; PSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k PP .Sp k pSSSSSSSSSSS. SSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k Pk kP k pSSSSSSSSSSS .SSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k Ss .S; k pSSSSSSSSSSP ;SSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k .S; Pk k pSSSSSSSSSSk sSSSSSSSSSSSSSSSP sSSSSSSSSSSS *
+* k pS pP k pSSSSSSSSSSs kSSSSSSSSSSSSSSSS kSSSSSSSSSSS *
+* k PSs ;S k pSSSSSSSSSS; SSSSSSSSSSSSSSSSS kSSSSSSSSSSS *
+* k ;S;Ps ;P k pSSSSSSSSSS.;SSSSSSSSSSSSSSSSS kSSSSSSSSSSS *
+* k kk PP k pSSSSSSSSSP sSSSSSSSSSSSSSSSSS PSSSSSSSSSSS *
+* k .S sSPp k pSSSSSSSSSs SSSSSSSSSSSSSSSSSS. PSSSSSSSSSSS *
+* k P; sPSSSSSSSSSSSSSSSSSPP; k pSSSSSSSSS;pSSSSSSSSSSSSSSSSSS; SSSSSSSSSSSS *
+* k p; k pSSSSSSSSP PSSSSSSSSSSSSSSSSSSp.SSSSSSSSSSSS *
+* k ;. k pSSSSSSSSSSSSSSSSSSSSSSSSSSSSSPkSSSSSSSSSSSS *
+* k k pSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS *
+* s s .SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSk *
+* k k pSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSP *
+* .k; pk. kSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSP. *
+* *
+* *
+* *
+* *
+* *
+* *
+* SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS *
+* *
+* *
+* *
+* *
+* *
+* kSs S. pS PPPPPPPS; kk .S. ;PPsskSk kk .S. *
+* kskP S. pS PP kk .S. kP pS. kk .S. *
+* ks pP S. pS pS; kPkkkkkkS. .S; ks kk .S. *
+* ks .S; S. pS Pk kk .S. .S; Ps kk .S. *
+* ks PkS. pS sP. kk .S. pP. kP pS. sP *
+* ks kS. pS sSSSSSSSS; kk .S. pPSSPk. sPSSP; *
+ *****************************************************************************************************************************************
\ No newline at end of file
diff --git a/rboat-admin/src/main/resources/static/UI/Hplus-v.4.1.0/rboat.png b/rboat-admin/src/main/resources/static/UI/Hplus-v.4.1.0/rboat.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc48c4cdccff1db06a5ecbea3b3e5b8efac7f8a3
Binary files /dev/null and b/rboat-admin/src/main/resources/static/UI/Hplus-v.4.1.0/rboat.png differ
diff --git a/rboat-admin/src/main/resources/static/favicon.ico b/rboat-admin/src/main/resources/static/favicon.ico
index 6f07782abfc7881a73d3f47a00b761c183e06ff9..d8360c8047def919c6cf7357c38d8cfce7b5b8aa 100644
Binary files a/rboat-admin/src/main/resources/static/favicon.ico and b/rboat-admin/src/main/resources/static/favicon.ico differ
diff --git a/rboat-admin/src/main/resources/static/rboat.png b/rboat-admin/src/main/resources/static/rboat.png
index b0af01fefabd113d23cde619dda7a429653e99c2..c6eec97faf959034bb3e5a24db83e62ea20600b4 100644
Binary files a/rboat-admin/src/main/resources/static/rboat.png and b/rboat-admin/src/main/resources/static/rboat.png differ
diff --git a/rboat-admin/src/main/resources/static/rboat1.png b/rboat-admin/src/main/resources/static/rboat1.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc48c4cdccff1db06a5ecbea3b3e5b8efac7f8a3
Binary files /dev/null and b/rboat-admin/src/main/resources/static/rboat1.png differ
diff --git a/rboat-blog/pom.xml b/rboat-blog/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c5d7b7f400d595c06f8c3aaba839fc4beb1926f4
--- /dev/null
+++ b/rboat-blog/pom.xml
@@ -0,0 +1,25 @@
+
+
+
+ rboat
+ com.rboat
+ 4.0.0
+
+ 4.0.0
+
+ rboat-blog
+
+ 博客系统
+
+
+
+
+
+ com.rboat
+ rboat-framework
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleController.java
new file mode 100644
index 0000000000000000000000000000000000000000..f02bb8f115ea58fbcac7e0a4079c16d47c1a4e83
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogArticle;
+import com.rboat.blog.service.IBlogArticleService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 文章Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/article")
+public class BlogArticleController extends BaseController
+{
+ private String prefix = "blog/article";
+
+ @Autowired
+ private IBlogArticleService blogArticleService;
+
+ @RequiresPermissions("blog:article:view")
+ @GetMapping()
+ public String article()
+ {
+ return prefix + "/article";
+ }
+
+ /**
+ * 查询文章列表
+ */
+ @RequiresPermissions("blog:article:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogArticle blogArticle)
+ {
+ startPage();
+ List list = blogArticleService.selectBlogArticleList(blogArticle);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出文章列表
+ */
+ @RequiresPermissions("blog:article:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogArticle blogArticle)
+ {
+ List list = blogArticleService.selectBlogArticleList(blogArticle);
+ ExcelUtil util = new ExcelUtil(BlogArticle.class);
+ return util.exportExcel(list, "article");
+ }
+
+ /**
+ * 新增文章
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存文章
+ */
+ @RequiresPermissions("blog:article:add")
+ @Log(title = "文章", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogArticle blogArticle)
+ {
+ return toAjax(blogArticleService.insertBlogArticle(blogArticle));
+ }
+
+ /**
+ * 修改文章
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogArticle blogArticle = blogArticleService.selectBlogArticleById(id);
+ mmap.put("blogArticle", blogArticle);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存文章
+ */
+ @RequiresPermissions("blog:article:edit")
+ @Log(title = "文章", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogArticle blogArticle)
+ {
+ return toAjax(blogArticleService.updateBlogArticle(blogArticle));
+ }
+
+ /**
+ * 删除文章
+ */
+ @RequiresPermissions("blog:article:remove")
+ @Log(title = "文章", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogArticleService.deleteBlogArticleByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleTypeController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleTypeController.java
new file mode 100644
index 0000000000000000000000000000000000000000..011c6e7c6c3e40fd94aa3b05947cd8400dea3c90
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogArticleTypeController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogArticleType;
+import com.rboat.blog.service.IBlogArticleTypeService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 文章类型Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/type")
+public class BlogArticleTypeController extends BaseController
+{
+ private String prefix = "blog/type";
+
+ @Autowired
+ private IBlogArticleTypeService blogArticleTypeService;
+
+ @RequiresPermissions("blog:type:view")
+ @GetMapping()
+ public String type()
+ {
+ return prefix + "/type";
+ }
+
+ /**
+ * 查询文章类型列表
+ */
+ @RequiresPermissions("blog:type:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogArticleType blogArticleType)
+ {
+ startPage();
+ List list = blogArticleTypeService.selectBlogArticleTypeList(blogArticleType);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出文章类型列表
+ */
+ @RequiresPermissions("blog:type:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogArticleType blogArticleType)
+ {
+ List list = blogArticleTypeService.selectBlogArticleTypeList(blogArticleType);
+ ExcelUtil util = new ExcelUtil(BlogArticleType.class);
+ return util.exportExcel(list, "type");
+ }
+
+ /**
+ * 新增文章类型
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存文章类型
+ */
+ @RequiresPermissions("blog:type:add")
+ @Log(title = "文章类型", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogArticleType blogArticleType)
+ {
+ return toAjax(blogArticleTypeService.insertBlogArticleType(blogArticleType));
+ }
+
+ /**
+ * 修改文章类型
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogArticleType blogArticleType = blogArticleTypeService.selectBlogArticleTypeById(id);
+ mmap.put("blogArticleType", blogArticleType);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存文章类型
+ */
+ @RequiresPermissions("blog:type:edit")
+ @Log(title = "文章类型", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogArticleType blogArticleType)
+ {
+ return toAjax(blogArticleTypeService.updateBlogArticleType(blogArticleType));
+ }
+
+ /**
+ * 删除文章类型
+ */
+ @RequiresPermissions("blog:type:remove")
+ @Log(title = "文章类型", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogArticleTypeService.deleteBlogArticleTypeByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6615106ca27e8968fd0c39c68a2d1bd16b6b8c40
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogController.java
@@ -0,0 +1,19 @@
+package com.rboat.blog.controller;
+
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.utils.ServletUtils;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Controller
+public class BlogController {
+ private String prefix = "blog";
+ @GetMapping("/blog")
+ public String login(HttpServletRequest request, HttpServletResponse response) {
+ return prefix+"/main";
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogFriendController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogFriendController.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a1eb33fb32692f2099c1210a728dc7534965a24
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogFriendController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogFriend;
+import com.rboat.blog.service.IBlogFriendService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 好友Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/friend")
+public class BlogFriendController extends BaseController
+{
+ private String prefix = "blog/friend";
+
+ @Autowired
+ private IBlogFriendService blogFriendService;
+
+ @RequiresPermissions("blog:friend:view")
+ @GetMapping()
+ public String friend()
+ {
+ return prefix + "/friend";
+ }
+
+ /**
+ * 查询好友列表
+ */
+ @RequiresPermissions("blog:friend:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogFriend blogFriend)
+ {
+ startPage();
+ List list = blogFriendService.selectBlogFriendList(blogFriend);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出好友列表
+ */
+ @RequiresPermissions("blog:friend:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogFriend blogFriend)
+ {
+ List list = blogFriendService.selectBlogFriendList(blogFriend);
+ ExcelUtil util = new ExcelUtil(BlogFriend.class);
+ return util.exportExcel(list, "friend");
+ }
+
+ /**
+ * 新增好友
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存好友
+ */
+ @RequiresPermissions("blog:friend:add")
+ @Log(title = "好友", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogFriend blogFriend)
+ {
+ return toAjax(blogFriendService.insertBlogFriend(blogFriend));
+ }
+
+ /**
+ * 修改好友
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogFriend blogFriend = blogFriendService.selectBlogFriendById(id);
+ mmap.put("blogFriend", blogFriend);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存好友
+ */
+ @RequiresPermissions("blog:friend:edit")
+ @Log(title = "好友", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogFriend blogFriend)
+ {
+ return toAjax(blogFriendService.updateBlogFriend(blogFriend));
+ }
+
+ /**
+ * 删除好友
+ */
+ @RequiresPermissions("blog:friend:remove")
+ @Log(title = "好友", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogFriendService.deleteBlogFriendByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogMasterController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogMasterController.java
new file mode 100644
index 0000000000000000000000000000000000000000..b9f3a9a92293376ac1a951fee4e529ed1bc8b2bf
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogMasterController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogMaster;
+import com.rboat.blog.service.IBlogMasterService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 博主Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/master")
+public class BlogMasterController extends BaseController
+{
+ private String prefix = "blog/master";
+
+ @Autowired
+ private IBlogMasterService blogMasterService;
+
+ @RequiresPermissions("blog:master:view")
+ @GetMapping()
+ public String master()
+ {
+ return prefix + "/master";
+ }
+
+ /**
+ * 查询博主列表
+ */
+ @RequiresPermissions("blog:master:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogMaster blogMaster)
+ {
+ startPage();
+ List list = blogMasterService.selectBlogMasterList(blogMaster);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出博主列表
+ */
+ @RequiresPermissions("blog:master:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogMaster blogMaster)
+ {
+ List list = blogMasterService.selectBlogMasterList(blogMaster);
+ ExcelUtil util = new ExcelUtil(BlogMaster.class);
+ return util.exportExcel(list, "master");
+ }
+
+ /**
+ * 新增博主
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存博主
+ */
+ @RequiresPermissions("blog:master:add")
+ @Log(title = "博主", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogMaster blogMaster)
+ {
+ return toAjax(blogMasterService.insertBlogMaster(blogMaster));
+ }
+
+ /**
+ * 修改博主
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogMaster blogMaster = blogMasterService.selectBlogMasterById(id);
+ mmap.put("blogMaster", blogMaster);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存博主
+ */
+ @RequiresPermissions("blog:master:edit")
+ @Log(title = "博主", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogMaster blogMaster)
+ {
+ return toAjax(blogMasterService.updateBlogMaster(blogMaster));
+ }
+
+ /**
+ * 删除博主
+ */
+ @RequiresPermissions("blog:master:remove")
+ @Log(title = "博主", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogMasterService.deleteBlogMasterByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogPhotoController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogPhotoController.java
new file mode 100644
index 0000000000000000000000000000000000000000..6286b21cdba11d9095f0a4333f7ff94c40c8b8bb
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogPhotoController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogPhoto;
+import com.rboat.blog.service.IBlogPhotoService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 相册Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/photo")
+public class BlogPhotoController extends BaseController
+{
+ private String prefix = "blog/photo";
+
+ @Autowired
+ private IBlogPhotoService blogPhotoService;
+
+ @RequiresPermissions("blog:photo:view")
+ @GetMapping()
+ public String photo()
+ {
+ return prefix + "/photo";
+ }
+
+ /**
+ * 查询相册列表
+ */
+ @RequiresPermissions("blog:photo:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogPhoto blogPhoto)
+ {
+ startPage();
+ List list = blogPhotoService.selectBlogPhotoList(blogPhoto);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出相册列表
+ */
+ @RequiresPermissions("blog:photo:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogPhoto blogPhoto)
+ {
+ List list = blogPhotoService.selectBlogPhotoList(blogPhoto);
+ ExcelUtil util = new ExcelUtil(BlogPhoto.class);
+ return util.exportExcel(list, "photo");
+ }
+
+ /**
+ * 新增相册
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存相册
+ */
+ @RequiresPermissions("blog:photo:add")
+ @Log(title = "相册", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogPhoto blogPhoto)
+ {
+ return toAjax(blogPhotoService.insertBlogPhoto(blogPhoto));
+ }
+
+ /**
+ * 修改相册
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogPhoto blogPhoto = blogPhotoService.selectBlogPhotoById(id);
+ mmap.put("blogPhoto", blogPhoto);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存相册
+ */
+ @RequiresPermissions("blog:photo:edit")
+ @Log(title = "相册", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogPhoto blogPhoto)
+ {
+ return toAjax(blogPhotoService.updateBlogPhoto(blogPhoto));
+ }
+
+ /**
+ * 删除相册
+ */
+ @RequiresPermissions("blog:photo:remove")
+ @Log(title = "相册", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogPhotoService.deleteBlogPhotoByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogReviewController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogReviewController.java
new file mode 100644
index 0000000000000000000000000000000000000000..c3ba69973a55f193b9a24c279ded201853e80e40
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogReviewController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogReview;
+import com.rboat.blog.service.IBlogReviewService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 评论Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/review")
+public class BlogReviewController extends BaseController
+{
+ private String prefix = "blog/review";
+
+ @Autowired
+ private IBlogReviewService blogReviewService;
+
+ @RequiresPermissions("blog:review:view")
+ @GetMapping()
+ public String review()
+ {
+ return prefix + "/review";
+ }
+
+ /**
+ * 查询评论列表
+ */
+ @RequiresPermissions("blog:review:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogReview blogReview)
+ {
+ startPage();
+ List list = blogReviewService.selectBlogReviewList(blogReview);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出评论列表
+ */
+ @RequiresPermissions("blog:review:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogReview blogReview)
+ {
+ List list = blogReviewService.selectBlogReviewList(blogReview);
+ ExcelUtil util = new ExcelUtil(BlogReview.class);
+ return util.exportExcel(list, "review");
+ }
+
+ /**
+ * 新增评论
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存评论
+ */
+ @RequiresPermissions("blog:review:add")
+ @Log(title = "评论", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogReview blogReview)
+ {
+ return toAjax(blogReviewService.insertBlogReview(blogReview));
+ }
+
+ /**
+ * 修改评论
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogReview blogReview = blogReviewService.selectBlogReviewById(id);
+ mmap.put("blogReview", blogReview);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存评论
+ */
+ @RequiresPermissions("blog:review:edit")
+ @Log(title = "评论", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogReview blogReview)
+ {
+ return toAjax(blogReviewService.updateBlogReview(blogReview));
+ }
+
+ /**
+ * 删除评论
+ */
+ @RequiresPermissions("blog:review:remove")
+ @Log(title = "评论", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogReviewService.deleteBlogReviewByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/controller/BlogWordController.java b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogWordController.java
new file mode 100644
index 0000000000000000000000000000000000000000..2cd3fa505c778ed80fa0c4c36cfdde3b29607228
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/controller/BlogWordController.java
@@ -0,0 +1,125 @@
+package com.rboat.blog.controller;
+
+import java.util.List;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.ModelMap;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import com.rboat.common.annotation.Log;
+import com.rboat.common.enums.BusinessType;
+import com.rboat.blog.domain.BlogWord;
+import com.rboat.blog.service.IBlogWordService;
+import com.rboat.common.core.controller.BaseController;
+import com.rboat.common.core.domain.AjaxResult;
+import com.rboat.common.utils.poi.ExcelUtil;
+import com.rboat.common.core.page.TableDataInfo;
+
+/**
+ * 留言Controller
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Controller
+@RequestMapping("/blog/word")
+public class BlogWordController extends BaseController
+{
+ private String prefix = "blog/word";
+
+ @Autowired
+ private IBlogWordService blogWordService;
+
+ @RequiresPermissions("blog:word:view")
+ @GetMapping()
+ public String word()
+ {
+ return prefix + "/word";
+ }
+
+ /**
+ * 查询留言列表
+ */
+ @RequiresPermissions("blog:word:list")
+ @PostMapping("/list")
+ @ResponseBody
+ public TableDataInfo list(BlogWord blogWord)
+ {
+ startPage();
+ List list = blogWordService.selectBlogWordList(blogWord);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出留言列表
+ */
+ @RequiresPermissions("blog:word:export")
+ @PostMapping("/export")
+ @ResponseBody
+ public AjaxResult export(BlogWord blogWord)
+ {
+ List list = blogWordService.selectBlogWordList(blogWord);
+ ExcelUtil util = new ExcelUtil(BlogWord.class);
+ return util.exportExcel(list, "word");
+ }
+
+ /**
+ * 新增留言
+ */
+ @GetMapping("/add")
+ public String add()
+ {
+ return prefix + "/add";
+ }
+
+ /**
+ * 新增保存留言
+ */
+ @RequiresPermissions("blog:word:add")
+ @Log(title = "留言", businessType = BusinessType.INSERT)
+ @PostMapping("/add")
+ @ResponseBody
+ public AjaxResult addSave(BlogWord blogWord)
+ {
+ return toAjax(blogWordService.insertBlogWord(blogWord));
+ }
+
+ /**
+ * 修改留言
+ */
+ @GetMapping("/edit/{id}")
+ public String edit(@PathVariable("id") String id, ModelMap mmap)
+ {
+ BlogWord blogWord = blogWordService.selectBlogWordById(id);
+ mmap.put("blogWord", blogWord);
+ return prefix + "/edit";
+ }
+
+ /**
+ * 修改保存留言
+ */
+ @RequiresPermissions("blog:word:edit")
+ @Log(title = "留言", businessType = BusinessType.UPDATE)
+ @PostMapping("/edit")
+ @ResponseBody
+ public AjaxResult editSave(BlogWord blogWord)
+ {
+ return toAjax(blogWordService.updateBlogWord(blogWord));
+ }
+
+ /**
+ * 删除留言
+ */
+ @RequiresPermissions("blog:word:remove")
+ @Log(title = "留言", businessType = BusinessType.DELETE)
+ @PostMapping( "/remove")
+ @ResponseBody
+ public AjaxResult remove(String ids)
+ {
+ return toAjax(blogWordService.deleteBlogWordByIds(ids));
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticle.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticle.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f8a31271c9ffea60cf424485559e44b10e668a7
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticle.java
@@ -0,0 +1,150 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 文章对象 blog_article
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogArticle extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 文章类型id */
+ @Excel(name = "文章类型id")
+ private String articleTypeId;
+
+ /** 文章标题 */
+ @Excel(name = "文章标题")
+ private String articleTitle;
+
+ /** 文章信息 */
+ @Excel(name = "文章信息")
+ private String articleInfo;
+
+ /** 文章内容 */
+ @Excel(name = "文章内容")
+ private String articleContent;
+
+ /** 发布时间 */
+ @Excel(name = "发布时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date articlePublishTime;
+
+ /** 阅读数(自增) */
+ @Excel(name = "阅读数(自增)")
+ private Long articleCount;
+
+ /** 文章来源(0:原创;1:转载) */
+ @Excel(name = "文章来源(0:原创;1:转载)")
+ private Long articleFrom;
+
+ /** 博主id */
+ @Excel(name = "博主id")
+ private String articleMasterId;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setArticleTypeId(String articleTypeId)
+ {
+ this.articleTypeId = articleTypeId;
+ }
+
+ public String getArticleTypeId()
+ {
+ return articleTypeId;
+ }
+ public void setArticleTitle(String articleTitle)
+ {
+ this.articleTitle = articleTitle;
+ }
+
+ public String getArticleTitle()
+ {
+ return articleTitle;
+ }
+ public void setArticleInfo(String articleInfo)
+ {
+ this.articleInfo = articleInfo;
+ }
+
+ public String getArticleInfo()
+ {
+ return articleInfo;
+ }
+ public void setArticleContent(String articleContent)
+ {
+ this.articleContent = articleContent;
+ }
+
+ public String getArticleContent()
+ {
+ return articleContent;
+ }
+ public void setArticlePublishTime(Date articlePublishTime)
+ {
+ this.articlePublishTime = articlePublishTime;
+ }
+
+ public Date getArticlePublishTime()
+ {
+ return articlePublishTime;
+ }
+ public void setArticleCount(Long articleCount)
+ {
+ this.articleCount = articleCount;
+ }
+
+ public Long getArticleCount()
+ {
+ return articleCount;
+ }
+ public void setArticleFrom(Long articleFrom)
+ {
+ this.articleFrom = articleFrom;
+ }
+
+ public Long getArticleFrom()
+ {
+ return articleFrom;
+ }
+ public void setArticleMasterId(String articleMasterId)
+ {
+ this.articleMasterId = articleMasterId;
+ }
+
+ public String getArticleMasterId()
+ {
+ return articleMasterId;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("articleTypeId", getArticleTypeId())
+ .append("articleTitle", getArticleTitle())
+ .append("articleInfo", getArticleInfo())
+ .append("articleContent", getArticleContent())
+ .append("articlePublishTime", getArticlePublishTime())
+ .append("articleCount", getArticleCount())
+ .append("articleFrom", getArticleFrom())
+ .append("articleMasterId", getArticleMasterId())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticleType.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticleType.java
new file mode 100644
index 0000000000000000000000000000000000000000..38e0c1c3f3d14f6da82fd10a245d611af02473fa
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogArticleType.java
@@ -0,0 +1,79 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+
+/**
+ * 文章类型对象 blog_article_type
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogArticleType extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 类型名称 */
+ @Excel(name = "类型名称")
+ private String name;
+
+ /** 父级id */
+ @Excel(name = "父级id")
+ private String parent;
+
+ /** 描述信息 */
+ @Excel(name = "描述信息")
+ private String info;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+ public void setParent(String parent)
+ {
+ this.parent = parent;
+ }
+
+ public String getParent()
+ {
+ return parent;
+ }
+ public void setInfo(String info)
+ {
+ this.info = info;
+ }
+
+ public String getInfo()
+ {
+ return info;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("name", getName())
+ .append("parent", getParent())
+ .append("info", getInfo())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogFriend.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogFriend.java
new file mode 100644
index 0000000000000000000000000000000000000000..4cd0f62c3bd7468428e27b108ae3abfa2e1ba444
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogFriend.java
@@ -0,0 +1,79 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+
+/**
+ * 好友对象 blog_friend
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogFriend extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 博主id */
+ @Excel(name = "博主id")
+ private String friendMasterId;
+
+ /** 好友的id */
+ @Excel(name = "好友的id")
+ private String friendFriendId;
+
+ /** 好友备注名 */
+ @Excel(name = "好友备注名")
+ private String friendReName;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setFriendMasterId(String friendMasterId)
+ {
+ this.friendMasterId = friendMasterId;
+ }
+
+ public String getFriendMasterId()
+ {
+ return friendMasterId;
+ }
+ public void setFriendFriendId(String friendFriendId)
+ {
+ this.friendFriendId = friendFriendId;
+ }
+
+ public String getFriendFriendId()
+ {
+ return friendFriendId;
+ }
+ public void setFriendReName(String friendReName)
+ {
+ this.friendReName = friendReName;
+ }
+
+ public String getFriendReName()
+ {
+ return friendReName;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("friendMasterId", getFriendMasterId())
+ .append("friendFriendId", getFriendFriendId())
+ .append("friendReName", getFriendReName())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogMaster.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogMaster.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5e437f2825cdf3133ec1a230344625daaa7dc4e
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogMaster.java
@@ -0,0 +1,93 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+
+/**
+ * 博主对象 blog_master
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogMaster extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 博主名称 */
+ @Excel(name = "博主名称")
+ private String masterName;
+
+ /** 密码 */
+ @Excel(name = "密码")
+ private String masterPassword;
+
+ /** 博主oicq(三方id) */
+ @Excel(name = "博主oicq(三方id)")
+ private String masterOicq;
+
+ /** 0:女;1:男 */
+ @Excel(name = "0:女;1:男")
+ private String masterSex;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setMasterName(String masterName)
+ {
+ this.masterName = masterName;
+ }
+
+ public String getMasterName()
+ {
+ return masterName;
+ }
+ public void setMasterPassword(String masterPassword)
+ {
+ this.masterPassword = masterPassword;
+ }
+
+ public String getMasterPassword()
+ {
+ return masterPassword;
+ }
+ public void setMasterOicq(String masterOicq)
+ {
+ this.masterOicq = masterOicq;
+ }
+
+ public String getMasterOicq()
+ {
+ return masterOicq;
+ }
+ public void setMasterSex(String masterSex)
+ {
+ this.masterSex = masterSex;
+ }
+
+ public String getMasterSex()
+ {
+ return masterSex;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("masterName", getMasterName())
+ .append("masterPassword", getMasterPassword())
+ .append("masterOicq", getMasterOicq())
+ .append("masterSex", getMasterSex())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogPhoto.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogPhoto.java
new file mode 100644
index 0000000000000000000000000000000000000000..539b126305f9a87d337e038128a29785eedc5830
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogPhoto.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 相册对象 blog_photo
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogPhoto extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 图片存放地址 */
+ @Excel(name = "图片存放地址")
+ private String photoAddr;
+
+ /** 上传日期 */
+ @Excel(name = "上传日期", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date photoAddTime;
+
+ /** 图片备注 */
+ @Excel(name = "图片备注")
+ private String photoInfo;
+
+ /** 上传人(博主) */
+ @Excel(name = "上传人(博主)")
+ private String photoMasterId;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setPhotoAddr(String photoAddr)
+ {
+ this.photoAddr = photoAddr;
+ }
+
+ public String getPhotoAddr()
+ {
+ return photoAddr;
+ }
+ public void setPhotoAddTime(Date photoAddTime)
+ {
+ this.photoAddTime = photoAddTime;
+ }
+
+ public Date getPhotoAddTime()
+ {
+ return photoAddTime;
+ }
+ public void setPhotoInfo(String photoInfo)
+ {
+ this.photoInfo = photoInfo;
+ }
+
+ public String getPhotoInfo()
+ {
+ return photoInfo;
+ }
+ public void setPhotoMasterId(String photoMasterId)
+ {
+ this.photoMasterId = photoMasterId;
+ }
+
+ public String getPhotoMasterId()
+ {
+ return photoMasterId;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("photoAddr", getPhotoAddr())
+ .append("photoAddTime", getPhotoAddTime())
+ .append("photoInfo", getPhotoInfo())
+ .append("photoMasterId", getPhotoMasterId())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogReview.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogReview.java
new file mode 100644
index 0000000000000000000000000000000000000000..a520b42b60a12d2efbd38d29f25f71421ba09a75
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogReview.java
@@ -0,0 +1,108 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 评论对象 blog_review
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogReview extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 评论的文章id */
+ @Excel(name = "评论的文章id")
+ private String reviewArticleid;
+
+ /** 博主id */
+ @Excel(name = "博主id")
+ private String reviewMasterId;
+
+ /** 评论的作者id */
+ @Excel(name = "评论的作者id")
+ private String reviewAuthorId;
+
+ /** 评论内容 */
+ @Excel(name = "评论内容")
+ private String reviewContent;
+
+ /** 评论时间 */
+ @Excel(name = "评论时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date reviewTime;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setReviewArticleid(String reviewArticleid)
+ {
+ this.reviewArticleid = reviewArticleid;
+ }
+
+ public String getReviewArticleid()
+ {
+ return reviewArticleid;
+ }
+ public void setReviewMasterId(String reviewMasterId)
+ {
+ this.reviewMasterId = reviewMasterId;
+ }
+
+ public String getReviewMasterId()
+ {
+ return reviewMasterId;
+ }
+ public void setReviewAuthorId(String reviewAuthorId)
+ {
+ this.reviewAuthorId = reviewAuthorId;
+ }
+
+ public String getReviewAuthorId()
+ {
+ return reviewAuthorId;
+ }
+ public void setReviewContent(String reviewContent)
+ {
+ this.reviewContent = reviewContent;
+ }
+
+ public String getReviewContent()
+ {
+ return reviewContent;
+ }
+ public void setReviewTime(Date reviewTime)
+ {
+ this.reviewTime = reviewTime;
+ }
+
+ public Date getReviewTime()
+ {
+ return reviewTime;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("reviewArticleid", getReviewArticleid())
+ .append("reviewMasterId", getReviewMasterId())
+ .append("reviewAuthorId", getReviewAuthorId())
+ .append("reviewContent", getReviewContent())
+ .append("reviewTime", getReviewTime())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/domain/BlogWord.java b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogWord.java
new file mode 100644
index 0000000000000000000000000000000000000000..832c4fa7b93f3a46d9068201bda73569d875eacb
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/domain/BlogWord.java
@@ -0,0 +1,108 @@
+package com.rboat.blog.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.rboat.common.annotation.Excel;
+import com.rboat.common.core.domain.BaseEntity;
+import java.util.Date;
+
+/**
+ * 留言对象 blog_word
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public class BlogWord extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** 主键id */
+ private String id;
+
+ /** 留言标题 */
+ @Excel(name = "留言标题")
+ private String wordTitle;
+
+ /** 留言内容 */
+ @Excel(name = "留言内容")
+ private String wordContent;
+
+ /** 留言的时间 */
+ @Excel(name = "留言的时间", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date wordTime;
+
+ /** 留言的作者id */
+ @Excel(name = "留言的作者id")
+ private String wordAuthorId;
+
+ /** 留言的对象id(博主id) */
+ @Excel(name = "留言的对象id(博主id)")
+ private String wordMasterId;
+
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ public void setWordTitle(String wordTitle)
+ {
+ this.wordTitle = wordTitle;
+ }
+
+ public String getWordTitle()
+ {
+ return wordTitle;
+ }
+ public void setWordContent(String wordContent)
+ {
+ this.wordContent = wordContent;
+ }
+
+ public String getWordContent()
+ {
+ return wordContent;
+ }
+ public void setWordTime(Date wordTime)
+ {
+ this.wordTime = wordTime;
+ }
+
+ public Date getWordTime()
+ {
+ return wordTime;
+ }
+ public void setWordAuthorId(String wordAuthorId)
+ {
+ this.wordAuthorId = wordAuthorId;
+ }
+
+ public String getWordAuthorId()
+ {
+ return wordAuthorId;
+ }
+ public void setWordMasterId(String wordMasterId)
+ {
+ this.wordMasterId = wordMasterId;
+ }
+
+ public String getWordMasterId()
+ {
+ return wordMasterId;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("wordTitle", getWordTitle())
+ .append("wordContent", getWordContent())
+ .append("wordTime", getWordTime())
+ .append("wordAuthorId", getWordAuthorId())
+ .append("wordMasterId", getWordMasterId())
+ .toString();
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..50f85284c13bc5ef872cfe0f9225f21eeef1ad61
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogArticle;
+import java.util.List;
+
+/**
+ * 文章Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogArticleMapper
+{
+ /**
+ * 查询文章
+ *
+ * @param id 文章ID
+ * @return 文章
+ */
+ public BlogArticle selectBlogArticleById(String id);
+
+ /**
+ * 查询文章列表
+ *
+ * @param blogArticle 文章
+ * @return 文章集合
+ */
+ public List selectBlogArticleList(BlogArticle blogArticle);
+
+ /**
+ * 新增文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ public int insertBlogArticle(BlogArticle blogArticle);
+
+ /**
+ * 修改文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ public int updateBlogArticle(BlogArticle blogArticle);
+
+ /**
+ * 删除文章
+ *
+ * @param id 文章ID
+ * @return 结果
+ */
+ public int deleteBlogArticleById(String id);
+
+ /**
+ * 批量删除文章
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogArticleByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleTypeMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleTypeMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..b932a7338f2521555d56c5a030230c01b6b6f581
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogArticleTypeMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogArticleType;
+import java.util.List;
+
+/**
+ * 文章类型Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogArticleTypeMapper
+{
+ /**
+ * 查询文章类型
+ *
+ * @param id 文章类型ID
+ * @return 文章类型
+ */
+ public BlogArticleType selectBlogArticleTypeById(String id);
+
+ /**
+ * 查询文章类型列表
+ *
+ * @param blogArticleType 文章类型
+ * @return 文章类型集合
+ */
+ public List selectBlogArticleTypeList(BlogArticleType blogArticleType);
+
+ /**
+ * 新增文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ public int insertBlogArticleType(BlogArticleType blogArticleType);
+
+ /**
+ * 修改文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ public int updateBlogArticleType(BlogArticleType blogArticleType);
+
+ /**
+ * 删除文章类型
+ *
+ * @param id 文章类型ID
+ * @return 结果
+ */
+ public int deleteBlogArticleTypeById(String id);
+
+ /**
+ * 批量删除文章类型
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogArticleTypeByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogFriendMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogFriendMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..4abd5dc3a469690b82925c689efc0eb45bde38cc
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogFriendMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogFriend;
+import java.util.List;
+
+/**
+ * 好友Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogFriendMapper
+{
+ /**
+ * 查询好友
+ *
+ * @param id 好友ID
+ * @return 好友
+ */
+ public BlogFriend selectBlogFriendById(String id);
+
+ /**
+ * 查询好友列表
+ *
+ * @param blogFriend 好友
+ * @return 好友集合
+ */
+ public List selectBlogFriendList(BlogFriend blogFriend);
+
+ /**
+ * 新增好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ public int insertBlogFriend(BlogFriend blogFriend);
+
+ /**
+ * 修改好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ public int updateBlogFriend(BlogFriend blogFriend);
+
+ /**
+ * 删除好友
+ *
+ * @param id 好友ID
+ * @return 结果
+ */
+ public int deleteBlogFriendById(String id);
+
+ /**
+ * 批量删除好友
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogFriendByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogMasterMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogMasterMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..54e3c4f2964261fb24ad97f89b71b370d5d3fc97
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogMasterMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogMaster;
+import java.util.List;
+
+/**
+ * 博主Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogMasterMapper
+{
+ /**
+ * 查询博主
+ *
+ * @param id 博主ID
+ * @return 博主
+ */
+ public BlogMaster selectBlogMasterById(String id);
+
+ /**
+ * 查询博主列表
+ *
+ * @param blogMaster 博主
+ * @return 博主集合
+ */
+ public List selectBlogMasterList(BlogMaster blogMaster);
+
+ /**
+ * 新增博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ public int insertBlogMaster(BlogMaster blogMaster);
+
+ /**
+ * 修改博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ public int updateBlogMaster(BlogMaster blogMaster);
+
+ /**
+ * 删除博主
+ *
+ * @param id 博主ID
+ * @return 结果
+ */
+ public int deleteBlogMasterById(String id);
+
+ /**
+ * 批量删除博主
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogMasterByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogPhotoMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogPhotoMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..47b47cab5baa34909dd49a0039ccbe5870468e5a
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogPhotoMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogPhoto;
+import java.util.List;
+
+/**
+ * 相册Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogPhotoMapper
+{
+ /**
+ * 查询相册
+ *
+ * @param id 相册ID
+ * @return 相册
+ */
+ public BlogPhoto selectBlogPhotoById(String id);
+
+ /**
+ * 查询相册列表
+ *
+ * @param blogPhoto 相册
+ * @return 相册集合
+ */
+ public List selectBlogPhotoList(BlogPhoto blogPhoto);
+
+ /**
+ * 新增相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ public int insertBlogPhoto(BlogPhoto blogPhoto);
+
+ /**
+ * 修改相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ public int updateBlogPhoto(BlogPhoto blogPhoto);
+
+ /**
+ * 删除相册
+ *
+ * @param id 相册ID
+ * @return 结果
+ */
+ public int deleteBlogPhotoById(String id);
+
+ /**
+ * 批量删除相册
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogPhotoByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogReviewMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogReviewMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..cca2f04e597050391a01dbe93c5990e35dc9aff0
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogReviewMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogReview;
+import java.util.List;
+
+/**
+ * 评论Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogReviewMapper
+{
+ /**
+ * 查询评论
+ *
+ * @param id 评论ID
+ * @return 评论
+ */
+ public BlogReview selectBlogReviewById(String id);
+
+ /**
+ * 查询评论列表
+ *
+ * @param blogReview 评论
+ * @return 评论集合
+ */
+ public List selectBlogReviewList(BlogReview blogReview);
+
+ /**
+ * 新增评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ public int insertBlogReview(BlogReview blogReview);
+
+ /**
+ * 修改评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ public int updateBlogReview(BlogReview blogReview);
+
+ /**
+ * 删除评论
+ *
+ * @param id 评论ID
+ * @return 结果
+ */
+ public int deleteBlogReviewById(String id);
+
+ /**
+ * 批量删除评论
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogReviewByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogWordMapper.java b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogWordMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..61a307686d9ef1600ec4d62eea8a41f74b691888
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/mapper/BlogWordMapper.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.mapper;
+
+import com.rboat.blog.domain.BlogWord;
+import java.util.List;
+
+/**
+ * 留言Mapper接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface BlogWordMapper
+{
+ /**
+ * 查询留言
+ *
+ * @param id 留言ID
+ * @return 留言
+ */
+ public BlogWord selectBlogWordById(String id);
+
+ /**
+ * 查询留言列表
+ *
+ * @param blogWord 留言
+ * @return 留言集合
+ */
+ public List selectBlogWordList(BlogWord blogWord);
+
+ /**
+ * 新增留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ public int insertBlogWord(BlogWord blogWord);
+
+ /**
+ * 修改留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ public int updateBlogWord(BlogWord blogWord);
+
+ /**
+ * 删除留言
+ *
+ * @param id 留言ID
+ * @return 结果
+ */
+ public int deleteBlogWordById(String id);
+
+ /**
+ * 批量删除留言
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogWordByIds(String[] ids);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleService.java
new file mode 100644
index 0000000000000000000000000000000000000000..54cb4b74dd7462fd7fdcfac8ceca43a7e5c9c816
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogArticle;
+import java.util.List;
+
+/**
+ * 文章Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogArticleService
+{
+ /**
+ * 查询文章
+ *
+ * @param id 文章ID
+ * @return 文章
+ */
+ public BlogArticle selectBlogArticleById(String id);
+
+ /**
+ * 查询文章列表
+ *
+ * @param blogArticle 文章
+ * @return 文章集合
+ */
+ public List selectBlogArticleList(BlogArticle blogArticle);
+
+ /**
+ * 新增文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ public int insertBlogArticle(BlogArticle blogArticle);
+
+ /**
+ * 修改文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ public int updateBlogArticle(BlogArticle blogArticle);
+
+ /**
+ * 批量删除文章
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogArticleByIds(String ids);
+
+ /**
+ * 删除文章信息
+ *
+ * @param id 文章ID
+ * @return 结果
+ */
+ public int deleteBlogArticleById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleTypeService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleTypeService.java
new file mode 100644
index 0000000000000000000000000000000000000000..23ce91dd610232a786305652c6032ee33625d00c
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogArticleTypeService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogArticleType;
+import java.util.List;
+
+/**
+ * 文章类型Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogArticleTypeService
+{
+ /**
+ * 查询文章类型
+ *
+ * @param id 文章类型ID
+ * @return 文章类型
+ */
+ public BlogArticleType selectBlogArticleTypeById(String id);
+
+ /**
+ * 查询文章类型列表
+ *
+ * @param blogArticleType 文章类型
+ * @return 文章类型集合
+ */
+ public List selectBlogArticleTypeList(BlogArticleType blogArticleType);
+
+ /**
+ * 新增文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ public int insertBlogArticleType(BlogArticleType blogArticleType);
+
+ /**
+ * 修改文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ public int updateBlogArticleType(BlogArticleType blogArticleType);
+
+ /**
+ * 批量删除文章类型
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogArticleTypeByIds(String ids);
+
+ /**
+ * 删除文章类型信息
+ *
+ * @param id 文章类型ID
+ * @return 结果
+ */
+ public int deleteBlogArticleTypeById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogFriendService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogFriendService.java
new file mode 100644
index 0000000000000000000000000000000000000000..09776868006c8a6ac3272c0b5ad69bac7d98481d
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogFriendService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogFriend;
+import java.util.List;
+
+/**
+ * 好友Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogFriendService
+{
+ /**
+ * 查询好友
+ *
+ * @param id 好友ID
+ * @return 好友
+ */
+ public BlogFriend selectBlogFriendById(String id);
+
+ /**
+ * 查询好友列表
+ *
+ * @param blogFriend 好友
+ * @return 好友集合
+ */
+ public List selectBlogFriendList(BlogFriend blogFriend);
+
+ /**
+ * 新增好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ public int insertBlogFriend(BlogFriend blogFriend);
+
+ /**
+ * 修改好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ public int updateBlogFriend(BlogFriend blogFriend);
+
+ /**
+ * 批量删除好友
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogFriendByIds(String ids);
+
+ /**
+ * 删除好友信息
+ *
+ * @param id 好友ID
+ * @return 结果
+ */
+ public int deleteBlogFriendById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogMasterService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogMasterService.java
new file mode 100644
index 0000000000000000000000000000000000000000..e2f7225d7ad52a57c51829c488eac893ee93ccdd
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogMasterService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogMaster;
+import java.util.List;
+
+/**
+ * 博主Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogMasterService
+{
+ /**
+ * 查询博主
+ *
+ * @param id 博主ID
+ * @return 博主
+ */
+ public BlogMaster selectBlogMasterById(String id);
+
+ /**
+ * 查询博主列表
+ *
+ * @param blogMaster 博主
+ * @return 博主集合
+ */
+ public List selectBlogMasterList(BlogMaster blogMaster);
+
+ /**
+ * 新增博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ public int insertBlogMaster(BlogMaster blogMaster);
+
+ /**
+ * 修改博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ public int updateBlogMaster(BlogMaster blogMaster);
+
+ /**
+ * 批量删除博主
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogMasterByIds(String ids);
+
+ /**
+ * 删除博主信息
+ *
+ * @param id 博主ID
+ * @return 结果
+ */
+ public int deleteBlogMasterById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogPhotoService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogPhotoService.java
new file mode 100644
index 0000000000000000000000000000000000000000..08a22386f958699a2c041290575087a7b928c720
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogPhotoService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogPhoto;
+import java.util.List;
+
+/**
+ * 相册Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogPhotoService
+{
+ /**
+ * 查询相册
+ *
+ * @param id 相册ID
+ * @return 相册
+ */
+ public BlogPhoto selectBlogPhotoById(String id);
+
+ /**
+ * 查询相册列表
+ *
+ * @param blogPhoto 相册
+ * @return 相册集合
+ */
+ public List selectBlogPhotoList(BlogPhoto blogPhoto);
+
+ /**
+ * 新增相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ public int insertBlogPhoto(BlogPhoto blogPhoto);
+
+ /**
+ * 修改相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ public int updateBlogPhoto(BlogPhoto blogPhoto);
+
+ /**
+ * 批量删除相册
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogPhotoByIds(String ids);
+
+ /**
+ * 删除相册信息
+ *
+ * @param id 相册ID
+ * @return 结果
+ */
+ public int deleteBlogPhotoById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogReviewService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogReviewService.java
new file mode 100644
index 0000000000000000000000000000000000000000..7b0c0742e498841a9b2916894ca33b8a876aee53
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogReviewService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogReview;
+import java.util.List;
+
+/**
+ * 评论Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogReviewService
+{
+ /**
+ * 查询评论
+ *
+ * @param id 评论ID
+ * @return 评论
+ */
+ public BlogReview selectBlogReviewById(String id);
+
+ /**
+ * 查询评论列表
+ *
+ * @param blogReview 评论
+ * @return 评论集合
+ */
+ public List selectBlogReviewList(BlogReview blogReview);
+
+ /**
+ * 新增评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ public int insertBlogReview(BlogReview blogReview);
+
+ /**
+ * 修改评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ public int updateBlogReview(BlogReview blogReview);
+
+ /**
+ * 批量删除评论
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogReviewByIds(String ids);
+
+ /**
+ * 删除评论信息
+ *
+ * @param id 评论ID
+ * @return 结果
+ */
+ public int deleteBlogReviewById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/IBlogWordService.java b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogWordService.java
new file mode 100644
index 0000000000000000000000000000000000000000..5c333d9ef18d2ec9b69f86d4af88b3ba6102a734
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/IBlogWordService.java
@@ -0,0 +1,61 @@
+package com.rboat.blog.service;
+
+import com.rboat.blog.domain.BlogWord;
+import java.util.List;
+
+/**
+ * 留言Service接口
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+public interface IBlogWordService
+{
+ /**
+ * 查询留言
+ *
+ * @param id 留言ID
+ * @return 留言
+ */
+ public BlogWord selectBlogWordById(String id);
+
+ /**
+ * 查询留言列表
+ *
+ * @param blogWord 留言
+ * @return 留言集合
+ */
+ public List selectBlogWordList(BlogWord blogWord);
+
+ /**
+ * 新增留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ public int insertBlogWord(BlogWord blogWord);
+
+ /**
+ * 修改留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ public int updateBlogWord(BlogWord blogWord);
+
+ /**
+ * 批量删除留言
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ public int deleteBlogWordByIds(String ids);
+
+ /**
+ * 删除留言信息
+ *
+ * @param id 留言ID
+ * @return 结果
+ */
+ public int deleteBlogWordById(String id);
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..b894b161240a9559ca3d67e90bf18623780af017
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogArticleMapper;
+import com.rboat.blog.domain.BlogArticle;
+import com.rboat.blog.service.IBlogArticleService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 文章Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogArticleServiceImpl implements IBlogArticleService
+{
+ @Autowired
+ private BlogArticleMapper blogArticleMapper;
+
+ /**
+ * 查询文章
+ *
+ * @param id 文章ID
+ * @return 文章
+ */
+ @Override
+ public BlogArticle selectBlogArticleById(String id)
+ {
+ return blogArticleMapper.selectBlogArticleById(id);
+ }
+
+ /**
+ * 查询文章列表
+ *
+ * @param blogArticle 文章
+ * @return 文章
+ */
+ @Override
+ public List selectBlogArticleList(BlogArticle blogArticle)
+ {
+ return blogArticleMapper.selectBlogArticleList(blogArticle);
+ }
+
+ /**
+ * 新增文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ @Override
+ public int insertBlogArticle(BlogArticle blogArticle)
+ {
+ return blogArticleMapper.insertBlogArticle(blogArticle);
+ }
+
+ /**
+ * 修改文章
+ *
+ * @param blogArticle 文章
+ * @return 结果
+ */
+ @Override
+ public int updateBlogArticle(BlogArticle blogArticle)
+ {
+ return blogArticleMapper.updateBlogArticle(blogArticle);
+ }
+
+ /**
+ * 删除文章对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogArticleByIds(String ids)
+ {
+ return blogArticleMapper.deleteBlogArticleByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除文章信息
+ *
+ * @param id 文章ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogArticleById(String id)
+ {
+ return blogArticleMapper.deleteBlogArticleById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleTypeServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleTypeServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..96b9874bfb22b09016b1cc6a84238d4c3b7e319e
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogArticleTypeServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogArticleTypeMapper;
+import com.rboat.blog.domain.BlogArticleType;
+import com.rboat.blog.service.IBlogArticleTypeService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 文章类型Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogArticleTypeServiceImpl implements IBlogArticleTypeService
+{
+ @Autowired
+ private BlogArticleTypeMapper blogArticleTypeMapper;
+
+ /**
+ * 查询文章类型
+ *
+ * @param id 文章类型ID
+ * @return 文章类型
+ */
+ @Override
+ public BlogArticleType selectBlogArticleTypeById(String id)
+ {
+ return blogArticleTypeMapper.selectBlogArticleTypeById(id);
+ }
+
+ /**
+ * 查询文章类型列表
+ *
+ * @param blogArticleType 文章类型
+ * @return 文章类型
+ */
+ @Override
+ public List selectBlogArticleTypeList(BlogArticleType blogArticleType)
+ {
+ return blogArticleTypeMapper.selectBlogArticleTypeList(blogArticleType);
+ }
+
+ /**
+ * 新增文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ @Override
+ public int insertBlogArticleType(BlogArticleType blogArticleType)
+ {
+ return blogArticleTypeMapper.insertBlogArticleType(blogArticleType);
+ }
+
+ /**
+ * 修改文章类型
+ *
+ * @param blogArticleType 文章类型
+ * @return 结果
+ */
+ @Override
+ public int updateBlogArticleType(BlogArticleType blogArticleType)
+ {
+ return blogArticleTypeMapper.updateBlogArticleType(blogArticleType);
+ }
+
+ /**
+ * 删除文章类型对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogArticleTypeByIds(String ids)
+ {
+ return blogArticleTypeMapper.deleteBlogArticleTypeByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除文章类型信息
+ *
+ * @param id 文章类型ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogArticleTypeById(String id)
+ {
+ return blogArticleTypeMapper.deleteBlogArticleTypeById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogFriendServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogFriendServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..1ba83549240cb889d18303e795444e805395c201
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogFriendServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogFriendMapper;
+import com.rboat.blog.domain.BlogFriend;
+import com.rboat.blog.service.IBlogFriendService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 好友Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogFriendServiceImpl implements IBlogFriendService
+{
+ @Autowired
+ private BlogFriendMapper blogFriendMapper;
+
+ /**
+ * 查询好友
+ *
+ * @param id 好友ID
+ * @return 好友
+ */
+ @Override
+ public BlogFriend selectBlogFriendById(String id)
+ {
+ return blogFriendMapper.selectBlogFriendById(id);
+ }
+
+ /**
+ * 查询好友列表
+ *
+ * @param blogFriend 好友
+ * @return 好友
+ */
+ @Override
+ public List selectBlogFriendList(BlogFriend blogFriend)
+ {
+ return blogFriendMapper.selectBlogFriendList(blogFriend);
+ }
+
+ /**
+ * 新增好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ @Override
+ public int insertBlogFriend(BlogFriend blogFriend)
+ {
+ return blogFriendMapper.insertBlogFriend(blogFriend);
+ }
+
+ /**
+ * 修改好友
+ *
+ * @param blogFriend 好友
+ * @return 结果
+ */
+ @Override
+ public int updateBlogFriend(BlogFriend blogFriend)
+ {
+ return blogFriendMapper.updateBlogFriend(blogFriend);
+ }
+
+ /**
+ * 删除好友对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogFriendByIds(String ids)
+ {
+ return blogFriendMapper.deleteBlogFriendByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除好友信息
+ *
+ * @param id 好友ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogFriendById(String id)
+ {
+ return blogFriendMapper.deleteBlogFriendById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogMasterServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogMasterServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..898dc85f6584eac520a5bc9b4b1132e056020e61
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogMasterServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogMasterMapper;
+import com.rboat.blog.domain.BlogMaster;
+import com.rboat.blog.service.IBlogMasterService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 博主Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogMasterServiceImpl implements IBlogMasterService
+{
+ @Autowired
+ private BlogMasterMapper blogMasterMapper;
+
+ /**
+ * 查询博主
+ *
+ * @param id 博主ID
+ * @return 博主
+ */
+ @Override
+ public BlogMaster selectBlogMasterById(String id)
+ {
+ return blogMasterMapper.selectBlogMasterById(id);
+ }
+
+ /**
+ * 查询博主列表
+ *
+ * @param blogMaster 博主
+ * @return 博主
+ */
+ @Override
+ public List selectBlogMasterList(BlogMaster blogMaster)
+ {
+ return blogMasterMapper.selectBlogMasterList(blogMaster);
+ }
+
+ /**
+ * 新增博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ @Override
+ public int insertBlogMaster(BlogMaster blogMaster)
+ {
+ return blogMasterMapper.insertBlogMaster(blogMaster);
+ }
+
+ /**
+ * 修改博主
+ *
+ * @param blogMaster 博主
+ * @return 结果
+ */
+ @Override
+ public int updateBlogMaster(BlogMaster blogMaster)
+ {
+ return blogMasterMapper.updateBlogMaster(blogMaster);
+ }
+
+ /**
+ * 删除博主对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogMasterByIds(String ids)
+ {
+ return blogMasterMapper.deleteBlogMasterByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除博主信息
+ *
+ * @param id 博主ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogMasterById(String id)
+ {
+ return blogMasterMapper.deleteBlogMasterById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogPhotoServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogPhotoServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a60fea7c1ec88099d79b42e3c54de61d4462a3c
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogPhotoServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogPhotoMapper;
+import com.rboat.blog.domain.BlogPhoto;
+import com.rboat.blog.service.IBlogPhotoService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 相册Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogPhotoServiceImpl implements IBlogPhotoService
+{
+ @Autowired
+ private BlogPhotoMapper blogPhotoMapper;
+
+ /**
+ * 查询相册
+ *
+ * @param id 相册ID
+ * @return 相册
+ */
+ @Override
+ public BlogPhoto selectBlogPhotoById(String id)
+ {
+ return blogPhotoMapper.selectBlogPhotoById(id);
+ }
+
+ /**
+ * 查询相册列表
+ *
+ * @param blogPhoto 相册
+ * @return 相册
+ */
+ @Override
+ public List selectBlogPhotoList(BlogPhoto blogPhoto)
+ {
+ return blogPhotoMapper.selectBlogPhotoList(blogPhoto);
+ }
+
+ /**
+ * 新增相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ @Override
+ public int insertBlogPhoto(BlogPhoto blogPhoto)
+ {
+ return blogPhotoMapper.insertBlogPhoto(blogPhoto);
+ }
+
+ /**
+ * 修改相册
+ *
+ * @param blogPhoto 相册
+ * @return 结果
+ */
+ @Override
+ public int updateBlogPhoto(BlogPhoto blogPhoto)
+ {
+ return blogPhotoMapper.updateBlogPhoto(blogPhoto);
+ }
+
+ /**
+ * 删除相册对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogPhotoByIds(String ids)
+ {
+ return blogPhotoMapper.deleteBlogPhotoByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除相册信息
+ *
+ * @param id 相册ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogPhotoById(String id)
+ {
+ return blogPhotoMapper.deleteBlogPhotoById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogReviewServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogReviewServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..52acc20b1022d404f6636bfda484f93b6981fc52
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogReviewServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogReviewMapper;
+import com.rboat.blog.domain.BlogReview;
+import com.rboat.blog.service.IBlogReviewService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 评论Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogReviewServiceImpl implements IBlogReviewService
+{
+ @Autowired
+ private BlogReviewMapper blogReviewMapper;
+
+ /**
+ * 查询评论
+ *
+ * @param id 评论ID
+ * @return 评论
+ */
+ @Override
+ public BlogReview selectBlogReviewById(String id)
+ {
+ return blogReviewMapper.selectBlogReviewById(id);
+ }
+
+ /**
+ * 查询评论列表
+ *
+ * @param blogReview 评论
+ * @return 评论
+ */
+ @Override
+ public List selectBlogReviewList(BlogReview blogReview)
+ {
+ return blogReviewMapper.selectBlogReviewList(blogReview);
+ }
+
+ /**
+ * 新增评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ @Override
+ public int insertBlogReview(BlogReview blogReview)
+ {
+ return blogReviewMapper.insertBlogReview(blogReview);
+ }
+
+ /**
+ * 修改评论
+ *
+ * @param blogReview 评论
+ * @return 结果
+ */
+ @Override
+ public int updateBlogReview(BlogReview blogReview)
+ {
+ return blogReviewMapper.updateBlogReview(blogReview);
+ }
+
+ /**
+ * 删除评论对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogReviewByIds(String ids)
+ {
+ return blogReviewMapper.deleteBlogReviewByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除评论信息
+ *
+ * @param id 评论ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogReviewById(String id)
+ {
+ return blogReviewMapper.deleteBlogReviewById(id);
+ }
+}
diff --git a/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogWordServiceImpl.java b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogWordServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..e1419d25e6d01e245e35c9009d6f1c546606d8aa
--- /dev/null
+++ b/rboat-blog/src/main/java/com/rboat/blog/service/impl/BlogWordServiceImpl.java
@@ -0,0 +1,94 @@
+package com.rboat.blog.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.rboat.blog.mapper.BlogWordMapper;
+import com.rboat.blog.domain.BlogWord;
+import com.rboat.blog.service.IBlogWordService;
+import com.rboat.common.core.text.Convert;
+
+/**
+ * 留言Service业务层处理
+ *
+ * @author rboat
+ * @date 2019-11-05
+ */
+@Service
+public class BlogWordServiceImpl implements IBlogWordService
+{
+ @Autowired
+ private BlogWordMapper blogWordMapper;
+
+ /**
+ * 查询留言
+ *
+ * @param id 留言ID
+ * @return 留言
+ */
+ @Override
+ public BlogWord selectBlogWordById(String id)
+ {
+ return blogWordMapper.selectBlogWordById(id);
+ }
+
+ /**
+ * 查询留言列表
+ *
+ * @param blogWord 留言
+ * @return 留言
+ */
+ @Override
+ public List selectBlogWordList(BlogWord blogWord)
+ {
+ return blogWordMapper.selectBlogWordList(blogWord);
+ }
+
+ /**
+ * 新增留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ @Override
+ public int insertBlogWord(BlogWord blogWord)
+ {
+ return blogWordMapper.insertBlogWord(blogWord);
+ }
+
+ /**
+ * 修改留言
+ *
+ * @param blogWord 留言
+ * @return 结果
+ */
+ @Override
+ public int updateBlogWord(BlogWord blogWord)
+ {
+ return blogWordMapper.updateBlogWord(blogWord);
+ }
+
+ /**
+ * 删除留言对象
+ *
+ * @param ids 需要删除的数据ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogWordByIds(String ids)
+ {
+ return blogWordMapper.deleteBlogWordByIds(Convert.toStrArray(ids));
+ }
+
+ /**
+ * 删除留言信息
+ *
+ * @param id 留言ID
+ * @return 结果
+ */
+ @Override
+ public int deleteBlogWordById(String id)
+ {
+ return blogWordMapper.deleteBlogWordById(id);
+ }
+}
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogArticleMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogArticleMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3c851df7ce77a0b93c9757b892e7492265be6440
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogArticleMapper.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, article_type_id, article_title, article_info, article_content, article_publish_time, article_count, article_from, article_master_id from blog_article
+
+
+
+
+
+
+
+ insert into blog_article
+
+ id,
+ article_type_id,
+ article_title,
+ article_info,
+ article_content,
+ article_publish_time,
+ article_count,
+ article_from,
+ article_master_id,
+
+
+ #{id},
+ #{articleTypeId},
+ #{articleTitle},
+ #{articleInfo},
+ #{articleContent},
+ #{articlePublishTime},
+ #{articleCount},
+ #{articleFrom},
+ #{articleMasterId},
+
+
+
+
+ update blog_article
+
+ article_type_id = #{articleTypeId},
+ article_title = #{articleTitle},
+ article_info = #{articleInfo},
+ article_content = #{articleContent},
+ article_publish_time = #{articlePublishTime},
+ article_count = #{articleCount},
+ article_from = #{articleFrom},
+ article_master_id = #{articleMasterId},
+
+ where id = #{id}
+
+
+
+ delete from blog_article where id = #{id}
+
+
+
+ delete from blog_article where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogArticleTypeMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogArticleTypeMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7016463b58728c3218a0902fa79c6426109d5a50
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogArticleTypeMapper.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, name, parent, info from blog_article_type
+
+
+
+
+
+
+
+ insert into blog_article_type
+
+ id,
+ name,
+ parent,
+ info,
+
+
+ #{id},
+ #{name},
+ #{parent},
+ #{info},
+
+
+
+
+ update blog_article_type
+
+ name = #{name},
+ parent = #{parent},
+ info = #{info},
+
+ where id = #{id}
+
+
+
+ delete from blog_article_type where id = #{id}
+
+
+
+ delete from blog_article_type where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogFriendMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogFriendMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..867484b02b687e4bed4e8a74e3d3e10eaf7b7d95
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogFriendMapper.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, friend_master_id, friend_friend_id, friend_re_name from blog_friend
+
+
+
+
+
+
+
+ insert into blog_friend
+
+ id,
+ friend_master_id,
+ friend_friend_id,
+ friend_re_name,
+
+
+ #{id},
+ #{friendMasterId},
+ #{friendFriendId},
+ #{friendReName},
+
+
+
+
+ update blog_friend
+
+ friend_master_id = #{friendMasterId},
+ friend_friend_id = #{friendFriendId},
+ friend_re_name = #{friendReName},
+
+ where id = #{id}
+
+
+
+ delete from blog_friend where id = #{id}
+
+
+
+ delete from blog_friend where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogMasterMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogMasterMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e4a2bab498a6cbc82e5df88c3824d9ec690177e6
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogMasterMapper.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, master_name, master_password, master_oicq, master_sex from blog_master
+
+
+
+
+
+
+
+ insert into blog_master
+
+ id,
+ master_name,
+ master_password,
+ master_oicq,
+ master_sex,
+
+
+ #{id},
+ #{masterName},
+ #{masterPassword},
+ #{masterOicq},
+ #{masterSex},
+
+
+
+
+ update blog_master
+
+ master_name = #{masterName},
+ master_password = #{masterPassword},
+ master_oicq = #{masterOicq},
+ master_sex = #{masterSex},
+
+ where id = #{id}
+
+
+
+ delete from blog_master where id = #{id}
+
+
+
+ delete from blog_master where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogPhotoMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogPhotoMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..15f47d6a27a020d804511477fa31f109fda5b731
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogPhotoMapper.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, photo_addr, photo_add_time, photo_info, photo_master_id from blog_photo
+
+
+
+
+
+
+
+ insert into blog_photo
+
+ id,
+ photo_addr,
+ photo_add_time,
+ photo_info,
+ photo_master_id,
+
+
+ #{id},
+ #{photoAddr},
+ #{photoAddTime},
+ #{photoInfo},
+ #{photoMasterId},
+
+
+
+
+ update blog_photo
+
+ photo_addr = #{photoAddr},
+ photo_add_time = #{photoAddTime},
+ photo_info = #{photoInfo},
+ photo_master_id = #{photoMasterId},
+
+ where id = #{id}
+
+
+
+ delete from blog_photo where id = #{id}
+
+
+
+ delete from blog_photo where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogReviewMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogReviewMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2d2b4fd4fe923d0ae5e03477f4acae74f894bbdf
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogReviewMapper.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, review_articleID, review_master_id, review_author_id, review_content, review_time from blog_review
+
+
+
+
+
+
+
+ insert into blog_review
+
+ id,
+ review_articleID,
+ review_master_id,
+ review_author_id,
+ review_content,
+ review_time,
+
+
+ #{id},
+ #{reviewArticleid},
+ #{reviewMasterId},
+ #{reviewAuthorId},
+ #{reviewContent},
+ #{reviewTime},
+
+
+
+
+ update blog_review
+
+ review_articleID = #{reviewArticleid},
+ review_master_id = #{reviewMasterId},
+ review_author_id = #{reviewAuthorId},
+ review_content = #{reviewContent},
+ review_time = #{reviewTime},
+
+ where id = #{id}
+
+
+
+ delete from blog_review where id = #{id}
+
+
+
+ delete from blog_review where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/mapper/blog/BlogWordMapper.xml b/rboat-blog/src/main/resources/mapper/blog/BlogWordMapper.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f2567442b78c958168a29e040b4f94ffcdaec7f3
--- /dev/null
+++ b/rboat-blog/src/main/resources/mapper/blog/BlogWordMapper.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, word_title, word_content, word_time, word_author_id, word_master_id from blog_word
+
+
+
+
+
+
+
+ insert into blog_word
+
+ id,
+ word_title,
+ word_content,
+ word_time,
+ word_author_id,
+ word_master_id,
+
+
+ #{id},
+ #{wordTitle},
+ #{wordContent},
+ #{wordTime},
+ #{wordAuthorId},
+ #{wordMasterId},
+
+
+
+
+ update blog_word
+
+ word_title = #{wordTitle},
+ word_content = #{wordContent},
+ word_time = #{wordTime},
+ word_author_id = #{wordAuthorId},
+ word_master_id = #{wordMasterId},
+
+ where id = #{id}
+
+
+
+ delete from blog_word where id = #{id}
+
+
+
+ delete from blog_word where id in
+
+ #{id}
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/static/images/favicon.ico b/rboat-blog/src/main/resources/static/images/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..d8360c8047def919c6cf7357c38d8cfce7b5b8aa
Binary files /dev/null and b/rboat-blog/src/main/resources/static/images/favicon.ico differ
diff --git a/rboat-blog/src/main/resources/static/images/rboat.png b/rboat-blog/src/main/resources/static/images/rboat.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6eec97faf959034bb3e5a24db83e62ea20600b4
Binary files /dev/null and b/rboat-blog/src/main/resources/static/images/rboat.png differ
diff --git a/rboat-blog/src/main/resources/static/images/rboat1.png b/rboat-blog/src/main/resources/static/images/rboat1.png
new file mode 100644
index 0000000000000000000000000000000000000000..bc48c4cdccff1db06a5ecbea3b3e5b8efac7f8a3
Binary files /dev/null and b/rboat-blog/src/main/resources/static/images/rboat1.png differ
diff --git a/rboat-blog/src/main/resources/templates/blog/article/add.html b/rboat-blog/src/main/resources/templates/blog/article/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..5623cedf730a9a5f1dd1ba54c9e6bcef60c675d0
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/article/add.html
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/article/article.html b/rboat-blog/src/main/resources/templates/blog/article/article.html
new file mode 100644
index 0000000000000000000000000000000000000000..07db1bdbbe523e3f5fed858d2bbc44cf0a9b0b41
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/article/article.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/article/edit.html b/rboat-blog/src/main/resources/templates/blog/article/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..1081c83322e5b500667a956c5f1edd26b71e9f16
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/article/edit.html
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/friend/add.html b/rboat-blog/src/main/resources/templates/blog/friend/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..29459a65aa89f248bd4bd402d39f19d58220cc55
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/friend/add.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/friend/edit.html b/rboat-blog/src/main/resources/templates/blog/friend/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..6d7422b6da8249686abb81d905b6aaea573501d5
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/friend/edit.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/friend/friend.html b/rboat-blog/src/main/resources/templates/blog/friend/friend.html
new file mode 100644
index 0000000000000000000000000000000000000000..760a87f82dbbf0aefbbfc0be7848c916d4acf171
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/friend/friend.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/main.html b/rboat-blog/src/main/resources/templates/blog/main.html
new file mode 100644
index 0000000000000000000000000000000000000000..6321bdd42d8b4ca5cdf2c7e274fa13b7b82ee5c0
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/main.html
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+ 博客首页
+
+
+
+博客主页1
+
+
diff --git a/rboat-blog/src/main/resources/templates/blog/master/add.html b/rboat-blog/src/main/resources/templates/blog/master/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..dac8894500237a06caaad009369f73bcc6683530
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/master/add.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/master/edit.html b/rboat-blog/src/main/resources/templates/blog/master/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..086c17640350c10643a14513c1743d3f5339b2cc
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/master/edit.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/master/master.html b/rboat-blog/src/main/resources/templates/blog/master/master.html
new file mode 100644
index 0000000000000000000000000000000000000000..b02c3f62a6db86bc4f1fe7c1a60266a39b1a3350
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/master/master.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/photo/add.html b/rboat-blog/src/main/resources/templates/blog/photo/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..7044a8c8aeddf28632068fdb1cbebeb7fd190e69
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/photo/add.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/photo/edit.html b/rboat-blog/src/main/resources/templates/blog/photo/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..72436677bb1af4417098f962745fec65fc654208
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/photo/edit.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/photo/photo.html b/rboat-blog/src/main/resources/templates/blog/photo/photo.html
new file mode 100644
index 0000000000000000000000000000000000000000..4c229e39b288b08cebfbe28f83619a140a907190
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/photo/photo.html
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/review/add.html b/rboat-blog/src/main/resources/templates/blog/review/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..07b5b7a37bafc4c1dba4b4fc7e0027fd9f55cf80
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/review/add.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/review/edit.html b/rboat-blog/src/main/resources/templates/blog/review/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..4da75278962fb1fedba767b782cb52fce92c5c9c
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/review/edit.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/review/review.html b/rboat-blog/src/main/resources/templates/blog/review/review.html
new file mode 100644
index 0000000000000000000000000000000000000000..384444a935a49e36d9dc494877e57ed4486a5646
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/review/review.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/type/add.html b/rboat-blog/src/main/resources/templates/blog/type/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..83e36f73df708d74a9420c2c38865c66622440fa
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/type/add.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/type/edit.html b/rboat-blog/src/main/resources/templates/blog/type/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..d0fce428c3c022c4b9b3dc491fa5108f22fbe4ad
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/type/edit.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/type/type.html b/rboat-blog/src/main/resources/templates/blog/type/type.html
new file mode 100644
index 0000000000000000000000000000000000000000..5ade72520c5ad8fbcc544f9fc0cf6e2d26bd383d
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/type/type.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/word/add.html b/rboat-blog/src/main/resources/templates/blog/word/add.html
new file mode 100644
index 0000000000000000000000000000000000000000..e83c606ba28d44deac7a41bd22cb282b040d8679
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/word/add.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/word/edit.html b/rboat-blog/src/main/resources/templates/blog/word/edit.html
new file mode 100644
index 0000000000000000000000000000000000000000..bec88fe66e143f90be270e7783668d0a03a312b4
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/word/edit.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-blog/src/main/resources/templates/blog/word/word.html b/rboat-blog/src/main/resources/templates/blog/word/word.html
new file mode 100644
index 0000000000000000000000000000000000000000..7a9cd58d764952646b8ef64956013e7d3d5ae1f8
--- /dev/null
+++ b/rboat-blog/src/main/resources/templates/blog/word/word.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rboat-framework/src/main/java/com/rboat/framework/config/ShiroConfig.java b/rboat-framework/src/main/java/com/rboat/framework/config/ShiroConfig.java
index 8d941bf898d2cb55fdb01cebb59efa960382a7f5..d61eb4ac91f1b465cfe30e1f9158dacb1610ddea 100644
--- a/rboat-framework/src/main/java/com/rboat/framework/config/ShiroConfig.java
+++ b/rboat-framework/src/main/java/com/rboat/framework/config/ShiroConfig.java
@@ -251,6 +251,8 @@ public class ShiroConfig
filterChainDefinitionMap.put("/rboat/**", "anon");
filterChainDefinitionMap.put("/druid/**", "anon");
filterChainDefinitionMap.put("/captcha/captchaImage**", "anon");
+ //博客页面,不需要拦截
+ filterChainDefinitionMap.put("/blog/**", "anon");
// 退出 logout地址,shiro去清除session
filterChainDefinitionMap.put("/logout", "logout");
// 不需要拦截的访问
diff --git a/sql/rb_20190822.sql b/sql/rb_20190822.sql
index 50e6de13ee181b2f7ca37726c31f576f3a535926..470740562fb3f41b471c6f92d71ff83e5308d9a2 100644
--- a/sql/rb_20190822.sql
+++ b/sql/rb_20190822.sql
@@ -254,9 +254,7 @@ insert into sys_menu values('1058', '生成删除', '114', '3', '#', '', 'F', '
insert into sys_menu values('1059', '预览代码', '114', '4', '#', '', 'F', '0', 'tool:gen:preview', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
insert into sys_menu values('1060', '生成代码', '114', '5', '#', '', 'F', '0', 'tool:gen:code', '#', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00', '');
-- 工作流按钮
-INSERT INTO `sys_menu` VALUES ('1058', '模型查询', '116', '1','','#', 'F', '0', 'activiti:model:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
-INSERT INTO `sys_menu` VALUES ('1059', '模型新增', '116', '2','','#', 'F', '0', 'activiti:model:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
-INSERT INTO `sys_menu` VALUES ('1060', '模型修改', '116', '3','','#', 'F', '0', 'activiti:model:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
+
INSERT INTO `sys_menu` VALUES ('1061', '模型删除', '116', '4','','#', 'F', '0', 'activiti:model:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
INSERT INTO `sys_menu` VALUES ('1062', '模型部署', '116', '5','','#', 'F', '0', 'activiti:model:deploy', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
INSERT INTO `sys_menu` VALUES ('1063', '模型导出', '116', '6','','#', 'F', '0', 'activiti:model:export', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
@@ -264,6 +262,9 @@ INSERT INTO `sys_menu` VALUES ('1064', '流程查询', '117', '1','','#', 'F', '
INSERT INTO `sys_menu` VALUES ('1065', '流程新增', '117', '2','','#', 'F', '0', 'activiti:process:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
INSERT INTO `sys_menu` VALUES ('1066', '流程删除', '117', '3','','#', 'F', '0', 'activiti:process:remove', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
INSERT INTO `sys_menu` VALUES ('1067', '转为模型', '117', '4','','#', 'F', '0', 'activiti:process:model', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
+INSERT INTO `sys_menu` VALUES ('1068', '模型查询', '116', '1','','#', 'F', '0', 'activiti:model:list', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
+INSERT INTO `sys_menu` VALUES ('1069', '模型新增', '116', '2','','#', 'F', '0', 'activiti:model:add', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
+INSERT INTO `sys_menu` VALUES ('1070', '模型修改', '116', '3','','#', 'F', '0', 'activiti:model:edit', '#', 'admin', '2018-03-16 11:33:00', 'ry', '2018-03-16 11:33:00', '');
-- ----------------------------
-- 6、用户和角色关联表 用户N-1角色
diff --git a/sql/t_blog.sql b/sql/t_blog.sql
new file mode 100644
index 0000000000000000000000000000000000000000..8ba44f53888f7d307f8a68757d34466217a78de7
--- /dev/null
+++ b/sql/t_blog.sql
@@ -0,0 +1,122 @@
+drop table if exists blog_article;
+
+drop table if exists blog_article_type;
+
+drop table if exists blog_friend;
+
+drop table if exists blog_master;
+
+drop table if exists blog_photo;
+
+drop table if exists blog_review;
+
+drop table if exists blog_word;
+
+/*==============================================================*/
+/* Table: blog_article */
+/*==============================================================*/
+create table blog_article
+(
+ id varchar(32) not null comment '主键id',
+ article_type_id varchar(32) not null comment '文章类型id',
+ article_title varchar(60) not null comment '文章标题',
+ article_info varchar(500) not null comment '文章信息',
+ article_content text not null comment '文章内容',
+ article_publish_time timestamp not null default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '发布时间',
+ article_count int not null default 0 comment '阅读数(自增)',
+ article_from int not null default 0 comment '文章来源(0:原创;1:转载)',
+ article_master_id varchar(32) not null comment '博主id',
+ primary key (id)
+);
+
+alter table blog_article comment '文章表';
+
+/*==============================================================*/
+/* Table: blog_article_type */
+/*==============================================================*/
+create table blog_article_type
+(
+ id varchar(32) not null comment '主键id',
+ name varchar(20) not null comment '类型名称',
+ parent varchar(32) not null default '#' comment '父级id',
+ info varchar(1) not null comment '描述信息',
+ primary key (id)
+);
+
+alter table blog_article_type comment '文章类型';
+
+/*==============================================================*/
+/* Table: blog_friend */
+/*==============================================================*/
+create table blog_friend
+(
+ id varchar(32) not null comment '主键id',
+ friend_master_id varchar(32) not null comment '博主id',
+ friend_friend_id varchar(32) not null comment '好友的id',
+ friend_re_name varchar(20) comment '好友备注名',
+ primary key (id)
+);
+
+alter table blog_friend comment '好友表';
+
+/*==============================================================*/
+/* Table: blog_master */
+/*==============================================================*/
+create table blog_master
+(
+ id varchar(32) not null comment '主键id',
+ master_name varchar(40) not null comment '博主名称',
+ master_password varchar(64) not null comment '密码',
+ master_oicq varchar(20) comment '博主oicq(三方id)',
+ master_sex varchar(1) not null default '1' comment '0:女;1:男',
+ primary key (id)
+);
+
+alter table blog_master comment '博主表';
+
+/*==============================================================*/
+/* Table: blog_photo */
+/*==============================================================*/
+create table blog_photo
+(
+ id varchar(32) not null comment '主键id',
+ photo_addr varchar(200) not null comment '图片存放地址',
+ photo_add_time timestamp not null default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '上传日期',
+ photo_info varchar(100) comment '图片备注',
+ photo_master_id varchar(32) not null comment '上传人(博主)',
+ primary key (id)
+);
+
+alter table blog_photo comment '相册表';
+
+/*==============================================================*/
+/* Table: blog_review */
+/*==============================================================*/
+create table blog_review
+(
+ id varchar(32) not null comment '主键id',
+ review_articleID varchar(40) not null comment '评论的文章id',
+ review_master_id varchar(32) not null default '1' comment '博主id',
+ review_author_id varchar(32) not null default '1' comment '评论的作者id',
+ review_content varchar(400) not null default '1' comment '评论内容',
+ review_time timestamp not null default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '评论时间',
+ primary key (id)
+);
+
+alter table blog_review comment '评论表';
+
+/*==============================================================*/
+/* Table: blog_word */
+/*==============================================================*/
+create table blog_word
+(
+ id varchar(32) not null comment '主键id',
+ word_title varchar(40) not null comment '留言标题',
+ word_content varchar(400) not null comment '留言内容',
+ word_time timestamp not null default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '留言的时间',
+ word_author_id varchar(32) not null default '1' comment '留言的作者id',
+ word_master_id varchar(32) not null default '1' comment '留言的对象id(博主id)',
+ primary key (id)
+);
+
+alter table blog_word comment '留言表';
diff --git "a/sql/\351\200\206\350\210\237\345\215\232\345\256\242.pdm" "b/sql/\351\200\206\350\210\237\345\215\232\345\256\242.pdm"
new file mode 100644
index 0000000000000000000000000000000000000000..c4147ec596f67aa47de9132b09d9c60d4001458e
--- /dev/null
+++ "b/sql/\351\200\206\350\210\237\345\215\232\345\256\242.pdm"
@@ -0,0 +1,2513 @@
+
+
+
+
+
+
+
+
+
+0CA50702-CEDF-4212-AD26-552153803866
+PhysicalDataModel_1
+PhysicalDataModel_1
+1572964661
+zhangyang
+1572967606
+zhangyang
+[FolderOptions]
+
+[FolderOptions\Physical Objects]
+GenerationCheckModel=Yes
+GenerationPath=
+GenerationOptions=
+GenerationTasks=
+GenerationTargets=
+GenerationSelections=
+RevPkey=Yes
+RevFkey=Yes
+RevAkey=Yes
+RevCheck=Yes
+RevIndx=Yes
+RevOpts=Yes
+RevViewAsTabl=No
+RevViewOpts=Yes
+RevSystAsTabl=Yes
+RevTablPerm=No
+RevViewPerm=No
+RevProcPerm=No
+RevDbpkPerm=No
+RevSqncPerm=No
+RevAdtPerm=No
+RevUserPriv=No
+RevUserOpts=No
+RevGrpePriv=No
+RevRolePriv=No
+RevDtbsOpts=Yes
+RevDtbsPerm=No
+RevViewIndx=Yes
+RevJidxOpts=Yes
+RevStats=No
+RevTspcPerm=No
+RevCaseSensitive=No
+GenTrgrStdMsg=Yes
+GenTrgrMsgTab=
+GenTrgrMsgNo=
+GenTrgrMsgTxt=
+TrgrPreserve=No
+TrgrIns=Yes
+TrgrUpd=Yes
+TrgrDel=Yes
+TrgrC2Ins=Yes
+TrgrC2Upd=Yes
+TrgrC3=Yes
+TrgrC4=Yes
+TrgrC5=Yes
+TrgrC6=Yes
+TrgrC7=Yes
+TrgrC8=Yes
+TrgrC9=Yes
+TrgrC10=Yes
+TrgrC11=Yes
+TrgrC1=Yes
+TrgrC12Ins=Yes
+TrgrC12Upd=Yes
+TrgrC13=Yes
+UpdateTableStatistics=Yes
+UpdateColumnStatistics=Yes
+
+[FolderOptions\Physical Objects\Database Generation]
+GenScriptName=crebas
+GenScriptName0=crebas
+GenScriptName1=
+GenScriptName2=
+GenScriptName3=
+GenScriptName4=
+GenScriptName5=
+GenScriptName6=
+GenScriptName7=
+GenScriptName8=
+GenScriptName9=
+GenPathName=E:\Program Files (x86)\Sybase\PowerDesigner 16\
+GenSingleFile=Yes
+GenODBC=No
+GenCheckModel=Yes
+GenScriptPrev=Yes
+GenArchiveModel=No
+GenUseSync=No
+GenSyncChoice=0
+GenSyncArch=
+GenSyncRmg=0
+
+[FolderOptions\Physical Objects\Database Generation\Format]
+GenScriptTitle=Yes
+GenScriptNamLabl=No
+GenScriptQDtbs=No
+GenScriptQOwnr=Yes
+GenScriptCase=0
+GenScriptEncoding=ANSI
+GenScriptNAcct=No
+IdentifierDelimiter="
+
+[FolderOptions\Physical Objects\Database Generation\Database]
+Create=Yes
+Open=Yes
+Close=Yes
+Drop=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Database\Create]
+Physical Options=Yes
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Tablespace]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Tablespace\Create]
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Storage]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\User]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Privilege=No
+
+[FolderOptions\Physical Objects\Database Generation\User\Create]
+Physical Options=No
+
+[FolderOptions\Physical Objects\Database Generation\Group]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Privilege=No
+
+[FolderOptions\Physical Objects\Database Generation\Role]
+Create=Yes
+Drop=Yes
+Privilege=No
+
+[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType]
+Create=Yes
+Comment=Yes
+Drop=Yes
+
+[FolderOptions\Physical Objects\Database Generation\UserDefinedDataType\Create]
+Default value=Yes
+Check=Yes
+
+[FolderOptions\Physical Objects\Database Generation\AbstractDataType]
+Create=Yes
+Header=Yes
+Footer=Yes
+Drop=Yes
+Comment=Yes
+Install JAVA class=Yes
+Remove JAVA class=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Rule]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Default]
+Create=Yes
+Comment=Yes
+Drop=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Sequence]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column]
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create]
+Check=Yes
+Physical Options=Yes
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Table\Create\Check]
+Constraint declaration=No
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column]
+User datatype=No
+Default value=Yes
+Check=Yes
+Physical Options=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Column\Check]
+Constraint declaration=No
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key]
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Primary key\Create]
+Constraint declaration=No
+Physical Options=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Key\Alternate key\Create]
+Constraint declaration=No
+Physical Options=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Foreign key\Create]
+Constraint declaration=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Create]
+Constraint declaration=Yes
+Physical Options=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Index\Filter]
+Primary key=No
+Foreign key=No
+Alternate key=No
+Cluster=Yes
+Other=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Table&&Column\Trigger\Filter]
+For insert=Yes
+For update=Yes
+For delete=Yes
+For other=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\View\Create]
+Force Column list=No
+Physical Options=Yes
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\ViewColumn]
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\ViewIndex]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Create]
+Physical Options=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\ViewIndex\Filter]
+Cluster=Yes
+Other=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\Trigger]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\View\Trigger\Filter]
+For insert=Yes
+For update=Yes
+For delete=Yes
+For other=Yes
+
+[FolderOptions\Physical Objects\Database Generation\DBMSTrigger]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Synonym]
+Create=Yes
+Drop=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Synonym\Filter]
+Table=Yes
+View=Yes
+Proc=Yes
+Synonym=Yes
+Database Package=Yes
+Sequence=Yes
+
+[FolderOptions\Physical Objects\Database Generation\JoinIndex]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\JoinIndex\Create]
+Physical Options=Yes
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Procedure]
+Create=Yes
+Drop=Yes
+Comment=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\Procedure\Create]
+Header=Yes
+Footer=Yes
+
+[FolderOptions\Physical Objects\Database Generation\DatabasePackage]
+Create=Yes
+Drop=Yes
+Permission=No
+
+[FolderOptions\Physical Objects\Database Generation\WebService]
+Create=Yes
+Drop=Yes
+Comment=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Dimension]
+Create=Yes
+Drop=Yes
+
+[FolderOptions\Physical Objects\Database Generation\Synchronization]
+GenBackupTabl=1
+GenKeepBackTabl=1
+GenTmpTablDrop=No
+GenKeepTablOpts=No
+
+[FolderOptions\Physical Objects\Test Data]
+GenDataPathName=
+GenDataSinglefile=Yes
+GenDataScriptName=testdata
+GenDataScriptName0=
+GenDataScriptName1=
+GenDataScriptName2=
+GenDataScriptName3=
+GenDataScriptName4=
+GenDataScriptName5=
+GenDataScriptName6=
+GenDataScriptName7=
+GenDataScriptName8=
+GenDataScriptName9=
+GenDataOdbc=0
+GenDataDelOld=No
+GenDataTitle=No
+GenDataDefNumRows=20
+GenDataCommit=0
+GenDataPacket=0
+GenDataOwner=No
+GenDataProfNumb=
+GenDataProfChar=
+GenDataProfDate=
+GenDataCSVSeparator=,
+GenDataFileFormat=CSV
+GenDataUseWizard=No
+
+[FolderOptions\Pdm]
+IndxIQName=%COLUMN%_%INDEXTYPE%
+IndxPK=Yes
+IndxFK=Yes
+IndxAK=Yes
+IndxPKName=%TABLE%_PK
+IndxFKName=%REFR%_FK
+IndxAKName=%AKEY%_AK
+IndxPreserve=No
+IndxThreshold=0
+IndxStats=No
+RefrPreserve=No
+JidxPreserve=No
+RbldMultiFact=Yes
+RbldMultiDim=Yes
+RbldMultiJidx=Yes
+CubePreserve=No
+TablStProcPreserve=No
+ProcDepPreserve=Yes
+TrgrDepPreserve=Yes
+CubeScriptPath=
+CubeScriptCase=0
+CubeScriptEncoding=ANSI
+CubeScriptNacct=No
+CubeScriptHeader=No
+CubeScriptExt=csv
+CubeScriptExt0=txt
+CubeScriptExt1=
+CubeScriptExt2=
+CubeScriptSep=,
+CubeScriptDeli="
+EstimationYears=0
+DfltDomnName=D_%.U:VALUE%
+DfltColnName=D_%.U:VALUE%
+DfltReuse=Yes
+DfltDrop=Yes
+[ModelOptions]
+
+[ModelOptions\Physical Objects]
+CaseSensitive=No
+DisplayName=Yes
+EnableTrans=No
+UseTerm=No
+EnableRequirements=No
+EnableFullShortcut=Yes
+DefaultDttp=
+IgnoreOwner=No
+RebuildTrigger=Yes
+RefrUnique=No
+RefrAutoMigrate=Yes
+RefrMigrateReuse=Yes
+RefrMigrateDomain=Yes
+RefrMigrateCheck=Yes
+RefrMigrateRule=Yes
+RefrMigrateExtd=No
+RefrMigrDefaultLink=No
+RefrDfltImpl=D
+RefrPrgtColn=No
+RefrMigrateToEnd=No
+RebuildTriggerDep=No
+ColnFKName=%.3:PARENT%_%COLUMN%
+ColnFKNameUse=No
+DomnCopyDttp=Yes
+DomnCopyChck=No
+DomnCopyRule=No
+DomnCopyMand=No
+DomnCopyExtd=No
+DomnCopyProf=No
+Notation=0
+DomnDefaultMandatory=No
+ColnDefaultMandatory=No
+TablDefaultOwner=
+ViewDefaultOwner=
+TrgrDefaultOwnerTabl=
+TrgrDefaultOwnerView=
+IdxDefaultOwnerTabl=
+IdxDefaultOwnerView=
+JdxDefaultOwner=
+DBPackDefaultOwner=
+SeqDefaultOwner=
+ProcDefaultOwner=
+DBMSTrgrDefaultOwner=
+Currency=USD
+RefrDeleteConstraint=1
+RefrUpdateConstraint=1
+RefrParentMandatory=No
+RefrParentChangeAllow=Yes
+RefrCheckOnCommit=No
+
+[ModelOptions\Physical Objects\NamingOptionsTemplates]
+
+[ModelOptions\Physical Objects\ClssNamingOptions]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMPCKG\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\PDMDOMN\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\TABL]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\TABL\Code]
+Template=
+MaxLen=64
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\COLN]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\COLN\Code]
+Template=
+MaxLen=64
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\INDX]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\INDX\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\REFR]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\REFR\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VREF]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VREF\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEW]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEW\Code]
+Template=
+MaxLen=64
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\VIEWC\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBSERV\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()"
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WEBOP\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar='a'-'z','A'-'Z','0'-'9',"/-_.!~*'()"
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\WPARAM\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FACT]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FACT\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DIMN]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DIMN\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\MEAS]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\MEAS\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DATTR]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DATTR\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FILO]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FILO\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMEOBJ\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\FRMELNK\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass]
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Name]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Physical Objects\ClssNamingOptions\DefaultClass\Code]
+Template=
+MaxLen=254
+Case=M
+ValidChar=
+InvldChar=
+AllValid=Yes
+NoAccent=No
+DefaultChar=
+Script=
+ConvTable=
+ConvTablePath=%_HOME%\Resource Files\Conversion Tables
+
+[ModelOptions\Connection]
+
+[ModelOptions\Pdm]
+
+[ModelOptions\Generate]
+
+[ModelOptions\Generate\Xsm]
+GenRootElement=Yes
+GenComplexType=No
+GenAttribute=Yes
+CheckModel=Yes
+SaveLinks=Yes
+ORMapping=No
+NameToCode=No
+
+[ModelOptions\Generate\Pdm]
+RRMapping=No
+
+[ModelOptions\Generate\Cdm]
+CheckModel=Yes
+SaveLinks=Yes
+NameToCode=No
+Notation=2
+
+[ModelOptions\Generate\Oom]
+CheckModel=Yes
+SaveLinks=Yes
+ORMapping=No
+NameToCode=Yes
+ClassPrefix=
+
+[ModelOptions\Generate\Ldm]
+CheckModel=Yes
+SaveLinks=Yes
+NameToCode=No
+
+[ModelOptions\Default Opts]
+
+[ModelOptions\Default Opts\TABL]
+PhysOpts=
+
+[ModelOptions\Default Opts\COLN]
+PhysOpts=
+
+[ModelOptions\Default Opts\INDX]
+PhysOpts=
+
+[ModelOptions\Default Opts\AKEY]
+PhysOpts=
+
+[ModelOptions\Default Opts\PKEY]
+PhysOpts=
+
+[ModelOptions\Default Opts\STOR]
+PhysOpts=
+
+[ModelOptions\Default Opts\TSPC]
+PhysOpts=
+
+[ModelOptions\Default Opts\SQNC]
+PhysOpts=
+
+[ModelOptions\Default Opts\DTBS]
+PhysOpts=
+
+[ModelOptions\Default Opts\USER]
+PhysOpts=
+
+[ModelOptions\Default Opts\JIDX]
+PhysOpts=
+
+
+B7B876B0-2D19-4D5B-A1FD-86D6A3D09B26
+MySQL 5.0
+MYSQL50
+1572964660
+zhangyang
+1572964660
+zhangyang
+
+F4F16ECD-F2F1-4006-AF6F-638D5C65F35E
+4BA9F647-DAB1-11D1-9944-006097355D9B
+
+
+
+
+7D8BE664-BB5A-4B7F-936B-89507F419D27
+PhysicalDiagram_1
+PhysicalDiagram_1
+1572964661
+zhangyang
+1572967155
+zhangyang
+[DisplayPreferences]
+
+[DisplayPreferences\PDM]
+
+[DisplayPreferences\General]
+Adjust to text=Yes
+Snap Grid=No
+Constrain Labels=Yes
+Display Grid=No
+Show Page Delimiter=Yes
+Show Links intersections=No
+Activate automatic link routing=No
+Grid size=0
+Graphic unit=2
+Window color=255, 255, 255
+Background image=
+Background mode=8
+Watermark image=
+Watermark mode=8
+Show watermark on screen=No
+Gradient mode=0
+Gradient end color=255, 255, 255
+Show Swimlane=No
+SwimlaneVert=Yes
+TreeVert=No
+CompDark=0
+
+[DisplayPreferences\Object]
+Show Icon=No
+Mode=2
+Trunc Length=40
+Word Length=40
+Word Text=!"#$%&')*+,-./:;=>?@\]^_`|}~
+Shortcut IntIcon=Yes
+Shortcut IntLoct=Yes
+Shortcut IntFullPath=No
+Shortcut IntLastPackage=Yes
+Shortcut ExtIcon=Yes
+Shortcut ExtLoct=No
+Shortcut ExtFullPath=No
+Shortcut ExtLastPackage=Yes
+Shortcut ExtIncludeModl=Yes
+EObjShowStrn=Yes
+ExtendedObject.Comment=No
+ExtendedObject.IconPicture=No
+ExtendedObject.TextStyle=No
+ExtendedObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Object Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+ELnkShowStrn=Yes
+ELnkShowName=Yes
+ExtendedLink_SymbolLayout=<Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Source" >[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] </Form>[CRLF]</Form>
+FileObject.Stereotype=No
+FileObject.DisplayName=Yes
+FileObject.LocationOrName=No
+FileObject.IconPicture=No
+FileObject.TextStyle=No
+FileObject.IconMode=Yes
+FileObject_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Location" Attribute="LocationOrName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+Package.Stereotype=Yes
+Package.Comment=No
+Package.IconPicture=No
+Package.TextStyle=No
+Package_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+Display Model Version=Yes
+Table.Stereotype=Yes
+Table.DisplayName=Yes
+Table.OwnerDisplayName=No
+Table.Columns=Yes
+Table.Columns._Filter="All Columns" PDMCOLNALL
+Table.Columns._Columns=Stereotype DataType KeyIndicator
+Table.Columns._Limit=-5
+Table.Keys=No
+Table.Keys._Columns=Stereotype Indicator
+Table.Indexes=No
+Table.Indexes._Columns=Stereotype
+Table.Triggers=No
+Table.Triggers._Columns=Stereotype
+Table.Comment=No
+Table.IconPicture=No
+Table.TextStyle=No
+Table_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="Stereotype No\r\nDisplayName Yes\r\nDataType No\r\nSymbolDataType No "Domain or Data type"\r\nDomain No\r\nKeyIndicator No\r\nIndexIndicator No\r\nNullStatus No" Filters=""All Columns" PDMCOLNALL ""\r\n"PK Columns" PDMCOLNPK "\"PRIM \"TRUE\" TRUE\""\r\n"Key Columns" PDMCOLNKEY "\"KEYS \"TRUE\" TRUE\""" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Keys" Collection="Keys" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="Stereotype No\r\nDisplayName Yes\r\nIndicator No" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Triggers" Collection="Triggers" Columns="Stereotype No\r\nDisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+View.Stereotype=Yes
+View.DisplayName=Yes
+View.OwnerDisplayName=No
+View.Columns=Yes
+View.Columns._Columns=DisplayName
+View.Columns._Limit=-5
+View.TemporaryVTables=Yes
+View.Indexes=No
+View.Comment=No
+View.IconPicture=No
+View.TextStyle=No
+View_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardCollection Name="Columns" Collection="Columns" Columns="DisplayName No\r\nExpression No\r\nDataType No\r\nSymbolDataType No "Domain or Data type"\r\nIndexIndicator No" HasLimit="Yes" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Tables" Collection="TemporaryVTables" Columns="Name Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardCollection Name="Indexes" Collection="Indexes" Columns="DisplayName Yes" HasLimit="No" HideEmpty="No" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+Procedure.Stereotype=No
+Procedure.DisplayName=Yes
+Procedure.OwnerDisplayName=No
+Procedure.Comment=No
+Procedure.IconPicture=No
+Procedure.TextStyle=No
+Procedure_SymbolLayout=<Form>[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="Yes" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Owner and Name" Attribute="OwnerDisplayName" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <Separator Name="Separator" />[CRLF] <StandardAttribute Name="Comment" Attribute="Comment" Prefix="" Suffix="" Alignment="LEFT" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Icon" Attribute="IconPicture" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF] <StandardAttribute Name="Force top align" Attribute="TextStyle" Prefix="" Suffix="" Alignment="CNTR" Caption="" Mandatory="Yes" />[CRLF]</Form>
+Reference.Cardinality=No
+Reference.ImplementationType=No
+Reference.ChildRole=Yes
+Reference.Stereotype=Yes
+Reference.DisplayName=No
+Reference.ForeignKeyConstraintName=No
+Reference.JoinExpression=No
+Reference.Integrity=No
+Reference.ParentRole=Yes
+Reference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Cardinality" Attribute="Cardinality" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Implementation" Attribute="ImplementationType" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Cons&traint Name" Attribute="ForeignKeyConstraintName" Prefix="" Suffix="" Caption="Cons&traint Name" Mandatory="No" />[CRLF] <StandardAttribute Name="Join" Attribute="JoinExpression" Prefix="" Suffix="" Caption="Join" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] <StandardAttribute Name="Referential integrity" Attribute="Integrity" Prefix="" Suffix="" Caption="Referential integrity" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form>
+ViewReference.ChildRole=Yes
+ViewReference.Stereotype=Yes
+ViewReference.DisplayName=No
+ViewReference.JoinExpression=No
+ViewReference.ParentRole=Yes
+ViewReference_SymbolLayout=<Form>[CRLF] <Form Name="Source" >[CRLF] <StandardAttribute Name="Child Role" Attribute="ChildRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF] <Form Name="Center" >[CRLF] <StandardAttribute Name="Stereotype" Attribute="Stereotype" Prefix="<<" Suffix=">>" Caption="" Mandatory="No" />[CRLF] <ExclusiveChoice Name="Exclusive Choice" Mandatory="No" Display="HorizontalRadios" >[CRLF] <StandardAttribute Name="Name" Attribute="DisplayName" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] <StandardAttribute Name="Join Expression" Attribute="JoinExpression" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </ExclusiveChoice>[CRLF] </Form>[CRLF] <Form Name="Destination" >[CRLF] <StandardAttribute Name="Parent Role" Attribute="ParentRole" Prefix="" Suffix="" Caption="" Mandatory="No" />[CRLF] </Form>[CRLF]</Form>
+
+[DisplayPreferences\Symbol]
+
+[DisplayPreferences\Symbol\FRMEOBJ]
+STRNFont=新宋体,8,N
+STRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+LABLFont=新宋体,8,N
+LABLFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=6000
+Height=2000
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=6
+Brush bitmap mode=12
+Brush gradient mode=64
+Brush gradient color=192 192 192
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 255 128 128
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\FRMELNK]
+CENTERFont=新宋体,8,N
+CENTERFont color=0, 0, 0
+Line style=1
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 128 128 255
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\FILO]
+OBJSTRNFont=新宋体,8,N
+OBJSTRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+LCNMFont=新宋体,8,N
+LCNMFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=4800
+Height=3600
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 0 0 255
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\PDMPCKG]
+STRNFont=新宋体,8,N
+STRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+LABLFont=新宋体,8,N
+LABLFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=4800
+Height=4000
+Brush color=255 255 192
+Fill Color=Yes
+Brush style=6
+Brush bitmap mode=12
+Brush gradient mode=65
+Brush gradient color=255 255 255
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 178 178 178
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\TABL]
+STRNFont=新宋体,8,N
+STRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+OWNRDISPNAMEFont=新宋体,8,N
+OWNRDISPNAMEFont color=0, 0, 0
+ColumnsFont=新宋体,8,N
+ColumnsFont color=0, 0, 0
+TablePkColumnsFont=新宋体,8,U
+TablePkColumnsFont color=0, 0, 0
+TableFkColumnsFont=新宋体,8,N
+TableFkColumnsFont color=0, 0, 0
+KeysFont=新宋体,8,N
+KeysFont color=0, 0, 0
+IndexesFont=新宋体,8,N
+IndexesFont color=0, 0, 0
+TriggersFont=新宋体,8,N
+TriggersFont color=0, 0, 0
+LABLFont=新宋体,8,N
+LABLFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=4800
+Height=4000
+Brush color=178 214 252
+Fill Color=Yes
+Brush style=6
+Brush bitmap mode=12
+Brush gradient mode=65
+Brush gradient color=255 255 255
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 0 128 192
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\VIEW]
+STRNFont=新宋体,8,N
+STRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+OWNRDISPNAMEFont=新宋体,8,N
+OWNRDISPNAMEFont color=0, 0, 0
+ColumnsFont=新宋体,8,N
+ColumnsFont color=0, 0, 0
+TablePkColumnsFont=新宋体,8,U
+TablePkColumnsFont color=0, 0, 0
+TableFkColumnsFont=新宋体,8,N
+TableFkColumnsFont color=0, 0, 0
+TemporaryVTablesFont=新宋体,8,N
+TemporaryVTablesFont color=0, 0, 0
+IndexesFont=新宋体,8,N
+IndexesFont color=0, 0, 0
+LABLFont=新宋体,8,N
+LABLFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=4800
+Height=4000
+Brush color=208 208 255
+Fill Color=Yes
+Brush style=6
+Brush bitmap mode=12
+Brush gradient mode=65
+Brush gradient color=255 255 255
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 128 128 192
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\PROC]
+STRNFont=新宋体,8,N
+STRNFont color=0, 0, 0
+DISPNAMEFont=新宋体,8,N
+DISPNAMEFont color=0, 0, 0
+OWNRDISPNAMEFont=新宋体,8,N
+OWNRDISPNAMEFont color=0, 0, 0
+LABLFont=新宋体,8,N
+LABLFont color=0, 0, 0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Width=4000
+Height=1000
+Brush color=255 255 192
+Fill Color=Yes
+Brush style=6
+Brush bitmap mode=12
+Brush gradient mode=65
+Brush gradient color=255 255 255
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 128 108 0
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\REFR]
+SOURCEFont=新宋体,8,N
+SOURCEFont color=0, 0, 0
+CENTERFont=新宋体,8,N
+CENTERFont color=0, 0, 0
+DESTINATIONFont=新宋体,8,N
+DESTINATIONFont color=0, 0, 0
+Line style=1
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 0 128 192
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\VREF]
+SOURCEFont=新宋体,8,N
+SOURCEFont color=0, 0, 0
+CENTERFont=新宋体,8,N
+CENTERFont color=0, 0, 0
+DESTINATIONFont=新宋体,8,N
+DESTINATIONFont color=0, 0, 0
+Line style=1
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 128 128 192
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\USRDEPD]
+OBJXSTRFont=新宋体,8,N
+OBJXSTRFont color=0, 0, 0
+Line style=1
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=2 0 128 128 255
+Shadow color=192 192 192
+Shadow=0
+
+[DisplayPreferences\Symbol\Free Symbol]
+Free TextFont=新宋体,8,N
+Free TextFont color=0, 0, 0
+Line style=0
+AutoAdjustToText=Yes
+Keep aspect=No
+Keep center=No
+Keep size=No
+Brush color=255 255 255
+Fill Color=Yes
+Brush style=1
+Brush bitmap mode=12
+Brush gradient mode=0
+Brush gradient color=118 118 118
+Brush background image=
+Custom shape=
+Custom text mode=0
+Pen=1 0 0 0 255
+Shadow color=192 192 192
+Shadow=0
+(8268, 11693)
+((315,354), (433,354))
+1
+15
+
+
+1572964673
+1572966410
+-1
+((-20700,3974), (-6150,13436))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572964675
+1572966418
+-1
+((-22036,-5700), (-8400,529))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572964677
+1572966413
+-1
+((222,5626), (11700,13050))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572966169
+1572966423
+-1
+((2940,-4799), (17024,1685))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572966553
+1572966809
+-1
+((-21443,-16952), (-7807,-10723))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572966861
+1572966863
+-1
+((3307,-16202), (16943,-9973))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+1572967155
+1572967166
+-1
+((-18518,17023), (-4882,23252))
+0
+12615680
+16570034
+12632256
+STRN 0 新宋体,8,N
+DISPNAME 0 新宋体,8,N
+OWNRDISPNAME 0 新宋体,8,N
+Columns 0 新宋体,8,N
+TablePkColumns 0 新宋体,8,U
+TableFkColumns 0 新宋体,8,N
+Keys 0 新宋体,8,N
+Indexes 0 新宋体,8,N
+Triggers 0 新宋体,8,N
+LABL 0 新宋体,8,N
+6
+65
+16777215
+1
+
+
+
+
+
+
+
+
+
+
+
+
+96F3672C-2B69-4F2D-BB3D-BD02AD17BE48
+blog_article
+blog_article
+1572964673
+zhangyang
+1572965603
+zhangyang
+文章表
+
+
+
+FFDE5881-18A8-4206-99DF-830A9009F256
+id
+id
+1572964981
+zhangyang
+1572965036
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+4A8C1DEE-7CA3-4788-925F-A39C53ACC334
+article_type_id
+article_type_id
+1572965036
+zhangyang
+1572965114
+zhangyang
+文章类型id
+varchar(32)
+32
+1
+
+
+2701E213-24CF-40B9-A673-539F2F6347A2
+article_title
+article_title
+1572965036
+zhangyang
+1572965508
+zhangyang
+文章标题
+varchar(60)
+60
+1
+
+
+12C4CCDC-AF72-49FA-B630-3D8645124122
+article_info
+article_info
+1572965036
+zhangyang
+1572965603
+zhangyang
+文章信息
+varchar(500)
+500
+1
+
+
+AAD2538A-0386-4973-A807-7B613EE0AC61
+article_content
+article_content
+1572965036
+zhangyang
+1572965484
+zhangyang
+文章内容
+text
+1
+
+
+320BE7D5-8BAF-4979-B02C-AA01A7B08B35
+article_publish_time
+article_publish_time
+1572965036
+zhangyang
+1572965563
+zhangyang
+发布时间
+CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+timestamp
+1
+
+
+CE1FC10F-11C5-4CC3-86F4-7B1D45D17D16
+article_count
+article_count
+1572965036
+zhangyang
+1572965381
+zhangyang
+阅读数(自增)
+0
+int
+1
+
+
+CBD16635-6A8D-4D60-8AE9-62CE4241B7A0
+article_from
+article_from
+1572965272
+zhangyang
+1572966471
+zhangyang
+文章来源(0:原创;1:转载)
+0
+int
+1
+
+
+9A3BB905-6C0B-49D9-BCB0-8236E4AB9E58
+article_master_id
+article_master_id
+1572965272
+zhangyang
+1572967556
+zhangyang
+博主id
+varchar(32)
+32
+1
+
+
+
+
+2B2BDADC-F711-4AC6-8ABB-9AC0A116C230
+Key_1
+Key_1
+1572964981
+zhangyang
+1572965036
+zhangyang
+
+
+
+
+
+
+
+
+
+
+44A282EC-DF6C-4CB5-BAD3-D8ADFD1FE6D7
+blog_friend
+blog_friend
+1572964675
+zhangyang
+1572966134
+zhangyang
+好友表
+
+
+
+C5E9B601-106A-4CD3-94EC-FFD38A398D5E
+id
+id
+1572965971
+zhangyang
+1572965997
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+6646ABBE-0D8E-4299-A579-06D73CE51DBF
+friend_master_id
+friend_master_id
+1572965997
+zhangyang
+1572966047
+zhangyang
+博主id
+varchar(32)
+32
+1
+
+
+CC29B8AA-59D6-4B12-A8C8-DA9D64034BA1
+friend_friend_id
+friend_friend_id
+1572965997
+zhangyang
+1572966090
+zhangyang
+好友的id
+varchar(32)
+32
+1
+
+
+0784E208-6EB7-4CC8-96AF-BD893763E4F0
+friend_re_name
+friend_re_name
+1572966090
+zhangyang
+1572966442
+zhangyang
+好友备注名
+varchar(20)
+20
+
+
+
+
+F61731FA-E551-469E-8687-13E071D0C223
+Key_1
+Key_1
+1572965971
+zhangyang
+1572965997
+zhangyang
+
+
+
+
+
+
+
+
+
+
+FF84ED16-BEFC-472B-A05C-3191DD98BD38
+blog_articletype
+blog_article_type
+1572964677
+zhangyang
+1572965917
+zhangyang
+文章类型
+
+
+
+264DC366-8117-42DE-A483-72602FC382E7
+id
+id
+1572965633
+zhangyang
+1572965669
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+5FF9C759-18E3-4E68-9572-5AC46EDFF0FE
+name
+name
+1572965669
+zhangyang
+1572965965
+zhangyang
+类型名称
+varchar(20)
+20
+1
+
+
+44B0D4A8-1FB6-48E4-8414-267E469FCAB2
+parent
+parent
+1572965669
+zhangyang
+1572966459
+zhangyang
+父级id
+#
+varchar(32)
+32
+1
+
+
+56F48DAC-7BB0-4333-B32A-BFDD1D7F9B72
+info
+info
+1572965669
+zhangyang
+1572965871
+zhangyang
+描述信息
+varchar(1)
+1
+1
+
+
+
+
+DCEFE149-6658-4B46-8EE5-5D5BFB6ECBDA
+Key_1
+Key_1
+1572965633
+zhangyang
+1572965669
+zhangyang
+
+
+
+
+
+
+
+
+
+
+14128AD0-27BD-4BF2-B6E6-505CF0E9300F
+blog_photo
+blog_photo
+1572964675
+zhangyang
+1572966339
+zhangyang
+相册表
+
+
+
+4CFC7902-3E20-4C1B-811E-0BD67A4AD94F
+id
+id
+1572965971
+zhangyang
+1572966169
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+988F1DC0-754D-480E-82AE-3FC21235528E
+photo_addr
+photo_addr
+1572965997
+zhangyang
+1572966225
+zhangyang
+图片存放地址
+varchar(200)
+200
+1
+
+
+ED52EF84-9C87-4839-8869-3989B96CFBD5
+photo_add_time
+photo_add_time
+1572965997
+zhangyang
+1572966364
+zhangyang
+上传日期
+CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+timestamp
+1
+
+
+F23AEFDD-204D-48DC-9D34-B47E0A5FF78A
+photo_info
+photo_info
+1572966090
+zhangyang
+1572966291
+zhangyang
+图片备注
+varchar(100)
+100
+
+
+F07CEE10-A7B2-49A3-8341-249BDCA28763
+photo_master_id
+photo_master_id
+1572966291
+zhangyang
+1572966359
+zhangyang
+上传人(博主)
+varchar(32)
+32
+1
+
+
+
+
+02AA6FDD-7E5F-4F6E-B247-E4FC7E10132F
+Key_1
+Key_1
+1572965971
+zhangyang
+1572966169
+zhangyang
+
+
+
+
+
+
+
+
+
+
+93F51F74-4E94-4B1D-B293-72D169BB0380
+blog_master
+blog_master
+1572964675
+zhangyang
+1572966769
+zhangyang
+博主表
+
+
+
+F5F680AB-F4D1-4F60-9B26-765042EC064A
+id
+id
+1572965971
+zhangyang
+1572966553
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+0F7A0E65-341F-47C7-8118-8069F7934096
+master_name
+master_name
+1572965997
+zhangyang
+1572966769
+zhangyang
+博主名称
+varchar(40)
+40
+1
+
+
+16285953-88B2-45AE-B189-4EAD3318E336
+master_password
+master_password
+1572965997
+zhangyang
+1572966769
+zhangyang
+密码
+varchar(64)
+64
+1
+
+
+40836D2B-2010-459D-802A-6988D902C7E9
+master_oicq
+master_oicq
+1572966090
+zhangyang
+1572966781
+zhangyang
+博主oicq(三方id)
+varchar(20)
+20
+
+
+27C87867-A148-4FA4-9B27-0B029B84239A
+master_sex
+master_sex
+1572966559
+zhangyang
+1572966769
+zhangyang
+0:女;1:男
+1
+varchar(1)
+1
+1
+
+
+
+
+2ECA47E1-3070-47CA-8334-7EA9227D4D31
+Key_1
+Key_1
+1572965971
+zhangyang
+1572966553
+zhangyang
+
+
+
+
+
+
+
+
+
+
+DB119724-13CF-4D06-BDAB-7A6560990A5D
+blog_word
+blog_word
+1572964675
+zhangyang
+1572967126
+zhangyang
+留言表
+
+
+
+45FDE551-1614-4BF9-B93B-2953AE6E7199
+id
+id
+1572965971
+zhangyang
+1572966861
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+E610FACB-C547-4814-8BA6-61904C7B65D6
+word_title
+word_title
+1572965997
+zhangyang
+1572967126
+zhangyang
+留言标题
+varchar(40)
+40
+1
+
+
+446E2C9A-5BE9-4C9C-99E3-612AA5980345
+word_content
+word_content
+1572965997
+zhangyang
+1572967126
+zhangyang
+留言内容
+varchar(400)
+400
+1
+
+
+EEF467E9-7778-4FE8-82B1-6FA98A6948DD
+word_sdTime
+word_time
+1572966090
+zhangyang
+1572967831
+zhangyang
+留言的时间
+CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+timestamp
+1
+
+
+BB32A267-605C-4670-97D8-244C2C50F152
+word_author_id
+word_author_id
+1572966559
+zhangyang
+1572967126
+zhangyang
+留言的作者id
+1
+varchar(32)
+32
+1
+
+
+A93B9FE7-9A4E-4240-8CB3-58FD3D246631
+word_master_id
+word_master_id
+1572966559
+zhangyang
+1572967126
+zhangyang
+留言的对象id(博主id)
+1
+varchar(32)
+32
+1
+
+
+
+
+FE0CD817-A4D5-4850-9C04-D99B9590C91B
+Key_1
+Key_1
+1572965971
+zhangyang
+1572966861
+zhangyang
+
+
+
+
+
+
+
+
+
+
+F452EC5A-1ECB-4B51-B5C8-0982EBC8486E
+blog_review
+blog_review
+1572964675
+zhangyang
+1572967601
+zhangyang
+评论表
+
+
+
+9D8B321F-0DF2-49A7-9BDB-12DACDDA95DB
+id
+id
+1572965971
+zhangyang
+1572967155
+zhangyang
+主键id
+varchar(32)
+32
+1
+
+
+1D9BD507-5136-4E2F-947E-DDC8A1509961
+review_articleID
+review_articleID
+1572965997
+zhangyang
+1572967408
+zhangyang
+评论的文章id
+varchar(40)
+40
+1
+
+
+4C6071AF-0744-4042-8BCE-E38A5C74C98A
+review_master_id
+review_master_id
+1572966559
+zhangyang
+1572967408
+zhangyang
+博主id
+1
+varchar(32)
+32
+1
+
+
+D604EF4C-162D-4856-8B54-FCEFFD8BB213
+review_author_id
+review_author_id
+1572966559
+zhangyang
+1572967408
+zhangyang
+评论的作者id
+1
+varchar(32)
+32
+1
+
+
+D264E1B1-A7A1-443A-ACD3-14B1B9D49809
+review_content
+review_content
+1572966559
+zhangyang
+1572967408
+zhangyang
+评论内容
+1
+varchar(400)
+400
+1
+
+
+BD08FF2E-615F-4BDE-8F5B-F5A6261BEDB6
+review_time
+review_time
+1572966090
+zhangyang
+1572967764
+zhangyang
+评论时间
+CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
+timestamp
+1
+
+
+
+
+8B9736CB-FA8B-4353-8BF1-2FF8BF06C149
+Key_1
+Key_1
+1572965971
+zhangyang
+1572967155
+zhangyang
+
+
+
+
+
+
+
+
+
+
+
+
+25F88292-6AF2-4CD9-983A-C403515D4928
+PUBLIC
+PUBLIC
+1572964660
+zhangyang
+1572964660
+zhangyang
+
+
+
+
+F5808528-CBAF-4F13-AF21-839A3EEB02F2
+MySQL 5.0
+MYSQL50
+1572964660
+zhangyang
+1572964660
+zhangyang
+file:///%_DBMS%/mysql50.xdb
+F4F16ECD-F2F1-4006-AF6F-638D5C65F35E
+4BA9F647-DAB1-11D1-9944-006097355D9B
+1276524678
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file