Commit 07730e63 authored by 他是超人他会飞's avatar 他是超人他会飞 Committed by 铭飞

!140 SQL更新

Merge pull request !140 from 他是超人他会飞/4.7.0
parents eaa1c4b3 f0ef7e53
ALTER TABLE `model` ADD COLUMN `is_child` varchar(255) COMMENT '扩展业务标记' AFTER `model_parent_ids`; ALTER TABLE `model` ADD COLUMN `is_child` varchar(255) COMMENT '扩展业务标记' AFTER `model_parent_ids`;
ALTER TABLE `mdiy_dict` ADD COLUMN `is_child` varchar(255) COMMENT '扩展业务标记' AFTER `dict_description`; ALTER TABLE `mdiy_dict` ADD COLUMN `is_child` varchar(255) COMMENT '扩展业务标记' AFTER `dict_description`;
ALTER TABLE `role` MODIFY COLUMN `app_id` int(11) COMMENT '应用编号' AFTER `role_managerid`; ALTER TABLE `role` MODIFY COLUMN `app_id` int(11) COMMENT '应用编号' AFTER `role_managerid`;
ALTER TABLE `mdiy_dict` MODIFY COLUMN `dict_value` varchar(100) COMMENT '数据值' AFTER `app_id`;
DROP TABLE IF EXISTS `file`; DROP TABLE IF EXISTS `file`;
CREATE TABLE `file` ( CREATE TABLE `file` (
......
ALTER TABLE [dbo].[model] ADD [is_child] varchar(255) NULL ALTER TABLE [dbo].[model] ADD [is_child] varchar(255) NULL
GO GO
ALTER TABLE [dbo].[mdiy_dict] ALTER COLUMN [dict_value] nvarchar ( 100 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
EXEC sp_addextendedproperty EXEC sp_addextendedproperty
'MS_Description', N'扩展业务标记', 'MS_Description', N'扩展业务标记',
'SCHEMA', N'dbo', 'SCHEMA', N'dbo',
......
# 温馨提示,请使用master分支
db-mcms-mysql-4.7.0 最低版本mysql 5.7
db-mcms-sqlserver-4.7.0 最低版本 SQLServer2012
如果使用低与要求版本数据库会出现如下错误
1、导入 mysql文件 datetime时间函数报错,请使用4.6.
2、SQLServer数据库版本 自定义标签 使用了SQLServer2012最新的分页函数 ,
请自行修改mdiy_tag_sql表中的分页函数
数据库类型切换 :修改application.yml中
database-id: mysql、sqlServer、oracle
\ No newline at end of file
This diff is collapsed.
...@@ -125,7 +125,7 @@ public class ColumnAction extends BaseAction{ ...@@ -125,7 +125,7 @@ public class ColumnAction extends BaseAction{
*/ */
private void columnPath(HttpServletRequest request,ColumnEntity column){ private void columnPath(HttpServletRequest request,ColumnEntity column){
StringBuffer columnPath = new StringBuffer(); StringBuffer columnPath = new StringBuffer();
String file = BasicUtil.getRealPath("")+ParserUtil.HTML+File.separator+ column.getAppId(); String file = BasicUtil.getRealPath("","")+ParserUtil.HTML+File.separator+ column.getAppId();
String delFile = ""; String delFile = "";
//修改栏目路径时,删除已存在的文件夹 //修改栏目路径时,删除已存在的文件夹
column = (ColumnEntity) columnBiz.getEntity(column.getCategoryId()); column = (ColumnEntity) columnBiz.getEntity(column.getCategoryId());
......
...@@ -19,8 +19,8 @@ The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net) ...@@ -19,8 +19,8 @@ The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.action.web; package net.mingsoft.cms.action.web;
import java.io.IOException; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -56,17 +56,17 @@ import freemarker.template.MalformedTemplateNameException; ...@@ -56,17 +56,17 @@ import freemarker.template.MalformedTemplateNameException;
import freemarker.template.TemplateNotFoundException; import freemarker.template.TemplateNotFoundException;
import net.mingsoft.base.constant.Const; import net.mingsoft.base.constant.Const;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.mdiy.util.ParserUtil; import net.mingsoft.mdiy.util.ParserUtil;
/** /**
* 根据搜索结果动态解析模版内容 * 根据搜索结果动态解析模版内容
* @author 铭飞开源团队-Administrator * @author 铭飞开源团队-Administrator
* @date 2018年12月18日 * @date 2018年12月18日
*/ */
@Controller(value = "webSearchAction") @Controller(value = "webSearchAction")
@RequestMapping("/cms") @RequestMapping("/cms")
public class SearchAction extends BaseAction { public class SearchAction extends BaseAction {
/** /**
* 搜索标签; * 搜索标签;
*/ */
...@@ -76,24 +76,24 @@ public class SearchAction extends BaseAction { ...@@ -76,24 +76,24 @@ public class SearchAction extends BaseAction {
* 搜索的标题; * 搜索的标题;
*/ */
public static final String BASIC_TITLE = "basic_title"; public static final String BASIC_TITLE = "basic_title";
/** /**
* 注入文章业务层 * 注入文章业务层
*/ */
@Autowired @Autowired
private IArticleBiz articleBiz; private IArticleBiz articleBiz;
/** /**
* 注入搜索业务层 * 注入搜索业务层
*/ */
@Autowired @Autowired
private ISearchBiz searchBiz; private ISearchBiz searchBiz;
/** /**
* 注入栏目业务层 * 注入栏目业务层
*/ */
@Autowired @Autowired
private IColumnBiz columnBiz; private IColumnBiz columnBiz;
/** /**
* 实现前端页面的文章搜索 * 实现前端页面的文章搜索
* *
...@@ -114,7 +114,7 @@ public class SearchAction extends BaseAction { ...@@ -114,7 +114,7 @@ public class SearchAction extends BaseAction {
if (ObjectUtil.isNull(search)) { if (ObjectUtil.isNull(search)) {
this.outJson(response, false); this.outJson(response, false);
} }
Map map = BasicUtil.assemblyRequestMap(); Map<String, Object> map = BasicUtil.assemblyRequestMap();
// 读取请求字段 // 读取请求字段
Map<String, String[]> field = request.getParameterMap(); Map<String, String[]> field = request.getParameterMap();
Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD); Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD);
...@@ -158,15 +158,17 @@ public class SearchAction extends BaseAction { ...@@ -158,15 +158,17 @@ public class SearchAction extends BaseAction {
map.put(ParserUtil.TOTAL, PageUtil.totalPage(count, size)); map.put(ParserUtil.TOTAL, PageUtil.totalPage(count, size));
//设置页面显示数量 //设置页面显示数量
map.put(ParserUtil.RCOUNT, size); map.put(ParserUtil.RCOUNT, size);
map.put(ParserUtil.SIZE, size);
//设置列表当前页 //设置列表当前页
map.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1)); map.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1));
map.put(ParserUtil.URL, BasicUtil.getUrl()); map.put(ParserUtil.URL, BasicUtil.getUrl());
Map searchMap = new HashMap<>(); Map searchMap = new HashMap<>();
searchMap.put(BASIC_TITLE, BasicUtil.getString(BASIC_TITLE)); searchMap.put(BASIC_TITLE, BasicUtil.getString(BASIC_TITLE));
searchMap.put(ParserUtil.PAGE_NO, BasicUtil.getInt(ParserUtil.PAGE_NO,1));
map.put(SEARCH, searchMap); map.put(SEARCH, searchMap);
//动态解析 //动态解析
map.put(ParserUtil.IS_DO,true); map.put(ParserUtil.IS_DO,false);
//设置动态请求的模块路径 //设置动态请求的模块路径
map.put(ParserUtil.MODEL_NAME, "mcms"); map.put(ParserUtil.MODEL_NAME, "mcms");
//解析后的内容 //解析后的内容
...@@ -184,107 +186,107 @@ public class SearchAction extends BaseAction { ...@@ -184,107 +186,107 @@ public class SearchAction extends BaseAction {
e.printStackTrace(); e.printStackTrace();
} }
this.outString(response, content); this.outString(response, content);
} }
/** /**
* 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段 * 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
* list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值 * list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值
* *
* @param articleField * @param articleField
* 文章字段 * 文章字段
* @param diyFieldName * @param diyFieldName
* 动态字段 * 动态字段
* @param fields * @param fields
* 模型对应的字段类型 * 模型对应的字段类型
* @return * @return
*/ */
@SuppressWarnings({ "rawtypes", "unchecked" }) @SuppressWarnings({ "rawtypes", "unchecked" })
private Map<String, List> searchMap(Map<String, Object> articleField, Map<String, String> diyFieldName, private Map<String, List> searchMap(Map<String, Object> articleField, Map<String, String> diyFieldName,
List fields) { List fields) {
Map<String, List> map = new HashMap<String, List>(); Map<String, List> map = new HashMap<String, List>();
// 遍历文章中的字段 // 遍历文章中的字段
for (Iterator iter = articleField.keySet().iterator(); iter.hasNext();) { for (Iterator iter = articleField.keySet().iterator(); iter.hasNext();) {
String key = iter.next().toString(); String key = iter.next().toString();
String fieldValue = articleField.get(key).toString(); String fieldValue = articleField.get(key).toString();
List list = new ArrayList(); List list = new ArrayList();
List listValue = new ArrayList(); List listValue = new ArrayList();
// 是否为自定义字段 // 是否为自定义字段
list.add(false); list.add(false);
// 是否是数字类型,true:不是 // 是否是数字类型,true:不是
list.add(true); list.add(true);
// 是否是模糊查询3 // 是否是模糊查询3
list.add(true); list.add(true);
// 字段值 // 字段值
listValue.add(articleField.get(key)); listValue.add(articleField.get(key));
list.add(listValue); list.add(listValue);
map.put(key, list); map.put(key, list);
} }
// 遍历字段自定义字段 // 遍历字段自定义字段
// for (Iterator iter = diyFieldName.keySet().iterator(); iter.hasNext();) { // for (Iterator iter = diyFieldName.keySet().iterator(); iter.hasNext();) {
// String key = iter.next().toString(); // String key = iter.next().toString();
// String fieldValue = diyFieldName.get(key); // String fieldValue = diyFieldName.get(key);
// // 获取字段实体 // // 获取字段实体
// ContentModelFieldEntity field = this.get(key, fields); // ContentModelFieldEntity field = this.get(key, fields);
// if (field != null) { // if (field != null) {
// List list = new ArrayList(); // List list = new ArrayList();
// // 是否为自定义字段0 // // 是否为自定义字段0
// list.add(0, true); // list.add(0, true);
// List listValue = new ArrayList(); // List listValue = new ArrayList();
// // 字段的值 // // 字段的值
// if (field.getFieldType() == IContentModelFieldBiz.INT || field.getFieldType() == IContentModelFieldBiz.FLOAT) { // if (field.getFieldType() == IContentModelFieldBiz.INT || field.getFieldType() == IContentModelFieldBiz.FLOAT) {
// // 判断是否为区间查询 // // 判断是否为区间查询
// //
// if (diyFieldName.get(key).toString().indexOf("-") > 0) { // if (diyFieldName.get(key).toString().indexOf("-") > 0) {
// String[] values = fieldValue.toString().split("-"); // String[] values = fieldValue.toString().split("-");
// // 是否是数字类型,false:是 // // 是否是数字类型,false:是
// list.add(false); // list.add(false);
// // 是否是区间比较 false:是 // // 是否是区间比较 false:是
// list.add(false); // list.add(false);
// // 字段值1 // // 字段值1
// listValue.add(values[0]); // listValue.add(values[0]);
// listValue.add(values[1]); // listValue.add(values[1]);
// } else { // } else {
// // 是否是数字类型,false:是2 // // 是否是数字类型,false:是2
// list.add(false); // list.add(false);
// // 是否是区间比较 true:不是3 // // 是否是区间比较 true:不是3
// list.add(true); // list.add(true);
// // 字段值 1 // // 字段值 1
// listValue.add(fieldValue); // listValue.add(fieldValue);
// } // }
// } else { // } else {
// // 是否是数字类型,true:不是2 // // 是否是数字类型,true:不是2
// list.add(true); // list.add(true);
// list.add(false); // list.add(false);
// // 字段值 1 // // 字段值 1
// listValue.add(fieldValue); // listValue.add(fieldValue);
// } // }
// list.add(listValue); // list.add(listValue);
// map.put(key, list); // map.put(key, list);
// } // }
// } // }
return map; return map;
} }
/** /**
* 根据字段名称获取字段类型 * 根据字段名称获取字段类型
* *
* @param columnName * @param columnName
* 字段名称 * 字段名称
* @return 字段实体 * @return 字段实体
*/ */
private ContentModelFieldEntity get(String columnName, List<ContentModelFieldEntity> fields) { private ContentModelFieldEntity get(String columnName, List<ContentModelFieldEntity> fields) {
if (fields == null) { if (fields == null) {
return null; return null;
} }
for (ContentModelFieldEntity field : fields) { for (ContentModelFieldEntity field : fields) {
if (field.getFieldFieldName().equals(columnName)) { if (field.getFieldFieldName().equals(columnName)) {
return field; return field;
} }
} }
return null; return null;
} }
} }
\ No newline at end of file
...@@ -23,6 +23,7 @@ import net.mingsoft.base.constant.Const; ...@@ -23,6 +23,7 @@ import net.mingsoft.base.constant.Const;
import net.mingsoft.basic.entity.ColumnEntity; import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.SpringUtil; import net.mingsoft.basic.util.SpringUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.bean.ColumnArticleIdBean; import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.constant.e.ColumnTypeEnum; import net.mingsoft.cms.constant.e.ColumnTypeEnum;
import net.mingsoft.mdiy.biz.IContentModelBiz; import net.mingsoft.mdiy.biz.IContentModelBiz;
...@@ -42,13 +43,18 @@ public class CmsParserUtil extends ParserUtil { ...@@ -42,13 +43,18 @@ public class CmsParserUtil extends ParserUtil {
* @throws IOException * @throws IOException
*/ */
public static void generate(String templatePath, String targetPath) throws IOException { public static void generate(String templatePath, String targetPath) throws IOException {
Map map = new HashMap(); Map<String, Object> map = new HashMap<String, Object>();
map.put(IS_DO, false); map.put(IS_DO, false);
String content = CmsParserUtil.generate(templatePath, map, false); boolean mobileStyle = false;
//判断是否有移动端
if (!StringUtil.isBlank(BasicUtil.getApp().getAppMobileStyle())) {
mobileStyle = true;
}
String content = CmsParserUtil.generate(templatePath, map, mobileStyle);
FileUtil.writeString(content, ParserUtil.buildHtmlPath(targetPath), Const.UTF8); FileUtil.writeString(content, ParserUtil.buildHtmlPath(targetPath), Const.UTF8);
// 生成移动页面 // 生成移动页面
if (ObjectUtil.isNotNull(BasicUtil.getApp().getAppMobileStyle())) { if (mobileStyle) {
// 手机端m // 手机端m
map.put(ParserUtil.MOBILE, BasicUtil.getApp().getAppMobileStyle()); map.put(ParserUtil.MOBILE, BasicUtil.getApp().getAppMobileStyle());
content = CmsParserUtil.generate(templatePath, map, true); content = CmsParserUtil.generate(templatePath, map, true);
......
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/tag?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false url: jdbc:mysql://localhost:3306/db-mcms?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
username: root username: root
password: root password: root
filters: wall,mergeStat filters: wall,mergeStat
......
spring: spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/mcms?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;DatabaseName=db-mcms
username: root username: root
password: root password: root
filters: wall,mergeStat filters: wall,mergeStat
......
server: mcms4.7.0 Oracle数据库暂不支持
port: 4000 \ No newline at end of file
servlet.context-path: /
spring:
datasource:
url: jdbc:mysql://172.17.0.4:3306/mcms-4.7.0?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: root
filters: wall,mergeStat
type: com.alibaba.druid.pool.DruidDataSource
\ No newline at end of file
...@@ -13,38 +13,29 @@ ...@@ -13,38 +13,29 @@
<div class="am-gallery-item ms-case-div"> <div class="am-gallery-item ms-case-div">
<a href='[field.source/]'><img class="ms-case-list-img" src="{ms:global.host/}[field.litpic/]" alt="[field.title/]"/></a> <a href='[field.source/]'><img class="ms-case-list-img" src="{ms:global.host/}[field.litpic/]" alt="[field.title/]"/></a>
</div> </div>
<span class="am-hide ms-cur-{ms:page.cur/}-[field.index/]">{ms:page.next/}</span>
</li> </li>
{/ms:arclist} {/ms:arclist}
</ul> </ul>
<!-- <div id="ul{ms:page.cur/}"></div> -->
</div> </div>
<#include "m/footer.htm"/> <#include "m/footer.htm"/>
</body> </body>
</html> </html>
<script> <script>
/*var time = 1; var time = 1;
$(window).scroll(function() {   $(window).scroll(function() {  
var scrollTop = $(this).scrollTop();   var scrollTop = $(this).scrollTop();  
var scrollHeight = $(document).height();  var scrollHeight = $(document).height(); 
var windowHeight = $(this).height();   var windowHeight = $(this).height();  
if(scrollTop + windowHeight == scrollHeight) { if(scrollTop + windowHeight == scrollHeight) {
var time2 = $(".ms-cur-" + time + "-1").text() var time2 = $(".ms-cur-" + time + "-1").text()
if(time == "{ms:page.total/}") {
return;
}
$("#ul" + time).load(time2 + " #ms-ui"); $("#ul" + time).load(time2 + " #ms-ui");
$("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>") $("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>")
time++; time++;
}else if(scrollTop + 56 + windowHeight == scrollHeight){ }else if(scrollTop + 56 + windowHeight == scrollHeight){
var time2 = $(".ms-cur-" + time + "-1").text() var time2 = $(".ms-cur-" + time + "-1").text()
if(time == "{ms:page.total/}") {
return;
}
$("#ul" + time).load(time2 + " #ms-ui"); $("#ul" + time).load(time2 + " #ms-ui");
$("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>") $("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>")
time++; time++;
} }
}); });
*/
</script> </script>
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="ms-banner"> <div class="ms-banner">
<img src="{ms:global.host/}/{ms:global.style/}/images/search.jpg"> <img src="{ms:global.host/}/{ms:global.style/}/images/search.jpg">
</div> </div>
<div class="ms-content"> <div class="ms-content" id="body">
<div class="ms-content-main-list" id="ms-content-search"> <div class="ms-content-main-list" id="ms-content-search">
<div class="ms-content-main-div"> <div class="ms-content-main-div">
<div class="ms-content-main-div-prompt">您搜索的关键字 <div class="ms-content-main-div-prompt">您搜索的关键字
...@@ -20,17 +20,17 @@ ...@@ -20,17 +20,17 @@
<li> <li>
<a href="{ms:global.url/}/[field.link/]"> <a href="{ms:global.url/}/[field.link/]">
[field.title/] [field.title/]
<span class="ms-content-main-li-time">[field.date?string("yyyy-mm-dd")/]</span> <span class="ms-content-main-li-time">[field.date?string("yyyy-MM-dd")/]</span>
</a> </a>
</li> </li>
{/ms:arclist} {/ms:arclist}
</ul> </ul>
</div> </div>
<div class="ms-content-main-page"> <div class="ms-content-main-page">
<a class="ms-content-main-page-first" href="{ms:page.index/}">首页</a> <a href="jacascript::void(0)" @click="indexAndLast(1)">首页</a>
<a class="ms-content-main-page-upper" href="{ms:page.pre/}">上一页</a> <a href="jacascript::void(0)" @click="search(false)">上一页</a>
<a class="ms-content-main-page-next" href="{ms:page.next/}">下一页</a> <a href="jacascript::void(0)" @click="search(true)">下一页</a>
<a class="ms-content-main-page-last" href="{ms:page.last/}"></a> <a href="jacascript::void(0)" @click="indexAndLast({ms:page.total/})"></a>
</div> </div>
</div> </div>
</div> </div>
...@@ -38,6 +38,30 @@ ...@@ -38,6 +38,30 @@
</body> </body>
</html> </html>
<script> <script>
new Vue({
el: "#body",
data: {
title: '',
list: [],
},
methods: {
search:function(flag){
var pageNo = {ms:search.pageNo/};
var total = {ms:page.total/};
if(flag){
pageNo = pageNo==total ? total : pageNo +1;
}else{
pageNo = pageNo -1==0 ? 1 : pageNo-1;
}
window.location.href="{ms:global.host/}/cms/1/search.do?basic_title={ms:search.basic_title/}&pageNo="+pageNo;
window.event.returnValue=false;
},
indexAndLast:function(pageNo){
window.location.href="{ms:global.host/}/cms/1/search.do?basic_title={ms:search.basic_title/}&pageNo="+pageNo;
window.event.returnValue=false;
},
},
})
if($('.ms-content-main-ul li').length <= 0) { if($('.ms-content-main-ul li').length <= 0) {
$('.ms-content-main-page').remove(); $('.ms-content-main-page').remove();
$('.ms-content-main-ul').before("<div class='ms-content-main-div-nothing'>没找到相关记录</div>") $('.ms-content-main-ul').before("<div class='ms-content-main-div-nothing'>没找到相关记录</div>")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment