Browse Source

!140 SQL更新
Merge pull request !140 from 他是超人他会飞/4.7.0

他是超人他会飞 6 years ago
parent
commit
07730e63cf

+ 1 - 1
doc/4.6.5-to-4.7.0-mysql.sql

@@ -1,7 +1,7 @@
 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 `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`;
 CREATE TABLE `file` (

+ 2 - 0
doc/4.6.5-to-4.7.0-sqlserver.sql

@@ -1,6 +1,8 @@
 ALTER TABLE [dbo].[model] ADD [is_child] varchar(255) NULL
 GO
 
+ALTER TABLE [dbo].[mdiy_dict] ALTER COLUMN [dict_value] nvarchar ( 100 ) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
+
 EXEC sp_addextendedproperty
 'MS_Description', N'扩展业务标记',
 'SCHEMA', N'dbo',

+ 11 - 0
doc/SQL文件版本说明.md

@@ -0,0 +1,11 @@
+# 温馨提示,请使用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

File diff suppressed because it is too large
+ 108 - 26
doc/db-mcms-mysql-4.7.0.sql


+ 1 - 1
src/main/java/net/mingsoft/cms/action/ColumnAction.java

@@ -125,7 +125,7 @@ public class ColumnAction extends BaseAction{
 	 */
 	private void columnPath(HttpServletRequest request,ColumnEntity column){
 		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 = "";
 		//修改栏目路径时,删除已存在的文件夹
 		column = (ColumnEntity) columnBiz.getEntity(column.getCategoryId());

+ 134 - 132
src/main/java/net/mingsoft/cms/action/web/SearchAction.java

@@ -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.
  */
 
-package net.mingsoft.cms.action.web;
-
+package net.mingsoft.cms.action.web;
+
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.ArrayList;
@@ -56,17 +56,17 @@ import freemarker.template.MalformedTemplateNameException;
 import freemarker.template.TemplateNotFoundException;
 import net.mingsoft.base.constant.Const;
 import net.mingsoft.basic.util.BasicUtil;
-import net.mingsoft.mdiy.util.ParserUtil;
-
+import net.mingsoft.mdiy.util.ParserUtil;
+
 /**
  * 根据搜索结果动态解析模版内容
  * @author 铭飞开源团队-Administrator  
  * @date 2018年12月18日
- */
-@Controller(value = "webSearchAction")
-@RequestMapping("/cms")
-public class SearchAction extends BaseAction {
-
+ */
+@Controller(value = "webSearchAction")
+@RequestMapping("/cms")
+public class SearchAction extends BaseAction {
+
 	/**
 	 * 搜索标签;
 	 */
@@ -76,24 +76,24 @@ public class SearchAction extends BaseAction {
 	 * 搜索的标题;
 	 */
 	public static final String BASIC_TITLE = "basic_title";
-	
-	/**
-	 * 注入文章业务层
-	 */
-	@Autowired
-	private IArticleBiz articleBiz;
-
-	/**
-	 * 注入搜索业务层
-	 */
-	@Autowired
-	private ISearchBiz searchBiz;
-
-	/**
-	 * 注入栏目业务层
-	 */
-	@Autowired
-	private IColumnBiz columnBiz;
+	
+	/**
+	 * 注入文章业务层
+	 */
+	@Autowired
+	private IArticleBiz articleBiz;
+
+	/**
+	 * 注入搜索业务层
+	 */
+	@Autowired
+	private ISearchBiz searchBiz;
+
+	/**
+	 * 注入栏目业务层
+	 */
+	@Autowired
+	private IColumnBiz columnBiz;
 	/**
 	 * 实现前端页面的文章搜索
 	 * 
@@ -114,7 +114,7 @@ public class SearchAction extends BaseAction {
 		if (ObjectUtil.isNull(search)) {
 			this.outJson(response, false);
 		}
-		Map map = BasicUtil.assemblyRequestMap();
+		Map<String, Object> map = BasicUtil.assemblyRequestMap();
 		// 读取请求字段
 		Map<String, String[]> field =  request.getParameterMap(); 
 		Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD);
@@ -158,15 +158,17 @@ public class SearchAction extends BaseAction {
 		map.put(ParserUtil.TOTAL, PageUtil.totalPage(count, 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.URL, BasicUtil.getUrl());
 		Map searchMap = new HashMap<>();
 		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(ParserUtil.IS_DO,true);
+		map.put(ParserUtil.IS_DO,false);
 		//设置动态请求的模块路径
 		map.put(ParserUtil.MODEL_NAME, "mcms");
 		//解析后的内容
@@ -184,107 +186,107 @@ public class SearchAction extends BaseAction {
 			e.printStackTrace();
 		}
 		this.outString(response, content);
-	}
-
-	/**
-	 * 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
-	 * list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值
-	 * 
-	 * @param articleField
-	 *            文章字段
-	 * @param diyFieldName
-	 *            动态字段
-	 * @param fields
-	 *            模型对应的字段类型
-	 * @return
-	 */
-	@SuppressWarnings({ "rawtypes", "unchecked" })
-	private Map<String, List> searchMap(Map<String, Object> articleField, Map<String, String> diyFieldName,
-			List fields) {
-		Map<String, List> map = new HashMap<String, List>();
-
-		// 遍历文章中的字段
-		for (Iterator iter = articleField.keySet().iterator(); iter.hasNext();) {
-			String key = iter.next().toString();
-			String fieldValue = articleField.get(key).toString();
-			List list = new ArrayList();
-			List listValue = new ArrayList();
-			// 是否为自定义字段
-			list.add(false);
-
-			// 是否是数字类型,true:不是
-			list.add(true);
-			// 是否是模糊查询3
-			list.add(true);
-			// 字段值
-			listValue.add(articleField.get(key));
-			list.add(listValue);
-			map.put(key, list);
-		}
-
-		// 遍历字段自定义字段
-//		for (Iterator iter = diyFieldName.keySet().iterator(); iter.hasNext();) {
-//			String key = iter.next().toString();
-//			String fieldValue = diyFieldName.get(key);
-//			// 获取字段实体
-//			ContentModelFieldEntity field = this.get(key, fields);
-//			if (field != null) {
-//				List list = new ArrayList();
-//				// 是否为自定义字段0
-//				list.add(0, true);
-//				List listValue = new ArrayList();
-//				// 字段的值
-//				if (field.getFieldType() == IContentModelFieldBiz.INT || field.getFieldType() == IContentModelFieldBiz.FLOAT) {
-//					// 判断是否为区间查询
-//
-//					if (diyFieldName.get(key).toString().indexOf("-") > 0) {
-//						String[] values = fieldValue.toString().split("-");
-//						// 是否是数字类型,false:是
-//						list.add(false);
-//						// 是否是区间比较 false:是
-//						list.add(false);
-//						// 字段值1
-//						listValue.add(values[0]);
-//						listValue.add(values[1]);
-//					} else {
-//						// 是否是数字类型,false:是2
-//						list.add(false);
-//						// 是否是区间比较 true:不是3
-//						list.add(true);
-//						// 字段值 1
-//						listValue.add(fieldValue);
-//					}
-//				} else {
-//					// 是否是数字类型,true:不是2
-//					list.add(true);
-//					list.add(false);
-//					// 字段值 1
-//					listValue.add(fieldValue);
-//				}
-//				list.add(listValue);
-//				map.put(key, list);
-//			}
-//		}
-		return map;
-	}
-
-	/**
-	 * 根据字段名称获取字段类型
-	 * 
-	 * @param columnName
-	 *            字段名称
-	 * @return 字段实体
-	 */
-	private ContentModelFieldEntity get(String columnName, List<ContentModelFieldEntity> fields) {
-		if (fields == null) {
-			return null;
-		}
-		for (ContentModelFieldEntity field : fields) {
-			if (field.getFieldFieldName().equals(columnName)) {
-				return field;
-			}
-		}
-		return null;
-	}
-
+	}
+
+	/**
+	 * 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
+	 * list[1]:是否为整形 list[2]:是否是等值查询 list[3]:字段的值
+	 * 
+	 * @param articleField
+	 *            文章字段
+	 * @param diyFieldName
+	 *            动态字段
+	 * @param fields
+	 *            模型对应的字段类型
+	 * @return
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	private Map<String, List> searchMap(Map<String, Object> articleField, Map<String, String> diyFieldName,
+			List fields) {
+		Map<String, List> map = new HashMap<String, List>();
+
+		// 遍历文章中的字段
+		for (Iterator iter = articleField.keySet().iterator(); iter.hasNext();) {
+			String key = iter.next().toString();
+			String fieldValue = articleField.get(key).toString();
+			List list = new ArrayList();
+			List listValue = new ArrayList();
+			// 是否为自定义字段
+			list.add(false);
+
+			// 是否是数字类型,true:不是
+			list.add(true);
+			// 是否是模糊查询3
+			list.add(true);
+			// 字段值
+			listValue.add(articleField.get(key));
+			list.add(listValue);
+			map.put(key, list);
+		}
+
+		// 遍历字段自定义字段
+//		for (Iterator iter = diyFieldName.keySet().iterator(); iter.hasNext();) {
+//			String key = iter.next().toString();
+//			String fieldValue = diyFieldName.get(key);
+//			// 获取字段实体
+//			ContentModelFieldEntity field = this.get(key, fields);
+//			if (field != null) {
+//				List list = new ArrayList();
+//				// 是否为自定义字段0
+//				list.add(0, true);
+//				List listValue = new ArrayList();
+//				// 字段的值
+//				if (field.getFieldType() == IContentModelFieldBiz.INT || field.getFieldType() == IContentModelFieldBiz.FLOAT) {
+//					// 判断是否为区间查询
+//
+//					if (diyFieldName.get(key).toString().indexOf("-") > 0) {
+//						String[] values = fieldValue.toString().split("-");
+//						// 是否是数字类型,false:是
+//						list.add(false);
+//						// 是否是区间比较 false:是
+//						list.add(false);
+//						// 字段值1
+//						listValue.add(values[0]);
+//						listValue.add(values[1]);
+//					} else {
+//						// 是否是数字类型,false:是2
+//						list.add(false);
+//						// 是否是区间比较 true:不是3
+//						list.add(true);
+//						// 字段值 1
+//						listValue.add(fieldValue);
+//					}
+//				} else {
+//					// 是否是数字类型,true:不是2
+//					list.add(true);
+//					list.add(false);
+//					// 字段值 1
+//					listValue.add(fieldValue);
+//				}
+//				list.add(listValue);
+//				map.put(key, list);
+//			}
+//		}
+		return map;
+	}
+
+	/**
+	 * 根据字段名称获取字段类型
+	 * 
+	 * @param columnName
+	 *            字段名称
+	 * @return 字段实体
+	 */
+	private ContentModelFieldEntity get(String columnName, List<ContentModelFieldEntity> fields) {
+		if (fields == null) {
+			return null;
+		}
+		for (ContentModelFieldEntity field : fields) {
+			if (field.getFieldFieldName().equals(columnName)) {
+				return field;
+			}
+		}
+		return null;
+	}
+
 }

+ 9 - 3
src/main/java/net/mingsoft/cms/util/CmsParserUtil.java

@@ -23,6 +23,7 @@ import net.mingsoft.base.constant.Const;
 import net.mingsoft.basic.entity.ColumnEntity;
 import net.mingsoft.basic.util.BasicUtil;
 import net.mingsoft.basic.util.SpringUtil;
+import net.mingsoft.basic.util.StringUtil;
 import net.mingsoft.cms.bean.ColumnArticleIdBean;
 import net.mingsoft.cms.constant.e.ColumnTypeEnum;
 import net.mingsoft.mdiy.biz.IContentModelBiz;
@@ -42,13 +43,18 @@ public class CmsParserUtil extends ParserUtil {
 	 * @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);
-		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);
 		// 生成移动页面
-		if (ObjectUtil.isNotNull(BasicUtil.getApp().getAppMobileStyle())) {
+		if (mobileStyle) {
 			// 手机端m
 			map.put(ParserUtil.MOBILE, BasicUtil.getApp().getAppMobileStyle());
 			content = CmsParserUtil.generate(templatePath, map, true);

+ 1 - 1
src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 spring:
   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
     password: root
     filters: wall,mergeStat

+ 2 - 1
src/main/resources/application-prod.yml

@@ -1,6 +1,7 @@
 spring:
   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
     password: root
     filters: wall,mergeStat

+ 1 - 11
src/main/resources/application-test.yml

@@ -1,11 +1 @@
-server:
-  port: 4000
-  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
+mcms4.7.0 Oracle数据库暂不支持

+ 1 - 10
src/main/webapp/templets/1/default/m/case-list.htm

@@ -13,38 +13,29 @@
                     <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>
                 	</div>
-                	<span class="am-hide ms-cur-{ms:page.cur/}-[field.index/]">{ms:page.next/}</span>
                 </li>
                 {/ms:arclist}
             </ul>
-           <!--  <div id="ul{ms:page.cur/}"></div> -->
         </div>
         <#include "m/footer.htm"/>
     </body>
 </html>
 <script>
-/*var time = 1;
+var time = 1;
 $(window).scroll(function() {  
 	var scrollTop = $(this).scrollTop();  
 	var scrollHeight = $(document).height(); 
 	var windowHeight = $(this).height();  
 	if(scrollTop + windowHeight == scrollHeight) {
 		var time2 = $(".ms-cur-" + time + "-1").text()
-		if(time == "{ms:page.total/}") {
-			return;
-		}
 		$("#ul" + time).load(time2 + " #ms-ui");
 		$("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>")
 		time++;
 	}else if(scrollTop + 56 + windowHeight == scrollHeight){
 		var time2 = $(".ms-cur-" + time + "-1").text()
-		if(time == "{ms:page.total/}") {
-			return;
-		}
 		$("#ul" + time).load(time2 + " #ms-ui");
 		$("#am-active-1").append("<div id=\"ul" + (time + 1) + "\"></div>")
 		time++;
 	}
 });
-*/
 </script>

+ 0 - 0
src/main/webapp/templets/1/default/index.htm → src/main/webapp/templets/1/default/m/indexa.htm


+ 30 - 6
src/main/webapp/templets/1/default/search.htm

@@ -8,7 +8,7 @@
         <div class="ms-banner">
             <img src="{ms:global.host/}/{ms:global.style/}/images/search.jpg">
         </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-div">
                     <div class="ms-content-main-div-prompt">您搜索的关键字
@@ -20,17 +20,17 @@
                         <li>
                             <a href="{ms:global.url/}/[field.link/]">
                                 [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>
                         </li>
                         {/ms:arclist}
                     </ul>
                 </div>
                 <div class="ms-content-main-page">
-	                <a class="ms-content-main-page-first" href="{ms:page.index/}">首页</a>
-	                <a class="ms-content-main-page-upper" href="{ms:page.pre/}">上一页</a>
-	                <a class="ms-content-main-page-next" href="{ms:page.next/}">下一页</a>
-	                <a class="ms-content-main-page-last" href="{ms:page.last/}">末页</a>
+	              	<a href="jacascript::void(0)" @click="indexAndLast(1)">首页</a>
+                  	<a href="jacascript::void(0)" @click="search(false)">上一页</a>
+                  	<a href="jacascript::void(0)" @click="search(true)">下一页</a>
+                  	<a href="jacascript::void(0)" @click="indexAndLast({ms:page.total/})">尾页</a>
 	            </div>
             </div>
         </div>
@@ -38,6 +38,30 @@
     </body>
 </html>
 <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) {
         $('.ms-content-main-page').remove();
         $('.ms-content-main-ul').before("<div class='ms-content-main-div-nothing'>没找到相关记录</div>")

Some files were not shown because too many files changed in this diff