Commit 09ff0390 authored by tianbj's avatar tianbj
Browse files

Merge remote-tracking branch 'origin/5.0.0' into 5.0.0

# Conflicts:
#	README.md
#	doc/历史/4.6.5-to-4.7.0-mysql.sql
#	doc/历史/4.6.5-to-4.7.0-sqlserver.sql
#	doc/历史/db-mcms-mysql-4.7.0.sql
#	doc/历史/db-mcms-sqlserver-4.7.0.sql
#	pom.xml
#	src/main/java/net/mingsoft/cms/action/ArticleAction.java
#	src/main/java/net/mingsoft/cms/action/ColumnAction.java
#	src/main/java/net/mingsoft/cms/action/GeneraterAction.java
#	src/main/java/net/mingsoft/cms/action/web/MCmsAction.java
#	src/main/java/net/mingsoft/cms/biz/IArticleBiz.java
#	src/main/java/net/mingsoft/cms/biz/impl/ArticleBizImpl.java
#	src/main/java/net/mingsoft/cms/dao/IArticleDao.java
#	src/main/java/net/mingsoft/cms/dao/IArticleDao.xml
#	src/main/java/net/mingsoft/cms/resources/resources_zh_CN.properties
#	src/main/java/net/mingsoft/config/WebConfig.java
#	src/main/resources/application.yml
#	src/main/webapp/WEB-INF/manager/cms/article/article_form.ftl
#	src/main/webapp/WEB-INF/manager/cms/article/article_main.ftl
#	src/main/webapp/WEB-INF/manager/cms/column/shiro-button.ftl
#	src/main/webapp/WEB-INF/manager/cms/column/shiro-update.ftl
#	src/main/webapp/html/1/index.html
#	src/main/webapp/html/1/m/index.html
#	src/main/webapp/static/plugins/ms/1.0.0/ms.util.js
#	src/main/webapp/static/plugins/tree-select/tree.js
#	src/main/webapp/static/plugins/vue-ueditor-wrap/vue-ueditor-wrap.min.js
#	src/main/webapp/templets/1/default/about.htm
#	src/main/webapp/templets/1/default/advice.htm
#	src/main/webapp/templets/1/default/case-list.htm
#	src/main/webapp/templets/1/default/index.htm
#	src/main/webapp/templets/1/default/m/about.htm
#	src/main/webapp/templets/1/default/m/advice.htm
#	src/main/webapp/templets/1/default/m/case-list.htm
#	src/main/webapp/templets/1/default/m/contact.htm
#	src/main/webapp/templets/1/default/m/news-list.htm
#	src/main/webapp/templets/1/default/m/news-show.htm
#	src/main/webapp/templets/1/default/news-show.htm
#	src/main/webapp/templets/1/default/search.htm
parents de640e65 96693c07
<p align="center">
<a href="https://ms.mingsoft.net/"><img src="http://ms.mingsoft.net/templets/1/ms/images/logo-blue.png" ></a>
</p>
<p align="center">
<strong>价值源自分享</strong>
</p>
<p align="center">
<a target="_blank" href="https://search.maven.org/search?q=ms-mcms">
<img src="https://img.shields.io/maven-central/v/net.mingsoft/ms-mcms.svg?label=Maven%20Central" />
</a>
<a target="_blank" href="hhttps://baike.baidu.com/item/MIT%E8%AE%B8%E5%8F%AF%E8%AF%81/6671281?fr=aladdin">
<img src="https://img.shields.io/:license-MIT-blue.svg" />
</a>
<a target="_blank" href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">
<img src="https://img.shields.io/badge/JDK-8+-green.svg" />
</a>
<a target="_blank" href="https://gitee.com/mingSoft/MCMS/stargazers">
<img src="https://gitee.com/mingSoft/MCMS/badge/star.svg?theme=dark" alt='gitee star'/>
</a>
<a target="_blank" href='https://github.com/ming-soft/mcms'>
<img src="https://img.shields.io/github/stars/ming-soft/mcms.svg?style=social" alt="github star"/>
</a>
</p>
<p align="center">
铭飞平台:<a href="https://ms.mingsoft.net">https://ms.mingsoft.net/</a> <br/>
演示:<a href="http://demo.cms.mingsoft.net/ms/login.do">http://demo.cms.mingsoft.net/ms/login.do</a><br/>
<a href="http://file.mingsoft.net/ms-runner-4.7.2.zip">一键运行版本</a>
</p>
-------------------------------------------------------------------------------
很多人说铭飞是大天朝国唯一完整开源的J2EE系统!团队希望看到更多的优秀好用的开源系统,我们一直会努力下去!<br/>
QQ交流群号:[![加入QQ群](https://img.shields.io/badge/一群-231212174-blue.svg)](https://jq.qq.com/?_wv=1027&k=5zykX7V) [![加入QQ群](https://img.shields.io/badge/二群-221335098-blue.svg)](https://jq.qq.com/?_wv=1027&k=56BqFKu) [![加入QQ群](https://img.shields.io/badge/三群-242805203-blue.svg)](https://jq.qq.com/?_wv=1027&k=5oF19sl)
# 开源说明
* 系统100%开源
* 模块化开发模式,铭飞所开发的模块都发布到了maven中央库。 可以通过pom.xml文件的方式拉取源代码
```
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>模块</artifactId>
<version>版本号</version>
<classifier>sources</classifier>
<scope>provided</scope>
</dependency>
```
# 商用
基于[MIT](https://www.oschina.net/question/12_2829)开源协议,可直接商用无需授权,但请尊重开源精神不要去掉代码中铭飞的注释和版权信息
# 特点
* 免费完整开源:基于MIT协议,源代码完全开源,无商业限制,MS开发团队承诺将MCMS内容系统永久完整开源;<br/>
* 标签化建站:不需要专业的后台开发技能,只要使用系统提供的标签,就能轻松建设网站;<br/>
* html静态化:系统支持全站静态化;<br/>
* 跨终端:站点同时支持PC与移动端访问,同时会自动根据访问的终端切换到对应的界面,数据由系统统一管理;<br/>
* 海量模版:铭飞通过MStore(MS商城)分享更多免费、精美的企业网站模版,降低建站成本;<br/>
* 丰富插件:为了让MCms适应更多的业务场景,在MStore用户可以下载对应的插件,如:站群插件、微信插件、商城插件等;<br/>
* 每月更新:铭飞团队承诺每月28日为系统升级日,分享更多好用等模版与插件;<br/>
* 文档丰富:为了让用户更快速的使用MCms系统进行开发,铭飞团队持续更新开发相关文档,如标签文档、使用文档、视频教程等;<br/>
# 面向对象
* 企 业:帮助创立初期的公司或团队快速搭建产品的技术平台,加快公司项目开发进度;
* 开发者:帮助开发者快速完成承接外包的项目,避免从零搭建系统;
* 学习者:初学JAVA的同学可以下载源代码来进行学习交流;
# 开发环境
建议开发者使用以下环境,这样避免版本带来的问题
* Windows、Linux
* Eclipse、Idea
* Mysql≧5.7
* JDK≧8
* Tomcat≧8
# 快速体验(导入到 Eclipse 或 IDEA)
1、检出源代码:
git clone https://gitee.com/mingSoft/MCMS.git<br/>
2、导入项目<br/>
* Eclipse导入,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择检出的项目MCMS文件夹,然后点击 Finish 按钮,即可成功导入
* IDEA导入,点击 Import Project,选择 pom.xml 文件,点击 Next 按钮,选择 Import Maven projects automatically 复选框,然后一直点击 Next 按钮,直到点击 Finish 按钮,即可成功导入<br/>
4、Eclipse(IDEA)会自动加载 Maven 依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开 Problems 窗口,查看具体错误内容,直到无错误为止<br/>
5、创建数据库db-mcms-open(数据库使用utf-8编码),导入doc/db-mcms-open-版本号.sql,如果升级现有系统请使用*-up-*.sql升级,如果导入了系统对应的完整版SQL,sql升级补丁不需要重复导入;<br/>
6、修改src\main\resources\application-dev.yml文件中的数据库设置参数;<br/>
7、运行MSApplication.java main方法<br/>
8、首先先访问后台地址:http://ip|域名/项目发布名/ms/login.do,管理员账号,用户名:msopen 密码:msopen,进入后台点击内容管理->静态化菜单,进行"生成主页","生成栏目","生成文章"操作一遍 (注意!!!是后台登录界面,不是会员中心登录界面)
# 技术选型
## 后端框架
| 技术 | 名称 | 官网 |
| :--- | :--- | :--- |
| Spring Framework | 容器 | [http://projects.spring.io/spring-framework](http://projects.spring.io/spring-framework/) |
| Spring Boot | MVC框架 | [https://spring.io/projects/spring-boot](https://spring.io/projects/spring-boot) |
| Apache Shiro | 安全框架 | [http://shiro.apache.org](http://shiro.apache.org/) |
| Spring session | 分布式Session管理 | [http://projects.spring.io/spring-session](http://projects.spring.io/spring-session) |
| MyBatis | ORM框架 | [http://www.mybatis.org](http://www.mybatis.org/mybatis-3/zh/index.html) |
| Freemarker | 视图框架 | [http://freemarker.foofun.cn](http://freemarker.foofun.cn/) |
| PageHelper | MyBatis分页插件 | [http://git.oschina.net/free/Mybatis\_PageHelper](http://git.oschina.net/free/Mybatis_PageHelper) |
| Log4J | 日志组件 | [http://logging.apache.org](http://logging.apache.org) |
| Maven | 项目构建 | [http://maven.apache.org](http://maven.apache.org/) |
| Elasticsearch | 分布式搜索引擎 | [https://www.elastic.co](https://www.elastic.co/) |
| Redis | 分布式缓存数据库 | [https://redis.io](https://redis.io) |
| hutool | 工具类 | [http://hutool.mydoc.io](http://hutool.mydoc.io) |
## 前端框架
| 技术 | 名称 | 官网 |
| :--- | :--- | :--- |
| vue| 函式库 | [https://cn.vuejs.org//](https://cn.vuejs.org//) |
| element ui| UI库 | [https://element.eleme.cn/2.0/#/zh-CN](https://element.eleme.cn/2.0/#/zh-CN) |
| jQuery | 函式库 | [http://jquery.com/](http://jquery.com/) |
| Bootstrap | 前端框架 | [http://getbootstrap.com/](http://getbootstrap.com/) |
| Bootstrap-table | Bootstrap数据表格 | [http://bootstrap-table.wenzhixin.net.cn/](http://bootstrap-table.wenzhixin.net.cn/) |
| BootstrapValidator | 表单验证 | [http://bootstrapvalidator.com/](http://bootstrapvalidator.com) |
| Font-awesome | 字体图标 | [http://fontawesome.io/](http://fontawesome.io/) |
| Waves | 点击效果插件 | [https://github.com/fians/Waves/](https://github.com/fians/Waves) |
| zTree | 树插件 | [http://www.treejs.cn/v3/](http://www.treejs.cn/v3/) |
| Select2 | 选择框插件 | [https://github.com/select2/select2](https://github.com/select2/select2) |
| Vue | MVVM框架 | [https://cn.vuejs.org/](https://cn.vuejs.org/) |
| AmazeUI | 移动端UI | [http://amazeui.org/](http://amazeui.org/) |
| Plupload | 上传控件 | [http://www.plupload.com/](http://www.plupload.com/) |
| freemarker | 模板引擎 | [http://freemarker.foofun.cn/toc.html](http://freemarker.foofun.cn/toc.html) |
| validator | 验证库 | [https://github.com/chriso/validator.js](https://github.com/chriso/validator.js) |
| animate | 动画 | [http://daneden.github.io/animate.css/](http://daneden.github.io/animate.css/) |
| icon | 矢量小图标\(待更新\) | [http://ms.mingsoft.net/html/86//6048/index.html](http://ms.mingsoft.net/html/86//6048/index.html) |
# 文件说明
* doc 项目文档文件夹,里面有数据库文件
* src/main/java java源代码
* src/main/resources 项目的资源配置文件
* src/main/webapp
* src/main/webapp/static 静态资源文件,如:js、css、image、等第三方前端插件库
* src/main/webapp/html 生成的静态页面,实际项目需要删除,只是提供给开发者快速预览生成后的静态页面
* src/main/webapp/templets 模版文件夹
* src/main/webapp/upload 上传资源文件夹
* src/main/webapp/WEB-INF/manager 后端视图页面
* LICENSE 项目协议说明
* README.md 项目说明文档
* pom.xml 依赖配置文件
# 文档
* MCms标签手册 http://doc.ms.mingsoft.net/mcms-tag-guide
* 快速开发手册 http://doc.ms.mingsoft.net/dev-guide/
# 软件截图
<table>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121402_82521059_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/120836_8a943ad5_1795833.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/120927_8a3f93e3_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/120939_7e5281db_1795833.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/120951_9d3a50b2_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121003_9c68e090_1795833.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121020_34c8e0ab_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121033_b425e406_1795833.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121044_41cc0d00_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121059_48b4cd7b_1795833.png"/></td>
</tr>
<tr>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121112_8581de9a_1795833.png"/></td>
<td><img src="https://images.gitee.com/uploads/images/2019/0523/121122_8b513dd1_1795833.png"/></td>
</tr>
</table>
# 铭飞平台
做开源我们是业余的,写代码我们是认真的。研发产品的路上我们一直在探索、一直在学习、一直在用心投入,希望能给更多的企业与开发者提供一些更有价值的服务。
## 项目管理
<table>
<tr>
<td><img src="http://ms.mingsoft.net/upload/1/article/1572421127803.gif"/></td>
</tr>
<tr>
<td><img src="http://ms.mingsoft.net/upload/1/article/1572421308885.gif"/></td>
</tr>
</table>
## 代码生成器
<table>
<tr>
<td><img src="http://ms.mingsoft.net/upload/1/article/1572419454270.gif"/></td>
</tr>
<tr>
<td><img src="http://ms.mingsoft.net/upload/1/article/1572419347761.gif"/></td>
</tr>
</table>
请使用master分支
\ No newline at end of file
UPDATE cms_content
SET content_img = concat( '[{"path":"', content_img, '"}]' )
WHERE
content_img IS NOT NULL
AND trim( content_img ) != ''
\ No newline at end of file
INSERT INTO cms_content (
cms_content.id,
cms_content.app_id,
cms_content.content_url,
cms_content.content_details,
cms_content.content_keyword,
cms_content.content_description,
cms_content.content_img,
cms_content.content_sort,
cms_content.content_datetime,
cms_content.content_source,
cms_content.content_author,
cms_content.content_display,
cms_content.content_type,
cms_content.content_category_id,
cms_content.content_title,
cms_content.content_hit
)
SELECT
basic.basic_id,
cms_article.article_webid,
cms_article.article_url,
cms_article.article_content,
cms_article.article_keyword,
basic.basic_description,
basic.basic_thumbnails,
basic.basic_sort,
basic.basic_datetime,
cms_article.article_source,
cms_article.article_author,
basic.basic_display,
cms_article.article_type,
basic.basic_categoryid,
basic.basic_title,
basic.basic_hit
FROM
basic
INNER JOIN cms_article ON cms_article.article_basicid = basic.basic_id
INSERT INTO cms_category (
cms_category.id,
cms_category.category_title,
cms_category.category_sort,
cms_category.category_parent_id,
cms_category.category_path,
cms_category.category_flag,
cms_category.dict_id,
cms_category.app_id,
cms_category.category_manager_id,
cms_category.category_datetime,
cms_category.mdiy_model_id,
cms_category.category_diy_url,
cms_category.category_img,
cms_category.category_descrip,
cms_category.category_keyword,
cms_category.category_url,
cms_category.category_list_url,
cms_category.category_type,
cms_category.category_id
) SELECT
category.category_id,
category.category_title,
category.category_sort,
category.category_parent_id,
basic_column.column_path,
basic_column.column_flag,
category.category_dict_id,
category.category_appid,
category.category_managerid,
category.category_datetime,
basic_column.column_cm_id,
basic_column.column_diy_url,
category.category_smallimg,
basic_column.column_descrip,
basic_column.column_keyword,
basic_column.column_url,
basic_column.column_listurl,
basic_column.column_type,
category.category_categoryid
FROM
basic_column
INNER JOIN category ON basic_column.column_category_id = category.category_id
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
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`;
ALTER TABLE `people` ADD COLUMN `people_ip` varchar(100) COMMENT '用户登录ip' AFTER `people_maillcheck`;
DROP TABLE IF EXISTS `file`;
CREATE TABLE `file` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '文件编号',
`category_id` int(11) DEFAULT NULL COMMENT '文件分类编号',
`app_id` int(11) DEFAULT NULL COMMENT 'APP编号',
`file_name` varchar(200) DEFAULT NULL COMMENT '文件名称',
`file_url` varchar(500) DEFAULT NULL COMMENT '文件链接',
`file_size` int(11) DEFAULT NULL COMMENT '文件大小',
`file_json` varchar(500) DEFAULT NULL COMMENT '文件详情Json数据',
`file_type` varchar(50) DEFAULT NULL COMMENT '文件类型:图片、音频、视频等',
`is_child` varchar(50) DEFAULT NULL COMMENT '子业务',
`update_date` datetime DEFAULT NULL COMMENT '更新时间',
`update_by` int(11) DEFAULT NULL COMMENT '更新者',
`create_by` int(11) DEFAULT NULL COMMENT '创建者',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`del` int(1) DEFAULT NULL COMMENT '删除标记',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='基础文件表';
DROP TABLE IF EXISTS `mdiy_tag`;
CREATE TABLE `mdiy_tag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tag_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '标签名称',
`tag_type` int(1) DEFAULT NULL COMMENT '标签类型',
`tag_description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '标签' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of mdiy_tag
-- ----------------------------
INSERT INTO `mdiy_tag` VALUES (3, 'arclist', 3, '文章列表');
INSERT INTO `mdiy_tag` VALUES (4, 'channel', 3, '通用栏目');
INSERT INTO `mdiy_tag` VALUES (5, 'global', 2, '全局');
INSERT INTO `mdiy_tag` VALUES (7, 'field', 3, '文章内容');
INSERT INTO `mdiy_tag` VALUES (8, 'pre', 0, '文章上一篇');
INSERT INTO `mdiy_tag` VALUES (9, 'page', 2, '通用分页');
INSERT INTO `mdiy_tag` VALUES (10, 'next', 0, '文章下一篇');
INSERT INTO `mdiy_tag` VALUES (12, 'prclist', 3, '商品列表');
INSERT INTO `mdiy_tag` VALUES (13, 'goods', 3, '商品详情');
-- ----------------------------
-- Table structure for mdiy_tag_sql
-- ----------------------------
DROP TABLE IF EXISTS `mdiy_tag_sql`;
CREATE TABLE `mdiy_tag_sql` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tag_id` int(11) NOT NULL COMMENT '自定义标签编号',
`tag_sql` text CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT '自定义sql支持ftl写法',
`sort` int(11) DEFAULT NULL COMMENT '排序升序',
PRIMARY KEY (`id`) USING BTREE,
INDEX `fk_mdiy_tag_id`(`tag_id`) USING BTREE,
CONSTRAINT `mdiy_tag_sql_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `mdiy_tag` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '标签对应多个sql语句' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of mdiy_tag_sql
-- ----------------------------
INSERT INTO `mdiy_tag_sql` VALUES (5, 3, '<#assign _typeid=\"\"/>\r\n<#if column?? && column.categoryId??>\r\n <#assign _typeid=\"${column.categoryId}\">\r\n</#if>\r\n<#if typeid??>\r\n <#assign _typeid=\"${typeid}\">\r\n</#if>\r\nSELECT\r\n basic_id AS id,\r\n @rownum := @rownum + 1 AS `index`,\r\n LEFT (basic_title, ${titlelen ?default(40)}) AS title,\r\n basic_title AS fulltitle,\r\n article_author AS author,\r\n article_source AS source,\r\n article_content AS content,\r\n category.category_title AS typename,\r\n category.category_id AS typeid,\r\n category.category_smallimg AS typelitpic,\r\n <#--列表页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/${modelName}/list.do?typeid=\", category.category_id) as typelink,\r\n <#else>\r\n (SELECT \"index.html\") AS typelink,\r\n </#if>\r\n basic.basic_thumbnails AS litpic,\r\n <#--内容页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/${modelName}/view.do?id=\", basic_id) as link,\r\n <#else>\r\n cms_article.article_url AS link,\r\n </#if>\r\n basic_datetime AS date,<#if tableName??>${tableName}.*,</#if>\r\n basic_description AS descrip,\r\n basic_hit AS hit,\r\n article_type AS flag,\r\n category_title AS typetitle,\r\n cms_article.article_keyword AS keyword \r\nFROM\r\n (SELECT @rownum := 0) r,\r\n basic\r\n LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id\r\n LEFT JOIN category ON basic_categoryid = category.category_id\r\n LEFT JOIN basic_column ON basic_column.column_category_id = basic.basic_categoryid \r\n <#--判断是否有自定义模型表-->\r\n <#if tableName??>LEFT JOIN ${tableName} ON ${tableName}.basicId=cms_article.article_basicid </#if>\r\nWHERE <#--查询栏目-->\r\n basic.basic_display=0 \r\n <#--根据模块编号查询分类-->\r\n <#if column?? && column.categoryModelId?has_content>\r\n and category_modelid=${column.categoryModelId}\r\n </#if>\r\n <#--判断是否有搜索分类集合-->\r\n <#if _typeid?has_content>\r\n and (basic_categoryid=${_typeid} or basic_categoryid in \r\n (select category_id FROM category where category.del=0 and find_in_set(${_typeid},CATEGORY_PARENT_ID)))\r\n <#else>\r\n <#if search??> \r\n <#if search.categoryIds??>and FIND_IN_SET(category_categoryid,\'${search.categoryIds}\')</#if>\r\n <#--标题-->\r\n <#if search.basic_title??> and basic_title like CONCAT(\"%\",\'${search.basic_title}\',\"%\")</#if>\r\n <#--作者-->\r\n <#if search.article_author??> and article_author like CONCAT(\"%\",\'${search.article_author}\',\"%\")</#if>\r\n <#--来源-->\r\n <#if search.article_source??> and article_source like CONCAT(\"%\",\'${search.article_source}\',\"%\")</#if>\r\n <#--属性-->\r\n <#if search.article_type??> and article_type like CONCAT(\"%\",\'${search.article_type}\',\"%\")</#if>\r\n <#--图片-->\r\n <#if search.basic_thumbnails??> and basic_thumbnails like CONCAT(\"%\",\'${search.basic_thumbnails}\',\"%\")</#if>\r\n <#--描述-->\r\n <#if search.basic_description??> and basic_description like CONCAT(\"%\",\'${search.basic_description}\',\"%\")</#if>\r\n <#--关键字-->\r\n <#if search.article_keyword??> and article_keyword like CONCAT(\"%\",\'${search.article_keyword}\',\"%\")</#if>\r\n <#--内容-->\r\n <#if search.article_content??> and article_content like CONCAT(\"%\",\'${search.article_content}\',\"%\")</#if>\r\n <#--自定义顺序-->\r\n <#if search.article_freeorder??> and article_freeorder=${search.article_freeorder}</#if>\r\n </#if>\r\n </#if>\r\n <#--标题-->\r\n <#if basic_title??> and basic_title like CONCAT(\"%\",\'${basic_title}\',\"%\")</#if>\r\n <#--作者-->\r\n <#if article_author??> and article_author like CONCAT(\"%\",\'${article_author}\',\"%\")</#if>\r\n <#--来源-->\r\n <#if article_source??> and article_source like CONCAT(\"%\",\'${article_source}\',\"%\")</#if>\r\n <#--属性-->\r\n <#if article_type??> and article_type like CONCAT(\"%\",\'${article_type}\',\"%\")</#if>\r\n <#--图片-->\r\n <#if basic_thumbnails??> and basic_thumbnails like CONCAT(\"%\",\'${basic_thumbnails}\',\"%\")</#if>\r\n <#--描述-->\r\n <#if basic_description??> and basic_description like CONCAT(\"%\",\'${basic_description}\',\"%\")</#if>\r\n <#--关键字-->\r\n <#if article_keyword??> and article_keyword like CONCAT(\"%\",\'${article_keyword}\',\"%\")</#if>\r\n <#--内容-->\r\n <#if article_content??> and article_content like CONCAT(\"%\",\'${article_content}\',\"%\")</#if>\r\n <#--自定义顺序-->\r\n <#if article_freeorder??> and article_freeorder=${article_freeorder}</#if>\r\n <#--自定义模型-->\r\n <#if diyModel??> \r\n <#list diyModel as dm>\r\n and ${tableName}.${dm.key} = \"${dm.value}\" \r\n </#list>\r\n </#if>\r\n <#--文章属性-->\r\n <#if flag?? >\r\n and cms_article.article_type like CONCAT(\'%\',\'${flag}\',\'%\') \r\n </#if>\r\n <#if noflag?? >\r\n and cms_article.article_type not like CONCAT(\'%\',\'${noflag}\',\'%\') \r\n </#if>\r\n <#--字段排序-->\r\n <#if orderby?? >\r\n ORDER BY \r\n <#if orderby==\"date\"> basic.basic_datetime</#if> \r\n <#if orderby==\"updatedate\"> basic.basic_updatetime</#if> \r\n <#if orderby==\"hit\"> basic.basic_hit</#if>\r\n <#if orderby==\"sort\"> basic.basic_sort</#if>\r\n <#if orderby==\"id\"> basic.basic_id</#if>\r\n </#if>\r\n <#if order?? >\r\n <#if order==\"desc\"> desc</#if>\r\n <#if order==\"asc\"> asc</#if>\r\n </#if>\r\n LIMIT \r\n <#--判断是否分页-->\r\n <#if ispaging?? && (pageTag.pageNo)??>${(pageTag.pageNo-1)*size?eval},${size?default(20)}\r\n <#else>${size?default(20)}</#if>\r\n', 1);
INSERT INTO `mdiy_tag_sql` VALUES (6, 4, '<#--freemarker格式化数字-->\r\n<#setting number_format=\"#\">\r\n<#assign _typeid=\"\"/>\r\n<#if column?? && column.categoryId??>\r\n <#assign _typeid=\"${column.categoryId}\">\r\n</#if>\r\n<#if typeid??>\r\n <#assign _typeid=\"${typeid}\">\r\n</#if>\r\nselect \r\n @rownum := @rownum + 1 AS typeindex,\r\n category_id as id,\r\n category_id as typeid,\r\n category_title as typetitle,\r\n <#--返回父id集合-->\r\n category_parent_id as pids,\r\n <#--栏目选中的样式-->\r\n IF(<#if _typeid?has_content>${_typeid}<#else>0</#if> = category_id ,\"${class!\'\'}\",\"\") as class,\r\n <#--动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/${modelName}/list.do?typeid=\", category_id) as typelink,\r\n <#else>\r\n CONCAT(column_path,\"/index.html\") as typelink,\r\n </#if>\r\n column_keyword as typekeyword,\r\n column_descrip as typedescrip,\r\n category_smallimg as typelitpic \r\n from (SELECT @rownum := 0) r,basic_column bc \r\n LEFT JOIN category on bc.column_category_id=category.category_id where \r\n category.del=0 \r\n <#--根据模块编号查询分类-->\r\n <#if column?? && column.categoryModelId?has_content>\r\n and category_modelid=${column.categoryModelId}\r\n </#if>\r\n<#if type?has_content>\r\n <#--顶级栏目(单个)-->\r\n <#if type==\"top\">\r\n and category_id=(select left(category_parent_id,LOCATE(\",\",category_parent_id)-1) from category where category_id = ${_typeid})\r\n <#elseif type==\"nav\">\r\n and(category_categoryid=0 or category_categoryid is null)\r\n <#--同级栏目(多个)-->\r\n <#elseif type==\"level\">\r\n and\r\n <#if _typeid?has_content>\r\n category_categoryid=(select category_categoryid from category where category_id=${_typeid})\r\n <#else>\r\n 1=1\r\n </#if>\r\n <#--当前栏目(单个)-->\r\n <#elseif type==\"self\">\r\n and \r\n <#if _typeid?has_content>\r\n category_id=${_typeid}\r\n <#else>\r\n 1=1\r\n </#if>\r\n <#--当前栏目的所属栏目(多个)-->\r\n <#elseif type==\"path\">\r\n and \r\n <#if _typeid?has_content>\r\n category_id in (<#if column?? && column.categoryParentId??>${column.categoryParentId},</#if>${_typeid})\r\n <#else>\r\n 1=1\r\n </#if>\r\n <#--子栏目(多个)-->\r\n <#elseif type==\"son\">\r\n and \r\n <#if _typeid?has_content>\r\n category_categoryid=${_typeid}\r\n <#else>\r\n 1=1\r\n </#if>\r\n <#--上一级栏目没有则取当前栏目(单个)-->\r\n <#elseif type==\"parent\">\r\n and \r\n <#if _typeid?has_content>\r\n <#if column?? && column.categoryCategoryId?? && column.categoryCategoryId!=0>\r\n category_id=${column.categoryCategoryId}\r\n <#else>\r\n category_id=${_typeid}\r\n </#if>\r\n <#else>\r\n 1=1\r\n </#if>\r\n <#--子栏目或同级栏目(多个)-->\r\n <#elseif type==\"sonOrLevel\">\r\n and \r\n <#if _typeid?has_content>\r\n category_categoryid= if((SELECT count(*) FROM category\r\n LEFT JOIN basic_column bc ON bc.column_category_id = category.category_id \r\n WHERE category_categoryid=${_typeid})>0,${_typeid},(select category_categoryid from category where category_id=${_typeid}))\r\n <#else>\r\n 1=1\r\n </#if>\r\n </#if>\r\n<#else> <#--默认son-->\r\n and\r\n <#if _typeid?has_content>\r\n category_categoryid=${_typeid}\r\n <#else>\r\n (category_categoryid=0 or category_categoryid is null)\r\n </#if>\r\n</#if>', 1);
INSERT INTO `mdiy_tag_sql` VALUES (7, 5, 'select \r\nAPP_NAME as name,\r\napp_logo as logo,\r\napp_keyword as keyword,\r\napp_description as descrip,\r\napp_copyright as copyright,\r\n<#--动态解析 -->\r\n<#if isDo?? && isDo>\r\n\"${url}\" as url,\r\n\"${url}\" as host,\r\n<#--使用地址栏的域名 -->\r\n<#elseif url??>\r\nCONCAT(\"${url}\",\"/${html}/\",app_id,\"/<#if m??>${m}</#if>\") as url,\r\n\"${url}\" as host,\r\n<#else>\r\nCONCAT(REPLACE(REPLACE(TRIM(substring_index(app_url,\"\\n\",1)), CHAR(10),\'\'), CHAR(13),\'\'),\"/html/\",app_id,\"/<#if m??>${m}</#if>\") as url,\r\nREPLACE(REPLACE(TRIM(substring_index(app_url,\"\\n\",1)), CHAR(10),\'\'), CHAR(13),\'\') as host,\r\n</#if>\r\nCONCAT(\"templets/\",app_id,\"/\",<#if m??>CONCAT(app_style,\"/${m}\")<#else>app_style</#if>) as style <#-- 判断是否为手机端 -->\r\nfrom app limit 1', 1);
INSERT INTO `mdiy_tag_sql` VALUES (8, 7, 'SELECT \r\nbasic_id as id,\r\nleft(basic_title,${titlelen?default(40)}) as title,\r\nbasic_title as fulltitle,\r\narticle_author as author, \r\narticle_source as source, \r\narticle_content as content,\r\ncategory.category_title as typetitle,\r\ncategory.category_id as typeid,\r\ncategory.category_smallimg AS typelitpic,\r\n<#--动态链接-->\r\n<#if isDo?? && isDo>\r\nCONCAT(\"/${modelName}/list.do?typeid=\", category.category_id) as typelink,\r\n<#else>\r\n(SELECT \"index.html\") as typelink,\r\n</#if>\r\nbasic.basic_thumbnails as litpic,\r\n<#--内容页动态链接-->\r\n<#if isDo?? && isDo>\r\nCONCAT(\"/mcms/view.do?id=\", basic_id) as link,\r\n<#else>\r\ncms_article.article_url AS link,\r\n</#if>\r\nbasic_datetime as date,\r\nbasic_description as descrip,\r\nCONCAT(\"<script type=\'text/javascript\' src=\'${url}/basic/\",basic_id,\"/hit.do\'></script>\") as hit,\r\narticle_type as flag,\r\ncategory_title as typetitle,\r\n<#if tableName??>${tableName}.*,</#if>\r\ncms_article.article_keyword as keyword\r\nFROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id \r\nLEFT JOIN category ON basic_categoryid=category.category_id \r\nLEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid\r\n<#--判断是否有自定义模型表-->\r\n<#if tableName??>left join ${tableName} on ${tableName}.basicId=cms_article.ARTICLE_BASICID</#if>\r\nWHERE \r\n1=1\r\n<#if id??> and basic_id=${id}</#if>', 1);
INSERT INTO `mdiy_tag_sql` VALUES (9, 8, '<#assign select=\"(SELECT \'\')\"/>\r\n<#if (pageTag.preId)gt 0>\r\nSELECT \r\nbasic_id as id,\r\nleft(basic_title,${titlelen?default(40)}) as title,\r\nbasic_title as fulltitle,\r\narticle_author as author, \r\narticle_source as source, \r\narticle_content as content,\r\ncategory.category_title as typename,\r\ncategory.category_id as typeid,\r\n(SELECT \"index.html\") AS typelink,\r\nbasic.basic_thumbnails as litpic,\r\ncms_article.article_url as link,\r\nbasic_datetime as date,\r\nbasic_description as descrip,\r\nbasic_hit as hit,\r\narticle_type as flag,\r\ncms_article.article_keyword as keyword \r\nFROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id \r\nLEFT JOIN category ON basic_categoryid=category.category_id \r\nLEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid \r\nWHERE basic_id=${pageTag.preId}\r\n<#else><#--没有上一页返回空字符串-->\r\nSELECT \r\n${select} as id,\r\n${select} as title,\r\n${select} as fulltitle,\r\n${select} as author, \r\n${select} as source, \r\n${select} as content,\r\n${select} as typename,\r\n${select} as typeid,\r\n${select} as typelink,\r\n${select} as litpic,\r\n${select} as link,\r\n${select} as date,\r\n${select} as descrip,\r\n${select} as hit,\r\n${select} as flag,\r\n${select} as keyword FROM basic\r\n</#if>', NULL);
INSERT INTO `mdiy_tag_sql` VALUES (10, 9, ' select\r\n <#if !(pageTag.indexUrl??)>\r\n <#--判断是否有栏目对象,用于搜索不传栏目-->\r\n <#if column??>\r\n <#--顶级栏目处理-->\r\n <#if column.categoryCategoryId==0>\r\n <#assign path=column.columnPath/>\r\n <#else>\r\n <#assign path=column.columnPath/>\r\n </#if>\r\n <#else>\r\n <#assign path=\"\"/>\r\n </#if>\r\n <#--总记录数、总页数-->\r\n (SELECT ${pageTag.total}) as total,\r\n <#--记录总数-->\r\n (SELECT ${pageTag.size}) as rcount,\r\n <#--当前页码-->\r\n (SELECT ${pageTag.pageNo}) as cur,\r\n <#--首页-->\r\n CONCAT(\"${path}\", \"/index.html\") as `index`,\r\n <#--上一页-->\r\n <#if (pageTag.pageNo?eval-1) gt 1>\r\n CONCAT(\"${path}\",\"/list-${pageTag.pageNo?eval-1}.html\") as pre,\r\n <#else>\r\n CONCAT(\"${path}\",\"/index.html\") as pre,\r\n </#if>\r\n <#--下一页-->\r\n <#if pageTag.total==1>\r\n CONCAT(\"${path}\", \"/index.html\") as `next`,\r\n CONCAT(\"${path}\", \"/index.html\") as `last`\r\n <#else>\r\n <#if pageTag.pageNo?eval gte pageTag.total>\r\n CONCAT(\"${path}\",\"/list-${pageTag.total}.html\") as next,\r\n <#else>\r\n CONCAT(\"${path}\",\"/list-${pageTag.pageNo?eval+1}.html\") as next,\r\n </#if>\r\n <#--最后一页-->\r\n CONCAT(\"${path}\",\"/list-${pageTag.total}.html\") as last\r\n </#if>\r\n<#else><#--判断是否是搜索页面-->\r\n \"${pageTag.indexUrl}\" as `index`,\"${pageTag.lastUrl}\" as `last`,\"${pageTag.preUrl}\" as `pre`,\"${pageTag.nextUrl}\" as `next`,\'${pageTag.total}\' as total,\'${pageTag.size}\' as rcount,\'${pageTag.pageNo}\' as cur\r\n</#if>', NULL);
INSERT INTO `mdiy_tag_sql` VALUES (11, 10, '<#assign select=\"(SELECT \'\')\"/>\r\n<#if (pageTag.nextId)gt 0>\r\nSELECT \r\nbasic_id as id,\r\nleft(basic_title,${titlelen?default(40)}) as title,\r\nbasic_title as fulltitle,\r\narticle_author as author, \r\narticle_source as source, \r\narticle_content as content,\r\ncategory.category_title as typename,\r\ncategory.category_id as typeid,\r\n(SELECT \"index.html\") as typelink,\r\nbasic.basic_thumbnails as litpic,\r\ncms_article.article_url as link,\r\nbasic_datetime as date,\r\nbasic_description as descrip,\r\nbasic_hit as hit,\r\narticle_type as flag,\r\ncms_article.article_keyword as keyword \r\nFROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id \r\nLEFT JOIN category ON basic_categoryid=category.category_id \r\nLEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid \r\nWHERE basic_id=${pageTag.nextId}\r\n<#else>\r\nSELECT \r\n${select} as id,\r\n${select} as title,\r\n${select} as fulltitle,\r\n${select} as author, \r\n${select} as source, \r\n${select} as content,\r\n${select} as typename,\r\n${select} as typeid,\r\n${select} as typelink,\r\n${select} as litpic,\r\n${select} as link,\r\n${select} as date,\r\n${select} as descrip,\r\n${select} as hit,\r\n${select} as flag,\r\n${select} as keyword FROM basic\r\n</#if>', NULL);
INSERT INTO `mdiy_tag_sql` VALUES (13, 12, 'SELECT\r\n basic_id AS id,\r\n product_price as price,\r\n product_cost_price AS costprice,\r\n product_content AS content,\r\n product_code AS code,\r\n <#--详情页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/${modelName}/view.do?id=\", basic_id) as link,\r\n <#else>\r\n product_linkUrl AS link,\r\n </#if>\r\n basic_title AS title,\r\n product_sale AS sale,\r\n product_good AS specification,\r\n product_inventory AS stock,\r\n basic.basic_categoryid AS typeid,\r\n basic_thumbnails AS litpic,\r\n <#--列表页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/mmall/list.do?typeid=\", category.category_id) as typelink,\r\n <#else>\r\n (SELECT \"index.html\") AS typelink,\r\n </#if>\r\n <#--判断是否有自定义模型表-->\r\n <#if tableNname??>${tableNname}.*,</#if>\r\n category_title AS typetitle\r\nFROM\r\n mall_product \r\n LEFT JOIN basic ON mall_product.product_basicID = basic.basic_id\r\n LEFT JOIN category ON basic_categoryid = category.category_id\r\n <#--判断是否有自定义模型表-->\r\n <#if tableNname??>LEFT JOIN ${tableNname} ON ${tableNname}.basicId=mall_product.product_basicID </#if>\r\nWHERE\r\n 1 = 1 <#--查询栏目-->\r\n <#if (typeid)??> and (basic_categoryid=${typeid} or basic_categoryid in \r\n (select category_id FROM category where find_in_set(${typeid},CATEGORY_PARENT_ID)))\r\n </#if>\r\n <#--模糊查询商品标题-->\r\n <#if basic_title??> and basic_title like CONCAT(\"%\",\'${basic_title}\',\"%\")</#if> \r\n LIMIT <#--判断是否分页-->\r\n <#if ispaging?? && pageNo??>${(pageNo?eval-1)*size?eval},${size?default(20)}\r\n <#else>${size?default(20)}</#if>', NULL);
INSERT INTO `mdiy_tag_sql` VALUES (14, 13, 'SELECT\r\n basic_id AS id,\r\n product_price as price,\r\n product_cost_price AS costprice,\r\n product_content AS content,\r\n product_code AS code,\r\n <#--详情页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/${modelName}/view.do?id=\", basic_id) as link,\r\n <#else>\r\n product_linkUrl AS link,\r\n </#if>\r\n basic_title AS title,\r\n product_sale AS sale,\r\n product_good AS specification,\r\n product_inventory AS stock,\r\n basic.basic_categoryid AS typeid,\r\n basic_thumbnails AS litpic,\r\n <#--列表页动态链接-->\r\n <#if isDo?? && isDo>\r\n CONCAT(\"/mmall/list.do?id=\", category.category_id) as typelink,\r\n <#else>\r\n (SELECT \"index.html\") AS typelink,\r\n </#if>\r\n <#--判断是否有自定义模型表-->\r\n <#if tableNname??>${tableNname}.*,</#if>\r\n category_title AS typetitle\r\nFROM\r\n mall_product \r\n LEFT JOIN basic ON mall_product.product_basicID = basic.basic_id\r\n LEFT JOIN category ON basic_categoryid = category.category_id\r\n LEFT JOIN basic_column ON basic_column.column_category_id = basic.basic_categoryid\r\n <#--判断是否有自定义模型表-->\r\n <#if tableNname??>LEFT JOIN ${tableNname} ON ${tableNname}.basicId=mall_product.product_basicID </#if>\r\nWHERE\r\n 1 = 1 <#if id??> and basic_id=${id} </#if>', NULL);
INSERT INTO `model` VALUES ('155', '自定义标签', '20060000', '104', 'mdiy/tag/index.do', '2017-09-04 11:18:51', '', '0', '0', '1', '104','');
INSERT INTO `model` VALUES ('156', '新增', '20060001', '155', 'mdiy:tag:save', '2017-09-04 14:28:41', '', '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('157', '查看', '20060002', '155', 'mdiy:tag:view', '2018-06-20 17:53:51', '', '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('158', '修改', '20060003', '155', 'mdiy:tag:update', '2018-06-20 17:54:43', null, '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('159', '删除', '20060004', '155', 'mdiy:tag:del', '2018-06-20 17:55:26', null, '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('160', '新增SQL', '20060005', '155', 'mdiy:tagSql:save', '2017-09-04 14:28:41', '', '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('161', '查看SQL', '20060006', '155', 'mdiy:tagSql:view', '2018-06-20 17:53:51', '', '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('162', '修改SQL', '20060007', '155', 'mdiy:tagSql:update', '2018-06-20 17:54:43', null, '0', '0', '0', '104,155','');
INSERT INTO `model` VALUES ('163', '删除SQL', '20060008', '155', 'mdiy:tagSql:del', '2018-06-20 17:55:26', null, '0', '0', '0', '104,155','');
INSERT INTO `role_model` VALUES ('155', '48');
INSERT INTO `role_model` VALUES ('156', '48');
INSERT INTO `role_model` VALUES ('157', '48');
INSERT INTO `role_model` VALUES ('158', '48');
INSERT INTO `role_model` VALUES ('159', '48');
INSERT INTO `role_model` VALUES ('160', '48');
INSERT INTO `role_model` VALUES ('161', '48');
INSERT INTO `role_model` VALUES ('162', '48');
INSERT INTO `role_model` VALUES ('163', '48');
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',
'TABLE', N'model',
'COLUMN', N'is_child';
ALTER TABLE [dbo].[mdiy_dict] ADD [is_child] varchar(255) NULL
GO
EXEC sp_addextendedproperty
'MS_Description', N'扩展业务标记',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_dict',
'COLUMN', N'is_child';
ALTER TABLE [dbo].[role] ALTER COLUMN [app_id] int NULL;
-- ----------------------------
-- Records of [model]
-- ----------------------------
SET IDENTITY_INSERT [dbo].[model] ON
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'153', N'自定义标签', N'20060000', N'104', N'mdiy/tag/index.do', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'1', N'104', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'154', N'新增', N'20060001', N'153', N'mdiy:tag:save', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'155', N'查看', N'20060002', N'153', N'mdiy:tag:view', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'156', N'修改', N'20060003', N'153', N'mdiy:tag:update', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'157', N'删除', N'20060004', N'153', N'mdiy:tag:del', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'158', N'新增SQL', N'20060005', N'153', N'mdiy:tagSql:save', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'159', N'查看SQL', N'20060006', N'153', N'mdiy:tagSql:view', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'160', N'修改SQL', N'20060007', N'153', N'mdiy:tagSql:update', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
INSERT INTO [dbo].[model] ([model_id], [model_title], [model_code], [model_modelid], [model_url], [model_datetime], [model_icon], [model_modelmanagerid], [model_sort], [model_ismenu], [model_parent_ids], [is_child]) VALUES (N'161', N'删除SQL', N'20060008', N'153', N'mdiy:tagSql:del', N'2019-02-19 11:34:02.0000000', NULL, N'0', N'0', N'0', N'104,153', NULL)
GO
SET IDENTITY_INSERT [dbo].[model] OFF
GO
-- ----------------------------
-- Table structure for file
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[file]') AND type IN ('U'))
DROP TABLE [dbo].[file]
GO
CREATE TABLE [dbo].[file] (
[id] int NOT NULL,
[category_id] int NULL,
[app_id] int NULL,
[file_name] nvarchar(200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[file_url] nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[file_size] int NULL,
[file_json] nvarchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[file_type] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[is_child] nvarchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[update_date] datetime2(7) NULL,
[update_by] int NULL,
[create_by] int NULL,
[create_date] datetime2(7) NULL,
[del] int NULL
)
GO
ALTER TABLE [dbo].[file] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件编号',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件分类编号',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'category_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'APP编号',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'app_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件名称',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'file_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件链接',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'file_url'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件大小',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'file_size'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件详情Json数据',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'file_json'
GO
EXEC sp_addextendedproperty
'MS_Description', N'文件类型:图片、音频、视频等',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'file_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'子业务',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'is_child'
GO
EXEC sp_addextendedproperty
'MS_Description', N'更新时间',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'update_date'
GO
EXEC sp_addextendedproperty
'MS_Description', N'更新者',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'update_by'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建者',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'create_by'
GO
EXEC sp_addextendedproperty
'MS_Description', N'创建时间',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'create_date'
GO
EXEC sp_addextendedproperty
'MS_Description', N'删除标记',
'SCHEMA', N'dbo',
'TABLE', N'file',
'COLUMN', N'del'
GO
EXEC sp_addextendedproperty
'MS_Description', N'基础文件表',
'SCHEMA', N'dbo',
'TABLE', N'file'
GO
-- ----------------------------
-- Primary Key structure for table file
-- ----------------------------
ALTER TABLE [dbo].[file] ADD CONSTRAINT [PK__file__3213E83FB0167B55] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO
-- ----------------------------
-- Table structure for mdiy_tag
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[mdiy_tag]') AND type IN ('U'))
DROP TABLE [dbo].[mdiy_tag]
GO
CREATE TABLE [dbo].[mdiy_tag] (
[id] int NOT NULL,
[tag_name] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[tag_type] int NULL,
[tag_description] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
)
GO
ALTER TABLE [dbo].[mdiy_tag] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty
'MS_Description', N'标签名称',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag',
'COLUMN', N'tag_name'
GO
EXEC sp_addextendedproperty
'MS_Description', N'标签类型',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag',
'COLUMN', N'tag_type'
GO
EXEC sp_addextendedproperty
'MS_Description', N'描述',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag',
'COLUMN', N'tag_description'
GO
EXEC sp_addextendedproperty
'MS_Description', N'标签',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag'
GO
-- ----------------------------
-- Records of [mdiy_tag]
-- ----------------------------
INSERT INTO [dbo].[mdiy_tag] VALUES (N'3', N'arclist', N'3', N'文章列表')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'4', N'channel', N'3', N'通用栏目')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'5', N'global', N'2', N'全局')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'7', N'field', N'3', N'文章内容')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'8', N'pre', N'0', N'文章上一篇')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'9', N'page', N'2', N'通用分页')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'10', N'next', N'0', N'文章下一篇')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'12', N'prclist', N'3', N'商品列表')
GO
INSERT INTO [dbo].[mdiy_tag] VALUES (N'13', N'goods', N'3', N'商品详情')
GO
-- ----------------------------
-- Primary Key structure for table mdiy_tag
-- ----------------------------
ALTER TABLE [dbo].[mdiy_tag] ADD CONSTRAINT [PK__mdiy_tag__3213E83FB83AEC2F] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO
-- ----------------------------
-- Table structure for mdiy_tag_sql
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[mdiy_tag_sql]') AND type IN ('U'))
DROP TABLE [dbo].[mdiy_tag_sql]
GO
CREATE TABLE [dbo].[mdiy_tag_sql] (
[id] int NOT NULL,
[tag_id] int NOT NULL,
[tag_sql] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[sort] int NULL
)
GO
ALTER TABLE [dbo].[mdiy_tag_sql] SET (LOCK_ESCALATION = TABLE)
GO
EXEC sp_addextendedproperty
'MS_Description', N'自定义标签编号',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag_sql',
'COLUMN', N'tag_id'
GO
EXEC sp_addextendedproperty
'MS_Description', N'自定义sql支持ftl写法',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag_sql',
'COLUMN', N'tag_sql'
GO
EXEC sp_addextendedproperty
'MS_Description', N'排序升序',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag_sql',
'COLUMN', N'sort'
GO
EXEC sp_addextendedproperty
'MS_Description', N'标签对应多个sql语句',
'SCHEMA', N'dbo',
'TABLE', N'mdiy_tag_sql'
GO
-- ----------------------------
-- Records of mdiy_tag_sql
-- ----------------------------
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'5', N'3', N'select
basic_id AS id,
LEFT (basic_title, ${titlelen ?default(40)}) AS title,
basic_title AS fulltitle,
article_author AS author,
article_source AS source,
article_content AS content,
category.category_title AS typename,
category.category_id AS typeid,
<#--列表页动态链接-->
<#if isDo?? && isDo>
''/${modelName}/list.do?typeid=''+convert(varchar(50),category.category_id) as typelink,
<#else>
(SELECT ''index.html'') AS typelink,
</#if>
basic.basic_thumbnails AS litpic,
<#--内容页动态链接-->
<#if isDo?? && isDo>
+''/mcms/view.do?id=''+convert(varchar(50),basic_id) as link,
<#else>
cms_article.article_url AS link,
</#if>
basic_datetime AS date,<#if tableNname??>${tableNname}.*,</#if>
basic_description AS descrip,
basic_hit AS hit,
article_type AS flag,
category_title AS typetitle,
cms_article.article_keyword AS keyword
<#if ispaging?? && pageNo??> <#--分页-->
from
( SELECT ROW_NUMBER ( ) OVER ( ORDER BY dbo.basic.basic_id DESC ) AS rownum, * FROM basic ) AS basic
<#else>
from basic
</#if>
LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id
LEFT JOIN category ON basic_categoryid = category.category_id
LEFT JOIN basic_column ON basic_column.column_category_id = basic.basic_categoryid
<#--判断是否有自定义模型表-->
<#if tableNname??>LEFT JOIN ${tableNname} ON ${tableNname}.basicId=cms_article.article_basicid </#if>
where
1 = 1 <#if typeid??> and (basic_categoryid=${typeid} or basic_categoryid in
(select category_id FROM category where category.del=0 and CHARINDEX('',''+''${typeid}''+'','' , '',''+CATEGORY_PARENT_ID +'','')>0))</#if>
<#--标题-->
<#if basic_title??> and basic_title like ''%''+''${basic_title}''+''%'')</#if>
<#--作者-->
<#if article_author??> and article_author like ''%''+''${article_author}''+''%'')</#if>
<#--来源-->
<#if article_source??> and article_source like ''%''+''${article_source}''+''%'')</#if>
<#--属性-->
<#if article_type??> and article_type like ''%''+''${article_type}''+''%'')</#if>
<#--图片-->
<#if basic_thumbnails??> and basic_thumbnails like ''%''+''${basic_thumbnails}''+''%'')</#if>
<#--描述-->
<#if basic_description??> and basic_description like ''%''+''${basic_description}''+''%'')</#if>
<#--关键字-->
<#if article_keyword??> and article_keyword like ''%''+''${article_keyword}''+''%'')</#if>
<#--内容-->
<#if article_content??> and article_content like ''%''+''${article_content}''+''%'')</#if>
<#--自定义顺序-->
<#if article_freeorder??> and article_freeorder=${article_freeorder}</#if>
<#if ispaging?? && pageNo??><#--分页-->
and basic.rownum BETWEEN ${(pageNo?eval-1)*size?eval} AND ${size?default(20)}
</#if>', N'1')
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'6', N'4', N'select category_id as id,category_id as typeid,category_title as typetitle,
<#--动态链接-->
<#if isDo?? && isDo>
''/${modelName}/list.do?typeid=''+convert(varchar(50),category_id) as typelink,
<#else>
column_path+''/index.html'' as typelink,
</#if>column_keyword as typekeyword,column_descrip as typedescrip,category_smallimg as typelitpic from category
LEFT JOIN basic_column bc on bc.column_category_id=category.category_id where
<#if type?has_content>
<#--顶级栏目-->
<#if type==''top''>
<#if typeid??>
category_categoryid=(select category_categoryid from category where category_id=(select category_categoryid from category where category_id=${typeid}))
<#else>
category_categoryid=0
</#if>
<#--同级栏目-->
<#elseif type==''level''>
<#if typeid??>
category_categoryid=(select category_categoryid from category where category_id=${typeid})
<#else>
1=1
</#if>
<#--当前栏目-->
<#elseif type==''self''>
<#if typeid??>
category_id=${typeid}
<#else>
1=1
</#if>
<#--子栏目-->
<#elseif type==''son''>
<#if typeid??>
category_categoryid=${typeid}
<#else>
1=1
</#if>
</#if>
<#else> <#--默认son-->
<#if typeid??>
category_categoryid=${typeid}
<#else>
category_categoryid=0
</#if>
</#if>', N'1')
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'7', N'5', N'select
APP_NAME as name,
app_logo as logo,
app_keyword as keyword,
app_description as descrip,
app_copyright as copyright,
<#--动态解析 -->
<#if isDo?? && isDo>
''${url}'' as url,
''${url}'' as host,
<#--使用地址栏的域名 -->
<#elseif url??>
''${url}/${html}/''+app_id+''/<#if m??>${m}</#if>'' as url,
''${url}'' as host,
<#else>
REPLACE(<#-- 剔除换行符 -->
substring( app_url, 0, CHARINDEX ( CHAR ( 10 ), app_url ) ),CHAR ( 13 ),'''')+''/${html}/''+convert(varchar(50),app_id)+''/<#if m??>${m}</#if>'' as url,
REPLACE(<#-- 剔除换行符 -->
substring( app_url, 0, CHARINDEX ( CHAR ( 10 ), app_url ) ),CHAR ( 13 ),'''') as host,
</#if>
''templets/''+convert(varchar(50),app_id)+''/''<#if m??>+app_style+''/${m}''<#else>+app_style</#if> as style <#-- 判断是否为手机端 -->
from app', N'1')
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'8', N'7', N'SELECT
basic_id as id,
left(basic_title,${titlelen?default(40)}) as title,
basic_title as fulltitle,
article_author as author,
article_source as source,
article_content as content,
category.category_title as typename,
category.category_id as typeid,
<#--动态链接-->
<#if isDo?? && isDo>
''/${modelName}/list.do?typeid=''+convert(varchar(50),category.category_id) as typelink,
<#else>
(SELECT ''index.html'') as typelink,
</#if>
basic.basic_thumbnails as litpic,
<#--内容页动态链接-->
<#if isDo?? && isDo>
''/mcms/view.do?id=''+convert(varchar(50),basic_id) as link,
<#else>
cms_article.article_url AS link,
</#if>
basic_datetime as date,
basic_description as descrip,
basic_hit as hit,
article_type as flag,
category_title as typetitle,
<#if tableName??>${tableName}.*,</#if>
cms_article.article_keyword as keyword
FROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id
LEFT JOIN category ON basic_categoryid=category.category_id
LEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid
<#--判断是否有自定义模型表-->
<#if tableName??>left join ${tableName} on ${tableName}.basicId=cms_article.ARTICLE_BASICID</#if>
WHERE
1=1
<#if id??> and basic_id=${id}</#if>', N'1')
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'9', N'8', N'<#assign select="(SELECT '''')"/>
<#if preId??>
SELECT
basic_id as id,
left(basic_title,${titlelen?default(40)}) as title,
basic_title as fulltitle,
article_author as author,
article_source as source,
article_content as content,
category.category_title as typename,
category.category_id as typeid,
(SELECT ''index.html'') AS typelink,
basic.basic_thumbnails as litpic,
cms_article.article_url as link,
basic_datetime as date,
basic_description as descrip,
basic_hit as hit,
article_type as flag,
cms_article.article_keyword as keyword
FROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id
LEFT JOIN category ON basic_categoryid=category.category_id
LEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid
WHERE basic_id=${preId}
<#else><#--没有上一页返回空字符串-->
SELECT
${select} as id,
${select} as title,
${select} as fulltitle,
${select} as author,
${select} as source,
${select} as content,
${select} as typename,
${select} as typeid,
${select} as typelink,
${select} as litpic,
${select} as link,
${select} as date,
${select} as descrip,
${select} as hit,
${select} as flag,
${select} as keyword FROM basic
</#if>', NULL)
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'10', N'9', N' select
<#--判断是否有栏目对象,用于搜索不传栏目-->
<#if column??>
<#--顶级栏目处理-->
<#if column.categoryCategoryId==0>
<#assign path=column.columnPath/>
<#else>
<#assign path=column.columnPath/>
</#if>
<#else>
<#assign path=''''/>
</#if>
<#--总记录数、总页数-->
(SELECT ${total}) as total,
<#--记录总数-->
(SELECT ${rcount}) as rcount,
<#--当前页码-->
(SELECT ${pageNo}) as cur,
<#--首页-->
''${path}''+''/index.html'' as [index],
<#--上一页-->
<#if (pageNo?eval-1) gt 1>
''${path}''+''/list-${pageNo?eval-1}.html'' as pre,
<#else>
''${path}''+''/index.html'' as pre,
</#if>
<#--下一页-->
<#if total==1>
''${path}''+''/index.html'' as [next],
''${path}''+''/index.html'' as [last]
<#else>
<#if pageNo?eval gte total>
''${path}''+''/list-${total}.html'' as next,
<#else>
''${path}''+''/list-${pageNo?eval+1}.html'' as [next],
</#if>
<#--最后一页-->
''${path}''+''/list-${total}.html'' as [last]
</#if>', NULL)
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'11', N'10', N'<#assign select="(SELECT '''')"/>
<#if nextId??>
SELECT
basic_id as id,
left(basic_title,${titlelen?default(40)}) as title,
basic_title as fulltitle,
article_author as author,
article_source as source,
article_content as content,
category.category_title as typename,
category.category_id as typeid,
(SELECT ''index.html'') as typelink,
basic.basic_thumbnails as litpic,
cms_article.article_url as link,
basic_datetime as date,
basic_description as descrip,
basic_hit as hit,
article_type as flag,
cms_article.article_keyword as keyword
FROM basic LEFT JOIN cms_article ON cms_article.article_basicid = basic.basic_id
LEFT JOIN category ON basic_categoryid=category.category_id
LEFT JOIN basic_column ON basic_column.column_category_id=basic.basic_categoryid
WHERE basic_id=${nextId}
<#else>
SELECT
${select} as id,
${select} as title,
${select} as fulltitle,
${select} as author,
${select} as source,
${select} as content,
${select} as typename,
${select} as typeid,
${select} as typelink,
${select} as litpic,
${select} as link,
${select} as date,
${select} as descrip,
${select} as hit,
${select} as flag,
${select} as keyword FROM basic
</#if>', NULL)
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'13', N'12', N'SELECT
basic_id AS id,
product_price as price,
product_cost_price AS costprice,
product_content AS content,
product_code AS code,
<#--详情页动态链接-->
<#if isDo?? && isDo>
''/${modelName}/view.do?id=''+convert(varchar(50),basic_id) as link,
<#else>
product_linkUrl AS link,
</#if>
basic_title AS title,
product_sale AS sale,
product_good AS specification,
product_inventory AS stock,
basic.basic_categoryid AS typeid,
basic_thumbnails AS litpic,
<#--列表页动态链接-->
<#if isDo?? && isDo>
''/mmall/list.do?typeid=''+convert(varchar(50),category.category_id) as typelink,
<#else>
(SELECT ''index.html'') AS typelink,
</#if>
<#--判断是否有自定义模型表-->
<#if tableNname??>${tableNname}.*,</#if>
category_title AS typetitle
FROM
mall_product
LEFT JOIN basic ON mall_product.product_basicID = basic.basic_id
LEFT JOIN category ON basic_categoryid = category.category_id
<#--判断是否有自定义模型表-->
<#if tableNname??>LEFT JOIN ${tableNname} ON ${tableNname}.basicId=mall_product.product_basicID </#if>
WHERE
1 = 1 <#--查询栏目-->
<#if (typeid)??> and (basic_categoryid=${typeid} or basic_categoryid in
(select category_id FROM category where CHARINDEX('',''+''${categoryId}''+'','' , '',''+CATEGORY_PARENT_ID +'','')>0))
</#if>
<#--模糊查询商品标题-->
<#if basic_title??> and basic_title like ''%''+''${basic_title}''+''%''</#if>
LIMIT <#--判断是否分页-->
<#if ispaging?? && pageNo??>${(pageNo?eval-1)*size?eval},${size?default(20)}
<#else>${size?default(20)}</#if>', NULL)
GO
INSERT INTO [dbo].[mdiy_tag_sql] VALUES (N'14', N'13', N'SELECT
basic_id AS id,
product_price as price,
product_cost_price AS costprice,
product_content AS content,
product_code AS code,
<#--详情页动态链接-->
<#if isDo?? && isDo>
CONCAT("/${modelName}/view.do?id=", basic_id) as link,
<#else>
product_linkUrl AS link,
</#if>
basic_title AS title,
product_sale AS sale,
product_good AS specification,
product_inventory AS stock,
basic.basic_categoryid AS typeid,
basic_thumbnails AS litpic,
<#--列表页动态链接-->
<#if isDo?? && isDo>
CONCAT("/mmall/list.do?id=", category.category_id) as typelink,
<#else>
(SELECT "index.html") AS typelink,
</#if>
<#--判断是否有自定义模型表-->
<#if tableNname??>${tableNname}.*,</#if>
category_title AS typetitle
FROM
mall_product
LEFT JOIN basic ON mall_product.product_basicID = basic.basic_id
LEFT JOIN category ON basic_categoryid = category.category_id
LEFT JOIN basic_column ON basic_column.column_category_id = basic.basic_categoryid
<#--判断是否有自定义模型表-->
<#if tableNname??>LEFT JOIN ${tableNname} ON ${tableNname}.basicId=mall_product.product_basicID </#if>
WHERE
1 = 1 <#if id??> and basic_id=${id} </#if>', NULL)
GO
-- ----------------------------
-- Indexes structure for table mdiy_tag_sql
-- ----------------------------
CREATE NONCLUSTERED INDEX [fk_mdiy_tag_id]
ON [dbo].[mdiy_tag_sql] (
[tag_id] ASC
)
GO
-- ----------------------------
-- Primary Key structure for table mdiy_tag_sql
-- ----------------------------
ALTER TABLE [dbo].[mdiy_tag_sql] ADD CONSTRAINT [PK__mdiy_tag__3213E83F3CD78087] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF)
ON [PRIMARY]
GO
-- ----------------------------
-- Foreign Keys structure for table mdiy_tag_sql
-- ----------------------------
ALTER TABLE [dbo].[mdiy_tag_sql] ADD CONSTRAINT [mdiy_tag_sql_ibfk_1] FOREIGN KEY ([tag_id]) REFERENCES [mdiy_tag] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION
GO
-- ----------------------------
-- Records of role_model
-- ----------------------------
INSERT INTO [role_model] VALUES (N'153', N'48')
GO
INSERT INTO [role_model] VALUES (N'154', N'48')
GO
INSERT INTO [role_model] VALUES (N'155', N'48')
GO
INSERT INTO [role_model] VALUES (N'156', N'48')
GO
INSERT INTO [role_model] VALUES (N'157', N'48')
GO
INSERT INTO [role_model] VALUES (N'158', N'48')
GO
INSERT INTO [role_model] VALUES (N'159', N'48')
GO
INSERT INTO [role_model] VALUES (N'160', N'48')
GO
INSERT INTO [role_model] VALUES (N'161', N'48')
GO
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.mingsoft</groupId>
<artifactId>mcms</artifactId>
<version>4.7.2</version>
<version>5.0.0-SNAPSHOT</version>
<name>ms-mcms</name>
<properties>
<java.version>1.8</java.version>
......@@ -35,22 +35,12 @@
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-basic</artifactId>
<version>1.0.16</version>
</dependency>
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-mpeople</artifactId>
<version>1.0.11</version>
</dependency>
<!-- 此部分是铭飞平台MStroe的客户端(MStore不在铭飞开源产品范围),如果不需要使用MStore可以删除掉 -->
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-upgrader</artifactId>
<version>1.0.13</version>
<version>1.0.13-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<finalName>ms-mcms</finalName>
......@@ -78,27 +68,10 @@
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<!-- 打包时候需需要启用,注意避免快照依赖的冗余jar包 -->
<!-- outputFileNameMapping>@{artifactId}@- @{baseVersion}@. @{extension}@</outputFileNameMapping -->
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<!-- 注释部分打包过滤,如果springboot项目 maven-jar-plugin插件排除无效 -->
<!-- <filtering>true</filtering> -->
<directory>src/main/webapp</directory>
<!-- <excludes>
<exclude>static/**</exclude>
<exclude>html/**</exclude>
<exclude>upload/**</exclude>
<exclude>templets/**</exclude>
</excludes> -->
</resource>
<resource>
<directory>src/main/resources</directory>
......
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action;
import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSONArray;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.base.filter.DoubleValueFilter;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.ArrysUtil;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.FileUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.constant.ModelCode;
import net.mingsoft.cms.constant.e.ColumnTypeEnum;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import net.mingsoft.mdiy.entity.ContentModelFieldEntity;
import net.mingsoft.mdiy.util.DictUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
* @ClassName: ArticleAction
* @Description:TODO 文章管理
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:51:39
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Controller
@RequestMapping("/${ms.manager.path}/cms/article")
public class ArticleAction extends BaseAction {
/**
* 上传路径
*/
@Value("${ms.upload.path}")
private String uploadFloderPath;
/**
* 业务层的注入
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 文章管理业务处理层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 字段管理业务层
*/
@Autowired
private IContentModelFieldBiz fieldBiz;
/**
* 内容管理业务层
*/
@Autowired
private IContentModelBiz contentBiz;
/**
* 判断是否为checkbox类型
*/
private static final int checkBox = 11;
/**
* 加载页面显示所有文章信息
*
* @param request
* @return 返回文章页面显示地址
*/
@SuppressWarnings("static-access")
@RequestMapping("/index")
public String index(HttpServletRequest request, ModelMap mode, HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
request.setAttribute("listColumn", JSONArray.toJSONString(list));
// 返回路径
return "/cms/article/index"; // 这里表示显示/manager/cms/article/article_list.ftl
}
/**
* 返回一个文章列表框架和一些基础数据
* @param article
* @param request
* @param mode
* @param response
* @param categoryId
* @return 返回一个文章列表界面
*/
@RequestMapping("/{categoryId}/main")
public String main(@ModelAttribute ArticleEntity article, HttpServletRequest request, ModelMap mode,
HttpServletResponse response, @PathVariable int categoryId) {
String articleType = request.getParameter("articleType");
String isParent = BasicUtil.getString("isParent", "false");
mode.addAttribute("isParent", isParent);
//使用糊涂工具排序使全部属性排在第一个
mode.addAttribute("articleTypeList", DictUtil.list("文章属性"));
mode.addAttribute("articleType", articleType);
mode.addAttribute("categoryId", categoryId);
//返回文章页面显示地址
return "/cms/article/article_main";
}
/**
* 加载页面显示所有文章信息
*
* @param request
* @return 返回文章页面显示数据
*/
@RequestMapping("/{categoryId}/list")
public void list(@ModelAttribute ArticleEntity article, HttpServletRequest request, ModelMap mode,
HttpServletResponse response, @PathVariable int categoryId) {
int[] basicCategoryIds = null;
String articleType = article.getArticleType();
if(StringUtils.isEmpty(articleType)){
articleType = BasicUtil.getString("articleTypeStr");
}
if(!StringUtils.isEmpty(articleType) && articleType.equals("a")){
articleType = null;
}
if(categoryId > 0){
basicCategoryIds = columnBiz.queryChildrenCategoryIds(categoryId, BasicUtil.getAppId(),
BasicUtil.getModelCodeId(ModelCode.CMS_COLUMN));
}
int appId = BasicUtil.getAppId();
BasicUtil.startPage();
article.setBasicDisplay(-1);
//查询文章列表
List<ArticleEntity> articleList = articleBiz.query(appId, basicCategoryIds, articleType, null, null, true, null, null, article);
EUListBean _list = new EUListBean(articleList, (int) BasicUtil.endPage(articleList).getTotal());
//将数据以json数据的形式返回
this.outJson(response, net.mingsoft.base.util.JSONArray.toJSONString(_list, new DoubleValueFilter(),new DateValueFilter("yyyy-MM-dd")));
}
/**
* 添加文章页面
*
* @return 保存文章的页面地址
*/
@SuppressWarnings("static-access")
@RequestMapping("/add")
public String add(ModelMap mode, HttpServletRequest request) {
int categoryId = BasicUtil.getInt("categoryId", 0);
String categoryTitle = request.getParameter("categoryTitle");
// 文章属性
mode.addAttribute("articleType", DictUtil.list("文章属性"));
// 站点ID
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
mode.addAttribute("appId", appId);
mode.addAttribute("listColumn", JSONArray.toJSONString(list));
boolean isEditCategory = false; // 新增,不是单篇
int columnType=1;//新增,不是单篇
if(categoryId != 0){
// 获取栏目id
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(categoryId);
columnType = column.getColumnType();
// 判断栏目是否为"",如果是"",就重新赋值
if (StringUtils.isBlank(categoryTitle)) {
categoryTitle = column.getCategoryTitle();
}
// 判断栏目是否是单篇
if (column != null && column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
isEditCategory = true; // 是单页
columnType = column.getColumnType();;
}
}
mode.addAttribute("categoryTitle", categoryTitle);
mode.addAttribute("isEditCategory", isEditCategory); // 新增状态
mode.addAttribute("columnType", columnType);
mode.addAttribute("categoryId", categoryId);
mode.addAttribute("articleImagesUrl", uploadFloderPath+net.mingsoft.base.constant.Const.SEPARATOR
+BasicUtil.getAppId()+net.mingsoft.base.constant.Const.SEPARATOR);
// 添加一个空的article实体
ArticleEntity article = new ArticleEntity();
mode.addAttribute("article", article);
mode.addAttribute("action", "save");
// 返回路径
return "/cms/article/article_form"; // 这里表示显示/manager/cms/article/article_save.ftl
}
/**
* 获取表单信息进行保存
*
* @param article
* 文章对象
*/
@RequestMapping("/save")
@RequiresPermissions("article:save")
public void save(@ModelAttribute ArticleEntity article, HttpServletRequest request, HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
// 验证文章,文章自由排序,栏目id
if (!validateForm(article, response)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false);
}
article.setBasicUpdateTime(new Timestamp(System.currentTimeMillis()));
// 文章类型
String langtyp[] = request.getParameterValues("articleType");
if (langtyp != null) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < langtyp.length; j++) {
sb.append(langtyp[j] + ",");
}
}
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
// 文章类型排序
article.setArticleType(ArrysUtil.sort(checkboxType, ",")+",");
}else{
article.setArticleType(checkboxType);
}
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
article.setColumn(column);
// 添加文章所属的站点id
article.setArticleWebId(appId);
// 绑定模块编号
article.setBasicModelId(BasicUtil.getInt("modelId"));
// 保存文章实体
articleBiz.saveBasic(article);
if (column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_LIST.toInt()) {// 列表
article.setArticleUrl(column.getColumnPath() + File.separator + article.getBasicId() + ParserUtil.HTML_SUFFIX);
} else if (column.getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {// 单篇
article.setArticleUrl(column.getColumnPath() + File.separator + ParserUtil.INDEX+ParserUtil.HTML_SUFFIX);
}
articleBiz.updateBasic(article);
// 判断栏目是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
// 获取内容模型实体
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (contentModel != null) {
// 保存新增字段的信息
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
fieldBiz.insertBySQL(contentModel.getCmTableName(), param);
}
}
//
if (article.getColumn().getColumnType() == ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
this.outJson(response, ModelCode.CMS_ARTICLE, true, "" + article.getColumn().getCategoryId(), article.getBasicId());
} else {
this.outJson(response, ModelCode.CMS_ARTICLE, true, article.getColumn().getCategoryId()+"", "");
}
}
/**
* 验证表单
*
* @param article
* @param response
* @return 返回Boolean类型 true:通过,false:有错
*/
public boolean validateForm(ArticleEntity article, HttpServletResponse response) {
// 对表单数据进行再次验证
// 验证文章标题是否为空
if (StringUtils.isBlank(article.getBasicTitle())) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.empty", this.getResString("basicTitle")));
return false;
}
// 验证文章所属是否为0
if (article.getBasicCategoryId() == 0) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.empty", this.getResString("basicCategoryId")));
return false;
}
// 验证文章标题长度,若超过定义长度则截取
if (!StringUtil.checkLength(article.getBasicTitle(), 1, 300)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("basicTitle"), "1", "300"));
return false;
}
// 验证文章来源长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleSource())
&& !StringUtil.checkLength(article.getArticleSource(), 1, 300)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleSource"), "1", "300"));
return false;
}
// 验证文章作者长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleAuthor())
&& !StringUtil.checkLength(article.getArticleAuthor(), 1, 12)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleAuthor"), "1", "12"));
return false;
}
// 验证文章描述长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getBasicDescription())
&& !StringUtil.checkLength(article.getBasicDescription(), 1, 400)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("basicDescription"), "1", "400"));
return false;
}
// 验证文章关键字长度,若超过定义长度则截取
if (!StringUtils.isBlank(article.getArticleKeyword())
&& !StringUtil.checkLength(article.getArticleKeyword(), 1, 155)) {
this.outJson(response, ModelCode.CMS_ARTICLE, false,
getResString("err.length", this.getResString("articleKeyword"), "1", "155"));
return false;
}
return true;
}
/**
* 更新文章
*
* @param basicId
* 文章id
* @param article
* 文章实体
* @param request
* @param response
*/
@RequestMapping("/{basicId}/update")
@RequiresPermissions("article:update")
public void update(@PathVariable int basicId, @ModelAttribute ArticleEntity article, HttpServletRequest request,
HttpServletResponse response) {
// 获取站点id
int appId = BasicUtil.getAppId();
article.setBasicUpdateTime(new Timestamp(System.currentTimeMillis()));
// 文章类型
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
// 文章类型排序
article.setArticleType(ArrysUtil.sort(checkboxType, ",")+",");
}else{
article.setArticleType(checkboxType);
}
// 获取更改前的文章实体
ArticleEntity oldArticle = (ArticleEntity) articleBiz.getEntity(basicId);
// 获取栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
if (oldArticle != null) {
// 获取更改前的文章所属栏目实体
ColumnEntity oldColumn = (ColumnEntity) columnBiz.getEntity(oldArticle.getBasicCategoryId());
// 通过表单类型id判断是否更改了表单类型,如果更改则先删除记录
if (oldColumn.getColumnContentModelId() != column.getColumnContentModelId()) {
// 获取旧的内容模型id
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(oldColumn.getColumnContentModelId());
// 删除旧的内容模型中保存的值
Map<String, Integer> wheres = new HashMap<String, Integer>();
wheres.put("basicId", article.getBasicId());
if (contentModel != null) {
fieldBiz.deleteBySQL(contentModel.getCmTableName(), wheres);
}
// 判断栏目是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
ContentModelEntity newContentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (newContentModel != null) {
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
fieldBiz.insertBySQL(newContentModel.getCmTableName(), param);
}
}
}
}
//判断是否修改了所属栏目
if(oldArticle.getBasicCategoryId()!=article.getBasicCategoryId()){
//拼接栏目路径和文章编号及文件后缀
article.setArticleUrl(column.getColumnPath() + File.separator + article.getBasicId() + ParserUtil.HTML_SUFFIX);
}
// 添加文章所属的站点id
article.setArticleWebId(appId);
// 设置文章所属的栏目实体
article.setColumn(column);
article.setBasicUpdateTime(new Date());
String articleType = request.getParameter("articleTypeJson");
articleBiz.updateBasic(article);
// 判断该文章是否存在新增字段
if (column.getColumnContentModelId() != 0) {
// 保存所有的字段信息
List<ContentModelFieldEntity> listField = fieldBiz.queryListByCmid(column.getColumnContentModelId());
// // update中的where条件
Map<String, Integer> where = new HashMap<String, Integer>();
// 压入默认的basicId字段
where.put("basicId", article.getBasicId());
// 遍历字段的信息
Map<String, Object> param = this.checkField(listField, request, article.getBasicId());
ContentModelEntity contentModel = (ContentModelEntity) contentBiz
.getEntity(column.getColumnContentModelId());
if (contentModel != null) {
// 遍历所有的字段实体,得到字段名列表信息
List<String> listFieldName = new ArrayList<String>();
listFieldName.add("basicId");
// 查询新增字段的信息
List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
// 判断新增字段表中是否存在该文章,不存在则保存,否则更新
if (fieldLists == null || fieldLists.size() == 0) {
fieldBiz.insertBySQL(contentModel.getCmTableName(), param);
} else {
fieldBiz.updateBySQL(contentModel.getCmTableName(), param, where);
}
}
}
switch (column.getColumnType()) {
case ColumnEntity.COLUMN_TYPE_COVER:
this.outJson(response, ModelCode.CMS_ARTICLE, true, column.getCategoryId() + "", "");
break;
case ColumnEntity.COLUMN_TYPE_LIST:
this.outJson(response, ModelCode.CMS_ARTICLE, true, column.getCategoryId() + "",
this.redirectBack(request, false));
}
}
/**
* 显示更新内容
*
* @param request
* @return 修改文章的页面地址
*/
@RequestMapping("/{id}/edit")
public String edit(@PathVariable int id, ModelMap model, HttpServletRequest request) {
// 如果_categoryId大于0表示是编辑封面栏目,应该先查询分类下面的唯一一篇文章
String categoryTitle = request.getParameter("categoryTitle");
// 板块id
int categoryId = BasicUtil.getInt("categoryId", 0);
ArticleEntity articleEntity = null;
int appId = BasicUtil.getAppId();
model.addAttribute("appId", appId);
model.addAttribute("articleImagesUrl", "/upload/"+BasicUtil.getAppId()+"/");
model.addAttribute("action", "update");
if (categoryId > 0) { // 分类获取文章
articleEntity = articleBiz.getByCategoryId(categoryId);
ColumnEntity column = articleEntity.getColumn();
int columnType = column.getColumnType();
model.addAttribute("article", articleEntity);
// 文章属性
model.addAttribute("articleType", DictUtil.list("文章属性"));
model.addAttribute("categoryTitle", categoryTitle);
model.addAttribute("categoryId", categoryId);// 编辑封面
model.addAttribute("isEditCategory", true);// 编辑封面
model.addAttribute("columnType", columnType);
return "/cms/article/article_form";
} else if (id > 0) { // 文章id获取
// 允许编辑文章时更改分类
List<ColumnEntity> list = columnBiz.queryAll(appId, this.getModelCodeId(request, ModelCode.CMS_COLUMN));
@SuppressWarnings("static-access")
String listJsonString = JSONArray.toJSONString(list);
request.setAttribute("listColumn", listJsonString);
// 文章属性
model.addAttribute("articleType", DictUtil.list("文章属性"));
articleEntity = (ArticleEntity) articleBiz.getEntity(id);
model.addAttribute("article", articleEntity);
// 判断是否是封面类型的栏目,如果是封面类型的栏目有些信息需要屏蔽,例如分类
ColumnEntity column = articleEntity.getColumn();
int columnType = column.getColumnType();
if (column.getColumnType() == ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()) {
model.addAttribute("categoryTitle", categoryTitle);
model.addAttribute("categoryId", column.getCategoryId());// 编辑封面
model.addAttribute("isEditCategory", true);// 编辑封面
} else {
model.addAttribute("categoryTitle", articleEntity.getColumn().getCategoryTitle());
model.addAttribute("isEditCategory", false);// 编辑文章
}
model.addAttribute("columnType", columnType);
model.addAttribute("categoryId", column.getCategoryId());// 编辑封面
model.addAttribute("websiteId", BasicUtil.getAppId());
return "/cms/article/article_form";
} else {// 非法
// return "/cms/article/article_form");
return this.redirectBack(request, true);
}
}
/**
* 删除文章
*
* @param request
* @param response
* @return
*/
@RequestMapping("/delete")
@RequiresPermissions("article:del")
public void delete(@RequestBody List<ArticleEntity> articles, HttpServletRequest request, HttpServletResponse response) {
int appId = BasicUtil.getAppId();
int[] ids = new int[articles.size()];
//循环获取id数据
for(int i=0;i<articles.size();i++){
ids[i] = articles.get(i).getArticleID();
}
if (ids.length == 0 || ids == null) {
this.outJson(response, ModelCode.CMS_ARTICLE, false, "", this.redirectBack(request, false));
return;
}
// 删除多个帖子
articleBiz.deleteBasic(ids);
FileUtil.del(articles);
this.outJson(response, ModelCode.CMS_ARTICLE, true, "", this.redirectBack(request, false));
}
/**
* 遍历出所有文章新增字段的信息
*
* @param listField
* :字段列表
* @param request
* @param articleId
* 文章id
* @return 字段信息
*/
private Map checkField(List<ContentModelFieldEntity> listField, HttpServletRequest request, int articleId) {
Map<String, Object> mapParams = new HashMap();
// 压入默认的basicId字段
mapParams.put("basicId", articleId);
// 遍历字段名
for (int i = 0; i < listField.size(); i++) {
ContentModelFieldEntity field = (ContentModelFieldEntity) listField.get(i);
String fieldName = field.getFieldFieldName();
// 判断字段类型是否为checkbox类型
if (field.getFieldType() == checkBox) {
String langtyp[] = request.getParameterValues(field.getFieldFieldName());
if (langtyp != null) {
StringBuffer sb = new StringBuffer();
for (int j = 0; j < langtyp.length; j++) {
sb.append(langtyp[j] + ",");
}
mapParams.put(field.getFieldFieldName(), sb.toString());
} else {
mapParams.put(field.getFieldFieldName(), langtyp);
}
} else {
if (StringUtils.isBlank(request.getParameter(field.getFieldFieldName()))) {
mapParams.put(field.getFieldFieldName(), null);
} else {
mapParams.put(field.getFieldFieldName(), request.getParameter(field.getFieldFieldName()));
}
}
}
return mapParams;
}
/**
* 查询单页栏目是否绑定了文章
*
* @param article
* 文章对象
*/
@RequestMapping("/{id}/queryColumnArticle")
public void queryColumnArticle(@PathVariable int id, HttpServletResponse response) {
List articls = articleBiz.queryListByColumnId(id);
if (articls == null || articls.size() == 0) {
this.outJson(response, ModelCode.CMS_ARTICLE, true, null);
} else {
this.outJson(response, ModelCode.CMS_ARTICLE, false, null);
}
}
}
\ No newline at end of file
package net.mingsoft.cms.action;
import java.util.List;
import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import net.mingsoft.base.entity.ResultData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.BindingResult;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.ui.ModelMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.entity.CategoryEntity;
import net.mingsoft.base.util.JSONObject;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.base.filter.DoubleValueFilter;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.annotation.LogAnn;
import net.mingsoft.basic.constant.e.BusinessTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;
/**
* 分类管理控制层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Api(value = "分类接口")
@Controller("cmsCategoryAction")
@RequestMapping("/${ms.manager.path}/cms/category")
public class CategoryAction extends BaseAction{
/**
* 注入分类业务层
*/
@Autowired
private ICategoryBiz categoryBiz;
/**
* 返回主界面index
*/
@GetMapping("/index")
public String index(HttpServletResponse response,HttpServletRequest request){
return "/cms/category/index";
}
/**
* 查询分类列表
* @param category 分类实体
*/
@ApiOperation(value = "查询分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@RequestMapping("/list")
@ResponseBody
public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model,BindingResult result) {
category.setAppId(BasicUtil.getAppId());
BasicUtil.startPage();
List categoryList = categoryBiz.query(category);
return ResultData.build().success(new EUListBean(categoryList,(int)BasicUtil.endPage(categoryList).getTotal()));
}
/**
* 返回编辑界面category_form
*/
@GetMapping("/form")
public String form(@ModelAttribute CategoryEntity category,HttpServletResponse response,HttpServletRequest request,ModelMap model){
if(category.getId()!=null){
BaseEntity categoryEntity = categoryBiz.getEntity(Integer.parseInt(category.getId()));
model.addAttribute("categoryEntity",categoryEntity);
}
return "/cms/category/form";
}
/**
* 获取分类
* @param category 分类实体
*/
@ApiOperation(value = "获取分类列表接口")
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
@GetMapping("/get")
@ResponseBody
public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model){
if(category.getId()==null) {
return ResultData.build().error();
}
category.setAppId(BasicUtil.getAppId());
CategoryEntity _category = (CategoryEntity)categoryBiz.getEntity(Integer.parseInt(category.getId()));
return ResultData.build().success(_category);
}
@ApiOperation(value = "保存分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
/**
* 保存分类
* @param category 分类实体
*/
@PostMapping("/save")
@ResponseBody
@LogAnn(title = "保存分类", businessType = BusinessTypeEnum.INSERT)
@RequiresPermissions("cms:category:save")
public ResultData save(@ModelAttribute @ApiIgnore CategoryEntity category, HttpServletResponse response, HttpServletRequest request) {
//验证栏目管理名称的值是否合法
if(StringUtil.isBlank(category.getCategoryTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("category.title")));
}
if(!StringUtil.checkLength(category.getCategoryTitle()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.title"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryFlag()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.flag"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryPath()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryParentId()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
}
category.setAppId(BasicUtil.getAppId());
categoryBiz.saveEntity(category);
return ResultData.build().success(category);
}
/**
* @param category 分类实体
*/
@ApiOperation(value = "批量删除分类列表接口")
@PostMapping("/delete")
@ResponseBody
@LogAnn(title = "删除分类", businessType = BusinessTypeEnum.DELETE)
@RequiresPermissions("cms:category:del")
public ResultData delete(@RequestBody List<CategoryEntity> categorys,HttpServletResponse response, HttpServletRequest request) {
for(int i = 0;i<categorys.size();i++){
categoryBiz.delete(Integer.parseInt(categorys.get(i).getId()));
}
return ResultData.build().success();
}
/**
* 更新分类列表
* @param category 分类实体
*/
@ApiOperation(value = "更新分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@PostMapping("/update")
@ResponseBody
@LogAnn(title = "更新分类", businessType = BusinessTypeEnum.UPDATE)
@RequiresPermissions("cms:category:update")
public ResultData update(@ModelAttribute @ApiIgnore CategoryEntity category, HttpServletResponse response,
HttpServletRequest request) {
//验证栏目管理名称的值是否合法
if(StringUtil.isBlank(category.getCategoryTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("category.title")));
}
if(!StringUtil.checkLength(category.getCategoryTitle()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.title"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryFlag()+"", 0, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.flag"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryPath()+"", 0, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryParentId()+"", 0, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
}
//判断是否选择子级为所属栏目
CategoryEntity _category = new CategoryEntity();
_category.setCategoryParentId(category.getId());
_category.setAppId(BasicUtil.getAppId());
List<CategoryEntity> categoryList = categoryBiz.queryChilds(_category);
for(CategoryEntity item:categoryList){
if(item.getId().equals(category.getCategoryId())){
return ResultData.build().error(getResString("cannot.select.child"));
}
}
category.setAppId(BasicUtil.getAppId());
categoryBiz.updateEntity(category);
return ResultData.build().success(category);
}
}
\ No newline at end of file
package net.mingsoft.cms.action;
import java.io.File;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.mingsoft.basic.util.ArrysUtil;
import net.mingsoft.mdiy.util.DictUtil;
import org.apache.commons.lang3.StringUtils;
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.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.biz.ICategoryBiz;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.constant.Const;
import net.mingsoft.basic.constant.ModelCode;
import net.mingsoft.basic.constant.e.SessionConstEnum;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.entity.ManagerEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.FileUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.mdiy.util.ParserUtil;
/**
* 铭飞MS平台,通用栏目分类,为了区分文章栏目与其他栏目的权限,该类是从basic模块复制过来
* @author 铭飞开发团队
* @version
* 版本号:100-000-000<br/>
* 创建日期:2017年8月9日<br/>
* 历史修订:<br/>
*/
@Controller("articleColumnAction")
@RequestMapping("/${ms.manager.path}/cms/column")
public class ColumnAction extends BaseAction{
/**
* 栏目业务层
*/
@Autowired
private IColumnBiz columnBiz;
@Autowired
private ICategoryBiz categoryBiz;
/**
* 模块业务层注入
*/
@Autowired
private IModelBiz modelBiz;
/**
* 返回主界面index
*/
@RequestMapping("/index")
@RequiresPermissions("cms:column:view")
public String index(HttpServletResponse response,HttpServletRequest request,ModelMap model){
model.addAttribute("model", "cms");
return "/basic/column/index";
}
/**
* 栏目添加跳转页面
*
* @return
*/
@RequestMapping("/add")
public String add(HttpServletRequest request,ModelMap model) {
// 站点ID
int appId =BasicUtil.getAppId();
List<ColumnEntity> list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
ColumnEntity columnSuper = new ColumnEntity();
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("columnSuper", columnSuper);
model.addAttribute("column",new ColumnEntity());
model.addAttribute("listColumn", JSONArray.toJSONString(list));
model.addAttribute("model", "cms");
model.addAttribute("websiteId", appId);
return "/basic/column/form";
}
/**
* 后台验证填写的栏目信息是否合法
* @param column 栏目信息
* @param response
* @return false:不合法 true:合法
*/
private boolean checkForm(ColumnEntity column, HttpServletResponse response){
//栏目标题空值验证
if(StringUtils.isBlank(column.getCategoryTitle())){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.empty", this.getResString("categoryTitle")));
return false;
}
//栏目标题长度验证
if(!StringUtil.checkLength(column.getCategoryTitle(), 1, 31)){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.length", this.getResString("categoryTitle"), "1", "30"));
return false;
}
//栏目属性空值验证
if(StringUtils.isBlank(column.getColumnType()+"")){
this.outJson( response, ModelCode.COLUMN, false, getResString("err.empty", this.getResString("columnType")));
return false;
}
return true;
}
/**
* 组织栏目链接地址
* @param request
* @param column 栏目实体
*/
private void columnPath(HttpServletRequest request,ColumnEntity column){
StringBuffer columnPath = new StringBuffer();
String file = BasicUtil.getRealPath("")+ParserUtil.HTML+File.separator+ column.getAppId();
String delFile = "";
//修改栏目路径时,删除已存在的文件夹
column = (ColumnEntity) columnBiz.getEntity(column.getCategoryId());
delFile = file + column.getColumnPath();
if(!StringUtils.isBlank(delFile)){
File delFileName = new File(delFile);
delFileName.delete();
}
//若为顶级栏目,则路径为:/+栏目ID
if(column.getCategoryCategoryId() == 0){
column.setColumnPath(File.separator+column.getCategoryId());
file = file + File.separator + column.getCategoryId();
} else {
List<ColumnEntity> list = columnBiz.queryParentColumnByColumnId(column.getCategoryId());
if(list != null){
StringBuffer temp = new StringBuffer();
for(int i = list.size()-1; i>=0; i--){
ColumnEntity entity = list.get(i);
columnPath.append(File.separator).append(entity.getCategoryId());
temp.append(File.separator).append(entity.getCategoryId());
}
column.setColumnPath(columnPath.append(File.separator).append(column.getCategoryId()).toString());
file = file + temp.toString() + File.separator + column.getCategoryId();
}
}
columnBiz.updateEntity(column);
//生成文件夹
File fileName = new File(file);
fileName.mkdir();
}
/**
* @param column 栏目表实体
* <i>column参数包含字段信息参考:</i><br/>
* columnCategoryid:多个columnCategoryid直接用逗号隔开,例如columnCategoryid=1,2,3,4
* 批量删除栏目表
* <dt><span class="strong">返回</span></dt><br/>
* <dd>{code:"错误编码",<br/>
* result:"true|false",<br/>
* resultMsg:"错误信息"<br/>
* }</dd>
*/
@RequestMapping("/delete")
@ResponseBody
public void delete(HttpServletResponse response, HttpServletRequest request) {
int[] ids = BasicUtil.getInts("ids", ",");
ColumnEntity column =new ColumnEntity();
for(int i=0;i<ids.length;i++){
column = (ColumnEntity) columnBiz.getEntity(ids[i]);
columnBiz.deleteCategory(ids[i]);
FileUtil.del(column);
};
this.outJson(response, true);
}
/**
* 栏目更新页面跳转
* @param columnId 栏目ID
* @param request
* @param model
* @return 编辑栏目页
*/
@RequestMapping("/{columnId}/edit")
public String edit(@PathVariable int columnId, HttpServletRequest request,ModelMap model) {
// 获取管理实体
ManagerEntity managerSession = (ManagerEntity) BasicUtil.getSession( SessionConstEnum.MANAGER_SESSION);
// 站点ID
int appId = BasicUtil.getAppId();
List<ColumnEntity> list = new ArrayList<ColumnEntity>();
// 判断管理员权限,查询其管理的栏目集合
list = columnBiz.queryAll(appId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
//查询当前栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(columnId);
// 栏目属性
model.addAttribute("columnFlag", DictUtil.list("栏目属性"));
model.addAttribute("appId",appId);
model.addAttribute("column", column);
model.addAttribute("columnc", column.getCategoryId());
ColumnEntity columnSuper = new ColumnEntity();
// 获取父栏目对象
if (column.getCategoryCategoryId() != Const.COLUMN_TOP_CATEGORY_ID) {
columnSuper = (ColumnEntity) columnBiz.getEntity(column.getCategoryCategoryId());
}
model.addAttribute("columnSuper", columnSuper);
model.addAttribute("listColumn", JSONArray.toJSONString(list));
model.addAttribute("model", "cms");
model.addAttribute("websiteId", appId);
return "/basic/column/form";
}
/**
* 栏目首页面列表显示
*/
@SuppressWarnings("deprecation")
@RequestMapping("/list")
public void list(@ModelAttribute ColumnEntity column,HttpServletResponse response, HttpServletRequest request,ModelMap model) {
// 站点ID有session获取
int websiteId = BasicUtil.getAppId();
// 需要打开的栏目节点树的栏目ID
List list = columnBiz.queryAll(websiteId, BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
EUListBean _list = new EUListBean(list, list.size());
this.outJson(response, net.mingsoft.base.util.JSONArray.toJSONString(_list));
}
/**
* 栏目添加
*
* @param column
* 栏目对象
* @return 返回页面跳转
*/
@RequestMapping("/save")
public void save(@ModelAttribute ColumnEntity column,HttpServletRequest request,HttpServletResponse response) {
if(!checkForm(column,response)){
return;
}
column.setCategoryAppId( BasicUtil.getAppId());
column.setAppId(BasicUtil.getAppId());
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
column.setCategoryDateTime(new Timestamp(System.currentTimeMillis()));
column.setCategoryModelId(BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()));
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
column.setColumnFlag(ArrysUtil.sort(checkboxType, ",")+",");
}else{
column.setColumnFlag(checkboxType);
}
if(column.getColumnType()==ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()){
column.setColumnListUrl(null);
}
columnBiz.saveCategory(column);
this.columnPath(request,column);
this.outJson(response, ModelCode.COLUMN, true,null,JSONArray.toJSONString(column.getCategoryId()));
}
/**
* 更新栏目
* @param column 栏目实体
* @param request
* @param response
*/
@RequestMapping("/update")
@ResponseBody
public void update(@ModelAttribute ColumnEntity column,HttpServletRequest request,HttpServletResponse response) {
//获取站点ID
int websiteId = BasicUtil.getAppId();
//检测栏目信息是否合法
if(!checkForm(column,response)){
return;
}
//若栏目管理属性为单页,则栏目的列表模板地址设为Null
if(column.getColumnType()==ColumnEntity.ColumnTypeEnum.COLUMN_TYPE_COVER.toInt()){
column.setColumnListUrl(null);
}
column.setCategoryManagerId(getManagerBySession(request).getManagerId());
column.setAppId(websiteId);
String checkboxType = BasicUtil.getString("checkboxType");
//如果选择一个属性不做排序操作
if(!StringUtils.isEmpty(checkboxType) && checkboxType.length()>2){
column.setColumnFlag(ArrysUtil.sort(checkboxType, ",")+",");
}else{
column.setColumnFlag(checkboxType);
}
columnBiz.updateCategory(column);
this.columnPath(request,column);
//查询当前栏目是否有子栏目,
List<ColumnEntity> childList = columnBiz.queryChild(column.getCategoryId(), websiteId,BasicUtil.getModelCodeId(net.mingsoft.cms.constant.ModelCode.CMS_COLUMN.toString()),null);
if(childList != null && childList.size()>0){
//改变子栏目的顶级栏目ID为当前栏目的父级栏目ID
for(int i=0;i<childList.size();i++){
childList.get(i).setCategoryCategoryId(column.getCategoryId());
childList.get(i).setCategoryManagerId(getManagerBySession(request).getManagerId());
childList.get(i).setAppId(websiteId);
columnBiz.updateCategory(childList.get(i));
//组织子栏目链接地址
this.columnPath(request, childList.get(i));
}
}
this.outJson(response, ModelCode.COLUMN, true,null,JSONArray.toJSONString(column.getCategoryId()));
}
}
\ No newline at end of file
package net.mingsoft.cms.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.mingsoft.base.entity.ResultData;
import org.springframework.validation.BindingResult;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.ui.ModelMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import net.mingsoft.cms.biz.IContentBiz;
import net.mingsoft.cms.entity.ContentEntity;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.annotation.LogAnn;
import net.mingsoft.basic.constant.e.BusinessTypeEnum;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;
/**
* 文章管理控制层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Api(value = "文章接口")
@Controller("cmsContentAction")
@RequestMapping("/${ms.manager.path}/cms/content")
public class ContentAction extends BaseAction{
/**
* 注入文章业务层
*/
@Autowired
private IContentBiz contentBiz;
/**
* 返回主界面index
*/
@GetMapping("/index")
public String index(HttpServletResponse response,HttpServletRequest request){
return "/cms/content/index";
}
/**
* 返回主界面main
*/
@GetMapping("/main")
public String main(HttpServletResponse response,HttpServletRequest request){
return "/cms/content/main";
}
/**
* 查询文章列表
* @param content 文章实体
*/
@ApiOperation(value = "查询文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =false,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@RequestMapping("/list")
@ResponseBody
public ResultData list(@ModelAttribute @ApiIgnore ContentEntity content,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model,BindingResult result) {
content.setAppId(BasicUtil.getAppId());
BasicUtil.startPage();
List contentList = contentBiz.query(content);
return ResultData.build().success(new EUListBean(contentList,(int)BasicUtil.endPage(contentList).getTotal()));
}
/**
* 返回编辑界面content_form
*/
@GetMapping("/form")
public String form(@ModelAttribute ContentEntity content,HttpServletResponse response,HttpServletRequest request,ModelMap model){
if(content.getId()!=null){
BaseEntity contentEntity = contentBiz.getEntity(Integer.parseInt(content.getId()));
model.addAttribute("contentEntity",contentEntity);
}
return "/cms/content/form";
}
/**
* 获取文章
* @param content 文章实体
*/
@ApiOperation(value = "获取文章列表接口")
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
@GetMapping("/get")
@ResponseBody
public ResultData get(@ModelAttribute @ApiIgnore ContentEntity content,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model){
if(content.getId()==null) {
return ResultData.build().error();
}
content.setAppId(BasicUtil.getAppId());
ContentEntity _content = (ContentEntity)contentBiz.getEntity(Integer.parseInt(content.getId()));
return ResultData.build().success(_content);
}
@ApiOperation(value = "保存文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =true,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =true,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
/**
* 保存文章
* @param content 文章实体
*/
@PostMapping("/save")
@ResponseBody
@LogAnn(title = "保存文章", businessType = BusinessTypeEnum.INSERT)
@RequiresPermissions("cms:content:save")
public ResultData save(@ModelAttribute @ApiIgnore ContentEntity content, HttpServletResponse response, HttpServletRequest request) {
//验证文章标题的值是否合法
if(StringUtil.isBlank(content.getContentTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.title")));
}
if(!StringUtil.checkLength(content.getContentTitle()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.title"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentAuthor()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.author"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentSource()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.source"), "0", "200"));
}
//验证发布时间的值是否合法
if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime")));
}
if(!StringUtil.checkLength(content.getContentUrl()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.url"), "0", "200"));
}
content.setAppId(BasicUtil.getAppId());
contentBiz.saveEntity(content);
return ResultData.build().success(content);
}
/**
* @param content 文章实体
*/
@ApiOperation(value = "批量删除文章列表接口")
@PostMapping("/delete")
@ResponseBody
@LogAnn(title = "删除文章", businessType = BusinessTypeEnum.DELETE)
@RequiresPermissions("cms:content:del")
public ResultData delete(@RequestBody List<ContentEntity> contents,HttpServletResponse response, HttpServletRequest request) {
int[] ids = new int[contents.size()];
for(int i = 0;i<contents.size();i++){
ids[i] =Integer.parseInt(contents.get(i).getId()) ;
}
contentBiz.delete(ids);
return ResultData.build().success();
}
/**
* 更新文章列表
* @param content 文章实体
*/
@ApiOperation(value = "更新文章列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =true,paramType="query"),
@ApiImplicitParam(name = "contentCategoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =true,paramType="query"),
@ApiImplicitParam(name = "contentSort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "contentImg", value = "文章缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDescription", value = "描述", required =false,paramType="query"),
@ApiImplicitParam(name = "contentKeyword", value = "关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDetails", value = "文章内容", required =false,paramType="query"),
@ApiImplicitParam(name = "contentUrl", value = "文章跳转链接地址", required =false,paramType="query"),
@ApiImplicitParam(name = "appid", value = "文章管理的应用id", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@PostMapping("/update")
@ResponseBody
@LogAnn(title = "更新文章", businessType = BusinessTypeEnum.UPDATE)
@RequiresPermissions("cms:content:update")
public ResultData update(@ModelAttribute @ApiIgnore ContentEntity content, HttpServletResponse response,
HttpServletRequest request) {
//验证文章标题的值是否合法
if(StringUtil.isBlank(content.getContentTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.title")));
}
if(!StringUtil.checkLength(content.getContentTitle()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.title"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentAuthor()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.author"), "0", "200"));
}
if(!StringUtil.checkLength(content.getContentSource()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.source"), "0", "200"));
}
//验证发布时间的值是否合法
if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime")));
}
if(!StringUtil.checkLength(content.getContentUrl()+"", 0, 200)){
return ResultData.build().error(getResString("err.length", this.getResString("content.url"), "0", "200"));
}
content.setAppId(BasicUtil.getAppId());
contentBiz.updateEntity(content);
return ResultData.build().success(content);
}
}
\ No newline at end of file
......@@ -24,7 +24,6 @@ package net.mingsoft.cms.action;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
......@@ -32,6 +31,11 @@ import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import net.mingsoft.cms.bean.ContentBean;
import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.biz.IContentBiz;
import net.mingsoft.cms.entity.CategoryEntity;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -42,16 +46,10 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.entity.AppEntity;
import net.mingsoft.basic.entity.CategoryEntity;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.cms.bean.ColumnArticleIdBean;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.constant.ModelCode;
import net.mingsoft.cms.util.CmsParserUtil;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
......@@ -78,13 +76,13 @@ public class GeneraterAction extends BaseAction {
* 文章管理业务层
*/
@Autowired
private IArticleBiz articleBiz;
private IContentBiz contentBiz;
/**
* 栏目管理业务层
*/
@Autowired
private IColumnBiz columnBiz;
private ICategoryBiz categoryBiz;
/**
* 模块管理业务层
......@@ -101,11 +99,6 @@ public class GeneraterAction extends BaseAction {
@Autowired
protected IContentModelFieldBiz fieldBiz;
/**
* 自定义模型业务层
*/
@Autowired
protected IContentModelBiz contentBiz;
/**
* 更新主页
......@@ -114,13 +107,6 @@ public class GeneraterAction extends BaseAction {
*/
@RequestMapping("/index")
public String index(HttpServletRequest request, ModelMap model) {
// 该站点ID有session提供
int websiteId = BasicUtil.getAppId();
Integer modelId = modelBiz.getEntityByModelCode(ModelCode.CMS_COLUMN).getModelId(); // 查询当前模块编号
// 获取所有的内容管理栏目
List<ColumnEntity> list = columnBiz.queryAll(websiteId, modelId);
model.addAttribute("list", JSONArray.toJSONString(list));
model.addAttribute("now", new Date());
return "/cms/generate/index";
}
......@@ -160,44 +146,46 @@ public class GeneraterAction extends BaseAction {
*
* @param request
* @param response
* @param columnId
* @param CategoryId
*/
@RequestMapping("/{columnId}/genernateColumn")
@RequestMapping("/{CategoryId}/genernateColumn")
@RequiresPermissions("cms:generate:column")
@ResponseBody
public void genernateColumn(HttpServletRequest request, HttpServletResponse response, @PathVariable int columnId) {
public void genernateColumn(HttpServletRequest request, HttpServletResponse response, @PathVariable int CategoryId) {
// 获取站点id
AppEntity app = BasicUtil.getApp();
List<ColumnEntity> columns = new ArrayList<ColumnEntity>();
List<CategoryEntity> columns = new ArrayList<CategoryEntity>();
// 如果栏目id小于0则更新所有的栏目,否则只更新选中的栏目
int modelId = BasicUtil.getModelCodeId(ModelCode.CMS_COLUMN); // 查询当前模块编号
if (columnId > 0) {
List<CategoryEntity> categorys = columnBiz.queryChildrenCategory(columnId, app.getAppId(), modelId);
for (CategoryEntity c : categorys) {
columns.add((ColumnEntity) columnBiz.getEntity(c.getCategoryId()));
}
if (CategoryId>0) {
CategoryEntity categoryEntity = new CategoryEntity();
categoryEntity.setId(CategoryId+"");
categoryEntity.setAppId(app.getAppId());
columns = categoryBiz.queryChilds(categoryEntity);
} else {
// 获取所有的内容管理栏目
columns = columnBiz.queryAll(app.getAppId(), modelId);
CategoryEntity categoryEntity=new CategoryEntity();
categoryEntity.setAppId(app.getAppId());
columns = categoryBiz.query(categoryEntity);
}
List<ColumnArticleIdBean> articleIdList = null;
List<ContentBean> articleIdList = null;
try {
// 1、设置模板文件夹路径
// 获取栏目列表模版
for (ColumnEntity column : columns) {
for (CategoryEntity column : columns) {
// 判断模板文件是否存在
if (!FileUtil.exist(ParserUtil.buildTempletPath(column.getColumnUrl()))) {
if (!FileUtil.exist(ParserUtil.buildTempletPath(column.getCategoryUrl()))) {
continue;
}
articleIdList = articleBiz.queryIdsByCategoryIdForParser(column.getCategoryId(), null, null);
articleIdList = contentBiz.queryIdsByCategoryIdForParser(column.getId(), null, null);
// 判断列表类型
switch (column.getColumnType()) {
case ColumnEntity.COLUMN_TYPE_LIST: // 列表
switch (column.getCategoryType()) {
//TODO 暂时先用字符串代替
case "1": // 列表
CmsParserUtil.generateList(column, articleIdList.size());
break;
case ColumnEntity.COLUMN_TYPE_COVER:// 单页
case "2":// 单页
if(articleIdList.size()==0){
ColumnArticleIdBean columnArticleIdBean=new ColumnArticleIdBean();
ContentBean columnArticleIdBean=new ContentBean();
CopyOptions copyOptions=CopyOptions.create();
copyOptions.setIgnoreError(true);
BeanUtil.copyProperties(column,columnArticleIdBean,copyOptions);
......@@ -205,8 +193,6 @@ public class GeneraterAction extends BaseAction {
}
CmsParserUtil.generateBasic(articleIdList);
break;
default:
throw new IllegalStateException("Unexpected value: " + column.getColumnType());
}
}
} catch (IOException e) {
......@@ -226,13 +212,13 @@ public class GeneraterAction extends BaseAction {
@RequestMapping("/{columnId}/generateArticle")
@RequiresPermissions("cms:generate:article")
@ResponseBody
public void generateArticle(HttpServletRequest request, HttpServletResponse response, @PathVariable int columnId) {
public void generateArticle(HttpServletRequest request, HttpServletResponse response, @PathVariable String columnId) {
String dateTime = request.getParameter("dateTime");
// 网站风格物理路径
List<ColumnArticleIdBean> articleIdList = null;
List<ContentBean> articleIdList = null;
try {
// 查出所有文章(根据选择栏目)包括子栏目
articleIdList = articleBiz.queryIdsByCategoryIdForParser(columnId, dateTime, null);
articleIdList = contentBiz.queryIdsByCategoryIdForParser(columnId, dateTime, null);
// 有符合条件的新闻就更新
if (articleIdList.size() > 0) {
CmsParserUtil.generateBasic(articleIdList);
......
/**
The MIT License (MIT) * Copyright (c) 2016 铭飞科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package net.mingsoft.cms.action.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.bean.ListBean;
import net.mingsoft.basic.biz.IColumnBiz;
import net.mingsoft.basic.entity.ColumnEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.cms.biz.IArticleBiz;
import net.mingsoft.cms.entity.ArticleEntity;
import net.mingsoft.mdiy.biz.IContentModelBiz;
import net.mingsoft.mdiy.biz.IContentModelFieldBiz;
import net.mingsoft.mdiy.entity.ContentModelEntity;
import springfox.documentation.annotations.ApiIgnore;
/**
*
* @ClassName: ArticleAction
* @Description:TODO 前段文章控制,如果标签不能满足可以使用这个控制来满足用户的查询文章需求,主要是通过ajax返回json数据格式
* @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:52:44
*
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/
@Controller("jsonApiArticle")
@RequestMapping("/mcms/article")
public class ArticleAction extends BaseAction {
/**
* 文章管理业务处理层
*/
@Autowired
private IArticleBiz articleBiz;
/**
* 栏目管理业务处理层
*/
@Autowired
private IColumnBiz columnBiz;
/**
* 内容模型管理业务处理层
*/
@Autowired
private IContentModelBiz contentModelBiz;
/**
* 自定义字段管理业务处理层
*/
@Autowired
private IContentModelFieldBiz fieldBiz;
/**
* 文章信息
*
* @param basicId
* 文章编号
* <dt><span class="strong">返回</span></dt><br/>
* {"basicCategoryId":分类编号,basicTitle
* :"标题",basicDescription:"描述",basicThumbnails:"缩略图",
* basicDateTime:"发布时间",basicUpdateTime:"更新时间","basicHit":点击数,
* "basicId":编号 articleContent:"文章内容","basicSort":排序,[自定义模型字段]}
*/
@GetMapping("/{basicId}/detail")
@ResponseBody
public void detail(@PathVariable int basicId, HttpServletRequest request, HttpServletResponse response) {
ArticleEntity article = articleBiz.getById(basicId);
if (article == null) {
this.outJson(response, "");
return;
}
// 获取文章栏目id获取栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(article.getBasicCategoryId());
ContentModelEntity contentModel = (ContentModelEntity) contentModelBiz
.getEntity(column.getColumnContentModelId());
// 判断内容模型的值
if (contentModel != null) {
Map where = new HashMap();
// 压入basicId字段的值
where.put("basicId", basicId);
// 遍历所有的字段实体,得到字段名列表信息
List<String> listFieldName = new ArrayList<String>();
listFieldName.add("basicId");
// 查询新增字段的信息
List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
if (fieldLists.size() > 0) {
Map map = (Map) fieldLists.get(0);
article.setExtendsFields(map);
}
}
this.outJson(response, JSONObject.toJSONStringWithDateFormat(article, "yyyy-MM-dd hh:mm:ss"));
}
/**
* 文章列表信息
*
* @param pageSize
* 一页显示数量
* @param pageNum
* 当前页码
* @param basicCategoryId
* 分类编号
* <dt><span class="strong">返回</span></dt><br/>
* {"list":"[{
* "basicTitle":"标题",
* "basicDescription":"描述",
* "basicThumbnails":"缩略图",
* "basicDateTime":"发布时间",
* "basicUpdateTime":"更新时间",
* "basicHit":点击数,
* "basicId":编号,
* "articleContent":文章内容,
* "articleAuthor":文章作者
* "articleType":文章属性,
* "articleSource":文章的来源,
* "articleUrl":文章跳转链接地址,
* "articleKeyword":文章关键字,
* "articleCategoryId":文章所属的分类Id,
* "articleTypeLinkURL":文章分类url地址,主要是用户生成html使用,
* "order":"排序方式",
* "orderBy":"排序字段
* }],
* "page":{"endRow": 2, 当前页面最后一个元素在数据库中的行号
* "firstPage": 1, 第一页页码
* "hasNextPage": true存在下一页false不存在,
* "hasPreviousPage": true存在上一页false不存在,
* "isFirstPage": true是第一页false不是第一页,
* "isLastPage": true是最后一页false不是最后一页,
* "lastPage": 最后一页的页码,
* "navigatePages": 导航数量,实现 1...5.6.7....10效果,
* "navigatepageNums": []导航页码集合,
* "nextPage": 下一页,
* "pageNum": 当前页码,
* "pageSize": 一页显示数量,
* "pages": 总页数,
* "prePage": 上一页,
* "size": 总记录,
* "startRow":当前页面第一个元素在数据库中的行号,
* "total":总记录数量
* }
*/
@RequestMapping(value = "/list",method= RequestMethod.GET)
@ApiOperation(value="文章列表信息")
@ResponseBody
public void list(@ModelAttribute @ApiIgnore ArticleEntity article, HttpServletRequest request, HttpServletResponse response) {
int appId = BasicUtil.getAppId();
int[] ids = null;
if (article.getBasicCategoryId()>0) {
ids = new int[]{article.getBasicCategoryId()};
}
//默认为desc排序
boolean isOrder = true;
if(!StringUtils.isBlank(article.getOrder())){
String basicOrder = article.getOrder();
if(basicOrder.equalsIgnoreCase("asc")){
isOrder = false;
}
}
BasicUtil.startPage();
List<ArticleEntity> list = articleBiz.query(appId, ids, null, null, article.getOrderBy(), isOrder, null, null, article);
for(ArticleEntity _article : list){
// 获取文章栏目id获取栏目实体
ColumnEntity column = (ColumnEntity) columnBiz.getEntity(_article.getBasicCategoryId());
ContentModelEntity contentModel = (ContentModelEntity) contentModelBiz
.getEntity(column.getColumnContentModelId());
// 判断内容模型的值
if (contentModel != null) {
Map where = new HashMap();
// 压入basicId字段的值
where.put("basicId", _article.getBasicId());
// 遍历所有的字段实体,得到字段名列表信息
List<String> listFieldName = new ArrayList<String>();
listFieldName.add("basicId");
// 查询新增字段的信息
List fieldLists = fieldBiz.queryBySQL(contentModel.getCmTableName(), listFieldName, where);
if (fieldLists.size() > 0) {
Map map = (Map) fieldLists.get(0);
_article.setExtendsFields(map);
}
}
}
this.outJson(response, JSONArray.toJSONString(new ListBean(list, BasicUtil.endPage(list)),new DateValueFilter("yyyy-MM-dd HH:mm:ss")));
}
}
\ No newline at end of file
package net.mingsoft.cms.action.web;
import java.util.List;
import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import net.mingsoft.base.entity.ResultData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.validation.BindingResult;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.ui.ModelMap;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.entity.CategoryEntity;
import net.mingsoft.base.util.JSONObject;
import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.base.filter.DateValueFilter;
import net.mingsoft.base.filter.DoubleValueFilter;
import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.annotation.LogAnn;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.annotations.ApiIgnore;
/**
* 分类管理控制层
* @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/>
*/
@Api(value = "分类接口")
@Controller("WebcmsCategoryAction")
@RequestMapping("/cms/category")
public class CategoryAction extends net.mingsoft.cms.action.BaseAction{
/**
* 注入分类业务层
*/
@Autowired
private ICategoryBiz categoryBiz;
/**
* 返回主界面index
*/
@GetMapping("/index")
public String index(HttpServletResponse response,HttpServletRequest request){
return "/cms/category/index";
}
/**
* 查询分类列表
* @param category 分类实体
*/
@ApiOperation(value = "查询分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@RequestMapping("/list")
@ResponseBody
public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model,BindingResult result) {
BasicUtil.startPage();
List categoryList = categoryBiz.query(category);
return ResultData.build().success(new EUListBean(categoryList,(int)BasicUtil.endPage(categoryList).getTotal()));
}
/**
* 返回编辑界面category_form
*/
@GetMapping("/form")
public String form(@ModelAttribute CategoryEntity category,HttpServletResponse response,HttpServletRequest request,ModelMap model){
if(category.getId()!=null){
BaseEntity categoryEntity = categoryBiz.getEntity(Integer.parseInt(category.getId()));
model.addAttribute("categoryEntity",categoryEntity);
}
return "/cms/category/form";
}
/**
* 获取分类
* @param category 分类实体
*/
@ApiOperation(value = "获取分类列表接口")
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
@GetMapping("/get")
@ResponseBody
public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category,HttpServletResponse response, HttpServletRequest request,@ApiIgnore ModelMap model){
if(category.getId()==null) {
return ResultData.build().error();
}
CategoryEntity _category = (CategoryEntity)categoryBiz.getEntity(Integer.parseInt(category.getId()));
return ResultData.build().success(_category);
}
@ApiOperation(value = "保存分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
/**
* 保存分类
* @param category 分类实体
*/
@PostMapping("/save")
@ResponseBody
public ResultData save(@ModelAttribute @ApiIgnore CategoryEntity category, HttpServletResponse response, HttpServletRequest request) {
//验证栏目管理名称的值是否合法
if(StringUtil.isBlank(category.getCategoryTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("category.title")));
}
if(!StringUtil.checkLength(category.getCategoryTitle()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.title"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryFlag()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.flag"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryPath()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryParentId()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
}
categoryBiz.saveEntity(category);
return ResultData.build().success(category);
}
/**
* @param category 分类实体
*/
@ApiOperation(value = "批量删除分类列表接口")
@PostMapping("/delete")
@ResponseBody
public ResultData delete(@RequestBody List<CategoryEntity> categorys,HttpServletResponse response, HttpServletRequest request) {
int[] ids = new int[categorys.size()];
for(int i = 0;i<categorys.size();i++){
ids[i] =Integer.parseInt(categorys.get(i).getId()) ;
}
categoryBiz.delete(ids);
return ResultData.build().success();
}
/**
* 更新分类列表
* @param category 分类实体
*/
@ApiOperation(value = "更新分类列表接口")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =true,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryType", value = "栏目管理属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categorySort", value = "自定义顺序", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryListUrl", value = "列表模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryUrl", value = "内容模板", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryKeyword", value = "栏目管理关键字", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDescrip", value = "栏目管理描述", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryImg", value = "缩略图", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDiyUrl", value = "自定义链接", required =false,paramType="query"),
@ApiImplicitParam(name = "mdiyModelId", value = "栏目管理的内容模型id", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryDatetime", value = "类别发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryManagerId", value = "发布用户id", required =false,paramType="query"),
@ApiImplicitParam(name = "appId", value = "应用编号", required =false,paramType="query"),
@ApiImplicitParam(name = "dictId", value = "字典对应编号", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryFlag", value = "栏目属性", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryPath", value = "栏目路径", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
@ApiImplicitParam(name = "createBy", value = "创建人", required =false,paramType="query"),
@ApiImplicitParam(name = "createDate", value = "创建时间", required =false,paramType="query"),
@ApiImplicitParam(name = "updateBy", value = "修改人", required =false,paramType="query"),
@ApiImplicitParam(name = "updateDate", value = "修改时间", required =false,paramType="query"),
@ApiImplicitParam(name = "del", value = "删除标记", required =false,paramType="query"),
@ApiImplicitParam(name = "id", value = "编号", required =false,paramType="query"),
})
@PostMapping("/update")
@ResponseBody
public ResultData update(@ModelAttribute @ApiIgnore CategoryEntity category, HttpServletResponse response,
HttpServletRequest request) {
//验证栏目管理名称的值是否合法
if(StringUtil.isBlank(category.getCategoryTitle())){
return ResultData.build().error(getResString("err.empty", this.getResString("category.title")));
}
if(!StringUtil.checkLength(category.getCategoryTitle()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.title"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryFlag()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.flag"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryPath()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
}
if(!StringUtil.checkLength(category.getCategoryParentId()+"", 1, 100)){
return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
}
categoryBiz.updateEntity(category);
return ResultData.build().success(category);
}
}
\ No newline at end of file
Supports Markdown
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