diff --git a/src/main/java/net/mingsoft/cms/action/BaseAction.java b/src/main/java/net/mingsoft/cms/action/BaseAction.java
index 51c6905b..0d1cbbe0 100755
--- a/src/main/java/net/mingsoft/cms/action/BaseAction.java
+++ b/src/main/java/net/mingsoft/cms/action/BaseAction.java
@@ -18,27 +18,27 @@
* 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.util.MissingResourceException;
-
-/**
- * @Author: 铭飞开源团队--huise
- * @Date: 2019/8/9 20:47
- */
-public class BaseAction extends net.mingsoft.basic.action.BaseAction{
- @Override
- protected String getResString(String key) {
- // TODO Auto-generated method stub
- String str = "";
- try {
- str = super.getResString(key);
- } catch (MissingResourceException e) {
- str = getLocaleString(key,net.mingsoft.cms.constant.Const.RESOURCES);
- }
-
- return str;
- }
-}
+
+
+package net.mingsoft.cms.action;
+
+import java.util.MissingResourceException;
+
+/**
+ * @Author: 铭飞开源团队--huise
+ * @Date: 2019/8/9 20:47
+ */
+public class BaseAction extends net.mingsoft.basic.action.BaseAction{
+ @Override
+ protected String getResString(String key) {
+ // TODO Auto-generated method stub
+ String str = "";
+ try {
+ str = super.getResString(key);
+ } catch (MissingResourceException e) {
+ str = getLocaleString(key,net.mingsoft.cms.constant.Const.RESOURCES);
+ }
+
+ return str;
+ }
+}
diff --git a/src/main/java/net/mingsoft/cms/action/CategoryAction.java b/src/main/java/net/mingsoft/cms/action/CategoryAction.java
index 7de2a89b..1ed3fee1 100755
--- a/src/main/java/net/mingsoft/cms/action/CategoryAction.java
+++ b/src/main/java/net/mingsoft/cms/action/CategoryAction.java
@@ -7,10 +7,10 @@
* 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
@@ -23,6 +23,7 @@
package net.mingsoft.cms.action;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -53,318 +54,323 @@ import java.util.List;
* 创建日期:2019-11-28 15:12:32
* 历史修订:
*/
-@Api(tags={"后端-内容模块接口"})
+@Api(tags = {"后端-内容模块接口"})
@Controller("cmsCategoryAction")
@RequestMapping("/${ms.manager.path}/cms/category")
public class CategoryAction extends BaseAction {
- /**
- * 注入分类业务层
- */
- @Autowired
- private ICategoryBiz categoryBiz;
+ /**
+ * 注入分类业务层
+ */
+ @Autowired
+ private ICategoryBiz categoryBiz;
- /**
- * 返回主界面index
- * @return
- */
- @GetMapping("/index")
- @RequiresPermissions("cms:category:view")
- public String index(){
- return "/cms/category/index";
- }
+ /**
+ * 返回主界面index
+ * @return
+ */
+ @GetMapping("/index")
+ @RequiresPermissions("cms:category:view")
+ public String index() {
+ return "/cms/category/index";
+ }
- /**
- * 查询分类列表接口
- * @param category 栏目实体
- * @return
- */
- @ApiOperation(value = "查询分类列表接口")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required =false,paramType="query"),
- @ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required =false,paramType="query"),
+ /**
+ * 查询分类列表接口
+ * @param category 栏目实体
+ * @return
+ */
+ @ApiOperation(value = "查询分类列表接口")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "categoryTitle", value = "栏目管理名称", required = false, paramType = "query"),
+ @ApiImplicitParam(name = "categoryParentId", value = "父类型编号", required = false, paramType = "query"),
})
- @RequestMapping(value="/list",method = {RequestMethod.GET, RequestMethod.POST})
- @ResponseBody
- 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()));
- }
+ @RequestMapping(value = "/list", method = {RequestMethod.GET, RequestMethod.POST})
+ @ResponseBody
+ public ResultData list(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ BasicUtil.startPage();
+ List categoryList = categoryBiz.list(new LambdaQueryWrapper(category));
+ return ResultData.build().success(new EUListBean(categoryList, (int) BasicUtil.endPage(categoryList).getTotal()));
+ }
- /**
- * 返回编辑界面category_form
- * @param category 栏目
- * @return
- */
- @GetMapping("/form")
- public String form(@ModelAttribute CategoryEntity category, ModelMap model){
- model.addAttribute("appId", BasicUtil.getApp().getAppId());
- return "/cms/category/form";
- }
+ /**
+ * 返回编辑界面category_form
+ * @param category 栏目
+ * @return
+ */
+ @GetMapping("/form")
+ public String form(@ModelAttribute CategoryEntity category, ModelMap model) {
+ model.addAttribute("appId", BasicUtil.getApp().getAppId());
+ return "/cms/category/form";
+ }
- /**
- * 获取分类
- * @param category 分类实体
- */
- @ApiOperation(value = "获取分类列表接口")
- @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
- @GetMapping("/get")
- @RequiresPermissions("cms:category:view")
- @ResponseBody
- public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category){
- if(category.getId()==null) {
- return ResultData.build().error();
- }
- CategoryEntity _category = (CategoryEntity)categoryBiz.getById(category.getId());
- return ResultData.build().success(_category);
- }
+ /**
+ * 获取分类
+ * @param category 分类实体
+ */
+ @ApiOperation(value = "获取分类列表接口")
+ @ApiImplicitParam(name = "id", value = "编号", required = true, paramType = "query")
+ @GetMapping("/get")
+ @RequiresPermissions("cms:category:view")
+ @ResponseBody
+ public ResultData get(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ if (category.getId() == null) {
+ return ResultData.build().error();
+ }
+ CategoryEntity _category = (CategoryEntity) categoryBiz.getById(category.getId());
+ return ResultData.build().success(_category);
+ }
+ /**
+ * 保存分类
+ * @param 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 = "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"),
+ })
+ @PostMapping("/save")
+ @ResponseBody
+ @LogAnn(title = "保存分类", businessType = BusinessTypeEnum.INSERT)
+ @RequiresPermissions("cms:category:save")
+ public ResultData save(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ //验证缩略图参数值是否合法
+ if (!category.getCategoryImg().matches("^\\[.{1,}]$") || category.getCategoryImg() == null) {
+ category.setCategoryImg("");
+ }
+ //验证栏目管理名称的值是否合法
+ 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"));
+ }
- /**
- * 保存分类
- * @param 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 = "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"),
- })
- @PostMapping("/save")
- @ResponseBody
- @LogAnn(title = "保存分类", businessType = BusinessTypeEnum.INSERT)
- @RequiresPermissions("cms:category:save")
- public ResultData save(@ModelAttribute @ApiIgnore CategoryEntity category) {
- //验证缩略图参数值是否合法
- if (!category.getCategoryImg().matches("^\\[.{1,}]$") || category.getCategoryImg()==null){
- category.setCategoryImg("");
- }
- //验证栏目管理名称的值是否合法
- 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.getCategoryPath() + "", 1, 100)) {
+ return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
+ }
+ if (!StringUtil.checkLength(category.getCategoryParentIds() + "", 1, 100)) {
+ return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
+ }
+ //判断拼音是否重复
+ if (StrUtil.isNotBlank(category.getCategoryPinyin())) {
+ if (!category.getCategoryPinyin().matches("^[a-zA-Z0-9]*$")){
+ return ResultData.build().error(this.getResString("err.format"));
+ }
+ CategoryEntity _category = new CategoryEntity();
+ _category.setCategoryPinyin(category.getCategoryPinyin());
+ List query = categoryBiz.query(_category);
+ if (query.size() > 0) {
+ return ResultData.build().error(getResString("err.exist", this.getResString("category.pinyin")));
+ }
+ }
- if(!StringUtil.checkLength(category.getCategoryPath()+"", 1, 100)){
- return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
- }
- if(!StringUtil.checkLength(category.getCategoryParentIds()+"", 1, 100)){
- return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
- }
- //判断拼音是否重复
- if(StrUtil.isNotBlank(category.getCategoryPinyin())) {
- CategoryEntity _category = new CategoryEntity();
- _category.setCategoryPinyin(category.getCategoryPinyin());
- List query = categoryBiz.query(_category);
- if (query.size() > 0) {
- return ResultData.build().error(getResString("err.exist", this.getResString("category.pinyin")));
- }
- }
+ categoryBiz.saveEntity(category);
+ return ResultData.build().success(category);
+ }
- categoryBiz.saveEntity(category);
- return ResultData.build().success(category);
- }
+ /**
+ * 批量删除分类列表接口
+ * @param categorys
+ * @return
+ */
+ @ApiOperation(value = "批量删除分类列表接口")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "categorys", value = "删除的栏目集合", allowMultiple = true, dataType = "CategoryEntity", required = true)
- /**
- * 批量删除分类列表接口
- * @param categorys
- * @return
- */
- @ApiOperation(value = "批量删除分类列表接口")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "categorys", value = "删除的栏目集合", allowMultiple = true, dataType = "CategoryEntity", required = true)
+ })
+ @PostMapping("/delete")
+ @ResponseBody
+ @LogAnn(title = "删除分类", businessType = BusinessTypeEnum.DELETE)
+ @RequiresPermissions("cms:category:del")
+ public ResultData delete(@RequestBody List categorys) {
+ for (int i = 0; i < categorys.size(); i++) {
+ categoryBiz.delete(categorys.get(i).getId());
+ }
+ return ResultData.build().success();
+ }
- })
- @PostMapping("/delete")
- @ResponseBody
- @LogAnn(title = "删除分类", businessType = BusinessTypeEnum.DELETE)
- @RequiresPermissions("cms:category:del")
- public ResultData delete(@RequestBody List categorys) {
- for(int i = 0;i query = categoryBiz.query(_category);
+ if (query.size() > 0) {
+ return ResultData.build().error(getResString("err.exist", this.getResString("category.pinyin")));
+ }
+ }
+ String pingYin = PinYinUtil.getPingYin(category.getCategoryTitle());
+ //如果用户填写了拼音则使用用户填写的
+ if (StrUtil.isNotBlank(category.getCategoryPinyin())) {
+ pingYin = category.getCategoryPinyin();
+ }
+ CategoryEntity categoryEntity = new CategoryEntity();
+ categoryEntity.setCategoryPinyin(pingYin);
+ CategoryEntity categoryBizEntity = categoryBiz.getEntity(categoryEntity);
+ category.setCategoryPinyin(pingYin);
+ //如果存在此拼音栏目则拼接上id
+ if (categoryBizEntity != null && !categoryBizEntity.getId().equals(category.getId())) {
+ category.setCategoryPinyin(pingYin + category.getId());
+ }
+ //判断是否选择子级为所属栏目
+ CategoryEntity _category = new CategoryEntity();
+ _category.setId(category.getId());
+ List categoryList = categoryBiz.queryChildren(_category);
+ if (categoryList.size() > 1) {
+ for (CategoryEntity item : categoryList) {
+ if (item.getId().equals(category.getCategoryId())) {
+ return ResultData.build().error(getResString("cannot.select.child"));
+ }
+ }
+ category.setLeaf(false);
+ } else {
+ category.setLeaf(true);
+ }
- if(!StringUtil.checkLength(category.getCategoryPath()+"", 0, 100)){
- return ResultData.build().error(getResString("err.length", this.getResString("category.path"), "1", "100"));
- }
- if(!StringUtil.checkLength(category.getCategoryParentIds()+"", 0, 100)){
- return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
- }
- //判断拼音是否重复并且是否和原拼音相同
- if(StrUtil.isNotBlank(category.getCategoryPinyin()) && !categoryBiz.getById(category.getId()).getCategoryPinyin().equals(category.getCategoryPinyin())) {
- CategoryEntity _category = new CategoryEntity();
- _category.setCategoryPinyin(category.getCategoryPinyin());
- List query = categoryBiz.query(_category);
- if (query.size() > 0) {
- return ResultData.build().error(getResString("err.exist", this.getResString("category.pinyin")));
- }
- }
- String pingYin = PinYinUtil.getPingYin(category.getCategoryTitle());
- //如果用户填写了拼音则使用用户填写的
- if (StrUtil.isNotBlank(category.getCategoryPinyin())) {
- pingYin = category.getCategoryPinyin();
- }
- CategoryEntity categoryEntity=new CategoryEntity();
- categoryEntity.setCategoryPinyin(pingYin);
- CategoryEntity categoryBizEntity = categoryBiz.getEntity(categoryEntity);
- category.setCategoryPinyin(pingYin);
- //如果存在此拼音栏目则拼接上id
- if(categoryBizEntity!=null&&!categoryBizEntity.getId().equals(category.getId())){
- category.setCategoryPinyin(pingYin+category.getId());
- }
- //判断是否选择子级为所属栏目
- CategoryEntity _category = new CategoryEntity();
- _category.setId(category.getId());
- List categoryList = categoryBiz.queryChildren(_category);
- if(categoryList.size()>1) {
- for(CategoryEntity item:categoryList){
- if(item.getId().equals(category.getCategoryId())){
- return ResultData.build().error(getResString("cannot.select.child"));
- }
- }
- category.setLeaf(false);
- } else {
- category.setLeaf(true);
- }
+ // 这里不能使用mybitsplus 存在业务
+ categoryBiz.updateEntity(category);
+ return ResultData.build().success(category);
+ }
- // 这里不能使用mybitsplus 存在业务
- categoryBiz.updateEntity(category);
- return ResultData.build().success(category);
- }
+ /**
+ * 验证拼音
+ * @param category 栏目
+ * @return
+ */
+ @ApiOperation(value = "验证拼音")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "编号", required = true, paramType = "query"),
+ @ApiImplicitParam(name = "categoryPinyin", value = "栏目管拼音", required = true, paramType = "query"),
+ })
+ @GetMapping("/verifyPingYin")
+ @ResponseBody
+ public ResultData verifyPingYin(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ long count = categoryBiz.count(Wrappers.lambdaQuery()
+ .ne(StrUtil.isNotBlank(category.getId()), CategoryEntity::getId, category.getId())
+ .eq(CategoryEntity::getCategoryPinyin, category.getCategoryPinyin()));
- /**
- * 验证拼音
- * @param category 栏目
- * @return
- */
- @ApiOperation(value = "验证拼音")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
- @ApiImplicitParam(name = "categoryPinyin", value = "栏目管拼音", required =true,paramType="query"),
- })
- @GetMapping("/verifyPingYin")
- @ResponseBody
- public ResultData verifyPingYin(@ModelAttribute @ApiIgnore CategoryEntity category){
- long count = categoryBiz.count(Wrappers.lambdaQuery()
- .ne(StrUtil.isNotBlank(category.getId()), CategoryEntity::getId, category.getId())
- .eq(CategoryEntity::getCategoryPinyin, category.getCategoryPinyin()));
+ if (count > 0) {
+ return ResultData.build().error("存在相同拼音的栏目");
+ }
+ return ResultData.build().success();
+ }
- if(count>0){
- return ResultData.build().error("存在相同拼音的栏目");
- }
- return ResultData.build().success();
- }
+ /**
+ * 批量更新模版
+ * @param category 栏目实体
+ * @return
+ */
+ @ApiOperation(value = "批量更新模版")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "编号", required = true, paramType = "query"),
+ @ApiImplicitParam(name = "dictId", value = "字典", required = true, paramType = "query")
+ })
+ @GetMapping("/updateTemplate")
+ @ResponseBody
+ @RequiresPermissions("cms:category:update")
+ public ResultData updateTemplate(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ if (category == null || StringUtils.isEmpty(category.getId())) {
+ return ResultData.build().error(getResString("err.error", this.getResString("id")));
+ }
+ category = categoryBiz.getById(category.getId());
+ category.setCategoryParentIds(null);
+ List childs = categoryBiz.queryChildren(category);
+ //更新与父节点相同类型的子栏目的模板内容
+ for (int i = 0; i < childs.size(); i++) {
+ if (childs.get(i).getCategoryType().equals(category.getCategoryType())) {
+ childs.get(i).setCategoryUrl(category.getCategoryUrl());
+ childs.get(i).setCategoryListUrl(category.getCategoryListUrl());
+ categoryBiz.updateEntity(childs.get(i));
+ }
+ }
+ return ResultData.build().success();
+ }
- /**
- * 批量更新模版
- * @param category 栏目实体
- * @return
- */
- @ApiOperation(value = "批量更新模版")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query"),
- @ApiImplicitParam(name = "dictId", value = "字典", required =true,paramType="query")
- })
- @GetMapping("/updateTemplate")
- @ResponseBody
- @RequiresPermissions("cms:category:update")
- public ResultData updateTemplate(@ModelAttribute @ApiIgnore CategoryEntity category){
- if (category ==null || StringUtils.isEmpty(category.getId())) {
- return ResultData.build().error(getResString("err.error", this.getResString("id")));
- }
- category = categoryBiz.getById(category.getId());
- category.setCategoryParentIds(null);
- List childs = categoryBiz.queryChildren(category);
- //更新与父节点相同类型的子栏目的模板内容
- for (int i =0; i < childs.size(); i++) {
- if (childs.get(i).getCategoryType().equals(category.getCategoryType())) {
- childs.get(i).setCategoryUrl(category.getCategoryUrl());
- childs.get(i).setCategoryListUrl(category.getCategoryListUrl());
- categoryBiz.updateEntity(childs.get(i));
- }
- }
- return ResultData.build().success();
- }
-
- /**
- * 复制栏目
- * @param category 栏目实体
- * @return
- */
- @ApiOperation(value = "复制栏目")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "id", value = "编号", required =true,paramType="query")
- })
- @GetMapping("/copyCategory")
- @ResponseBody
- @RequiresPermissions("cms:category:save")
- public ResultData copyCategory(@ModelAttribute @ApiIgnore CategoryEntity category){
- if (category == null || StringUtils.isEmpty(category.getId())) {
- return ResultData.build().error(getResString("err.error", this.getResString("id")));
- }
- categoryBiz.copyCategory(category);
- return ResultData.build().success();
- }
+ /**
+ * 复制栏目
+ * @param category 栏目实体
+ * @return
+ */
+ @ApiOperation(value = "复制栏目")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "编号", required = true, paramType = "query")
+ })
+ @GetMapping("/copyCategory")
+ @ResponseBody
+ @RequiresPermissions("cms:category:save")
+ public ResultData copyCategory(@ModelAttribute @ApiIgnore CategoryEntity category) {
+ if (category == null || StringUtils.isEmpty(category.getId())) {
+ return ResultData.build().error(getResString("err.error", this.getResString("id")));
+ }
+ categoryBiz.copyCategory(category);
+ return ResultData.build().success();
+ }
}
diff --git a/src/main/java/net/mingsoft/cms/bean/CategoryBean.java b/src/main/java/net/mingsoft/cms/bean/CategoryBean.java
index bf45e17a..de8ac7ab 100755
--- a/src/main/java/net/mingsoft/cms/bean/CategoryBean.java
+++ b/src/main/java/net/mingsoft/cms/bean/CategoryBean.java
@@ -18,33 +18,33 @@
* 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.bean;
-
-import net.mingsoft.cms.entity.CategoryEntity;
-
-/**
-* 文章实体
-* @author 铭飞开发团队
-* 创建日期:2019-11-28 15:12:32
-* 历史修订:
-*/
-public class CategoryBean extends CategoryEntity {
-
- /**
- * 文章编号
- */
- private String articleId;
-
-
-
-
- public String getArticleId() {
- return articleId;
- }
-
- public void setArticleId(String articleId) {
- this.articleId = articleId;
- }
-}
+
+
+package net.mingsoft.cms.bean;
+
+import net.mingsoft.cms.entity.CategoryEntity;
+
+/**
+* 文章实体
+* @author 铭飞开发团队
+* 创建日期:2019-11-28 15:12:32
+* 历史修订:
+*/
+public class CategoryBean extends CategoryEntity {
+
+ /**
+ * 文章编号
+ */
+ private String articleId;
+
+
+
+
+ public String getArticleId() {
+ return articleId;
+ }
+
+ public void setArticleId(String articleId) {
+ this.articleId = articleId;
+ }
+}
diff --git a/src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java b/src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java
index cac88c95..2fde76c9 100755
--- a/src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java
+++ b/src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java
@@ -18,44 +18,44 @@
* 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.biz;
-
-import net.mingsoft.base.biz.IBaseBiz;
-import net.mingsoft.cms.entity.CategoryEntity;
-
-import java.util.List;
-
-
-/**
- * 分类业务
- * @author 铭飞开发团队
- * 创建日期:2019-11-28 15:12:32
- * 历史修订:
- */
-public interface ICategoryBiz extends IBaseBiz {
-
- /**
- * 查询当前分类下的所有子分类,包含自身
- * @param category 通过setId指定栏目id
- * @return
- */
- List queryChildren(CategoryEntity category);
-
- void saveEntity(CategoryEntity entity);
-
- /**更新父级及子集
- * @param entity
- */
- void updateEntity(CategoryEntity entity);
-
- /**只更新自身
- * @param entity
- */
- void update(CategoryEntity entity);
-
- void delete(String categoryId);
-
- void copyCategory(CategoryEntity entity);
-}
+
+
+package net.mingsoft.cms.biz;
+
+import net.mingsoft.base.biz.IBaseBiz;
+import net.mingsoft.cms.entity.CategoryEntity;
+
+import java.util.List;
+
+
+/**
+ * 分类业务
+ * @author 铭飞开发团队
+ * 创建日期:2019-11-28 15:12:32
+ * 历史修订:
+ */
+public interface ICategoryBiz extends IBaseBiz {
+
+ /**
+ * 查询当前分类下的所有子分类,包含自身
+ * @param category 通过setId指定栏目id
+ * @return
+ */
+ List queryChildren(CategoryEntity category);
+
+ void saveEntity(CategoryEntity entity);
+
+ /**更新父级及子集
+ * @param entity
+ */
+ void updateEntity(CategoryEntity entity);
+
+ /**只更新自身
+ * @param entity
+ */
+ void update(CategoryEntity entity);
+
+ void delete(String categoryId);
+
+ void copyCategory(CategoryEntity entity);
+}
diff --git a/src/main/java/net/mingsoft/cms/biz/IHistoryLogBiz.java b/src/main/java/net/mingsoft/cms/biz/IHistoryLogBiz.java
index 46e9ba1c..2c91048c 100755
--- a/src/main/java/net/mingsoft/cms/biz/IHistoryLogBiz.java
+++ b/src/main/java/net/mingsoft/cms/biz/IHistoryLogBiz.java
@@ -18,19 +18,19 @@
* 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.biz;
-
-import net.mingsoft.base.biz.IBaseBiz;
-
-
-/**
- * 文章浏览记录业务
- * @author 铭飞开发团队
- * 创建日期:2019-12-23 9:24:03
- * 历史修订:
- */
-public interface IHistoryLogBiz extends IBaseBiz {
-
-}
+
+
+package net.mingsoft.cms.biz;
+
+import net.mingsoft.base.biz.IBaseBiz;
+
+
+/**
+ * 文章浏览记录业务
+ * @author 铭飞开发团队
+ * 创建日期:2019-12-23 9:24:03
+ * 历史修订:
+ */
+public interface IHistoryLogBiz extends IBaseBiz {
+
+}
diff --git a/src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java b/src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java
index 7419beb7..1fdcfcd7 100755
--- a/src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java
+++ b/src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java
@@ -18,301 +18,301 @@
* 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.biz.impl;
-
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import net.mingsoft.base.biz.impl.BaseBizImpl;
-import net.mingsoft.base.dao.IBaseDao;
-import net.mingsoft.basic.util.PinYinUtil;
-import net.mingsoft.cms.biz.ICategoryBiz;
-import net.mingsoft.cms.dao.ICategoryDao;
-import net.mingsoft.cms.dao.IContentDao;
-import net.mingsoft.cms.entity.CategoryEntity;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 分类管理持久化层
- * @author 铭飞开发团队
- * 创建日期:2019-11-28 15:12:32
- * 历史修订:
- */
-@Service("cmscategoryBizImpl")
-@Transactional(rollbackFor = RuntimeException.class)
-public class CategoryBizImpl extends BaseBizImpl implements ICategoryBiz {
-
-
- @Autowired
- private ICategoryDao categoryDao;
-
- @Autowired
- private IContentDao contentDao;
-
-
- @Override
- protected IBaseDao getDao() {
- // TODO Auto-generated method stub
- return categoryDao;
- }
-
- @Override
- public List queryChildren(CategoryEntity category) {
- // TODO Auto-generated method stub
- return categoryDao.queryChildren(category);
- }
-
- @Override
- public void saveEntity(CategoryEntity categoryEntity) {
- // TODO Auto-generated method stub
- String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle());
- //如果用户自己填入了拼音则使用用户的
- if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) {
- pingYin = categoryEntity.getCategoryPinyin();
- }
- CategoryEntity category = new CategoryEntity();
- category.setCategoryPinyin(pingYin);
- Object categoryBizEntity = getEntity(category);
- setParentId(categoryEntity);
- categoryEntity.setCategoryPinyin(pingYin);
- //更新新的父级
- if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
- CategoryEntity parent = getById(categoryEntity.getCategoryId());
- //如果之前是叶子节点就更新
- if (parent.getLeaf()) {
- parent.setLeaf(false);
- updateById(parent);
- }
- }
- categoryEntity.setLeaf(false);
- //如果是新增栏目一定是叶子节点
- if (StrUtil.isEmpty(categoryEntity.getId())) {
- categoryEntity.setLeaf(true);
- }
- super.save(categoryEntity);
- //拼音存在则拼接id
- if (categoryBizEntity != null) {
- categoryEntity.setCategoryPinyin(pingYin + categoryEntity.getId());
- }
- CategoryEntity parentCategory = null;
- if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) {
- parentCategory = (CategoryEntity) getById(categoryEntity.getCategoryId());
- }
- //保存链接地址
- String path = ObjectUtil.isNotNull(parentCategory) ? parentCategory.getCategoryPath() : "";
- categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
- setTopId(categoryEntity);
- super.updateById(categoryEntity);
- }
-
- private void setParentId(CategoryEntity categoryEntity) {
- String path = "";
- if (StringUtils.isNotEmpty(categoryEntity.getCategoryId()) && Long.parseLong(categoryEntity.getCategoryId()) > 0) {
- CategoryEntity category = (CategoryEntity) getById(categoryEntity.getCategoryId());
- path = category.getCategoryPath();
- if (StringUtils.isEmpty(category.getCategoryParentIds())) {
- categoryEntity.setCategoryParentIds(category.getId());
- } else {
- categoryEntity.setCategoryParentIds(category.getCategoryParentIds() + "," + category.getId());
- }
- } else {
- categoryEntity.setCategoryParentIds(null);
- }
- //保存时先保存再修改链接地址,修改时直接修改
- if (StringUtils.isNotBlank(categoryEntity.getId())) {
- categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
- }
-
- }
-
- private void setChildParentId(CategoryEntity categoryEntity, String topId) {
- CategoryEntity category = new CategoryEntity();
- category.setCategoryId(categoryEntity.getId());
- List list = categoryDao.query(category);
- list.forEach(x -> {
- if (StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) {
- x.setCategoryParentIds(categoryEntity.getId());
- } else {
- x.setCategoryParentIds(categoryEntity.getCategoryParentIds() + "," + categoryEntity.getId());
- }
- //更新topid
- x.setTopId(topId);
- String path = categoryEntity.getCategoryPath();
- //判断是否有parentIds
- x.setCategoryPath(path + "/" + x.getCategoryPinyin());
- //去除多余的/符号
- super.updateEntity(x);
- setChildParentId(x, topId);
- });
- }
-
- @Override
- public void updateEntity(CategoryEntity entity) {
- setParentId(entity);
- String pingYin = entity.getCategoryPinyin();
- if (StrUtil.isNotBlank(pingYin)) {
- CategoryEntity category = new CategoryEntity();
- category.setCategoryPinyin(pingYin);
- CategoryEntity categoryBizEntity = (CategoryEntity) getEntity(category);
- //拼音存在则拼接id
- if (categoryBizEntity != null && !categoryBizEntity.getId().equals(entity.getId())) {
- entity.setCategoryPinyin(pingYin + entity.getId());
- }
- }
- setParentLeaf(entity);
- setTopId(entity);
- //如果父级栏目和父级id为空字符串则转化成null
- if (StringUtils.isEmpty(entity.getCategoryId())) {
- entity.setCategoryId(null);
- }
- if (StringUtils.isEmpty(entity.getCategoryParentIds())) {
- entity.setCategoryParentIds(null);
- }
- categoryDao.updateEntity(entity);
- //更新子节点所有父节点id和topid
- //如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid
- String topId = entity.getTopId();
- if (topId.equals("0")) {
- topId = entity.getId();
- }
- setChildParentId(entity, topId);
- }
-
-
- @Override
- public void update(CategoryEntity entity) {
- super.updateEntity(entity);
- }
-
- @Override
- public void delete(String categoryId) {
- // TODO Auto-generated method stub
- CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId);
- //删除父类
- if (category != null) {
- List childrenList = categoryDao.queryChildren(category);
- List ids = new ArrayList<>();
- for (int i = 0; i < childrenList.size(); i++) {
- //删除子类
- ids.add(childrenList.get(i).getId());
- }
- categoryDao.deleteBatchIds(ids);
- // 删除文章
- contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()]));
-
- //获取被删节点的父节点
- CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId());
- //获取被删节点的所属栏目的其他节点
- List childNode = categoryDao.queryChildren(parentNode);
- //判断删除的是否为主节点
- if (parentNode != null) {
- UpdateWrapper updateWrapper = new UpdateWrapper<>();
- //如果没有子节点进行更新代码
- if (childNode.size() == 1) {
- updateWrapper.eq("id", parentNode.getId()).set("leaf", 1);
- categoryDao.update(null, updateWrapper);
- }
-
- }
-
- }
- }
-
- /**
- * 设置父级叶子节点
- * @param entity
- */
- private void setParentLeaf(CategoryEntity entity) {
- CategoryEntity categoryEntity = getById(entity.getId());
- //如果父级不为空并且修改了父级则需要更新父级
- if (entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())) {
- //更新旧的父级
- if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
- CategoryEntity parent = getById(categoryEntity.getCategoryId());
- //如果修改了父级则需要判断父级是否还有子节点
- boolean leaf = parent.getLeaf();
- //查找不等于当前更新的分类子集,有则不是叶子节点
- QueryWrapper queryWrapper = new QueryWrapper<>();
- parent.setLeaf(count(queryWrapper.eq("category_id", parent.getId()).ne("id", entity.getId())) == 0);
- if (leaf != parent.getLeaf()) {
- updateById(parent);
- }
-
- }
- //更新新的父级
- if (StrUtil.isNotBlank(entity.getCategoryId()) && !"0".equals(entity.getCategoryId())) {
- CategoryEntity parent = getById(entity.getCategoryId());
- //如果之前是叶子节点就更新
- if (parent.getLeaf()) {
- parent.setLeaf(false);
- updateById(parent);
- }
- }
- }
- }
-
- /**
- * 设置顶级id
- * @param entity
- */
- private void setTopId(CategoryEntity entity) {
- String categoryParentId = entity.getCategoryParentIds();
- if (StrUtil.isNotBlank(categoryParentId)) {
- String[] ids = categoryParentId.split(",");
- //如果有ParentId就取第一个
- if (ids.length > 0) {
- entity.setTopId(ids[0]);
- return;
- }
- }
- entity.setTopId("0");
- }
-
- @Override
- public void copyCategory(CategoryEntity category) {
- String oldId = category.getId();
- //先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目
- category = getById(oldId);
- //id、拼音和路径按照原来的业务逻辑生成
- category.setId(null);
- category.setCategoryPinyin(null);
- category.setCategoryPath(null);
- saveEntity(category);
- //传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用
- recursionCopyChilds(oldId, category.getId());
- }
-
- /*
- * 递归复制子栏目
- * @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据)
- * @param newParentId:复制栏目后新父级的id(新插入数据的id)
- * */
- private void recursionCopyChilds(String oldParentId, String newParentId) {
- CategoryEntity _category = new CategoryEntity();
- _category.setCategoryId(oldParentId);
- List childs = query(_category);
- for (CategoryEntity child : childs) {
- String childId = child.getId();
- //id、拼音和路径按照原来的业务逻辑生成
- child.setId(null);
- child.setCategoryPinyin(null);
- child.setCategoryPath(null);
- child.setCategoryId(newParentId);
- saveEntity(child);
- //如果该栏目下还有子栏目则继续复制该栏目里的子栏目
- recursionCopyChilds(childId, child.getId());
- }
- }
-
-}
+
+
+
+
+package net.mingsoft.cms.biz.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import net.mingsoft.base.biz.impl.BaseBizImpl;
+import net.mingsoft.base.dao.IBaseDao;
+import net.mingsoft.basic.util.PinYinUtil;
+import net.mingsoft.cms.biz.ICategoryBiz;
+import net.mingsoft.cms.dao.ICategoryDao;
+import net.mingsoft.cms.dao.IContentDao;
+import net.mingsoft.cms.entity.CategoryEntity;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 分类管理持久化层
+ * @author 铭飞开发团队
+ * 创建日期:2019-11-28 15:12:32
+ * 历史修订:
+ */
+@Service("cmscategoryBizImpl")
+@Transactional(rollbackFor = RuntimeException.class)
+public class CategoryBizImpl extends BaseBizImpl implements ICategoryBiz {
+
+
+ @Autowired
+ private ICategoryDao categoryDao;
+
+ @Autowired
+ private IContentDao contentDao;
+
+
+ @Override
+ protected IBaseDao getDao() {
+ // TODO Auto-generated method stub
+ return categoryDao;
+ }
+
+ @Override
+ public List queryChildren(CategoryEntity category) {
+ // TODO Auto-generated method stub
+ return categoryDao.queryChildren(category);
+ }
+
+ @Override
+ public void saveEntity(CategoryEntity categoryEntity) {
+ // TODO Auto-generated method stub
+ String pingYin = PinYinUtil.getPingYin(categoryEntity.getCategoryTitle());
+ //如果用户自己填入了拼音则使用用户的
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryPinyin())) {
+ pingYin = categoryEntity.getCategoryPinyin();
+ }
+ CategoryEntity category = new CategoryEntity();
+ category.setCategoryPinyin(pingYin);
+ Object categoryBizEntity = getEntity(category);
+ setParentId(categoryEntity);
+ categoryEntity.setCategoryPinyin(pingYin);
+ //更新新的父级
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
+ CategoryEntity parent = getById(categoryEntity.getCategoryId());
+ //如果之前是叶子节点就更新
+ if (parent.getLeaf()) {
+ parent.setLeaf(false);
+ updateById(parent);
+ }
+ }
+ categoryEntity.setLeaf(false);
+ //如果是新增栏目一定是叶子节点
+ if (StrUtil.isEmpty(categoryEntity.getId())) {
+ categoryEntity.setLeaf(true);
+ }
+ super.save(categoryEntity);
+ //拼音存在则拼接id
+ if (categoryBizEntity != null) {
+ categoryEntity.setCategoryPinyin(pingYin + categoryEntity.getId());
+ }
+ CategoryEntity parentCategory = null;
+ if (StringUtils.isNotBlank(categoryEntity.getCategoryId())) {
+ parentCategory = (CategoryEntity) getById(categoryEntity.getCategoryId());
+ }
+ //保存链接地址
+ String path = ObjectUtil.isNotNull(parentCategory) ? parentCategory.getCategoryPath() : "";
+ categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
+ setTopId(categoryEntity);
+ super.updateById(categoryEntity);
+ }
+
+ private void setParentId(CategoryEntity categoryEntity) {
+ String path = "";
+ if (StringUtils.isNotEmpty(categoryEntity.getCategoryId()) && Long.parseLong(categoryEntity.getCategoryId()) > 0) {
+ CategoryEntity category = (CategoryEntity) getById(categoryEntity.getCategoryId());
+ path = category.getCategoryPath();
+ if (StringUtils.isEmpty(category.getCategoryParentIds())) {
+ categoryEntity.setCategoryParentIds(category.getId());
+ } else {
+ categoryEntity.setCategoryParentIds(category.getCategoryParentIds() + "," + category.getId());
+ }
+ } else {
+ categoryEntity.setCategoryParentIds(null);
+ }
+ //保存时先保存再修改链接地址,修改时直接修改
+ if (StringUtils.isNotBlank(categoryEntity.getId())) {
+ categoryEntity.setCategoryPath(path + "/" + categoryEntity.getCategoryPinyin());
+ }
+
+ }
+
+ private void setChildParentId(CategoryEntity categoryEntity, String topId) {
+ CategoryEntity category = new CategoryEntity();
+ category.setCategoryId(categoryEntity.getId());
+ List list = categoryDao.query(category);
+ list.forEach(x -> {
+ if (StringUtils.isEmpty(categoryEntity.getCategoryParentIds())) {
+ x.setCategoryParentIds(categoryEntity.getId());
+ } else {
+ x.setCategoryParentIds(categoryEntity.getCategoryParentIds() + "," + categoryEntity.getId());
+ }
+ //更新topid
+ x.setTopId(topId);
+ String path = categoryEntity.getCategoryPath();
+ //判断是否有parentIds
+ x.setCategoryPath(path + "/" + x.getCategoryPinyin());
+ //去除多余的/符号
+ super.updateEntity(x);
+ setChildParentId(x, topId);
+ });
+ }
+
+ @Override
+ public void updateEntity(CategoryEntity entity) {
+ setParentId(entity);
+ String pingYin = entity.getCategoryPinyin();
+ if (StrUtil.isNotBlank(pingYin)) {
+ CategoryEntity category = new CategoryEntity();
+ category.setCategoryPinyin(pingYin);
+ CategoryEntity categoryBizEntity = (CategoryEntity) getEntity(category);
+ //拼音存在则拼接id
+ if (categoryBizEntity != null && !categoryBizEntity.getId().equals(entity.getId())) {
+ entity.setCategoryPinyin(pingYin + entity.getId());
+ }
+ }
+ setParentLeaf(entity);
+ setTopId(entity);
+ //如果父级栏目和父级id为空字符串则转化成null
+ if (StringUtils.isEmpty(entity.getCategoryId())) {
+ entity.setCategoryId(null);
+ }
+ if (StringUtils.isEmpty(entity.getCategoryParentIds())) {
+ entity.setCategoryParentIds(null);
+ }
+ categoryDao.updateEntity(entity);
+ //更新子节点所有父节点id和topid
+ //如果本节点的topid为0(顶级栏目),则把自身的id作为子栏目的topid,非0所有的子栏目和本栏目使用同一个topid
+ String topId = entity.getTopId();
+ if (topId.equals("0")) {
+ topId = entity.getId();
+ }
+ setChildParentId(entity, topId);
+ }
+
+
+ @Override
+ public void update(CategoryEntity entity) {
+ super.updateEntity(entity);
+ }
+
+ @Override
+ public void delete(String categoryId) {
+ // TODO Auto-generated method stub
+ CategoryEntity category = (CategoryEntity) categoryDao.selectById(categoryId);
+ //删除父类
+ if (category != null) {
+ List childrenList = categoryDao.queryChildren(category);
+ List ids = new ArrayList<>();
+ for (int i = 0; i < childrenList.size(); i++) {
+ //删除子类
+ ids.add(childrenList.get(i).getId());
+ }
+ categoryDao.deleteBatchIds(ids);
+ // 删除文章
+ contentDao.deleteEntityByCategoryIds(ids.toArray(new String[ids.size()]));
+
+ //获取被删节点的父节点
+ CategoryEntity parentNode = categoryDao.selectById(category.getCategoryId());
+ //获取被删节点的所属栏目的其他节点
+ List childNode = categoryDao.queryChildren(parentNode);
+ //判断删除的是否为主节点
+ if (parentNode != null) {
+ UpdateWrapper updateWrapper = new UpdateWrapper<>();
+ //如果没有子节点进行更新代码
+ if (childNode.size() == 1) {
+ updateWrapper.eq("id", parentNode.getId()).set("leaf", 1);
+ categoryDao.update(null, updateWrapper);
+ }
+
+ }
+
+ }
+ }
+
+ /**
+ * 设置父级叶子节点
+ * @param entity
+ */
+ private void setParentLeaf(CategoryEntity entity) {
+ CategoryEntity categoryEntity = getById(entity.getId());
+ //如果父级不为空并且修改了父级则需要更新父级
+ if (entity.getCategoryId() != null && !entity.getCategoryId().equals(categoryEntity.getCategoryId())) {
+ //更新旧的父级
+ if (StrUtil.isNotBlank(categoryEntity.getCategoryId()) && !"0".equals(categoryEntity.getCategoryId())) {
+ CategoryEntity parent = getById(categoryEntity.getCategoryId());
+ //如果修改了父级则需要判断父级是否还有子节点
+ boolean leaf = parent.getLeaf();
+ //查找不等于当前更新的分类子集,有则不是叶子节点
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ parent.setLeaf(count(queryWrapper.eq("category_id", parent.getId()).ne("id", entity.getId())) == 0);
+ if (leaf != parent.getLeaf()) {
+ updateById(parent);
+ }
+
+ }
+ //更新新的父级
+ if (StrUtil.isNotBlank(entity.getCategoryId()) && !"0".equals(entity.getCategoryId())) {
+ CategoryEntity parent = getById(entity.getCategoryId());
+ //如果之前是叶子节点就更新
+ if (parent.getLeaf()) {
+ parent.setLeaf(false);
+ updateById(parent);
+ }
+ }
+ }
+ }
+
+ /**
+ * 设置顶级id
+ * @param entity
+ */
+ private void setTopId(CategoryEntity entity) {
+ String categoryParentId = entity.getCategoryParentIds();
+ if (StrUtil.isNotBlank(categoryParentId)) {
+ String[] ids = categoryParentId.split(",");
+ //如果有ParentId就取第一个
+ if (ids.length > 0) {
+ entity.setTopId(ids[0]);
+ return;
+ }
+ }
+ entity.setTopId("0");
+ }
+
+ @Override
+ public void copyCategory(CategoryEntity category) {
+ String oldId = category.getId();
+ //先保存被复制第一层栏目,因为第一层栏目不需要变更父级栏目
+ category = getById(oldId);
+ //id、拼音和路径按照原来的业务逻辑生成
+ category.setId(null);
+ category.setCategoryPinyin(null);
+ category.setCategoryPath(null);
+ saveEntity(category);
+ //传入简要被复制子栏目的id和复制后的生成的id,复制的子栏目全部使用
+ recursionCopyChilds(oldId, category.getId());
+ }
+
+ /*
+ * 递归复制子栏目
+ * @param oldParentId:被复制的父级栏目id(需要数据库原来存在该数据)
+ * @param newParentId:复制栏目后新父级的id(新插入数据的id)
+ * */
+ private void recursionCopyChilds(String oldParentId, String newParentId) {
+ CategoryEntity _category = new CategoryEntity();
+ _category.setCategoryId(oldParentId);
+ List childs = query(_category);
+ for (CategoryEntity child : childs) {
+ String childId = child.getId();
+ //id、拼音和路径按照原来的业务逻辑生成
+ child.setId(null);
+ child.setCategoryPinyin(null);
+ child.setCategoryPath(null);
+ child.setCategoryId(newParentId);
+ saveEntity(child);
+ //如果该栏目下还有子栏目则继续复制该栏目里的子栏目
+ recursionCopyChilds(childId, child.getId());
+ }
+ }
+
+}
diff --git a/src/main/java/net/mingsoft/cms/constant/Const.java b/src/main/java/net/mingsoft/cms/constant/Const.java
index e2ac0e78..1d93ed23 100755
--- a/src/main/java/net/mingsoft/cms/constant/Const.java
+++ b/src/main/java/net/mingsoft/cms/constant/Const.java
@@ -18,17 +18,17 @@
* 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.constant;
-
-/**
- * @Author: 铭飞开源团队--huise
- * @Date: 2019/8/9 20:51
- */
-public class Const {
- /**
- * 资源文件
- */
- public final static String RESOURCES = "net.mingsoft.cms.resources.resources";
-}
+
+
+package net.mingsoft.cms.constant;
+
+/**
+ * @Author: 铭飞开源团队--huise
+ * @Date: 2019/8/9 20:51
+ */
+public class Const {
+ /**
+ * 资源文件
+ */
+ public final static String RESOURCES = "net.mingsoft.cms.resources.resources";
+}
diff --git a/src/main/java/net/mingsoft/cms/dao/ICategoryDao.java b/src/main/java/net/mingsoft/cms/dao/ICategoryDao.java
index f8224fa5..1b975f33 100755
--- a/src/main/java/net/mingsoft/cms/dao/ICategoryDao.java
+++ b/src/main/java/net/mingsoft/cms/dao/ICategoryDao.java
@@ -18,30 +18,30 @@
* 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.dao;
-
-import net.mingsoft.base.dao.IBaseDao;
-import net.mingsoft.cms.entity.CategoryEntity;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * 分类持久层
- * @author 铭飞开发团队
- * 创建日期:2019-11-28 15:12:32
- * 历史修订:
- */
-@Component("cmsCategoryDao")
-public interface ICategoryDao extends IBaseDao {
-
- /**
- * 查询当前分类下面的所有子分类
- * @param category 必须存在categoryId categoryParentId
- * @return
- */
- public List queryChildren(CategoryEntity category);
-
-}
+
+
+package net.mingsoft.cms.dao;
+
+import net.mingsoft.base.dao.IBaseDao;
+import net.mingsoft.cms.entity.CategoryEntity;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * 分类持久层
+ * @author 铭飞开发团队
+ * 创建日期:2019-11-28 15:12:32
+ * 历史修订:
+ */
+@Component("cmsCategoryDao")
+public interface ICategoryDao extends IBaseDao {
+
+ /**
+ * 查询当前分类下面的所有子分类
+ * @param category 必须存在categoryId categoryParentId
+ * @return
+ */
+ public List queryChildren(CategoryEntity category);
+
+}
diff --git a/src/main/java/net/mingsoft/cms/dao/ICmsHistoryLogDao.java b/src/main/java/net/mingsoft/cms/dao/ICmsHistoryLogDao.java
index ae3e8dc1..233009c9 100755
--- a/src/main/java/net/mingsoft/cms/dao/ICmsHistoryLogDao.java
+++ b/src/main/java/net/mingsoft/cms/dao/ICmsHistoryLogDao.java
@@ -18,17 +18,17 @@
* 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.dao;
-
-import net.mingsoft.base.dao.IBaseDao;
-
-/**
- * 文章浏览记录持久层
- * @author 铭飞开发团队
- * 创建日期:2019-12-23 9:24:03
- * 历史修订:
- */
-public interface ICmsHistoryLogDao extends IBaseDao {
-}
+
+
+package net.mingsoft.cms.dao;
+
+import net.mingsoft.base.dao.IBaseDao;
+
+/**
+ * 文章浏览记录持久层
+ * @author 铭飞开发团队
+ * 创建日期:2019-12-23 9:24:03
+ * 历史修订:
+ */
+public interface ICmsHistoryLogDao extends IBaseDao {
+}
diff --git a/src/main/java/net/mingsoft/cms/entity/CategoryEntity.java b/src/main/java/net/mingsoft/cms/entity/CategoryEntity.java
index bc15fd1f..d0ea82bd 100755
--- a/src/main/java/net/mingsoft/cms/entity/CategoryEntity.java
+++ b/src/main/java/net/mingsoft/cms/entity/CategoryEntity.java
@@ -7,10 +7,10 @@
* 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
@@ -24,6 +24,11 @@ package net.mingsoft.cms.entity;
import com.baomidou.mybatisplus.annotation.*;
import net.mingsoft.base.entity.BaseEntity;
+import net.mingsoft.basic.util.BasicUtil;
+import net.mingsoft.config.MSProperties;
+import net.mingsoft.mdiy.util.ConfigUtil;
+
+import java.io.File;
/**
* 分类实体
@@ -131,6 +136,21 @@ public class CategoryEntity extends BaseEntity {
*/
private String topId;
+ /**
+ * 路径url
+ */
+ @TableField(exist = false)
+ private String url;
+
+ /**
+ * 设置url路径
+ *
+ * @param url 路径的字符串
+ */
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
public Boolean getLeaf() {
return leaf;
}
@@ -419,7 +439,8 @@ public class CategoryEntity extends BaseEntity {
* 获取栏目Id(标签使用)
*/
public Boolean getTypeleaf() {
- return this.leaf; }
+ return this.leaf;
+ }
/**
@@ -431,6 +452,7 @@ public class CategoryEntity extends BaseEntity {
@TableField(exist = false)
private String typepath;
+
/**
* 获取栏目图片 (标签使用)
*/
@@ -462,4 +484,22 @@ public class CategoryEntity extends BaseEntity {
this.childsize = childsize;
}
+ /**
+ * 获取url路径
+ *
+ * @return url路径的字符串
+ */
+ public String getUrl() {
+ String appDir = "";
+ String htmlDir = MSProperties.diy.htmlDir;
+ String categoryPath = this.getCategoryPath();
+ String categoryPinyin = this.getCategoryPinyin();
+ if (!(ConfigUtil.getBoolean("短链配置", "shortLinkSwitch", false))) {
+ //未开启短链
+ appDir = "/" + BasicUtil.getApp().getAppDir();
+ return url = "/" + htmlDir + appDir + categoryPath + "/index.html";
+ }
+ //开启短链后的url拼接
+ return url = "/" + htmlDir + appDir + "/" + categoryPinyin + ".html";
+ }
}
diff --git a/src/main/java/net/mingsoft/config/WebConfig.java b/src/main/java/net/mingsoft/config/WebConfig.java
index ea5d1a8b..0653a11d 100644
--- a/src/main/java/net/mingsoft/config/WebConfig.java
+++ b/src/main/java/net/mingsoft/config/WebConfig.java
@@ -132,7 +132,8 @@ public class WebConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean xssFilterRegistration(@Value("${ms.xss.enable:true}") boolean xssEnable,
@Value("${ms.xss.filter-url}") String filterUrl,
- @Value("${ms.xss.exclude-url}") String excludeUrl) {
+ @Value("${ms.xss.exclude-url}") String excludeUrl,
+ @Value("${ms.xss.exclude-filed}") String excludeFiled) {
XSSEscapeFilter xssFilter = new XSSEscapeFilter();
Map initParameters = new HashMap();
FilterRegistrationBean registration = new FilterRegistrationBean();
@@ -149,6 +150,9 @@ public class WebConfig implements WebMvcConfigurer {
}else {
xssFilter.excludes.add(MSProperties.manager.path + "/**");
}
+ if (excludeFiled != null && StrUtil.isNotBlank(excludeFiled)) {
+ xssFilter.excludesFiled.addAll(Arrays.asList(excludeFiled.split(",")));
+ }
initParameters.put("isIncludeRichText", "false");
registration.setInitParameters(initParameters);
registration.setFilter(xssFilter);
diff --git a/src/main/webapp/template/1/default/news-detail.htm b/src/main/webapp/template/1/default/news-detail.htm
index 910979f4..61286fb5 100755
--- a/src/main/webapp/template/1/default/news-detail.htm
+++ b/src/main/webapp/template/1/default/news-detail.htm
@@ -92,7 +92,6 @@
},
},
created() {
- this.likeTotal()
}
})