Commit eea4a63e authored by hanfeng's avatar hanfeng

seo后台列表

parent 7b736d25
package com.xxfc.platform.uccn.dto; package com.xxfc.platform.uccn.dto;
import com.xxfc.platform.uccn.entity.SEO; import com.xxfc.platform.uccn.entity.Model;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -8,11 +8,11 @@ import java.util.List; ...@@ -8,11 +8,11 @@ import java.util.List;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
public class SEODto { public class ModelDto {
private SEO parent; private Model parent;
private List<SEO> list; private List<Model> list;
public SEODto(SEO parent, List<SEO> list) { public ModelDto(Model parent, List<Model> list) {
this.parent = parent; this.parent = parent;
this.list = list; this.list = list;
} }
......
package com.xxfc.platform.uccn.dto;
import com.xxfc.platform.uccn.entity.SEO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
@Data
@Api
public class SeoDTO extends SEO {
@Column(name = "modeName")
@ApiModelProperty(value = "模块名称")
private String modelName;
@Column(name = "model_id")
@ApiModelProperty(value = "模块id")
private Integer modelId;
}
package com.xxfc.platform.uccn.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javafx.scene.input.Mnemonic;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@Data
@Table(name = "model")
@ApiModel(value = "官网模块实体")
@NoArgsConstructor
public class Model implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键")
private Integer id;
@Column(name = "parent_id")
@ApiModelProperty(value = "父模块id")
private Integer parentId;
@Column(name = "name")
@ApiModelProperty(value = "模块名称")
private String name;
@Column(name = "level")
@ApiModelProperty(value = "模块等级")
private Integer level;
@Column(name = "cre_time")
@ApiModelProperty(value = " 创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date creTime;
@Column(name = "upd_time")
@ApiModelProperty(value = "修改时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updTime;
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除")
private Integer isDel;
@Column(name = "rank")
@ApiModelProperty(value = "排序")
private Integer rank;
public Model(Integer id) {
this.id = id;
}
}
...@@ -3,7 +3,6 @@ package com.xxfc.platform.uccn.entity; ...@@ -3,7 +3,6 @@ package com.xxfc.platform.uccn.entity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import javafx.scene.input.Mnemonic;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
...@@ -13,26 +12,35 @@ import java.util.Date; ...@@ -13,26 +12,35 @@ import java.util.Date;
@Data @Data
@Table(name = "seo") @Table(name = "seo")
@ApiModel(value = "seo") @ApiModel(value = "seo列表实体")
@NoArgsConstructor @NoArgsConstructor
public class SEO { public class SEO {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@ApiModelProperty(value = "主键") @ApiModelProperty(value = "主键")
private Integer id; private Integer id;
@Column(name = "parent_id")
@ApiModelProperty(value = "父模块id")
private Integer parentId;
@Column(name = "name") @Column(name = "model_id")
@ApiModelProperty(value = "模块名称") @ApiModelProperty(value = "模块id")
private String name; private Integer modelId;
@Column(name = "title")
@ApiModelProperty(value = "title内容")
private String title;
@Column(name = "keywords")
@ApiModelProperty(value = "关键子")
private String keywords;
@Column(name = "description")
@ApiModelProperty(value = "description内容")
private String description;
@Column(name = "header")
@ApiModelProperty(value = "标题")
private String header;
@Column(name = "level")
@ApiModelProperty(value = "模块等级")
private Integer level;
@Column(name = "cre_time") @Column(name = "cre_time")
@ApiModelProperty(value = " 创建时间") @ApiModelProperty(value = " 创建时间")
...@@ -46,15 +54,4 @@ public class SEO { ...@@ -46,15 +54,4 @@ public class SEO {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updTime; private Date updTime;
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除")
private int isDel;
@Column(name = "rank")
@ApiModelProperty(value = "排序")
private int rank;
public SEO(Integer parentId) {
this.parentId = parentId;
}
} }
package com.xxfc.platform.uccn.vo;
import lombok.Data;
/**
* @author Administrator
*/
@Data
public class ModelQuery {
private Integer page = 1;
private Integer limit = 10;
}
package com.xxfc.platform.uccn.vo; package com.xxfc.platform.uccn.vo;
import com.xxfc.platform.uccn.entity.SEO; import com.xxfc.platform.uccn.entity.Model;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
@Data @Data
public class SEOvo { public class ModelVo {
private Integer parentId; private Integer parentId;
private List<SEO> list; private List<Model> list;
} }
...@@ -2,6 +2,9 @@ package com.xxfc.platform.uccn.vo; ...@@ -2,6 +2,9 @@ package com.xxfc.platform.uccn.vo;
import lombok.Data; import lombok.Data;
/**
* @author Administrator
*/
@Data @Data
public class SEOQuery { public class SEOQuery {
private Integer page = 1; private Integer page = 1;
......
package com.xxfc.platform.uccn.vo;
import com.xxfc.platform.uccn.entity.SEO;
import lombok.Data;
@Data
public class SEOVo extends SEO {
}
package com.xxfc.platform.uccn.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.uccn.dto.ModelDto;
import com.xxfc.platform.uccn.entity.Model;
import com.xxfc.platform.uccn.vo.ModelVo;
import com.xxfc.platform.uccn.mapper.ModelBackgroundMapper;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class ModelBackgroundBiz extends BaseBiz<ModelBackgroundMapper, Model> {
private final Integer BASE_PARENT_ID = 0;
private final Integer NOT_DELETE = 0;
private final Integer level=2;
@Autowired
private ApplicationContext context;
public List<ModelDto> getList() {
List<Model> ModelList = getProxy().getListByParentId(BASE_PARENT_ID);
if (CollectionUtils.isEmpty(ModelList)) {
return new ArrayList<>();
}
return getModelDtos(ModelList);
}
/**
* 获取ModelDto集合
* @param models
* @return
*/
private ArrayList<ModelDto> getModelDtos(List<Model> models) {
ArrayList<ModelDto> modelDtos = new ArrayList<>();
for (Model el : models) {
if (el.getLevel()==3) {
break;
}
List<Model> list = getListByParentId(el.getId());
modelDtos.add(new ModelDto(el, list));
modelDtos.addAll(getModelDtos(list));
}
return modelDtos;
}
/**
* 根据父类id获取所有子类集合
*
* @param parentId
* @return
*/
// @Cache(key = "ModelList{1}")
public List<Model> getListByParentId(Integer parentId) {
Example exa = new Example(Model.class);
Example.Criteria criteria = exa.createCriteria();
criteria.andEqualTo("parentId",parentId).andEqualTo("isDel",NOT_DELETE);
exa.orderBy("rank").asc();
return mapper.selectByExample(exa);
}
/**
* 获取代理对象
*
* @return
*/
private ModelBackgroundBiz getProxy() {
return context.getBean(ModelBackgroundBiz.class);
}
/**
* 修改子模块
*
* @param Modelvo
* @return
*/
// @CacheClear(key = "ModelList{1.Integer}")
public String update(ModelVo Modelvo) {
if (Modelvo==null||Modelvo.getParentId()==null) {
return "无修改数据";
}
Model Model = selectById(Modelvo.getParentId());
if (Model==null||(!Model.getIsDel().equals(NOT_DELETE))||BASE_PARENT_ID.equals(Model.getParentId())) {
return "该标签不能修改";
}
if (CollectionUtils.isNotEmpty(Modelvo.getList())) {
for (Model el : Modelvo.getList()) {
if (el.getId()==null) {
el.setIsDel(NOT_DELETE);
el.setCreTime(new Date());
el.setParentId(Modelvo.getParentId());
if (el.getRank() == null) {
el.setRank(0);
}
mapper.insertSelective(el);
}else {
el.setUpdTime(new Date());
mapper.updateByPrimaryKeySelective(el);
}
}
}
return null;
}
}
package com.xxfc.platform.uccn.biz; package com.xxfc.platform.uccn.biz;
import com.ace.cache.annotation.Cache; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.uccn.dto.SEODto; import com.xxfc.platform.uccn.dto.SeoDTO;
import com.xxfc.platform.uccn.entity.SEO; import com.xxfc.platform.uccn.entity.SEO;
import com.xxfc.platform.uccn.vo.SEOvo; import com.xxfc.platform.uccn.mapper.SEOMapper;
import com.xxfc.platform.uccn.mapper.SEOBackgroundMapper;
import com.xxfc.platform.uccn.vo.SEOQuery; import com.xxfc.platform.uccn.vo.SEOQuery;
import org.apache.commons.collections.CollectionUtils; import com.xxfc.platform.uccn.vo.SEOVo;
import org.springframework.beans.factory.annotation.Autowired; import org.apache.commons.beanutils.BeanUtilsBean;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
/**
* @author Administrator
*/
@Service @Service
public class SEOBackgroundBiz extends BaseBiz<SEOBackgroundMapper, SEO> { public class SEOBackgroundBiz extends BaseBiz<SEOMapper, SEO> {
private final Integer BASE_PARENT_ID = 0; public PageInfo<SeoDTO> getList(SEOQuery query) {
PageHelper.startPage(query.getPage(),query.getLimit());
private final Integer NOT_DELETE = 0; List<SeoDTO> seodtoList = mapper.getSEODTOList();
return PageInfo.of(seodtoList);
private final Integer level=2;
@Autowired
private ApplicationContext context;
public List<SEODto> getList() {
List<SEO> seoList = getProxy().getListByParentId(BASE_PARENT_ID);
if (CollectionUtils.isEmpty(seoList)) {
return new ArrayList<>();
}
return getSeoDtos(seoList);
} }
/**
* 获取SEODto集合
* @param seoList
* @return
*/
private ArrayList<SEODto> getSeoDtos(List<SEO> seoList) {
ArrayList<SEODto> seoDtos = new ArrayList<>();
for (SEO el : seoList) {
List<SEO> list = getListByParentId(el.getId());
seoDtos.add(new SEODto(el, list));
}
return seoDtos;
}
/** @Transactional(rollbackFor = Exception.class)
* 根据父类id获取所有子类集合 public boolean update(SEOVo seoVo) {
*
* @param parentId
* @return
*/
@Cache(key = "seoList:{1}")
public List<SEO> getListByParentId(Integer parentId) {
Example exa = new Example(SEO.class);
Example.Criteria criteria = exa.createCriteria();
criteria.andEqualTo("parentId",parentId).andEqualTo("isDel",NOT_DELETE);
exa.orderBy("rank").asc();
return mapper.selectByExample(exa);
}
/**
* 获取代理对象
*
* @return
*/
private SEOBackgroundBiz getProxy() {
return context.getBean(SEOBackgroundBiz.class);
}
try {
if (seoVo==null) {
/** return false;
* 修改子模块 }
* SEO seo = new SEO();
* @param seOvo BeanUtilsBean.getInstance().copyProperties(seo,seoVo);
* @return if (seo.getId()==null) {
*/ seo.setCreTime(new Date());
@Cache(key = "seoList:{1.Integer}") mapper.insertSelective(seo);
public String update(SEOvo seOvo) { }else {
if (seOvo==null||seOvo.getParentId()==null) { seo.setUpdTime(new Date());
return "无修改数据"; mapper.updateByPrimaryKeySelective(seo);
}
SEO seo = selectOne(new SEO(seOvo.getParentId()));
if (seo.getIsDel()!=NOT_DELETE||BASE_PARENT_ID.equals(seo.getParentId())) {
return "该标签不能修改";
}
if (CollectionUtils.isNotEmpty(seOvo.getList())) {
for (SEO el : seOvo.getList()) {
if (el.getId()==null) {
el.setIsDel(NOT_DELETE);
el.setCreTime(new Date());
mapper.insertSelective(el);
}else {
el.setUpdTime(new Date());
mapper.updateByPrimaryKeySelective(el);
}
} }
return true;
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return false;
} }
return null;
} }
} }
package com.xxfc.platform.uccn.mapper;
import com.xxfc.platform.uccn.entity.Model;
import tk.mybatis.mapper.common.Mapper;
public interface ModelBackgroundMapper extends Mapper<Model> {
}
package com.xxfc.platform.uccn.mapper; package com.xxfc.platform.uccn.mapper;
import com.xxfc.platform.uccn.dto.SeoDTO;
import com.xxfc.platform.uccn.entity.SEO; import com.xxfc.platform.uccn.entity.SEO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
public interface SEOBackgroundMapper extends Mapper<SEO> { import java.util.List;
public interface SEOMapper extends Mapper<SEO> {
List<SeoDTO> getSEODTOList();
} }
package com.xxfc.platform.uccn.rest.admin;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.uccn.biz.ModelBackgroundBiz;
import com.xxfc.platform.uccn.entity.Model;
import com.xxfc.platform.uccn.vo.ModelVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("Model")
@Api(tags={"Model后台管理类"})
public class ModelBackgroundController extends BaseController<ModelBackgroundBiz, Model> {
@GetMapping("/list")
@ApiOperation(value = "查询模块列表")
public ObjectRestResponse findList(){
return ObjectRestResponse.succ(baseBiz.getList());
}
@PutMapping("/upd")
@ApiOperation(value = "修改模块")
public ObjectRestResponse update(@RequestBody ModelVo modelvo){
String update = baseBiz.update(modelvo);
if (update==null) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,update) ;
}
}
...@@ -4,27 +4,31 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; ...@@ -4,27 +4,31 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.uccn.biz.SEOBackgroundBiz; import com.xxfc.platform.uccn.biz.SEOBackgroundBiz;
import com.xxfc.platform.uccn.entity.SEO; import com.xxfc.platform.uccn.entity.SEO;
import com.xxfc.platform.uccn.vo.SEOvo; import com.xxfc.platform.uccn.vo.SEOQuery;
import com.xxfc.platform.uccn.vo.SEOVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/**
* @author Administrator
*/
@RestController @RestController
@RequestMapping("seo") @RequestMapping("seo")
@Api(tags={"seo后台管理类"}) @Api(tags={"seo后台管理类"})
public class SEOBackgroundController extends BaseController<SEOBackgroundBiz, SEO> { public class SEOBackgroundController extends BaseController<SEOBackgroundBiz, SEO> {
@GetMapping("/list") @PostMapping("/list")
@ApiOperation(value = "查询模块列表") @ApiOperation(value = "查询模块列表")
public ObjectRestResponse findList(){ public ObjectRestResponse findList(@RequestBody SEOQuery query){
return ObjectRestResponse.succ(baseBiz.getList()); return ObjectRestResponse.succ(baseBiz.getList(query));
} }
@PutMapping("/upd") @PutMapping("/upd")
@ApiOperation(value = "修改模块") @ApiOperation(value = "修改模块")
public ObjectRestResponse update(@RequestBody SEOvo seOvo){ public ObjectRestResponse update(@RequestBody SEOVo seoVo){
String update = baseBiz.update(seOvo); boolean result = baseBiz.update(seoVo);
if (update==null) { if (result) {
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
return ObjectRestResponse.createDefaultFail() ; return ObjectRestResponse.createDefaultFail() ;
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.xxfc.platform.uccn.mapper.ArticleMapper"> <mapper namespace="com.xxfc.platform.uccn.mapper.ArticleMapper">
<select id="getArticleList" resultType="com.xxfc.platform.uccn.entity.Article"> <select id="getArticleList" resultType="com.xxfc.platform.uccn.entity.Article">
select id, title,epitome,add_time,cover_image from article select id, title,epitome,add_time,cover_image from article
where where
is_del=0 is_del=0
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.uccn.mapper.SEOMapper">
<select id="getSEODTOList" resultType="com.xxfc.platform.uccn.dto.SeoDTO">
select
m.name as modelName ,
m.id as model_id,
s.title as title,
s.keywords as keywords,
s.description as description,
s.header as header
from
model m
left join
seo s
on
m.id= s.model_id
WHERE
m.is_del = 0
ORDER BY
m.`level` ASC
</select>
</mapper>
\ No newline at end of file
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