|
@@ -318,171 +318,171 @@ public class MCmsAction extends net.mingsoft.cms.action.BaseAction {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * 实现前端页面的文章搜索
|
|
|
|
|
- *
|
|
|
|
|
- * @param request
|
|
|
|
|
- * 搜索id
|
|
|
|
|
- * @param response
|
|
|
|
|
- */
|
|
|
|
|
- @RequestMapping(value = "search")
|
|
|
|
|
- @ResponseBody
|
|
|
|
|
- public void search(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
-
|
|
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
|
|
- // 读取请求字段
|
|
|
|
|
- Map<String, String[]> field = request.getParameterMap();
|
|
|
|
|
- Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD);
|
|
|
|
|
- // 文章字段集合
|
|
|
|
|
- Map<String, Object> articleFieldName = new HashMap<String, Object>();
|
|
|
|
|
- // 自定义字段集合
|
|
|
|
|
- Map<String, String> diyFieldName = new HashMap<String, String>();
|
|
|
|
|
- CategoryEntity column = null; // 当前栏目
|
|
|
|
|
- ModelEntity contentModel = null; // 栏目对应模型
|
|
|
|
|
- List<DiyModelMap> fieldValueList = new ArrayList<DiyModelMap>(); // 栏目对应字段的值
|
|
|
|
|
- int typeId = 0;
|
|
|
|
|
- String categoryIds = BasicUtil.getString("categoryId");
|
|
|
|
|
- //当传递了栏目编号,但不是栏目集合
|
|
|
|
|
- if(!StringUtil.isBlank(categoryIds) && !categoryIds.contains(",")){
|
|
|
|
|
- typeId = Integer.parseInt(categoryIds);
|
|
|
|
|
- }
|
|
|
|
|
- //记录自定义模型字段名
|
|
|
|
|
- List filedStr = new ArrayList<>();
|
|
|
|
|
- //根据栏目确定自定义模型
|
|
|
|
|
- if(typeId>0){
|
|
|
|
|
- column = (CategoryEntity) categoryBiz.getEntity(Integer.parseInt(typeId+""));
|
|
|
|
|
- // 获取表单类型的id
|
|
|
|
|
- if (column != null&&ObjectUtil.isNotNull(column.getMdiyModelId())) {
|
|
|
|
|
- contentModel = (ModelEntity) modelBiz.getEntity(Integer.parseInt(column.getMdiyModelId()));
|
|
|
|
|
- if (contentModel != null) {
|
|
|
|
|
- Map<String,String> fieldMap = contentModel.getFieldMap();
|
|
|
|
|
- for (String s : fieldMap.keySet()) {
|
|
|
|
|
- filedStr.add(fieldMap.get(s));
|
|
|
|
|
- }
|
|
|
|
|
- map.put(ParserUtil.TABLE_NAME, contentModel.getModelTableName());
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- map.put(ParserUtil.COLUMN, column);
|
|
|
|
|
- //设置栏目编号
|
|
|
|
|
-// map.put(ParserUtil.TYPE_ID, typeId);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 遍历取字段集合
|
|
|
|
|
- if (field != null) {
|
|
|
|
|
- for (Map.Entry<String, String[]> entry : field.entrySet()) {
|
|
|
|
|
- if (entry != null) {
|
|
|
|
|
- String value = entry.getValue()[0]; // 处理由get方法请求中文乱码问题
|
|
|
|
|
- if (ObjectUtil.isNull(value)) {
|
|
|
|
|
- continue;
|
|
|
|
|
- }
|
|
|
|
|
- if (request.getMethod().equals(RequestMethod.GET)) { // 如果是get方法需要将请求地址参数转吗
|
|
|
|
|
- try {
|
|
|
|
|
- value = new String(value.getBytes("ISO-8859-1"), Const.UTF8);
|
|
|
|
|
- } catch (UnsupportedEncodingException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- // 若为文章字段,则保存至文章字段集合;否则保存至自定义字段集合
|
|
|
|
|
- if (ObjectUtil.isNotNull(basicField.get(entry.getKey())) && ObjectUtil.isNotNull(value)) {
|
|
|
|
|
- articleFieldName.put(entry.getKey(), value);
|
|
|
|
|
- } else {
|
|
|
|
|
- if (!StringUtil.isBlank(value)) {
|
|
|
|
|
- diyFieldName.put(entry.getKey(), value);
|
|
|
|
|
- //判断请求中的是否是自定义模型中的字段
|
|
|
|
|
- if(filedStr.contains(entry.getKey())){
|
|
|
|
|
- //设置自定义模型字段和值
|
|
|
|
|
- DiyModelMap diyMap = new DiyModelMap();
|
|
|
|
|
- diyMap.setKey(entry.getKey());
|
|
|
|
|
- diyMap.setValue(value);
|
|
|
|
|
- fieldValueList.add(diyMap);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- //添加自定义模型的字段和值
|
|
|
|
|
- if(fieldValueList.size()>0){
|
|
|
|
|
- map.put("diyModel", fieldValueList);
|
|
|
|
|
- }
|
|
|
|
|
- //组织where查询条件
|
|
|
|
|
- Map whereMap = ObjectUtil.isNotNull(contentModel)?
|
|
|
|
|
- this.searchMap(articleFieldName, diyFieldName, JSONArray.parseArray(contentModel.getModelField())):
|
|
|
|
|
- new HashMap();
|
|
|
|
|
-
|
|
|
|
|
- // 获取符合条件的文章总数
|
|
|
|
|
- int count = contentBiz.getSearchCount(contentModel, whereMap, BasicUtil.getAppId(), categoryIds);
|
|
|
|
|
- //设置分页类
|
|
|
|
|
- PageBean page = new PageBean();
|
|
|
|
|
- //读取模板的分页数量
|
|
|
|
|
- int size = BasicUtil.getInt(ParserUtil.SIZE,10);
|
|
|
|
|
- try {
|
|
|
|
|
- size = TagParser.getPageSize(ParserUtil.read(SEARCH+ParserUtil.HTM_SUFFIX,false ));
|
|
|
|
|
- } catch (TemplateNotFoundException e1) {
|
|
|
|
|
- e1.printStackTrace();
|
|
|
|
|
- } catch (MalformedTemplateNameException e1) {
|
|
|
|
|
- e1.printStackTrace();
|
|
|
|
|
- } catch (ParseException e1) {
|
|
|
|
|
- e1.printStackTrace();
|
|
|
|
|
- } catch (IOException e1) {
|
|
|
|
|
- e1.printStackTrace();
|
|
|
|
|
- }
|
|
|
|
|
- int total = PageUtil.totalPage(count, size);
|
|
|
|
|
-
|
|
|
|
|
- int pageNo = BasicUtil.getInt(ParserUtil.PAGE_NO, 1);
|
|
|
|
|
- if(pageNo >= total && total!=0) {
|
|
|
|
|
- pageNo = total;
|
|
|
|
|
- }
|
|
|
|
|
- //获取总数
|
|
|
|
|
- page.setTotal(total);
|
|
|
|
|
- //设置页面显示数量
|
|
|
|
|
- page.setSize(size);
|
|
|
|
|
- //设置列表当前页
|
|
|
|
|
-
|
|
|
|
|
- page.setPageNo(pageNo);
|
|
|
|
|
-
|
|
|
|
|
- String str = ParserUtil.PAGE_NO+","+ParserUtil.SIZE;
|
|
|
|
|
- //设置分页的统一链接
|
|
|
|
|
- String url = BasicUtil.getUrl()+request.getServletPath() +"?" + BasicUtil.assemblyRequestUrlParams(str.split(","));
|
|
|
|
|
- String pageNoStr = "&"+ParserUtil.SIZE+"="+size+"&"+ParserUtil.PAGE_NO+"=";
|
|
|
|
|
- //下一页
|
|
|
|
|
- String nextUrl = url + pageNoStr+((pageNo+1 > total)?total:pageNo+1);
|
|
|
|
|
- //首页
|
|
|
|
|
- String indexUrl = url + pageNoStr + 1;
|
|
|
|
|
- //尾页
|
|
|
|
|
- String lastUrl = url + pageNoStr + total;
|
|
|
|
|
- //上一页 当前页为1时,上一页就是1
|
|
|
|
|
- String preUrl = url + pageNoStr + ((pageNo==1) ? 1:pageNo-1);
|
|
|
|
|
-
|
|
|
|
|
- page.setIndexUrl(indexUrl);
|
|
|
|
|
- page.setNextUrl(nextUrl);
|
|
|
|
|
- page.setPreUrl(preUrl);
|
|
|
|
|
- page.setLastUrl(lastUrl);
|
|
|
|
|
- map.put(ParserUtil.URL, BasicUtil.getUrl());
|
|
|
|
|
- Map<String, Object> searchMap = BasicUtil.assemblyRequestMap();
|
|
|
|
|
- searchMap.put(ParserUtil.PAGE_NO, pageNo);
|
|
|
|
|
- map.put(SEARCH, searchMap);
|
|
|
|
|
- map.put(ParserUtil.PAGE, page);
|
|
|
|
|
- //动态解析
|
|
|
|
|
- map.put(ParserUtil.IS_DO,false);
|
|
|
|
|
- //设置动态请求的模块路径
|
|
|
|
|
- map.put(ParserUtil.MODEL_NAME, "mcms");
|
|
|
|
|
- //解析后的内容
|
|
|
|
|
- String content = "";
|
|
|
|
|
- try {
|
|
|
|
|
- //根据模板路径,参数生成
|
|
|
|
|
- content = CmsParserUtil.generate(SEARCH+ParserUtil.HTM_SUFFIX,map, isMobileDevice(request));
|
|
|
|
|
- } catch (TemplateNotFoundException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
- } catch (MalformedTemplateNameException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
- } catch (ParseException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
- } catch (IOException e) {
|
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
- }
|
|
|
|
|
- this.outString(response, content);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+// /**
|
|
|
|
|
+// * 实现前端页面的文章搜索
|
|
|
|
|
+// *
|
|
|
|
|
+// * @param request
|
|
|
|
|
+// * 搜索id
|
|
|
|
|
+// * @param response
|
|
|
|
|
+// */
|
|
|
|
|
+// @RequestMapping(value = "search")
|
|
|
|
|
+// @ResponseBody
|
|
|
|
|
+// public void search(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
+//
|
|
|
|
|
+// Map<String, Object> map = new HashMap<>();
|
|
|
|
|
+// // 读取请求字段
|
|
|
|
|
+// Map<String, String[]> field = request.getParameterMap();
|
|
|
|
|
+// Map<String, String> basicField = getMapByProperties(net.mingsoft.mdiy.constant.Const.BASIC_FIELD);
|
|
|
|
|
+// // 文章字段集合
|
|
|
|
|
+// Map<String, Object> articleFieldName = new HashMap<String, Object>();
|
|
|
|
|
+// // 自定义字段集合
|
|
|
|
|
+// Map<String, String> diyFieldName = new HashMap<String, String>();
|
|
|
|
|
+// CategoryEntity column = null; // 当前栏目
|
|
|
|
|
+// ModelEntity contentModel = null; // 栏目对应模型
|
|
|
|
|
+// List<DiyModelMap> fieldValueList = new ArrayList<DiyModelMap>(); // 栏目对应字段的值
|
|
|
|
|
+// int typeId = 0;
|
|
|
|
|
+// String categoryIds = BasicUtil.getString("categoryId");
|
|
|
|
|
+// //当传递了栏目编号,但不是栏目集合
|
|
|
|
|
+// if(!StringUtil.isBlank(categoryIds) && !categoryIds.contains(",")){
|
|
|
|
|
+// typeId = Integer.parseInt(categoryIds);
|
|
|
|
|
+// }
|
|
|
|
|
+// //记录自定义模型字段名
|
|
|
|
|
+// List filedStr = new ArrayList<>();
|
|
|
|
|
+// //根据栏目确定自定义模型
|
|
|
|
|
+// if(typeId>0){
|
|
|
|
|
+// column = (CategoryEntity) categoryBiz.getEntity(Integer.parseInt(typeId+""));
|
|
|
|
|
+// // 获取表单类型的id
|
|
|
|
|
+// if (column != null&&ObjectUtil.isNotNull(column.getMdiyModelId())) {
|
|
|
|
|
+// contentModel = (ModelEntity) modelBiz.getEntity(Integer.parseInt(column.getMdiyModelId()));
|
|
|
|
|
+// if (contentModel != null) {
|
|
|
|
|
+// Map<String,String> fieldMap = contentModel.getFieldMap();
|
|
|
|
|
+// for (String s : fieldMap.keySet()) {
|
|
|
|
|
+// filedStr.add(fieldMap.get(s));
|
|
|
|
|
+// }
|
|
|
|
|
+// map.put(ParserUtil.TABLE_NAME, contentModel.getModelTableName());
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// map.put(ParserUtil.COLUMN, column);
|
|
|
|
|
+// //设置栏目编号
|
|
|
|
|
+//// map.put(ParserUtil.TYPE_ID, typeId);
|
|
|
|
|
+// }
|
|
|
|
|
+//
|
|
|
|
|
+// // 遍历取字段集合
|
|
|
|
|
+// if (field != null) {
|
|
|
|
|
+// for (Map.Entry<String, String[]> entry : field.entrySet()) {
|
|
|
|
|
+// if (entry != null) {
|
|
|
|
|
+// String value = entry.getValue()[0]; // 处理由get方法请求中文乱码问题
|
|
|
|
|
+// if (ObjectUtil.isNull(value)) {
|
|
|
|
|
+// continue;
|
|
|
|
|
+// }
|
|
|
|
|
+// if (request.getMethod().equals(RequestMethod.GET)) { // 如果是get方法需要将请求地址参数转吗
|
|
|
|
|
+// try {
|
|
|
|
|
+// value = new String(value.getBytes("ISO-8859-1"), Const.UTF8);
|
|
|
|
|
+// } catch (UnsupportedEncodingException e) {
|
|
|
|
|
+// e.printStackTrace();
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// // 若为文章字段,则保存至文章字段集合;否则保存至自定义字段集合
|
|
|
|
|
+// if (ObjectUtil.isNotNull(basicField.get(entry.getKey())) && ObjectUtil.isNotNull(value)) {
|
|
|
|
|
+// articleFieldName.put(entry.getKey(), value);
|
|
|
|
|
+// } else {
|
|
|
|
|
+// if (!StringUtil.isBlank(value)) {
|
|
|
|
|
+// diyFieldName.put(entry.getKey(), value);
|
|
|
|
|
+// //判断请求中的是否是自定义模型中的字段
|
|
|
|
|
+// if(filedStr.contains(entry.getKey())){
|
|
|
|
|
+// //设置自定义模型字段和值
|
|
|
|
|
+// DiyModelMap diyMap = new DiyModelMap();
|
|
|
|
|
+// diyMap.setKey(entry.getKey());
|
|
|
|
|
+// diyMap.setValue(value);
|
|
|
|
|
+// fieldValueList.add(diyMap);
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+// //添加自定义模型的字段和值
|
|
|
|
|
+// if(fieldValueList.size()>0){
|
|
|
|
|
+// map.put("diyModel", fieldValueList);
|
|
|
|
|
+// }
|
|
|
|
|
+// //组织where查询条件
|
|
|
|
|
+// Map whereMap = ObjectUtil.isNotNull(contentModel)?
|
|
|
|
|
+// this.searchMap(articleFieldName, diyFieldName, JSONArray.parseArray(contentModel.getModelField())):
|
|
|
|
|
+// new HashMap();
|
|
|
|
|
+//
|
|
|
|
|
+// // 获取符合条件的文章总数
|
|
|
|
|
+// int count = contentBiz.getSearchCount(contentModel, whereMap, BasicUtil.getAppId(), categoryIds);
|
|
|
|
|
+// //设置分页类
|
|
|
|
|
+// PageBean page = new PageBean();
|
|
|
|
|
+// //读取模板的分页数量
|
|
|
|
|
+// int size = BasicUtil.getInt(ParserUtil.SIZE,10);
|
|
|
|
|
+// try {
|
|
|
|
|
+// size = TagParser.getPageSize(ParserUtil.read(SEARCH+ParserUtil.HTM_SUFFIX,false ));
|
|
|
|
|
+// } catch (TemplateNotFoundException e1) {
|
|
|
|
|
+// e1.printStackTrace();
|
|
|
|
|
+// } catch (MalformedTemplateNameException e1) {
|
|
|
|
|
+// e1.printStackTrace();
|
|
|
|
|
+// } catch (ParseException e1) {
|
|
|
|
|
+// e1.printStackTrace();
|
|
|
|
|
+// } catch (IOException e1) {
|
|
|
|
|
+// e1.printStackTrace();
|
|
|
|
|
+// }
|
|
|
|
|
+// int total = PageUtil.totalPage(count, size);
|
|
|
|
|
+//
|
|
|
|
|
+// int pageNo = BasicUtil.getInt(ParserUtil.PAGE_NO, 1);
|
|
|
|
|
+// if(pageNo >= total && total!=0) {
|
|
|
|
|
+// pageNo = total;
|
|
|
|
|
+// }
|
|
|
|
|
+// //获取总数
|
|
|
|
|
+// page.setTotal(total);
|
|
|
|
|
+// //设置页面显示数量
|
|
|
|
|
+// page.setSize(size);
|
|
|
|
|
+// //设置列表当前页
|
|
|
|
|
+//
|
|
|
|
|
+// page.setPageNo(pageNo);
|
|
|
|
|
+//
|
|
|
|
|
+// String str = ParserUtil.PAGE_NO+","+ParserUtil.SIZE;
|
|
|
|
|
+// //设置分页的统一链接
|
|
|
|
|
+// String url = BasicUtil.getUrl()+request.getServletPath() +"?" + BasicUtil.assemblyRequestUrlParams(str.split(","));
|
|
|
|
|
+// String pageNoStr = "&"+ParserUtil.SIZE+"="+size+"&"+ParserUtil.PAGE_NO+"=";
|
|
|
|
|
+// //下一页
|
|
|
|
|
+// String nextUrl = url + pageNoStr+((pageNo+1 > total)?total:pageNo+1);
|
|
|
|
|
+// //首页
|
|
|
|
|
+// String indexUrl = url + pageNoStr + 1;
|
|
|
|
|
+// //尾页
|
|
|
|
|
+// String lastUrl = url + pageNoStr + total;
|
|
|
|
|
+// //上一页 当前页为1时,上一页就是1
|
|
|
|
|
+// String preUrl = url + pageNoStr + ((pageNo==1) ? 1:pageNo-1);
|
|
|
|
|
+//
|
|
|
|
|
+// page.setIndexUrl(indexUrl);
|
|
|
|
|
+// page.setNextUrl(nextUrl);
|
|
|
|
|
+// page.setPreUrl(preUrl);
|
|
|
|
|
+// page.setLastUrl(lastUrl);
|
|
|
|
|
+// map.put(ParserUtil.URL, BasicUtil.getUrl());
|
|
|
|
|
+// Map<String, Object> searchMap = BasicUtil.assemblyRequestMap();
|
|
|
|
|
+// searchMap.put(ParserUtil.PAGE_NO, pageNo);
|
|
|
|
|
+// map.put(SEARCH, searchMap);
|
|
|
|
|
+// map.put(ParserUtil.PAGE, page);
|
|
|
|
|
+// //动态解析
|
|
|
|
|
+// map.put(ParserUtil.IS_DO,false);
|
|
|
|
|
+// //设置动态请求的模块路径
|
|
|
|
|
+// map.put(ParserUtil.MODEL_NAME, "mcms");
|
|
|
|
|
+// //解析后的内容
|
|
|
|
|
+// String content = "";
|
|
|
|
|
+// try {
|
|
|
|
|
+// //根据模板路径,参数生成
|
|
|
|
|
+// content = CmsParserUtil.generate(SEARCH+ParserUtil.HTM_SUFFIX,map, isMobileDevice(request));
|
|
|
|
|
+// } catch (TemplateNotFoundException e) {
|
|
|
|
|
+// e.printStackTrace();
|
|
|
|
|
+// } catch (MalformedTemplateNameException e) {
|
|
|
|
|
+// e.printStackTrace();
|
|
|
|
|
+// } catch (ParseException e) {
|
|
|
|
|
+// e.printStackTrace();
|
|
|
|
|
+// } catch (IOException e) {
|
|
|
|
|
+// e.printStackTrace();
|
|
|
|
|
+// }
|
|
|
|
|
+// this.outString(response, content);
|
|
|
|
|
+// }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
|
|
* 动态组织查询where条件 获取查询条件的Map key:字段名 value:List 字段的各种判断值 list[0]:是否为自定义字段
|