Commit 09ee994b authored by mingsoft's avatar mingsoft

up::5.2.10

Signed-off-by: 's avatarmingsoft <killfen@126.com>
parent c86c7b92
...@@ -10,14 +10,14 @@ ...@@ -10,14 +10,14 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>net.mingsoft</groupId> <groupId>net.mingsoft</groupId>
<artifactId>ms-mcms</artifactId> <artifactId>ms-mcms</artifactId>
<version>5.2.9</version> <version>5.2.10</version>
<name>${project.groupId}:${project.artifactId}</name> <name>${project.groupId}:${project.artifactId}</name>
<!-- 打包war包,注意不启用(resources》resource》excludes的配置并注释掉maven-assembly-plugin 插件配置 --> <!-- 打包war包,注意不启用(resources》resource》excludes的配置并注释掉maven-assembly-plugin 插件配置 -->
<!--<packaging>war</packaging>--> <!--<packaging>war</packaging>-->
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<log4j.version>2.18.0</log4j.version> <log4j.version>2.19.0</log4j.version>
</properties> </properties>
<repositories> <repositories>
<repository> <repository>
...@@ -44,24 +44,24 @@ ...@@ -44,24 +44,24 @@
<dependency> <dependency>
<groupId>net.mingsoft</groupId> <groupId>net.mingsoft</groupId>
<artifactId>ms-base</artifactId> <artifactId>ms-base</artifactId>
<version>2.1.14.1</version> <version>2.1.15</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.mingsoft</groupId> <groupId>net.mingsoft</groupId>
<artifactId>ms-basic</artifactId> <artifactId>ms-basic</artifactId>
<version>2.1.14.1</version> <version>2.1.15</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.mingsoft</groupId> <groupId>net.mingsoft</groupId>
<artifactId>ms-mdiy</artifactId> <artifactId>ms-mdiy</artifactId>
<version>2.1.14.1</version> <version>2.1.15</version>
</dependency> </dependency>
<!--store入口依赖(源码不开发),如果不需要MStore可以直接去掉依赖--> <!--store入口依赖(源码不开发),如果不需要MStore可以直接去掉依赖-->
<dependency> <dependency>
<groupId>net.mingsoft</groupId> <groupId>net.mingsoft</groupId>
<artifactId>store-client</artifactId> <artifactId>store-client</artifactId>
<version>2.1.14</version> <version>2.1.15</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.oshi</groupId> <groupId>com.github.oshi</groupId>
......
...@@ -25,12 +25,6 @@ import org.mybatis.spring.annotation.MapperScan; ...@@ -25,12 +25,6 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan; import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Locale;
@SpringBootApplication(scanBasePackages = {"net.mingsoft"}) @SpringBootApplication(scanBasePackages = {"net.mingsoft"})
@MapperScan(basePackages={"**.dao","com.baomidou.**.mapper"}) @MapperScan(basePackages={"**.dao","com.baomidou.**.mapper"})
......
...@@ -18,27 +18,27 @@ ...@@ -18,27 +18,27 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.action; package net.mingsoft.cms.action;
import java.util.MissingResourceException; import java.util.MissingResourceException;
/** /**
* @Author: 铭飞开源团队--huise * @Author: 铭飞开源团队--huise
* @Date: 2019/8/9 20:47 * @Date: 2019/8/9 20:47
*/ */
public class BaseAction extends net.mingsoft.basic.action.BaseAction{ public class BaseAction extends net.mingsoft.basic.action.BaseAction{
@Override @Override
protected String getResString(String key) { protected String getResString(String key) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String str = ""; String str = "";
try { try {
str = super.getResString(key); str = super.getResString(key);
} catch (MissingResourceException e) { } catch (MissingResourceException e) {
str = getLocaleString(key,net.mingsoft.cms.constant.Const.RESOURCES); str = getLocaleString(key,net.mingsoft.cms.constant.Const.RESOURCES);
} }
return str; return str;
} }
} }
...@@ -70,6 +70,7 @@ public class CategoryAction extends BaseAction { ...@@ -70,6 +70,7 @@ public class CategoryAction extends BaseAction {
* @return * @return
*/ */
@GetMapping("/index") @GetMapping("/index")
@RequiresPermissions("cms:category:view")
public String index(){ public String index(){
return "/cms/category/index"; return "/cms/category/index";
} }
...@@ -86,7 +87,6 @@ public class CategoryAction extends BaseAction { ...@@ -86,7 +87,6 @@ public class CategoryAction extends BaseAction {
}) })
@RequestMapping(value="/list",method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value="/list",method = {RequestMethod.GET, RequestMethod.POST})
@ResponseBody @ResponseBody
@RequiresPermissions("cms:category:view")
public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category) { public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category) {
BasicUtil.startPage(); BasicUtil.startPage();
List categoryList = categoryBiz.query(category); List categoryList = categoryBiz.query(category);
......
...@@ -27,11 +27,11 @@ import io.swagger.annotations.ApiImplicitParam; ...@@ -27,11 +27,11 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.entity.ResultData; import net.mingsoft.base.entity.ResultData;
import net.mingsoft.base.util.SqlInjectionUtil;
import net.mingsoft.basic.annotation.LogAnn; import net.mingsoft.basic.annotation.LogAnn;
import net.mingsoft.basic.bean.EUListBean; import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.constant.e.BusinessTypeEnum; import net.mingsoft.basic.constant.e.BusinessTypeEnum;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.base.util.SqlInjectionUtil;
import net.mingsoft.basic.util.StringUtil; import net.mingsoft.basic.util.StringUtil;
import net.mingsoft.cms.bean.ContentBean; import net.mingsoft.cms.bean.ContentBean;
import net.mingsoft.cms.biz.ICategoryBiz; import net.mingsoft.cms.biz.ICategoryBiz;
...@@ -45,13 +45,10 @@ import org.apache.shiro.authz.annotation.RequiresPermissions; ...@@ -45,13 +45,10 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -219,9 +216,6 @@ public class ContentAction extends BaseAction { ...@@ -219,9 +216,6 @@ public class ContentAction extends BaseAction {
if(StringUtil.isBlank(content.getContentDatetime())){ if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime"))); 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"));
}
contentBiz.save(content); contentBiz.save(content);
return ResultData.build().success(content); return ResultData.build().success(content);
} }
...@@ -307,9 +301,6 @@ public class ContentAction extends BaseAction { ...@@ -307,9 +301,6 @@ public class ContentAction extends BaseAction {
if(StringUtil.isBlank(content.getContentDatetime())){ if(StringUtil.isBlank(content.getContentDatetime())){
return ResultData.build().error(getResString("err.empty", this.getResString("content.datetime"))); 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"));
}
contentBiz.saveOrUpdate(content); contentBiz.saveOrUpdate(content);
return ResultData.build().success(content); return ResultData.build().success(content);
} }
......
...@@ -250,6 +250,7 @@ public class GeneraterAction extends BaseAction { ...@@ -250,6 +250,7 @@ public class GeneraterAction extends BaseAction {
} }
contentBean.setCategoryId(category.getId()); contentBean.setCategoryId(category.getId());
contentBean.setCategoryType(category.getCategoryType()); contentBean.setCategoryType(category.getCategoryType());
contentBean.setOrderBy("date");
//将文章列表标签中的中的参数 //将文章列表标签中的中的参数
articleIdList = contentBiz.queryIdsByCategoryIdForParserAndNotCover(contentBean); articleIdList = contentBiz.queryIdsByCategoryIdForParserAndNotCover(contentBean);
// 分类是列表 // 分类是列表
......
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.action.web; package net.mingsoft.cms.action.web;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.entity.ResultData; import net.mingsoft.base.entity.ResultData;
import net.mingsoft.basic.bean.EUListBean; import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.cms.biz.ICategoryBiz; import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.entity.CategoryEntity; import net.mingsoft.cms.entity.CategoryEntity;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.BindingResult; import springfox.documentation.annotations.ApiIgnore;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import java.util.List;
/**
import javax.servlet.http.HttpServletRequest; * 分类管理控制层
import javax.servlet.http.HttpServletResponse; * @author 铭飞开发团队
import java.util.List; * 创建日期:2019-11-28 15:12:32<br/>
/** * 历史修订:<br/>
* 分类管理控制层 */
* @author 铭飞开发团队 @Api(tags={"前端-内容模块接口"})
* 创建日期:2019-11-28 15:12:32<br/> @Controller("WebcmsCategoryAction")
* 历史修订:<br/> @RequestMapping("/cms/category")
*/ public class CategoryAction extends net.mingsoft.cms.action.BaseAction{
@Api(tags={"前端-内容模块接口"})
@Controller("WebcmsCategoryAction")
@RequestMapping("/cms/category") /**
public class CategoryAction extends net.mingsoft.cms.action.BaseAction{ * 注入分类业务层
*/
@Autowired
/** private ICategoryBiz categoryBiz;
* 注入分类业务层
*/ /**
@Autowired * 查询分类列表
private ICategoryBiz categoryBiz; * @param category 分类实体
*/
/** @ApiOperation(value = "查询分类列表接口")
* 查询分类列表 @ApiImplicitParams({
* @param category 分类实体 @ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"),
*/ })
@ApiOperation(value = "查询分类列表接口") @PostMapping(value="/list")
@ApiImplicitParams({ @ResponseBody
@ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"), public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category) {
}) BasicUtil.startPage();
@PostMapping(value="/list") List categoryList = categoryBiz.query(category);
@ResponseBody return ResultData.build().success(new EUListBean(categoryList,(int)BasicUtil.endPage(categoryList).getTotal()));
public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category) { }
BasicUtil.startPage();
List categoryList = categoryBiz.query(category);
return ResultData.build().success(new EUListBean(categoryList,(int)BasicUtil.endPage(categoryList).getTotal())); /**
} * 获取分类
* @param category 分类实体
*/
/** @ApiOperation(value = "获取分类列表接口")
* 获取分类 @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
* @param category 分类实体 @GetMapping("/get")
*/ @ResponseBody
@ApiOperation(value = "获取分类列表接口") public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category){
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query") if(category.getId()==null) {
@GetMapping("/get") return ResultData.build().error();
@ResponseBody }
public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category){ CategoryEntity _category = (CategoryEntity)categoryBiz.getById(category.getId());
if(category.getId()==null) { return ResultData.build().success(_category);
return ResultData.build().error(); }
}
CategoryEntity _category = (CategoryEntity)categoryBiz.getById(category.getId()); }
return ResultData.build().success(_category);
}
}
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.action.web; package net.mingsoft.cms.action.web;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import net.mingsoft.base.entity.ResultData; import net.mingsoft.base.entity.ResultData;
import net.mingsoft.basic.bean.EUListBean; import net.mingsoft.basic.bean.EUListBean;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
import net.mingsoft.cms.bean.ContentBean; import net.mingsoft.cms.bean.ContentBean;
import net.mingsoft.cms.biz.IContentBiz; import net.mingsoft.cms.biz.IContentBiz;
import net.mingsoft.cms.biz.IHistoryLogBiz; import net.mingsoft.cms.biz.IHistoryLogBiz;
import net.mingsoft.cms.entity.ContentEntity; import net.mingsoft.cms.entity.ContentEntity;
import net.mingsoft.cms.entity.HistoryLogEntity; import net.mingsoft.cms.entity.HistoryLogEntity;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*;
import org.springframework.validation.BindingResult; import springfox.documentation.annotations.ApiIgnore;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore; import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest; /**
import javax.servlet.http.HttpServletResponse; * 文章管理控制层
import java.util.Date; * @author 铭飞开发团队
import java.util.List; * 创建日期:2019-11-28 15:12:32<br/>
/** * 历史修订:<br/>
* 文章管理控制层 */
* @author 铭飞开发团队 @Api(tags={"前端-内容模块接口"})
* 创建日期:2019-11-28 15:12:32<br/> @Controller("WebcmsContentAction")
* 历史修订:<br/> @RequestMapping("/cms/content")
*/ public class ContentAction extends net.mingsoft.cms.action.BaseAction{
@Api(tags={"前端-内容模块接口"})
@Controller("WebcmsContentAction")
@RequestMapping("/cms/content") /**
public class ContentAction extends net.mingsoft.cms.action.BaseAction{ * 注入文章业务层
*/
@Autowired
/** private IContentBiz contentBiz;
* 注入文章业务层
*/ @Autowired
@Autowired private IHistoryLogBiz historyLogBiz;
private IContentBiz contentBiz;
/**
@Autowired * 查询文章列表接口
private IHistoryLogBiz historyLogBiz; * @param content 文章
* @return
/** */
* 查询文章列表接口 @ApiOperation(value = "查询文章列表接口")
* @param content 文章 @ApiImplicitParams({
* @return @ApiImplicitParam(name = "contentTitle", value = "文章标题", required =false,paramType="query"),
*/ @ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"),
@ApiOperation(value = "查询文章列表接口") @ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"),
@ApiImplicitParams({ @ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"),
@ApiImplicitParam(name = "contentTitle", value = "文章标题", required =false,paramType="query"), @ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"),
@ApiImplicitParam(name = "categoryId", value = "所属栏目", required =false,paramType="query"), @ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"),
@ApiImplicitParam(name = "contentType", value = "文章类型", required =false,paramType="query"), @ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"),
@ApiImplicitParam(name = "contentDisplay", value = "是否显示", required =false,paramType="query"), })
@ApiImplicitParam(name = "contentAuthor", value = "文章作者", required =false,paramType="query"), @PostMapping("/list")
@ApiImplicitParam(name = "contentSource", value = "文章来源", required =false,paramType="query"), @ResponseBody
@ApiImplicitParam(name = "contentDatetime", value = "发布时间", required =false,paramType="query"), public ResultData list(@ModelAttribute @ApiIgnore ContentBean content) {
}) BasicUtil.startPage();
@PostMapping("/list") List contentList = contentBiz.query(content);
@ResponseBody return ResultData.build().success(new EUListBean(contentList,(int)BasicUtil.endPage(contentList).getTotal()));
public ResultData list(@ModelAttribute @ApiIgnore ContentBean content) { }
BasicUtil.startPage();
List contentList = contentBiz.query(content);
return ResultData.build().success(new EUListBean(contentList,(int)BasicUtil.endPage(contentList).getTotal())); /**
} * 获取文章列表接口
* @param content 文章
* @return
/** */
* 获取文章列表接口 @ApiOperation(value = "获取文章列表接口")
* @param content 文章 @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
* @return @GetMapping("/get")
*/ @ResponseBody
@ApiOperation(value = "获取文章列表接口") public ResultData get(@ModelAttribute @ApiIgnore ContentEntity content){
@ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query") if(content.getId()==null) {
@GetMapping("/get") return ResultData.build().error();
@ResponseBody }
public ResultData get(@ModelAttribute @ApiIgnore ContentEntity content){ ContentEntity _content = (ContentEntity)contentBiz.getById(content.getId());;
if(content.getId()==null) { return ResultData.build().success(_content);
return ResultData.build().error(); }
}
ContentEntity _content = (ContentEntity)contentBiz.getById(content.getId());; /**
return ResultData.build().success(_content); * 查看文章点击数
} * @param contentId 文章编号
* @return
/** */
* 查看文章点击数 @ApiOperation(value = "查看文章点击数")
* @param contentId 文章编号 @ApiImplicitParam(name = "contentId", value = "文章编号", required = true,paramType="path")
* @return @GetMapping(value = "/{contentId}/hit")
*/ @ResponseBody
@ApiOperation(value = "查看文章点击数") public String hit(@PathVariable @ApiIgnore String contentId) {
@ApiImplicitParam(name = "contentId", value = "文章编号", required = true,paramType="path") if(StringUtils.isEmpty(contentId)){
@GetMapping(value = "/{contentId}/hit") return "document.write(0)";
@ResponseBody }
public String hit(@PathVariable @ApiIgnore String contentId) { //获取ip
if(StringUtils.isEmpty(contentId)){ String ip = BasicUtil.getIp();
return "document.write(0)"; //获取端口(移动/web..)
} boolean isMobileDevice = BasicUtil.isMobileDevice();
//获取ip
String ip = BasicUtil.getIp(); ContentEntity content = contentBiz.getById(contentId);
//获取端口(移动/web..) if(content == null){
boolean isMobileDevice = BasicUtil.isMobileDevice(); return "document.write(0)";
}
ContentEntity content = contentBiz.getById(contentId); //浏览数+1
if(content == null){ if(ObjectUtil.isNotEmpty(content.getContentHit())){
return "document.write(0)"; content.setContentHit(content.getContentHit()+1);
} }else {
//浏览数+1 content.setContentHit(1);
if(ObjectUtil.isNotEmpty(content.getContentHit())){ }
content.setContentHit(content.getContentHit()+1); contentBiz.updateById(content);
}else {
content.setContentHit(1); // cms_history 增加相应记录
} HistoryLogEntity entity = new HistoryLogEntity();
contentBiz.updateEntity(content); entity.setHlIsMobile(isMobileDevice);
entity.setHlIp(ip);
// cms_history 增加相应记录 entity.setContentId(content.getId());
HistoryLogEntity entity = new HistoryLogEntity(); entity.setCreateDate(new Date());
entity.setHlIsMobile(isMobileDevice); historyLogBiz.saveEntity(entity);
entity.setHlIp(ip);
entity.setContentId(content.getId()); return "document.write(" + content.getContentHit() + ")";
entity.setCreateDate(new Date()); }
historyLogBiz.saveEntity(entity);
}
return "document.write(" + content.getContentHit() + ")";
}
}
...@@ -18,33 +18,33 @@ ...@@ -18,33 +18,33 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.bean; package net.mingsoft.cms.bean;
import net.mingsoft.cms.entity.CategoryEntity; import net.mingsoft.cms.entity.CategoryEntity;
/** /**
* 文章实体 * 文章实体
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/> * 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
public class CategoryBean extends CategoryEntity { public class CategoryBean extends CategoryEntity {
/** /**
* 文章编号 * 文章编号
*/ */
private String articleId; private String articleId;
public String getArticleId() { public String getArticleId() {
return articleId; return articleId;
} }
public void setArticleId(String articleId) { public void setArticleId(String articleId) {
this.articleId = articleId; this.articleId = articleId;
} }
} }
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.bean; package net.mingsoft.cms.bean;
import com.alibaba.fastjson.annotation.JSONField; import net.mingsoft.cms.entity.ContentEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import net.mingsoft.cms.entity.ContentEntity; /**
import org.springframework.format.annotation.DateTimeFormat; * 文章实体bean
*/
import java.util.Date; public class ContentBean extends ContentEntity {
/** // /**
* 文章实体bean // * 静态化地址
*/ // */
public class ContentBean extends ContentEntity { // private String staticUrl;
// /** /**
// * 静态化地址 * 开始时间
// */ */
// private String staticUrl; private String beginTime;
/** /**
* 开始时间 * 结束时间
*/ */
private String beginTime; private String endTime;
/** /**
* 结束时间 * 属性标记
*/ */
private String endTime; private String flag;
/** /**
* 属性标记 * 不包含属性标记
*/ */
private String flag; private String noflag;
/** /**
* 不包含属性标记 * 栏目类型,用于筛选文章列表
*/ */
private String noflag; private String categoryType;
/** /**
* 栏目类型,用于筛选文章列表 * 栏目属性,用于筛选文章列表
*/ */
private String categoryType; private String categoryFlag;
/** public String getCategoryType() {
* 栏目属性,用于筛选文章列表 return categoryType;
*/ }
private String categoryFlag;
public void setCategoryType(String categoryType) {
public String getCategoryType() { this.categoryType = categoryType;
return categoryType; }
}
public String getCategoryFlag() {
public void setCategoryType(String categoryType) { return categoryFlag;
this.categoryType = categoryType; }
}
public void setCategoryFlag(String categoryFlag) {
public String getCategoryFlag() { this.categoryFlag = categoryFlag;
return categoryFlag; }
}
public String getBeginTime() {
public void setCategoryFlag(String categoryFlag) { return beginTime;
this.categoryFlag = categoryFlag; }
}
public void setBeginTime(String beginTime) {
public String getBeginTime() { this.beginTime = beginTime;
return beginTime; }
}
public String getEndTime() {
public void setBeginTime(String beginTime) { return endTime;
this.beginTime = beginTime; }
}
public void setEndTime(String endTime) {
public String getEndTime() { this.endTime = endTime;
return endTime; }
}
public String getFlag() {
public void setEndTime(String endTime) { return flag;
this.endTime = endTime; }
}
public void setFlag(String flag) {
public String getFlag() { this.flag = flag;
return flag; }
}
public String getNoflag() {
public void setFlag(String flag) { return noflag;
this.flag = flag; }
}
public void setNoflag(String noflag) {
public String getNoflag() { this.noflag = noflag;
return noflag; }
} }
public void setNoflag(String noflag) {
this.noflag = noflag;
}
}
...@@ -18,44 +18,44 @@ ...@@ -18,44 +18,44 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.biz; package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz; import net.mingsoft.base.biz.IBaseBiz;
import net.mingsoft.cms.entity.CategoryEntity; import net.mingsoft.cms.entity.CategoryEntity;
import java.util.List; import java.util.List;
/** /**
* 分类业务 * 分类业务
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/> * 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
public interface ICategoryBiz extends IBaseBiz<CategoryEntity> { public interface ICategoryBiz extends IBaseBiz<CategoryEntity> {
/** /**
* 查询当前分类下的所有子分类,包含自身 * 查询当前分类下的所有子分类,包含自身
* @param category 通过setId指定栏目id * @param category 通过setId指定栏目id
* @return * @return
*/ */
List<CategoryEntity> queryChildren(CategoryEntity category); List<CategoryEntity> queryChildren(CategoryEntity category);
void saveEntity(CategoryEntity entity); void saveEntity(CategoryEntity entity);
/**更新父级及子集 /**更新父级及子集
* @param entity * @param entity
*/ */
void updateEntity(CategoryEntity entity); void updateEntity(CategoryEntity entity);
/**只更新自身 /**只更新自身
* @param entity * @param entity
*/ */
void update(CategoryEntity entity); void update(CategoryEntity entity);
void delete(String categoryId); void delete(String categoryId);
void copyCategory(CategoryEntity entity); void copyCategory(CategoryEntity entity);
} }
...@@ -18,19 +18,19 @@ ...@@ -18,19 +18,19 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.biz; package net.mingsoft.cms.biz;
import net.mingsoft.base.biz.IBaseBiz; import net.mingsoft.base.biz.IBaseBiz;
/** /**
* 文章浏览记录业务 * 文章浏览记录业务
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-12-23 9:24:03<br/> * 创建日期:2019-12-23 9:24:03<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
public interface IHistoryLogBiz extends IBaseBiz { public interface IHistoryLogBiz extends IBaseBiz {
} }
...@@ -18,301 +18,301 @@ ...@@ -18,301 +18,301 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.biz.impl; package net.mingsoft.cms.biz.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import net.mingsoft.base.biz.impl.BaseBizImpl; import net.mingsoft.base.biz.impl.BaseBizImpl;
import net.mingsoft.base.dao.IBaseDao; import net.mingsoft.base.dao.IBaseDao;
import net.mingsoft.basic.util.PinYinUtil; import net.mingsoft.basic.util.PinYinUtil;
import net.mingsoft.cms.biz.ICategoryBiz; import net.mingsoft.cms.biz.ICategoryBiz;
import net.mingsoft.cms.dao.ICategoryDao; import net.mingsoft.cms.dao.ICategoryDao;
import net.mingsoft.cms.dao.IContentDao; import net.mingsoft.cms.dao.IContentDao;
import net.mingsoft.cms.entity.CategoryEntity; import net.mingsoft.cms.entity.CategoryEntity;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* 分类管理持久化层 * 分类管理持久化层
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/> * 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
@Service("cmscategoryBizImpl") @Service("cmscategoryBizImpl")
@Transactional(rollbackFor = RuntimeException.class) @Transactional(rollbackFor = RuntimeException.class)
public class CategoryBizImpl extends BaseBizImpl<ICategoryDao, CategoryEntity> implements ICategoryBiz { public class CategoryBizImpl extends BaseBizImpl<ICategoryDao, CategoryEntity> implements ICategoryBiz {
@Autowired @Autowired
private ICategoryDao categoryDao; private ICategoryDao categoryDao;
@Autowired @Autowired
private IContentDao contentDao; private IContentDao contentDao;
@Override @Override
protected IBaseDao getDao() { protected IBaseDao getDao() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return categoryDao; return categoryDao;
} }
@Override @Override
public List<CategoryEntity> queryChildren(CategoryEntity category) { public List<CategoryEntity> queryChildren(CategoryEntity category) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return categoryDao.queryChildren(category); return categoryDao.queryChildren(category);
} }
@Override @Override
public void saveEntity(CategoryEntity categoryEntity) { public void saveEntity(CategoryEntity categoryEntity) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle()); String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle());
//如果用户自己填入了拼音则使用用户的 //如果用户自己填入了拼音则使用用户的
if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) { if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) {
pingYin = categoryEntity.getCategoryPinyin(); pingYin = categoryEntity.getCategoryPinyin();
} }
CategoryEntity category = new CategoryEntity(); CategoryEntity category = new CategoryEntity();
category.setCategoryPinyin(pingYin); category.setCategoryPinyin(pingYin);
Object categoryBizEntity = getEntity(category); Object categoryBizEntity = getEntity(category);
setParentId(categoryEntity); setParentId(categoryEntity);
categoryEntity.setCategoryPinyin(pingYin); categoryEntity.setCategoryPinyin(pingYin);
//更新新的父级 //更新新的父级
if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) { if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
CategoryEntity parent = getById(categoryEntity.getCategoryId()); CategoryEntity parent = getById(categoryEntity.getCategoryId());
//如果之前是叶子节点就更新 //如果之前是叶子节点就更新
if (parent.getLeaf()) { if (parent.getLeaf()) {
parent.setLeaf(false); parent.setLeaf(false);
updateById(parent); updateById(parent);
} }
} }
categoryEntity.setLeaf(false); categoryEntity.setLeaf(false);
//如果是新增栏目一定是叶子节点 //如果是新增栏目一定是叶子节点
if (StrUtil.isEmpty(categoryEntity.getId())) { if (StrUtil.isEmpty(categoryEntity.getId())) {
categoryEntity.setLeaf(true); categoryEntity.setLeaf(true);
} }
super.save(categoryEntity); super.save(categoryEntity);
//拼音存在则拼接id //拼音存在则拼接id
if (categoryBizEntity != null) { if (categoryBizEntity != null) {
categoryEntity.setCategoryPinyin(pingYin + categoryEntity.getId()); categoryEntity.setCategoryPinyin(pingYin + categoryEntity.getId());
} }
CategoryEntity parentCategory = null; CategoryEntity parentCategory = null;
if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) { if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) {
parentCategory = (CategoryEntity) getById(categoryEntity.getCategoryId()); parentCategory = (CategoryEntity) getById(categoryEntity.getCategoryId());
} }
//保存链接地址 //保存链接地址
String path = ObjectUtil.isNotNull(parentCategory) ? parentCategory.getCategoryPath() : ""; String path = ObjectUtil.isNotNull(parentCategory) ? parentCategory.getCategoryPath() : "";
categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin()); categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
setTopId(categoryEntity); setTopId(categoryEntity);
super.updateById(categoryEntity); super.updateById(categoryEntity);
} }
private void setParentId(CategoryEntity categoryEntity) { private void setParentId(CategoryEntity categoryEntity) {
String path = ""; String path = "";
if (StringUtils.isNotEmpty(categoryEntity.getCategoryId()) && Long.parseLong(categoryEntity.getCategoryId()) > 0) { if (StringUtils.isNotEmpty(categoryEntity.getCategoryId()) && Long.parseLong(categoryEntity.getCategoryId()) > 0) {
CategoryEntity category = (CategoryEntity) getById(categoryEntity.getCategoryId()); CategoryEntity category = (CategoryEntity) getById(categoryEntity.getCategoryId());
path = category.getCategoryPath(); path = category.getCategoryPath();
if (StringUtils.isEmpty(category.getCategoryParentIds())) { if (StringUtils.isEmpty(category.getCategoryParentIds())) {
categoryEntity.setCategoryParentIds(category.getId()); categoryEntity.setCategoryParentIds(category.getId());
} else { } else {
categoryEntity.setCategoryParentIds(category.getCategoryParentIds() + "," + category.getId()); categoryEntity.setCategoryParentIds(category.getCategoryParentIds() + "," + category.getId());
} }
} else { } else {
categoryEntity.setCategoryParentIds(null); categoryEntity.setCategoryParentIds(null);
} }
//保存时先保存再修改链接地址,修改时直接修改 //保存时先保存再修改链接地址,修改时直接修改
if (StringUtils.isNotBlank(categoryEntity.getId())) { if (StringUtils.isNotBlank(categoryEntity.getId())) {
categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin()); categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
} }
} }
private void setChildParentId(CategoryEntity categoryEntity, String topId) { private void setChildParentId(CategoryEntity categoryEntity, String topId) {
CategoryEntity category = new CategoryEntity(); CategoryEntity category = new CategoryEntity();
category.setCategoryId(categoryEntity.getId()); category.setCategoryId(categoryEntity.getId());
List<CategoryEntity> list = categoryDao.query(category); List<CategoryEntity> list = categoryDao.query(category);
list.forEach(x -> { list.forEach(x -> {
if (StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) { if (StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) {
x.setCategoryParentIds(categoryEntity.getId()); x.setCategoryParentIds(categoryEntity.getId());
} else { } else {
x.setCategoryParentIds(categoryEntity.getCategoryParentIds() + "," + categoryEntity.getId()); x.setCategoryParentIds(categoryEntity.getCategoryParentIds() + "," + categoryEntity.getId());
} }
//更新topid //更新topid
x.setTopId(topId); x.setTopId(topId);
String path = categoryEntity.getCategoryPath(); String path = categoryEntity.getCategoryPath();
//判断是否有parentIds //判断是否有parentIds
x.setCategoryPath(path + "/" + x.getCategoryPinyin()); x.setCategoryPath(path + "/" + x.getCategoryPinyin());
//去除多余的/符号 //去除多余的/符号
super.updateEntity(x); super.updateEntity(x);
setChildParentId(x, topId); setChildParentId(x, topId);
}); });
} }
@Override @Override
public void updateEntity(CategoryEntity entity) { public void updateEntity(CategoryEntity entity) {
setParentId(entity); setParentId(entity);
String pingYin = entity.getCategoryPinyin(); String pingYin = entity.getCategoryPinyin();
if (StrUtil.isNotBlank(pingYin)) { if (StrUtil.isNotBlank(pingYin)) {
CategoryEntity category = new CategoryEntity(); CategoryEntity category = new CategoryEntity();
category.setCategoryPinyin(pingYin); category.setCategoryPinyin(pingYin);
CategoryEntity categoryBizEntity = (CategoryEntity) getEntity(category); CategoryEntity categoryBizEntity = (CategoryEntity) getEntity(category);
//拼音存在则拼接id //拼音存在则拼接id
if (categoryBizEntity != null && !categoryBizEntity.getId().equals(entity.getId())) { if (categoryBizEntity != null && !categoryBizEntity.getId().equals(entity.getId())) {
entity.setCategoryPinyin(pingYin + entity.getId()); entity.setCategoryPinyin(pingYin + entity.getId());
} }
} }
setParentLeaf(entity); setParentLeaf(entity);
setTopId(entity); setTopId(entity);
//如果父级栏目和父级id为空字符串则转化成null //如果父级栏目和父级id为空字符串则转化成null
if (StringUtils.isEmpty(entity.getCategoryId())) { if (StringUtils.isEmpty(entity.getCategoryId())) {
entity.setCategoryId(null); entity.setCategoryId(null);
} }
if (StringUtils.isEmpty(entity.getCategoryParentIds())) { if (StringUtils.isEmpty(entity.getCategoryParentIds())) {
entity.setCategoryParentIds(null); entity.setCategoryParentIds(null);
} }
categoryDao.updateEntity(entity); categoryDao.updateEntity(entity);
//更新子节点所有父节点id和topid //更新子节点所有父节点id和topid
//如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid //如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid
String topId = entity.getTopId(); String topId = entity.getTopId();
if (topId.equals("0")) { if (topId.equals("0")) {
topId = entity.getId(); topId = entity.getId();
} }
setChildParentId(entity, topId); setChildParentId(entity, topId);
} }
@Override @Override
public void update(CategoryEntity entity) { public void update(CategoryEntity entity) {
super.updateEntity(entity); super.updateEntity(entity);
} }
@Override @Override
public void delete(String categoryId) { public void delete(String categoryId) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId); CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId);
//删除父类 //删除父类
if (category != null) { if (category != null) {
List<CategoryEntity> childrenList = categoryDao.queryChildren(category); List<CategoryEntity> childrenList = categoryDao.queryChildren(category);
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();
for (int i = 0; i < childrenList.size(); i++) { for (int i = 0; i < childrenList.size(); i++) {
//删除子类 //删除子类
ids.add(childrenList.get(i).getId()); ids.add(childrenList.get(i).getId());
} }
categoryDao.deleteBatchIds(ids); categoryDao.deleteBatchIds(ids);
// 删除文章 // 删除文章
contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()])); contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()]));
//获取被删节点的父节点 //获取被删节点的父节点
CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId()); CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId());
//获取被删节点的所属栏目的其他节点 //获取被删节点的所属栏目的其他节点
List<CategoryEntity> childNode = categoryDao.queryChildren(parentNode); List<CategoryEntity> childNode = categoryDao.queryChildren(parentNode);
//判断删除的是否为主节点 //判断删除的是否为主节点
if (parentNode != null) { if (parentNode != null) {
UpdateWrapper<CategoryEntity> updateWrapper = new UpdateWrapper<>(); UpdateWrapper<CategoryEntity> updateWrapper = new UpdateWrapper<>();
//如果没有子节点进行更新代码 //如果没有子节点进行更新代码
if (childNode.size() == 1) { if (childNode.size() == 1) {
updateWrapper.eq("id", parentNode.getId()).set("leaf", 1); updateWrapper.eq("id", parentNode.getId()).set("leaf", 1);
categoryDao.update(null, updateWrapper); categoryDao.update(null, updateWrapper);
} }
} }
} }
} }
/** /**
* 设置父级叶子节点 * 设置父级叶子节点
* @param entity * @param entity
*/ */
private void setParentLeaf(CategoryEntity entity) { private void setParentLeaf(CategoryEntity entity) {
CategoryEntity categoryEntity = getById(entity.getId()); CategoryEntity categoryEntity = getById(entity.getId());
//如果父级不为空并且修改了父级则需要更新父级 //如果父级不为空并且修改了父级则需要更新父级
if (entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())) { if (entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())) {
//更新旧的父级 //更新旧的父级
if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) { if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
CategoryEntity parent = getById(categoryEntity.getCategoryId()); CategoryEntity parent = getById(categoryEntity.getCategoryId());
//如果修改了父级则需要判断父级是否还有子节点 //如果修改了父级则需要判断父级是否还有子节点
boolean leaf = parent.getLeaf(); boolean leaf = parent.getLeaf();
//查找不等于当前更新的分类子集,有则不是叶子节点 //查找不等于当前更新的分类子集,有则不是叶子节点
QueryWrapper<CategoryEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<CategoryEntity> queryWrapper = new QueryWrapper<>();
parent.setLeaf(count(queryWrapper.eq("category_id", parent.getId()).ne("id", entity.getId())) == 0); parent.setLeaf(count(queryWrapper.eq("category_id", parent.getId()).ne("id", entity.getId())) == 0);
if (leaf != parent.getLeaf()) { if (leaf != parent.getLeaf()) {
updateById(parent); updateById(parent);
} }
} }
//更新新的父级 //更新新的父级
if (StrUtil.isNotBlank(entity.getCategoryId()) && !"0".equals(entity.getCategoryId())) { if (StrUtil.isNotBlank(entity.getCategoryId()) && !"0".equals(entity.getCategoryId())) {
CategoryEntity parent = getById(entity.getCategoryId()); CategoryEntity parent = getById(entity.getCategoryId());
//如果之前是叶子节点就更新 //如果之前是叶子节点就更新
if (parent.getLeaf()) { if (parent.getLeaf()) {
parent.setLeaf(false); parent.setLeaf(false);
updateById(parent); updateById(parent);
} }
} }
} }
} }
/** /**
* 设置顶级id * 设置顶级id
* @param entity * @param entity
*/ */
private void setTopId(CategoryEntity entity) { private void setTopId(CategoryEntity entity) {
String categoryParentId = entity.getCategoryParentIds(); String categoryParentId = entity.getCategoryParentIds();
if (StrUtil.isNotBlank(categoryParentId)) { if (StrUtil.isNotBlank(categoryParentId)) {
String[] ids = categoryParentId.split(","); String[] ids = categoryParentId.split(",");
//如果有ParentId就取第一个 //如果有ParentId就取第一个
if (ids.length > 0) { if (ids.length > 0) {
entity.setTopId(ids[0]); entity.setTopId(ids[0]);
return; return;
} }
} }
entity.setTopId("0"); entity.setTopId("0");
} }
@Override @Override
public void copyCategory(CategoryEntity category) { public void copyCategory(CategoryEntity category) {
String oldId = category.getId(); String oldId = category.getId();
//先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目 //先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目
category = getById(oldId); category = getById(oldId);
//id、拼音和路径按照原来的业务逻辑生成 //id、拼音和路径按照原来的业务逻辑生成
category.setId(null); category.setId(null);
category.setCategoryPinyin(null); category.setCategoryPinyin(null);
category.setCategoryPath(null); category.setCategoryPath(null);
saveEntity(category); saveEntity(category);
//传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用 //传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用
recursionCopyChilds(oldId, category.getId()); recursionCopyChilds(oldId, category.getId());
} }
/* /*
* 递归复制子栏目 * 递归复制子栏目
* @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据) * @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据)
* @param newParentId:复制栏目后新父级的id(新插入数据的id) * @param newParentId:复制栏目后新父级的id(新插入数据的id)
* */ * */
private void recursionCopyChilds(String oldParentId, String newParentId) { private void recursionCopyChilds(String oldParentId, String newParentId) {
CategoryEntity _category = new CategoryEntity(); CategoryEntity _category = new CategoryEntity();
_category.setCategoryId(oldParentId); _category.setCategoryId(oldParentId);
List<CategoryEntity> childs = query(_category); List<CategoryEntity> childs = query(_category);
for (CategoryEntity child : childs) { for (CategoryEntity child : childs) {
String childId = child.getId(); String childId = child.getId();
//id、拼音和路径按照原来的业务逻辑生成 //id、拼音和路径按照原来的业务逻辑生成
child.setId(null); child.setId(null);
child.setCategoryPinyin(null); child.setCategoryPinyin(null);
child.setCategoryPath(null); child.setCategoryPath(null);
child.setCategoryId(newParentId); child.setCategoryId(newParentId);
saveEntity(child); saveEntity(child);
//如果该栏目下还有子栏目则继续复制该栏目里的子栏目 //如果该栏目下还有子栏目则继续复制该栏目里的子栏目
recursionCopyChilds(childId, child.getId()); recursionCopyChilds(childId, child.getId());
} }
} }
} }
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.biz.impl; package net.mingsoft.cms.biz.impl;
import net.mingsoft.cms.biz.IHistoryLogBiz; import net.mingsoft.base.biz.impl.BaseBizImpl;
import org.springframework.beans.factory.annotation.Autowired; import net.mingsoft.base.dao.IBaseDao;
import org.springframework.stereotype.Service; import net.mingsoft.cms.biz.IHistoryLogBiz;
import net.mingsoft.base.biz.impl.BaseBizImpl; import net.mingsoft.cms.dao.ICmsHistoryLogDao;
import net.mingsoft.base.dao.IBaseDao; import org.springframework.beans.factory.annotation.Autowired;
import net.mingsoft.cms.dao.ICmsHistoryLogDao; import org.springframework.stereotype.Service;
/** /**
* 文章浏览记录管理持久化层 * 文章浏览记录管理持久化层
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-12-23 9:24:03<br/> * 创建日期:2019-12-23 9:24:03<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
@Service("cmshistoryLogBizImpl") @Service("cmshistoryLogBizImpl")
public class HistoryLogBizImpl extends BaseBizImpl implements IHistoryLogBiz { public class HistoryLogBizImpl extends BaseBizImpl implements IHistoryLogBiz {
@Autowired @Autowired
private ICmsHistoryLogDao historyLogDao; private ICmsHistoryLogDao historyLogDao;
@Override @Override
protected IBaseDao getDao() { protected IBaseDao getDao() {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return historyLogDao; return historyLogDao;
} }
} }
...@@ -18,17 +18,17 @@ ...@@ -18,17 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.constant; package net.mingsoft.cms.constant;
/** /**
* @Author: 铭飞开源团队--huise * @Author: 铭飞开源团队--huise
* @Date: 2019/8/9 20:51 * @Date: 2019/8/9 20:51
*/ */
public class Const { public class Const {
/** /**
* 资源文件 * 资源文件
*/ */
public final static String RESOURCES = "net.mingsoft.cms.resources.resources"; public final static String RESOURCES = "net.mingsoft.cms.resources.resources";
} }
...@@ -18,30 +18,30 @@ ...@@ -18,30 +18,30 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.dao; package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao; import net.mingsoft.base.dao.IBaseDao;
import net.mingsoft.cms.entity.CategoryEntity; import net.mingsoft.cms.entity.CategoryEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
/** /**
* 分类持久层 * 分类持久层
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-11-28 15:12:32<br/> * 创建日期:2019-11-28 15:12:32<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
@Component("cmsCategoryDao") @Component("cmsCategoryDao")
public interface ICategoryDao extends IBaseDao<CategoryEntity> { public interface ICategoryDao extends IBaseDao<CategoryEntity> {
/** /**
* 查询当前分类下面的所有子分类 * 查询当前分类下面的所有子分类
* @param category 必须存在categoryId categoryParentId * @param category 必须存在categoryId categoryParentId
* @return * @return
*/ */
public List<CategoryEntity> queryChildren(CategoryEntity category); public List<CategoryEntity> queryChildren(CategoryEntity category);
} }
...@@ -18,17 +18,17 @@ ...@@ -18,17 +18,17 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.dao; package net.mingsoft.cms.dao;
import net.mingsoft.base.dao.IBaseDao; import net.mingsoft.base.dao.IBaseDao;
/** /**
* 文章浏览记录持久层 * 文章浏览记录持久层
* @author 铭飞开发团队 * @author 铭飞开发团队
* 创建日期:2019-12-23 9:24:03<br/> * 创建日期:2019-12-23 9:24:03<br/>
* 历史修订:<br/> * 历史修订:<br/>
*/ */
public interface ICmsHistoryLogDao extends IBaseDao { public interface ICmsHistoryLogDao extends IBaseDao {
} }
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<result column="content_description" property="contentDescription" /><!--描述 --> <result column="content_description" property="contentDescription" /><!--描述 -->
<result column="content_keyword" property="contentKeyword" /><!--关键字 --> <result column="content_keyword" property="contentKeyword" /><!--关键字 -->
<result column="content_details" property="contentDetails" /><!--文章内容 --> <result column="content_details" property="contentDetails" /><!--文章内容 -->
<result column="content_url" property="contentUrl" /><!--文章跳转链接地址 --> <result column="content_out_link" property="contentOutLink" /><!--文章跳转链接地址 -->
<result column="content_hit" property="contentHit" /><!--点击次数 --> <result column="content_hit" property="contentHit" /><!--点击次数 -->
<result column="create_by" property="createBy" /><!--创建人 --> <result column="create_by" property="createBy" /><!--创建人 -->
<result column="create_date" property="createDate" /><!--创建时间 --> <result column="create_date" property="createDate" /><!--创建时间 -->
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<result column="content_description" property="contentDescription" /><!--描述 --> <result column="content_description" property="contentDescription" /><!--描述 -->
<result column="content_keyword" property="contentKeyword" /><!--关键字 --> <result column="content_keyword" property="contentKeyword" /><!--关键字 -->
<result column="content_details" property="contentDetails" /><!--文章内容 --> <result column="content_details" property="contentDetails" /><!--文章内容 -->
<result column="content_url" property="contentUrl" /><!--文章跳转链接地址 --> <result column="content_out_link" property="contentOutLink" /><!--文章跳转链接地址 -->
<!-- <result column="static_url" property="staticUrl" />&lt;!&ndash;静态地址 &ndash;&gt;--> <!-- <result column="static_url" property="staticUrl" />&lt;!&ndash;静态地址 &ndash;&gt;-->
<result column="content_hit" property="contentHit" /><!--点击次数 --> <result column="content_hit" property="contentHit" /><!--点击次数 -->
<result column="create_by" property="createBy" /><!--创建人 --> <result column="create_by" property="createBy" /><!--创建人 -->
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
<if test="contentDescription != null and contentDescription != ''">content_description,</if> <if test="contentDescription != null and contentDescription != ''">content_description,</if>
<if test="contentKeyword != null and contentKeyword != ''">content_keyword,</if> <if test="contentKeyword != null and contentKeyword != ''">content_keyword,</if>
<if test="contentDetails != null and contentDetails != ''">content_details,</if> <if test="contentDetails != null and contentDetails != ''">content_details,</if>
<if test="contentUrl != null and contentUrl != ''">content_url,</if> <if test="contentOutLink != null and contentOutLink != ''">content_out_link,</if>
<if test="contentHit != null">content_hit,</if> <if test="contentHit != null">content_hit,</if>
<if test="createBy &gt; 0">create_by,</if> <if test="createBy &gt; 0">create_by,</if>
<if test="createDate != null">create_date,</if> <if test="createDate != null">create_date,</if>
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
<if test="contentDescription != null ">content_description=#{contentDescription},</if> <if test="contentDescription != null ">content_description=#{contentDescription},</if>
<if test="contentKeyword != null ">content_keyword=#{contentKeyword},</if> <if test="contentKeyword != null ">content_keyword=#{contentKeyword},</if>
<if test="contentDetails != null ">content_details=#{contentDetails},</if> <if test="contentDetails != null ">content_details=#{contentDetails},</if>
<if test="contentUrl != null and contentUrl != ''">content_url=#{contentUrl},</if> <if test="contentOutLink != null and contentOutLink != ''">content_out_link=#{contentOutLink},</if>
<if test="contentHit != null">content_hit=#{contentHit},</if> <if test="contentHit != null">content_hit=#{contentHit},</if>
<if test="createBy &gt; 0">create_by=#{createBy},</if> <if test="createBy &gt; 0">create_by=#{createBy},</if>
<if test="createDate != null">create_date=#{createDate},</if> <if test="createDate != null">create_date=#{createDate},</if>
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
<if test="contentDescription != null and contentDescription != ''">and content_description=#{contentDescription}</if> <if test="contentDescription != null and contentDescription != ''">and content_description=#{contentDescription}</if>
<if test="contentKeyword != null and contentKeyword != ''">and content_keyword=#{contentKeyword}</if> <if test="contentKeyword != null and contentKeyword != ''">and content_keyword=#{contentKeyword}</if>
<if test="contentDetails != null and contentDetails != ''">and content_details=#{contentDetails}</if> <if test="contentDetails != null and contentDetails != ''">and content_details=#{contentDetails}</if>
<if test="contentUrl != null and contentUrl != ''">and content_url=#{contentUrl}</if> <if test="contentOutLink != null and contentOutLink != ''">and content_out_link=#{contentOutLink}</if>
<if test="contentHit != null">and content_hit=#{contentHit}</if> <if test="contentHit != null">and content_hit=#{contentHit}</if>
<if test="createBy &gt; 0"> and create_by=#{createBy} </if> <if test="createBy &gt; 0"> and create_by=#{createBy} </if>
<if test="createDate != null"> and create_date=#{createDate} </if> <if test="createDate != null"> and create_date=#{createDate} </if>
...@@ -236,7 +236,7 @@ ...@@ -236,7 +236,7 @@
<if test="contentDescription != null and contentDescription != ''"> and content_description=#{contentDescription}</if> <if test="contentDescription != null and contentDescription != ''"> and content_description=#{contentDescription}</if>
<if test="contentKeyword != null and contentKeyword != ''"> and content_keyword=#{contentKeyword}</if> <if test="contentKeyword != null and contentKeyword != ''"> and content_keyword=#{contentKeyword}</if>
<if test="contentDetails != null and contentDetails != ''"> and content_details=#{contentDetails}</if> <if test="contentDetails != null and contentDetails != ''"> and content_details=#{contentDetails}</if>
<if test="contentUrl != null and contentUrl != ''"> and content_url=#{contentUrl}</if> <if test="contentOutLink != null and contentOutLink != ''">and content_out_link=#{contentOutLink}</if>
<if test="contentHit != null"> and content_hit=#{contentHit}</if> <if test="contentHit != null"> and content_hit=#{contentHit}</if>
<if test="createBy &gt; 0"> and ct.create_by=#{createBy} </if> <if test="createBy &gt; 0"> and ct.create_by=#{createBy} </if>
<if test="createDate != null"> and ct.create_date=#{createDate} </if> <if test="createDate != null"> and ct.create_date=#{createDate} </if>
...@@ -273,7 +273,7 @@ ...@@ -273,7 +273,7 @@
<if test="contentDescription != null and contentDescription != ''"> and content_description=#{contentDescription}</if> <if test="contentDescription != null and contentDescription != ''"> and content_description=#{contentDescription}</if>
<if test="contentKeyword != null and contentKeyword != ''"> and content_keyword=#{contentKeyword}</if> <if test="contentKeyword != null and contentKeyword != ''"> and content_keyword=#{contentKeyword}</if>
<if test="contentDetails != null and contentDetails != ''"> and content_details=#{contentDetails}</if> <if test="contentDetails != null and contentDetails != ''"> and content_details=#{contentDetails}</if>
<if test="contentUrl != null and contentUrl != ''"> and content_url=#{contentUrl}</if> <if test="contentOutLink != null and contentOutLink != ''">and content_out_link=#{contentOutLink}</if>
<if test="contentHit != null"> and content_hit=#{contentHit}</if> <if test="contentHit != null"> and content_hit=#{contentHit}</if>
<if test="createBy &gt; 0"> and ct.create_by=#{createBy} </if> <if test="createBy &gt; 0"> and ct.create_by=#{createBy} </if>
<if test="createDate != null"> and ct.create_date=#{createDate} </if> <if test="createDate != null"> and ct.create_date=#{createDate} </if>
...@@ -287,10 +287,10 @@ ...@@ -287,10 +287,10 @@
<!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合 --> <!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合 -->
<select id="queryIdsByCategoryIdForParser" resultMap="resultBean" > <select id="queryIdsByCategoryIdForParser" resultMap="resultBean" >
select select
ct.id article_id,c.* ct.id article_id,ct.content_img litpic,c.*
FROM cms_content ct FROM cms_content ct
LEFT JOIN cms_category c ON ct.category_id = c.id LEFT JOIN cms_category c ON ct.category_id = c.id
where ct.del=0 where ct.del=0 and ct.content_display=0
<!-- 查询子栏目数据 --> <!-- 查询子栏目数据 -->
<if test="categoryId!=null and categoryId!='' and categoryType==1"> <if test="categoryId!=null and categoryId!='' and categoryType==1">
...@@ -345,7 +345,7 @@ ...@@ -345,7 +345,7 @@
<!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合,不包括单篇 --> <!-- 根据站点编号、开始、结束时间和栏目编号查询文章编号集合,不包括单篇 -->
<select id="queryIdsByCategoryIdForParserAndNotCover" resultMap="resultBean" > <select id="queryIdsByCategoryIdForParserAndNotCover" resultMap="resultBean" >
select select
ct.id article_id,c.* ct.id article_id,ct.content_img litpic,c.*
FROM cms_content ct FROM cms_content ct
LEFT JOIN cms_category c ON ct.category_id = c.id LEFT JOIN cms_category c ON ct.category_id = c.id
where ct.del=0 where ct.del=0
......
...@@ -22,11 +22,7 @@ ...@@ -22,11 +22,7 @@
package net.mingsoft.cms.entity; package net.mingsoft.cms.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import net.mingsoft.base.entity.BaseEntity; import net.mingsoft.base.entity.BaseEntity;
/** /**
......
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.entity; package net.mingsoft.cms.entity;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat; import net.mingsoft.base.entity.BaseEntity;
import net.mingsoft.base.entity.BaseEntity; import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.Date;
/**
/** * 文章实体
* 文章实体 * @author 铭飞开发团队
* @author 铭飞开发团队 * 创建日期:2019-11-28 15:12:32<br/>
* 创建日期:2019-11-28 15:12:32<br/> * 历史修订:<br/>
* 历史修订:<br/> */
*/ @TableName("cms_content")
@TableName("cms_content") public class ContentEntity extends BaseEntity {
public class ContentEntity extends BaseEntity {
private static final long serialVersionUID = 1574925152617L;
private static final long serialVersionUID = 1574925152617L;
@TableId(type = IdType.ASSIGN_ID)
@TableId(type = IdType.ASSIGN_ID) private String id;
private String id;
@Override
@Override public String getId() {
public String getId() { return id;
return id; }
}
@Override
@Override public void setId(String id) {
public void setId(String id) { this.id = id;
this.id = id; }
} /**
/** * 文章标题
* 文章标题 */
*/ private String contentTitle;
private String contentTitle; /**
/** * 所属栏目
* 所属栏目 */
*/ private String categoryId;
private String categoryId; /**
/** * 文章类型
* 文章类型 */
*/ private String contentType;
private String contentType; /**
/** * 是否显示
* 是否显示 */
*/ private String contentDisplay;
private String contentDisplay; /**
/** * 文章作者
* 文章作者 */
*/ private String contentAuthor;
private String contentAuthor; /**
/** * 文章来源
* 文章来源 */
*/ private String contentSource;
private String contentSource; /**
/** * 发布时间
* 发布时间 */
*/ @JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JSONField(format = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") private Date contentDatetime;
private Date contentDatetime; /**
/** * 自定义顺序
* 自定义顺序 */
*/ private Integer contentSort;
private Integer contentSort; /**
/** * 文章缩略图
* 文章缩略图 */
*/ private String contentImg;
private String contentImg; /**
/** * 描述
* 描述 */
*/ private String contentDescription;
private String contentDescription; /**
/** * 关键字
* 关键字 */
*/ private String contentKeyword;
private String contentKeyword; /**
/** * 文章内容
* 文章内容 */
*/ private String contentDetails;
private String contentDetails; /**
/** * 文章跳转链接地址
* 文章跳转链接地址 */
*/ private String contentOutLink;
private String contentUrl; /**
/** * 点击次数
* 点击次数 */
*/ private Integer contentHit;
private Integer contentHit;
public Integer getContentHit() {
public Integer getContentHit() { return contentHit;
return contentHit; }
}
public void setContentHit(Integer contentHit) {
public void setContentHit(Integer contentHit) { this.contentHit = contentHit;
this.contentHit = contentHit; }
}
/**
/** * 设置文章标题
* 设置文章标题 */
*/ public void setContentTitle(String contentTitle) {
public void setContentTitle(String contentTitle) { this.contentTitle = contentTitle;
this.contentTitle = contentTitle; }
}
/**
/** * 获取文章标题
* 获取文章标题 */
*/ public String getContentTitle() {
public String getContentTitle() { return this.contentTitle;
return this.contentTitle; }
}
public String getCategoryId() {
public String getCategoryId() { return categoryId;
return categoryId; }
}
public void setCategoryId(String categoryId) {
public void setCategoryId(String categoryId) { this.categoryId = categoryId;
this.categoryId = categoryId; }
}
/**
/** * 设置文章类型
* 设置文章类型 */
*/ public void setContentType(String contentType) {
public void setContentType(String contentType) { this.contentType = contentType;
this.contentType = contentType; }
}
/**
/** * 获取文章类型
* 获取文章类型 */
*/ public String getContentType() {
public String getContentType() { return this.contentType;
return this.contentType; }
} /**
/** * 设置是否显示
* 设置是否显示 */
*/ public void setContentDisplay(String contentDisplay) {
public void setContentDisplay(String contentDisplay) { this.contentDisplay = contentDisplay;
this.contentDisplay = contentDisplay; }
}
/**
/** * 获取是否显示
* 获取是否显示 */
*/ public String getContentDisplay() {
public String getContentDisplay() { return this.contentDisplay;
return this.contentDisplay; }
} /**
/** * 设置文章作者
* 设置文章作者 */
*/ public void setContentAuthor(String contentAuthor) {
public void setContentAuthor(String contentAuthor) { this.contentAuthor = contentAuthor;
this.contentAuthor = contentAuthor; }
}
/**
/** * 获取文章作者
* 获取文章作者 */
*/ public String getContentAuthor() {
public String getContentAuthor() { return this.contentAuthor;
return this.contentAuthor; }
} /**
/** * 设置文章来源
* 设置文章来源 */
*/ public void setContentSource(String contentSource) {
public void setContentSource(String contentSource) { this.contentSource = contentSource;
this.contentSource = contentSource; }
}
/**
/** * 获取文章来源
* 获取文章来源 */
*/ public String getContentSource() {
public String getContentSource() { return this.contentSource;
return this.contentSource; }
} /**
/** * 设置发布时间
* 设置发布时间 */
*/ public void setContentDatetime(Date contentDatetime) {
public void setContentDatetime(Date contentDatetime) { this.contentDatetime = contentDatetime;
this.contentDatetime = contentDatetime; }
}
/**
/** * 获取发布时间
* 获取发布时间 */
*/ public Date getContentDatetime() {
public Date getContentDatetime() { return this.contentDatetime;
return this.contentDatetime; }
} /**
/** * 设置自定义顺序
* 设置自定义顺序 */
*/ public void setContentSort(Integer contentSort) {
public void setContentSort(Integer contentSort) { this.contentSort = contentSort;
this.contentSort = contentSort; }
}
/**
/** * 获取自定义顺序
* 获取自定义顺序 */
*/ public Integer getContentSort() {
public Integer getContentSort() { return this.contentSort;
return this.contentSort; }
} /**
/** * 设置文章缩略图
* 设置文章缩略图 */
*/ public void setContentImg(String contentImg) {
public void setContentImg(String contentImg) { this.contentImg = contentImg;
this.contentImg = contentImg; }
}
/**
/** * 获取文章缩略图
* 获取文章缩略图 */
*/ public String getContentImg() {
public String getContentImg() { return this.contentImg;
return this.contentImg; }
} /**
/** * 设置描述
* 设置描述 */
*/ public void setContentDescription(String contentDescription) {
public void setContentDescription(String contentDescription) { this.contentDescription = contentDescription;
this.contentDescription = contentDescription; }
}
/**
/** * 获取描述
* 获取描述 */
*/ public String getContentDescription() {
public String getContentDescription() { return this.contentDescription;
return this.contentDescription; }
} /**
/** * 设置关键字
* 设置关键字 */
*/ public void setContentKeyword(String contentKeyword) {
public void setContentKeyword(String contentKeyword) { this.contentKeyword = contentKeyword;
this.contentKeyword = contentKeyword; }
}
/**
/** * 获取关键字
* 获取关键字 */
*/ public String getContentKeyword() {
public String getContentKeyword() { return this.contentKeyword;
return this.contentKeyword; }
} /**
/** * 设置文章内容
* 设置文章内容 */
*/ public void setContentDetails(String contentDetails) {
public void setContentDetails(String contentDetails) { this.contentDetails = contentDetails;
this.contentDetails = contentDetails; }
}
/**
/** * 获取文章内容
* 获取文章内容 */
*/ public String getContentDetails() {
public String getContentDetails() { return this.contentDetails;
return this.contentDetails; }
} /**
/** * 设置文章跳转链接地址
* 设置文章跳转链接地址 */
*/ public void setContentOutLink(String contentOutLink) {
public void setContentUrl(String contentUrl) { this.contentOutLink = contentOutLink;
this.contentUrl = contentUrl; }
}
/**
/** * 获取文章跳转链接地址
* 获取文章跳转链接地址 */
*/ public String getContentOutLink() {
public String getContentUrl() { return this.contentOutLink;
return this.contentUrl; }
} }
}
/** /**
* The MIT License (MIT) * The MIT License (MIT)
* Copyright (c) 2012-2022 铭软科技(mingsoft.net) * Copyright (c) 2012-2022 铭软科技(mingsoft.net)
* Permission is hereby granted, free of charge, to any person obtaining a copy of * 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 * this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to * the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * 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, * the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions: * subject to the following conditions:
* The above copyright notice and this permission notice shall be included in all * The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software. * copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * 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 * 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 * 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. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
package net.mingsoft.cms.entity; package net.mingsoft.cms.entity;
import com.alibaba.fastjson.annotation.JSONField; import net.mingsoft.base.entity.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat; /**
import com.fasterxml.jackson.annotation.JsonFormat; * 文章浏览记录实体
import net.mingsoft.base.entity.BaseEntity; * @author 铭飞开发团队
import java.util.Date; * 创建日期:2019-12-23 9:24:03<br/>
/** * 历史修订:<br/>
* 文章浏览记录实体 */
* @author 铭飞开发团队 public class HistoryLogEntity extends BaseEntity {
* 创建日期:2019-12-23 9:24:03<br/>
* 历史修订:<br/> private static final long serialVersionUID = 1577064243576L;
*/
public class HistoryLogEntity extends BaseEntity { /**
* 文章编号
private static final long serialVersionUID = 1577064243576L; */
private String contentId;
/** /**
* 文章编号 * 浏览ip
*/ */
private String contentId; private String hlIp;
/** /**
* 浏览ip * 用户idp
*/ */
private String hlIp; private String peopleId;
/** /**
* 用户idp * 是否为移动端
*/ */
private String peopleId; private Boolean hlIsMobile;
/**
* 是否为移动端
*/ /**
private Boolean hlIsMobile; * 设置文章编号
*/
public void setContentId(String contentId) {
/** this.contentId = contentId;
* 设置文章编号 }
*/
public void setContentId(String contentId) { /**
this.contentId = contentId; * 获取文章编号
} */
public String getContentId() {
/** return this.contentId;
* 获取文章编号 }
*/ /**
public String getContentId() { * 设置浏览ip
return this.contentId; */
} public void setHlIp(String hlIp) {
/** this.hlIp = hlIp;
* 设置浏览ip }
*/
public void setHlIp(String hlIp) { /**
this.hlIp = hlIp; * 获取浏览ip
} */
public String getHlIp() {
/** return this.hlIp;
* 获取浏览ip }
*/
public String getHlIp() { public String getPeopleId() {
return this.hlIp; return peopleId;
} }
public String getPeopleId() { public void setPeopleId(String peopleId) {
return peopleId; this.peopleId = peopleId;
} }
public void setPeopleId(String peopleId) { /**
this.peopleId = peopleId; * 设置是否为移动端
} */
public void setHlIsMobile(Boolean hlIsMobile) {
/** this.hlIsMobile = hlIsMobile;
* 设置是否为移动端 }
*/
public void setHlIsMobile(Boolean hlIsMobile) { /**
this.hlIsMobile = hlIsMobile; * 获取是否为移动端
} */
public Boolean getHlIsMobile() {
/** return this.hlIsMobile;
* 获取是否为移动端 }
*/ }
public Boolean getHlIsMobile() {
return this.hlIsMobile;
}
}
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
package net.mingsoft.cms.util; package net.mingsoft.cms.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
......
...@@ -40,7 +40,10 @@ import org.springframework.core.Ordered; ...@@ -40,7 +40,10 @@ import org.springframework.core.Ordered;
import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.context.request.RequestContextListener; import org.springframework.web.context.request.RequestContextListener;
import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
...@@ -95,7 +98,7 @@ public class WebConfig implements WebMvcConfigurer { ...@@ -95,7 +98,7 @@ public class WebConfig implements WebMvcConfigurer {
String uploadMapping = MSProperties.upload.mapping; String uploadMapping = MSProperties.upload.mapping;
String uploadFolderPath = MSProperties.upload.path; String uploadFolderPath = MSProperties.upload.path;
String template = MSProperties.upload.template; String template = MSProperties.upload.template;
String htmlDir = MSProperties.DiyProperties.htmlDir; String htmlDir = MSProperties.diy.htmlDir;
// 上传路径映射 这里的映射不能使用File.separator Windows会存在映射问题 // 上传路径映射 这里的映射不能使用File.separator Windows会存在映射问题
registry.addResourceHandler(uploadMapping).addResourceLocations("/" + uploadFolderPath + "/", "file:" + uploadFolderPath + "/"); registry.addResourceHandler(uploadMapping).addResourceLocations("/" + uploadFolderPath + "/", "file:" + uploadFolderPath + "/");
registry.addResourceHandler("/" + template + "/**").addResourceLocations("/" + template + "/", "file:" + template + "/"); registry.addResourceHandler("/" + template + "/**").addResourceLocations("/" + template + "/", "file:" + template + "/");
...@@ -127,9 +130,9 @@ public class WebConfig implements WebMvcConfigurer { ...@@ -127,9 +130,9 @@ public class WebConfig implements WebMvcConfigurer {
//XSS过滤器 //XSS过滤器
@Bean @Bean
public FilterRegistrationBean xssFilterRegistration(@Value("${ms.xss.enable:false}") boolean xssEnable, public FilterRegistrationBean xssFilterRegistration(@Value("${ms.xss.enable:true}") boolean xssEnable,
@Value("${ms.xss.filter-url}:''") String filterUrl, @Value("${ms.xss.filter-url}") String filterUrl,
@Value("${ms.xss.exclude-url}:''") String excludeUrl) { @Value("${ms.xss.exclude-url}") String excludeUrl) {
XSSEscapeFilter xssFilter = new XSSEscapeFilter(); XSSEscapeFilter xssFilter = new XSSEscapeFilter();
Map<String, String> initParameters = new HashMap(); Map<String, String> initParameters = new HashMap();
FilterRegistrationBean registration = new FilterRegistrationBean(); FilterRegistrationBean registration = new FilterRegistrationBean();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment