Просмотр исходного кода

知识社区功能
政策新闻新增/刷新bug修改
需求刷新时bug修改

limin лет назад: 7
Родитель
Сommit
61a44bd565
30 измененных файлов с 3530 добавлено и 20 удалено
  1. 36 0
      src/main/java/com/goafanti/admin/bo/KnowledgeBaseBo.java
  2. 139 0
      src/main/java/com/goafanti/admin/controller/AdminCommunityApiController.java
  3. 1 1
      src/main/java/com/goafanti/admin/service/AdminVideoService.java
  4. 62 0
      src/main/java/com/goafanti/admin/service/CommunityService.java
  5. 125 0
      src/main/java/com/goafanti/admin/service/impl/AdminCommunityServiceImpl.java
  6. 2 2
      src/main/java/com/goafanti/admin/service/impl/AdminVideoServiceImpl.java
  7. 1 1
      src/main/java/com/goafanti/comment/bo/CommentInput.java
  8. 1 0
      src/main/java/com/goafanti/common/constant/PageConstants.java
  9. 115 0
      src/main/java/com/goafanti/common/controller/PortalController.java
  10. 1 1
      src/main/java/com/goafanti/common/controller/PublicController.java
  11. 1 1
      src/main/java/com/goafanti/common/controller/WebpageController.java
  12. 90 0
      src/main/java/com/goafanti/common/dao/JtKnowledgeBaseMapper.java
  13. 1 1
      src/main/java/com/goafanti/common/dao/JtVideoMapper.java
  14. 2 1
      src/main/java/com/goafanti/common/enums/AttachmentType.java
  15. 58 0
      src/main/java/com/goafanti/common/enums/KnowledgeBaseFields.java
  16. 1 0
      src/main/java/com/goafanti/common/enums/collectType.java
  17. 645 0
      src/main/java/com/goafanti/common/mapper/JtKnowledgeBaseMapper.xml
  18. 2 2
      src/main/java/com/goafanti/common/mapper/JtVideoMapper.xml
  19. 585 0
      src/main/java/com/goafanti/common/model/JtKnowledgeBase.java
  20. 1333 0
      src/main/java/com/goafanti/common/model/JtKnowledgeBaseExample.java
  21. 14 1
      src/main/java/com/goafanti/common/model/Policy.java
  22. 1 1
      src/main/java/com/goafanti/demand/service/impl/DemandServiceImpl.java
  23. 1 1
      src/main/java/com/goafanti/news/bo/InputNews.java
  24. 20 3
      src/main/java/com/goafanti/news/controller/AdminNewsApiController.java
  25. 21 3
      src/main/java/com/goafanti/news/controller/AdminPolicyApiController.java
  26. 1 0
      src/main/java/com/goafanti/news/enums/NewsFields.java
  27. 5 0
      src/main/webapp/WEB-INF/views/common.html
  28. 130 0
      src/main/webapp/WEB-INF/views/portal/special/special.html
  29. 135 0
      src/main/webapp/WEB-INF/views/portal/special/specialDetail.html
  30. 1 1
      src/main/webapp/WEB-INF/views/portal/video/video.html

+ 36 - 0
src/main/java/com/goafanti/admin/bo/KnowledgeBaseBo.java

@@ -0,0 +1,36 @@
+package com.goafanti.admin.bo;
+
+import com.goafanti.common.model.JtKnowledgeBase;
+
+public class KnowledgeBaseBo extends JtKnowledgeBase{
+	private String ownerName;
+	
+	private String startTime;
+	
+	private String endTime;
+
+	public String getOwnerName() {
+		return ownerName;
+	}
+
+	public void setOwnerName(String ownerName) {
+		this.ownerName = ownerName;
+	}
+
+	public String getStartTime() {
+		return startTime;
+	}
+
+	public void setStartTime(String startTime) {
+		this.startTime = startTime;
+	}
+
+	public String getEndTime() {
+		return endTime;
+	}
+
+	public void setEndTime(String endTime) {
+		this.endTime = endTime;
+	}
+	
+}

+ 139 - 0
src/main/java/com/goafanti/admin/controller/AdminCommunityApiController.java

@@ -0,0 +1,139 @@
+package com.goafanti.admin.controller;
+
+import java.io.IOException;
+import java.util.Base64;
+import java.util.concurrent.ExecutionException;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.goafanti.admin.bo.KnowledgeBaseBo;
+import com.goafanti.admin.service.CommunityService;
+import com.goafanti.common.bo.Result;
+import com.goafanti.common.constant.ErrorConstants;
+import com.goafanti.common.controller.BaseApiController;
+import com.goafanti.common.enums.AttachmentType;
+import com.goafanti.common.enums.KnowledgeBaseFields;
+import com.goafanti.common.enums.VideoFields;
+import com.goafanti.common.model.JtKnowledgeBase;
+import com.goafanti.common.utils.StringUtils;
+import com.goafanti.core.mybatis.JDBCIdGenerator;
+import com.goafanti.core.shiro.token.TokenManager;
+
+
+@RestController
+@RequestMapping(value = "/api/admin/community")
+public class AdminCommunityApiController extends BaseApiController {
+	
+	@Autowired
+	private JDBCIdGenerator	idGenerator;
+	
+	@Resource
+	private CommunityService communityService;
+	
+	//查看所有产品专栏信息
+	@RequestMapping(value = "/list", method = RequestMethod.GET)
+	@ResponseBody
+	public Result clist(KnowledgeBaseBo knowledgeBase , Integer pageSize, Integer pageNo){
+		Result res = new Result();
+		//查看更多
+		res.setData(communityService.getJtKnowledgeBaseList(knowledgeBase, pageNo, pageSize,1));
+		return res;
+	}
+	
+	// 查看单个信息
+	@RequestMapping(value = "/getCommunintyById", method = RequestMethod.GET)
+	@ResponseBody
+	public Result getCommunintyById(String id) {
+		Result result = new Result();
+		JtKnowledgeBase o = new JtKnowledgeBase();
+		o.setId(id);
+		result.setData(communityService.getCommunintyById(o));
+		return result;
+	}
+
+	// 新增产品信息
+	@RequestMapping(value = "/insertCommunity", method = RequestMethod.POST)
+	@ResponseBody
+	public Result insertCommunity(@Valid JtKnowledgeBase knowledgeBase, BindingResult bindingResult)
+			throws IOException, InterruptedException, ExecutionException {
+		// 数据限制
+		Result result = new Result();
+		if (bindingResult.hasErrors()) {
+			result.getError().add(
+					buildErrorByMsg(bindingResult.getFieldError()
+							.getDefaultMessage(), KnowledgeBaseFields 
+							.getFieldDesc(bindingResult.getFieldError()
+									.getField())));
+			return result;
+		}
+		if (StringUtils.isBlank(knowledgeBase.getTitle())) {
+			result.getError().add(buildError("视频名称不能是空", "视频名称不能是空"));
+			return result;
+		}
+		// 名称重名限制
+		 if(communityService.nameCheck(knowledgeBase.getTitle().trim()) > 0){
+			 result.getError().add(
+			 buildError(ErrorConstants.PARAM_ERROR, "", "视频名称重复不能新增"));
+			 return result;
+		 }
+		 result.setData(communityService.insertCommunity(knowledgeBase));
+		 return result;
+	}
+
+	// 修改知识社区
+	@RequestMapping(value = "/updateCommunity", method = RequestMethod.POST)
+	@ResponseBody
+	public Result updateCommunity(@Valid JtKnowledgeBase knowledgeBase, BindingResult bindingResult)
+			throws IOException, InterruptedException, ExecutionException {
+		Result result = new Result();
+		if (bindingResult.hasErrors()) {
+			result.getError().add(
+					buildErrorByMsg(bindingResult.getFieldError()
+							.getDefaultMessage(), VideoFields
+							.getFieldDesc(bindingResult.getFieldError()
+									.getField())));
+			return result;
+		}
+		// 名称重名限制
+		if(null != knowledgeBase.getTitle() && "".equals(knowledgeBase.getTitle().trim())){
+			result.getError().add(
+					buildError( "视频名称不能是空", "视频名称不能是空"));
+			return result;
+		}
+		//修改
+		result.setData(communityService.updateCommunity(knowledgeBase));
+		return result;
+	}
+		
+	//图片上传接口
+	@RequestMapping(value = "/upload", method = RequestMethod.POST)
+	@ResponseBody
+	public Result uploadPicture(HttpServletRequest req, String sign) {
+		Result res = new Result();
+		AttachmentType attachmentType = AttachmentType.getField(sign);
+		if (attachmentType == AttachmentType.KNOWLEDGE_BASE) {
+			String picturebase = req.getParameter("picturebase");
+			String filename = req.getParameter("filename");
+			byte[] bs = Base64.getDecoder().decode(picturebase);
+			filename = System.nanoTime()
+					+ filename.substring(filename.indexOf("."));
+			res.setData(handleBaseFiles(res, "/knowledge_base/", false, bs, sign,
+					TokenManager.getUserId(), filename));
+
+		} else {
+			res.getError().add(
+					buildError(ErrorConstants.PARAM_ERROR, "", "文件标示"));
+		}
+		return res;
+	}
+		
+}

+ 1 - 1
src/main/java/com/goafanti/admin/service/AdminVideoService.java

@@ -17,7 +17,7 @@ public interface AdminVideoService {
 	
 	int updateByUrl(JtVideo jtVideo);
 	
-	AdminVideoBo getIndexVideo(String summary);
+	AdminVideoBo getIndexVideo(Integer position);
 	
 	int nameCheck(String name);
 	

+ 62 - 0
src/main/java/com/goafanti/admin/service/CommunityService.java

@@ -0,0 +1,62 @@
+package com.goafanti.admin.service;
+
+import com.goafanti.admin.bo.KnowledgeBaseBo;
+import com.goafanti.common.model.JtKnowledgeBase;
+import com.goafanti.core.mybatis.page.Pagination;
+
+public interface CommunityService {
+	/**
+	 * 列表数据
+	 * @param knowledgeBase
+	 * @param pageNo
+	 * @param pageSize
+	 * @return
+	 */
+	Pagination<KnowledgeBaseBo> getJtKnowledgeBaseList(KnowledgeBaseBo knowledgeBase, Integer pageNo, Integer pageSize, Integer ob);
+	
+	/**
+	 * 根据id等获得数据
+	 * @param o
+	 * @return
+	 */
+	KnowledgeBaseBo getCommunintyById(JtKnowledgeBase o);
+	
+	/**
+	 * 插入数据
+	 * @param o
+	 * @return
+	 */
+	int insertCommunity(JtKnowledgeBase o);
+	
+	/**
+	 * 修改数据
+	 * @param o
+	 * @return
+	 */
+	int updateCommunity(JtKnowledgeBase o);
+	
+	/**
+	 * 检查名称
+	 * @param name
+	 * @return
+	 */
+	int nameCheck(String name);
+	
+	/**
+	 * 加一个阅读量
+	 * @return
+	 */
+	int addRead(String id);
+	/**
+	 * 加一个评论量
+	 * @return
+	 */
+	int addComment(String id);
+	/**
+	 * 加一个点赞量
+	 * @return
+	 */
+	int addStar(String id);
+	
+	
+}

+ 125 - 0
src/main/java/com/goafanti/admin/service/impl/AdminCommunityServiceImpl.java

@@ -0,0 +1,125 @@
+package com.goafanti.admin.service.impl;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.goafanti.admin.bo.KnowledgeBaseBo;
+import com.goafanti.admin.service.CommunityService;
+import com.goafanti.common.dao.JtCollectSearchMapper;
+import com.goafanti.common.dao.JtKnowledgeBaseMapper;
+import com.goafanti.common.enums.collectType;
+import com.goafanti.common.model.JtCollectSearch;
+import com.goafanti.common.model.JtKnowledgeBase;
+import com.goafanti.core.mybatis.BaseMybatisDao;
+import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.core.shiro.token.TokenManager;
+@Service
+public class AdminCommunityServiceImpl extends BaseMybatisDao<JtKnowledgeBaseMapper> implements CommunityService {
+	
+	@Autowired
+	private JtKnowledgeBaseMapper jtKnowledgeBaseMapper;
+	
+	@Autowired
+	private JtCollectSearchMapper collectSearchMapper;
+	
+	@Autowired
+	JtCollectSearchMapper	jtCollectSearchMapper;
+
+	@Override
+	public Pagination<KnowledgeBaseBo> getJtKnowledgeBaseList(KnowledgeBaseBo knowledgeBase, Integer pageNo,
+			Integer pageSize, Integer ob) {
+		Map<String,Object> params = new HashMap<String, Object>();
+		if(null != knowledgeBase) params.put("v", knowledgeBase);
+		params.put("ob", ob);//按创建时间排序
+		@SuppressWarnings("unchecked")
+		Pagination<KnowledgeBaseBo> kb = (Pagination<KnowledgeBaseBo>) findPage("getKnowledgeBaseListBySome","getKnowledgeBaseCountBySome",params,pageNo,pageSize);
+		return kb;
+		
+	}
+
+	@Override
+	public KnowledgeBaseBo getCommunintyById(JtKnowledgeBase o) {
+		return jtKnowledgeBaseMapper.getKnowledgeBaseById(o);
+	}
+
+	@Override
+	public int insertCommunity(JtKnowledgeBase o) {
+		//序号
+		o.setId(UUID.randomUUID().toString());
+		//创建人
+		o.setOwner(TokenManager.getUserId());
+		//关键字处理
+		if (null != o.getKeyword() && o.getKeyword().length()>0) {
+			addKeyword(o);
+		}
+		//发布时间处理
+		if(1 == o.getStatus()){
+			o.setCreateTime(new Date());
+			o.setReleaseTime(new Date());
+		}
+		return jtKnowledgeBaseMapper.insertSelective(o);
+	}
+
+	@Override
+	public int updateCommunity(JtKnowledgeBase o) {
+		if(o.getStatus() == 1){
+			o.setReleaseTime(new Date());
+		}else
+		//删除关键字
+		if( "".equals(o.getKeyword())){
+			updateJtCollectSearch(o.getId());
+		}
+		//新增关键字
+		if (null != o.getKeyword() && o.getKeyword().length()>0) {
+			updateJtCollectSearch(o.getId());
+			addKeyword(o);
+		}
+		return jtKnowledgeBaseMapper.updateBySome(o);
+	}
+
+	@Override
+	public int nameCheck(String name) {
+		return jtKnowledgeBaseMapper.nameCheck(name);
+	}
+
+	@Override
+	public int addRead(String id) {
+		return jtKnowledgeBaseMapper.addOneRead(id);
+	}
+
+	@Override
+	public int addComment(String id) {
+		return jtKnowledgeBaseMapper.addOneComment(id);
+	}
+
+	@Override
+	public int addStar(String id) {
+		return jtKnowledgeBaseMapper.addOneStar(id);
+	}
+	
+	
+	//关键字放在关键字表中
+	private int addKeyword(JtKnowledgeBase o){
+		JtCollectSearch r=new JtCollectSearch();
+		r.setFromTable(collectType.KNOWLEDGE_BASE.getDesc());
+		r.setKeyword(o.getKeyword());
+		r.setTitle(o.getTitle());
+		r.setRowId(o.getId().toString());
+		String sum = o.getSummary();
+		if(null != sum && sum.length() > 40){
+			sum = sum.substring(0,40) + "...";
+		}
+		r.setSummary(sum);
+		
+		return jtCollectSearchMapper.insertSelective(r);
+	}
+	
+	private int updateJtCollectSearch(String id) {
+		return jtCollectSearchMapper.deleteByrowId(id);
+	}
+}

+ 2 - 2
src/main/java/com/goafanti/admin/service/impl/AdminVideoServiceImpl.java

@@ -67,8 +67,8 @@ public class AdminVideoServiceImpl extends BaseMybatisDao<JtVideoMapper> impleme
 	}
 
 	@Override
-	public AdminVideoBo getIndexVideo(String summary) {
-		return jtVideoMapper.getIndexVideo(summary);
+	public AdminVideoBo getIndexVideo(Integer position) {
+		return jtVideoMapper.getIndexVideo(position);
 	}
 
 	@Override

+ 1 - 1
src/main/java/com/goafanti/comment/bo/CommentInput.java

@@ -5,7 +5,7 @@ public class CommentInput {
 	private String content;
 	private Integer star;
 	private String orderNo;
-	private Integer commodityType;//0-项目,1-成果,2-需求,3-专家,4-顾问
+	private Integer commodityType;//0-项目,1-成果,2-需求,3-专家,4-顾问, 5-社区
 public String getCommodityId() {
 	return commodityId;
 }

+ 1 - 0
src/main/java/com/goafanti/common/constant/PageConstants.java

@@ -47,6 +47,7 @@ public class PageConstants {
 		APP_POLICY_PAGES.put("app_index", "APP首页");
 		APP_POLICY_PAGES.put("app_policy_main", "APP政策主页");
 		APP_POLICY_PAGES.put("app_tech_service_index", "APP科技服务首页");
+		APP_POLICY_PAGES.put("web_community", "网站社区首页");
 	}
 
 	public static boolean containPage(String page,Map<String,String> matchPages){

+ 115 - 0
src/main/java/com/goafanti/common/controller/PortalController.java

@@ -16,13 +16,19 @@ import org.springframework.web.servlet.view.RedirectView;
 
 import com.goafanti.achievement.bo.AchievementPartnerListBo;
 import com.goafanti.achievement.service.AchievementService;
+import com.goafanti.admin.bo.AdminVideoBo;
+import com.goafanti.admin.bo.KnowledgeBaseBo;
 import com.goafanti.admin.service.AdminVideoService;
+import com.goafanti.admin.service.CommunityService;
 import com.goafanti.business.bo.JtBusinessProjectResult;
 import com.goafanti.business.service.JtBusinessService;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.enums.AchievementMaturity;
 import com.goafanti.common.model.JtBusinessProject;
+import com.goafanti.common.model.JtKnowledgeBase;
 import com.goafanti.common.model.JtVideo;
+import com.goafanti.common.model.News;
+import com.goafanti.common.model.Policy;
 import com.goafanti.common.model.UserInterest;
 import com.goafanti.common.service.DistrictGlossoryService;
 import com.goafanti.common.service.FieldGlossoryService;
@@ -31,6 +37,8 @@ import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.demand.service.DemandInterestService;
 import com.goafanti.demand.service.DemandService;
+import com.goafanti.news.service.NewsService;
+import com.goafanti.news.service.PolicyService;
 import com.goafanti.order.service.OrderService;
 import com.goafanti.user.bo.UserPartnerDetailBo;
 import com.goafanti.user.service.UserIdentityService;
@@ -68,6 +76,12 @@ public class PortalController extends BaseController {
 	
 	@Resource
 	private AdminVideoService adminVideoService;
+	@Resource
+	private CommunityService communityService ;
+	@Resource
+	private PolicyService policyService;
+	@Resource
+	private NewsService newsService;
 
 	@RequestMapping(value = "/index", method = RequestMethod.GET)
 	public ModelAndView index(HttpServletRequest request, ModelAndView modelview) {
@@ -255,5 +269,106 @@ public class PortalController extends BaseController {
 			modelAndView.setViewName("/portal/video/video");
 		}
 		return modelAndView;
+	}
+	
+	//跳转知识社区
+	@SuppressWarnings("unchecked")
+	@RequestMapping("/portal/special")
+	public ModelAndView special(ModelAndView modelAndView){
+		modelAndView.setViewName("/portal/special/special");
+		//视频
+		AdminVideoBo video =  adminVideoService.getIndexVideo(2);//知识社区首页
+		if(null != video ){
+			modelAndView.addObject("video", video);
+		}
+		//政策
+		List<Policy> policies = (List<Policy>) policyService.searchPolicy(null, 2, null, null, "web_community", 1, 1, null)
+				.getList();
+		if(policies.size()>0){
+			Policy p = policies.get(0);
+			if(StringUtils.isNotBlank(p.getTitleImg()) && p.getTitleImg().indexOf(",") > 0){
+				p.setTitleImg(p.getTitleImg().substring(0,p.getTitleImg().indexOf(",")));
+			}
+			modelAndView.addObject("policy", p);
+		}
+		//资讯
+		List<News> newsList = (List<News>) newsService
+				.listNews(99, null, null, null, null, null, null, 1, 4, "2", null, null,null).getList();
+		modelAndView.addObject("news", newsList);//资讯
+		return modelAndView;
+	}
+	
+	//跳转知识社区详情
+	@SuppressWarnings("unchecked")
+	@RequestMapping(value="/portal/special/specialDetail", method = RequestMethod.GET)
+	public ModelAndView specialDetail(ModelAndView modelAndView,String id){
+		//新增一个阅读量
+		communityService.addRead(id);
+		//视频
+		AdminVideoBo video =  adminVideoService.getIndexVideo(2);//知识社区首页
+		if(null != video ){
+			modelAndView.addObject("video", video);
+		}
+		//政策
+		List<Policy> policies = (List<Policy>) policyService.searchPolicy(null, 2, null, null, "web_community", 1, 1, null)
+				.getList();
+		if(policies.size()>0){
+			Policy p = policies.get(0);
+			if(StringUtils.isNotBlank(p.getTitleImg()) && p.getTitleImg().indexOf(",") > 0){
+				p.setTitleImg(p.getTitleImg().substring(0,p.getTitleImg().indexOf(",")));
+			}
+			modelAndView.addObject("policy", p);
+		}
+		//资讯
+		List<News> newsList = (List<News>) newsService
+				.listNews(99, null, null, null, null, null, null, 1, 4, "2", null, null,null).getList();
+		modelAndView.addObject("news", newsList);//资讯
+		//单个社区知识查看
+		JtKnowledgeBase o = new JtKnowledgeBase();
+		o.setId(id);
+		JtKnowledgeBase kb = communityService.getCommunintyById(o);
+		if(null != kb){
+			modelAndView.setViewName("/portal/special/specialDetail");
+			modelAndView.addObject("kb", kb);
+		}else{
+			modelAndView.setViewName("/portal/special/special");
+		}
+		return modelAndView;
+	}
+	
+	//新增阅读
+	@RequestMapping(value="/portal/special/addRead",method = RequestMethod.GET)
+	@ResponseBody
+	public Result addRead(String id){
+		Result result = new Result();
+		result.setData(communityService.addRead(id));
+		return result;
+	}
+	//新增评论
+	@RequestMapping(value="/portal/special/addComment",method = RequestMethod.GET)
+	@ResponseBody
+	public Result addComment(String id){
+		Result result = new Result();
+		result.setData(communityService.addComment(id));
+		return result;
+	}
+	
+	//新增点赞
+	@RequestMapping(value="/portal/special/addStar",method = RequestMethod.GET)
+	@ResponseBody
+	public Result addStar(String id){
+		Result result = new Result();
+		result.setData(communityService.addStar(id));
+		return result;
+	}
+	
+	//获得知识社区的列表数据
+	@RequestMapping("/portal/special/specialList")
+	@ResponseBody
+	public Result specialList(KnowledgeBaseBo knowledgeBase , Integer pageSize, Integer pageNo){
+		Result res = new Result();
+		//查看更多
+		res.setData(communityService.getJtKnowledgeBaseList(knowledgeBase, pageNo, pageSize, 2));
+		return res;
 	}
 }

+ 1 - 1
src/main/java/com/goafanti/common/controller/PublicController.java

@@ -729,7 +729,7 @@ public class PublicController extends BaseController {
 		if(StringUtils.isBlank(commentInput.getContent()) || commentInput.getContent().length()>512) {
 			result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","内容限制1-512字符"));return result;
 		}
-		if(null == commentInput.getCommodityType() || commentInput.getCommodityType()<0 || commentInput.getCommodityType() > 4) {
+		if(null == commentInput.getCommodityType() || commentInput.getCommodityType()<0 || commentInput.getCommodityType() > 5) {
 			result.getError().add(buildError(ErrorConstants.PARAM_ERROR,"","产品类型"));return result;
 		}
 		

+ 1 - 1
src/main/java/com/goafanti/common/controller/WebpageController.java

@@ -869,7 +869,7 @@ public class WebpageController extends BaseController {
 			modelview.addObject("bannerlist", blist);
 		}
 		//视频
-		AdminVideoBo video =  adminVideoService.getIndexVideo("首页");
+		AdminVideoBo video =  adminVideoService.getIndexVideo(1);
 		if(null != video ){
 			String url = video.getUrl();
 			modelview.addObject("vurl", url);

+ 90 - 0
src/main/java/com/goafanti/common/dao/JtKnowledgeBaseMapper.java

@@ -0,0 +1,90 @@
+package com.goafanti.common.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.goafanti.admin.bo.KnowledgeBaseBo;
+import com.goafanti.common.model.JtKnowledgeBase;
+import com.goafanti.common.model.JtKnowledgeBaseExample;
+
+public interface JtKnowledgeBaseMapper {
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int countByExample(JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int deleteByExample(JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int insert(JtKnowledgeBase record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int insertSelective(JtKnowledgeBase record);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    List<JtKnowledgeBase> selectByExampleWithBLOBs(JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    List<JtKnowledgeBase> selectByExample(JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int updateByExampleSelective(@Param("record") JtKnowledgeBase record, @Param("example") JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int updateByExampleWithBLOBs(@Param("record") JtKnowledgeBase record, @Param("example") JtKnowledgeBaseExample example);
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method corresponds to the database table jt_knowledge_base
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    int updateByExample(@Param("record") JtKnowledgeBase record, @Param("example") JtKnowledgeBaseExample example);
+    
+    KnowledgeBaseBo getKnowledgeBaseById(JtKnowledgeBase knowledgeBase);
+    int updateBySome(JtKnowledgeBase knowledgeBase);
+    int addOneRead(String id);
+    int addOneComment(String id);
+    int addOneStar(String id);
+    int nameCheck(String title);
+}

+ 1 - 1
src/main/java/com/goafanti/common/dao/JtVideoMapper.java

@@ -82,7 +82,7 @@ public interface JtVideoMapper {
 	
 	int updateByUrl(JtVideo video);
 	
-	AdminVideoBo getIndexVideo(String summary);
+	AdminVideoBo getIndexVideo(Integer position);
 	
 	int nameCheck(String name);
 	

+ 2 - 1
src/main/java/com/goafanti/common/enums/AttachmentType.java

@@ -19,7 +19,8 @@ public enum AttachmentType {
 	USER_PICTURE("user_picture","用户图片"),
 	HONOR_PICTURE("honor_picture","荣誉图片"),
 	VIDEO("video","视频"),
-	VIDEO_COVER("video_cover","视频封面图片");
+	VIDEO_COVER("video_cover","视频封面图片"),
+	KNOWLEDGE_BASE("knowledge_base","知识社区图片");
 	
 	private AttachmentType(String code, String desc) {
 		this.code = code;

+ 58 - 0
src/main/java/com/goafanti/common/enums/KnowledgeBaseFields.java

@@ -0,0 +1,58 @@
+package com.goafanti.common.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public enum KnowledgeBaseFields {
+	
+	TITLE("title", "标题"),
+	PICURL("picUrl", "图片地址"),
+	TYPE("type", "产品类型"),
+	KEYWORD("keyword", "关键字"),
+	SUMMARY("summary", "简介"),
+	STATUS("status", "状态"),
+	TOP("top", "热门"),
+	recomment("recomment", "推荐"),
+	OTHER("", "未知参数");
+
+	private KnowledgeBaseFields(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	private static Map<String, KnowledgeBaseFields> status = new HashMap<String, KnowledgeBaseFields>();
+
+	static {
+		for (KnowledgeBaseFields value : KnowledgeBaseFields.values()) {
+			status.put(value.getCode(), value);
+		}
+	}
+
+	public static KnowledgeBaseFields getField(String code) {
+		if (containsType(code)) {
+			return status.get(code);
+		}
+		return OTHER;
+	}
+
+	public static String getFieldDesc(String code) {
+		return getField(code).getDesc();
+	}
+
+	public static boolean containsType(String code) {
+		return status.containsKey(code);
+	}
+
+	private String	code;
+	private String	desc;
+
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+
+}

+ 1 - 0
src/main/java/com/goafanti/common/enums/collectType.java

@@ -16,6 +16,7 @@ public enum collectType {
 	ADVISER(6,"adviser"),//6顾问
 	NEWS(7,"news"),//7新闻
 	LEGAL_ADVISER(9,"legal_adviser"),//9法律顾问
+	KNOWLEDGE_BASE(10,"knowledge_base"),//10产品专栏
 	OTHER(8, "");
 	
 	private collectType(Integer code, String desc) {

+ 645 - 0
src/main/java/com/goafanti/common/mapper/JtKnowledgeBaseMapper.xml

@@ -0,0 +1,645 @@
+<?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.goafanti.common.dao.JtKnowledgeBaseMapper">
+  <resultMap id="BaseResultMap" type="com.goafanti.common.model.JtKnowledgeBase">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    <result column="id" jdbcType="VARCHAR" property="id" />
+    <result column="category" jdbcType="INTEGER" property="category" />
+    <result column="title" jdbcType="VARCHAR" property="title" />
+    <result column="summary" jdbcType="VARCHAR" property="summary" />
+    <result column="source" jdbcType="VARCHAR" property="source" />
+    <result column="status" jdbcType="INTEGER" property="status" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="owner" jdbcType="VARCHAR" property="owner" />
+    <result column="release_time" jdbcType="TIMESTAMP" property="releaseTime" />
+    <result column="read_number" jdbcType="INTEGER" property="readNumber" />
+    <result column="comment_number" jdbcType="INTEGER" property="commentNumber" />
+    <result column="star_number" jdbcType="INTEGER" property="starNumber" />
+    <result column="keyword" jdbcType="VARCHAR" property="keyword" />
+    <result column="pic_url" jdbcType="VARCHAR" property="picUrl" />
+    <result column="top" jdbcType="INTEGER" property="top" />
+    <result column="recommend" jdbcType="INTEGER" property="recommend" />
+  </resultMap>
+  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.goafanti.common.model.JtKnowledgeBase">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    <result column="content" jdbcType="LONGVARCHAR" property="content" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    id, category, title, summary, source, status, create_time, owner, release_time, read_number, 
+    comment_number, star_number, keyword, pic_url, top, recommend
+  </sql>
+  <sql id="Blob_Column_List">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    content
+  </sql>
+  <select id="selectByExampleWithBLOBs" parameterType="com.goafanti.common.model.JtKnowledgeBaseExample" resultMap="ResultMapWithBLOBs">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    ,
+    <include refid="Blob_Column_List" />
+    from jt_knowledge_base
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByExample" parameterType="com.goafanti.common.model.JtKnowledgeBaseExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from jt_knowledge_base
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <delete id="deleteByExample" parameterType="com.goafanti.common.model.JtKnowledgeBaseExample">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    delete from jt_knowledge_base
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.goafanti.common.model.JtKnowledgeBase">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    insert into jt_knowledge_base (id, category, title, 
+      summary, source, status, 
+      create_time, owner, release_time, 
+      read_number, comment_number, star_number, 
+      keyword, pic_url, top, 
+      recommend, content)
+    values (#{id,jdbcType=VARCHAR}, #{category,jdbcType=INTEGER}, #{title,jdbcType=VARCHAR}, 
+      #{summary,jdbcType=VARCHAR}, #{source,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, 
+      #{createTime,jdbcType=TIMESTAMP}, #{owner,jdbcType=VARCHAR}, #{releaseTime,jdbcType=TIMESTAMP}, 
+      #{readNumber,jdbcType=INTEGER}, #{commentNumber,jdbcType=INTEGER}, #{starNumber,jdbcType=INTEGER}, 
+      #{keyword,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, #{top,jdbcType=INTEGER}, 
+      #{recommend,jdbcType=INTEGER}, #{content,jdbcType=LONGVARCHAR})
+  </insert>
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.JtKnowledgeBase">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    insert into jt_knowledge_base
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="category != null">
+        category,
+      </if>
+      <if test="title != null">
+        title,
+      </if>
+      <if test="summary != null">
+        summary,
+      </if>
+      <if test="source != null">
+        source,
+      </if>
+      <if test="status != null">
+        status,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="owner != null">
+        owner,
+      </if>
+      <if test="releaseTime != null">
+        release_time,
+      </if>
+      <if test="readNumber != null">
+        read_number,
+      </if>
+      <if test="commentNumber != null">
+        comment_number,
+      </if>
+      <if test="starNumber != null">
+        star_number,
+      </if>
+      <if test="keyword != null">
+        keyword,
+      </if>
+      <if test="picUrl != null">
+        pic_url,
+      </if>
+      <if test="top != null">
+        top,
+      </if>
+      <if test="recommend != null">
+        recommend,
+      </if>
+      <if test="content != null">
+        content,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="category != null">
+        #{category,jdbcType=INTEGER},
+      </if>
+      <if test="title != null">
+        #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="summary != null">
+        #{summary,jdbcType=VARCHAR},
+      </if>
+      <if test="source != null">
+        #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        #{status,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="owner != null">
+        #{owner,jdbcType=VARCHAR},
+      </if>
+      <if test="releaseTime != null">
+        #{releaseTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="readNumber != null">
+        #{readNumber,jdbcType=INTEGER},
+      </if>
+      <if test="commentNumber != null">
+        #{commentNumber,jdbcType=INTEGER},
+      </if>
+      <if test="starNumber != null">
+        #{starNumber,jdbcType=INTEGER},
+      </if>
+      <if test="keyword != null">
+        #{keyword,jdbcType=VARCHAR},
+      </if>
+      <if test="picUrl != null">
+        #{picUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="top != null">
+        #{top,jdbcType=INTEGER},
+      </if>
+      <if test="recommend != null">
+        #{recommend,jdbcType=INTEGER},
+      </if>
+      <if test="content != null">
+        #{content,jdbcType=LONGVARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.goafanti.common.model.JtKnowledgeBaseExample" resultType="java.lang.Integer">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    select count(*) from jt_knowledge_base
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    update jt_knowledge_base
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.category != null">
+        category = #{record.category,jdbcType=INTEGER},
+      </if>
+      <if test="record.title != null">
+        title = #{record.title,jdbcType=VARCHAR},
+      </if>
+      <if test="record.summary != null">
+        summary = #{record.summary,jdbcType=VARCHAR},
+      </if>
+      <if test="record.source != null">
+        source = #{record.source,jdbcType=VARCHAR},
+      </if>
+      <if test="record.status != null">
+        status = #{record.status,jdbcType=INTEGER},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.owner != null">
+        owner = #{record.owner,jdbcType=VARCHAR},
+      </if>
+      <if test="record.releaseTime != null">
+        release_time = #{record.releaseTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.readNumber != null">
+        read_number = #{record.readNumber,jdbcType=INTEGER},
+      </if>
+      <if test="record.commentNumber != null">
+        comment_number = #{record.commentNumber,jdbcType=INTEGER},
+      </if>
+      <if test="record.starNumber != null">
+        star_number = #{record.starNumber,jdbcType=INTEGER},
+      </if>
+      <if test="record.keyword != null">
+        keyword = #{record.keyword,jdbcType=VARCHAR},
+      </if>
+      <if test="record.picUrl != null">
+        pic_url = #{record.picUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="record.top != null">
+        top = #{record.top,jdbcType=INTEGER},
+      </if>
+      <if test="record.recommend != null">
+        recommend = #{record.recommend,jdbcType=INTEGER},
+      </if>
+      <if test="record.content != null">
+        content = #{record.content,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExampleWithBLOBs" parameterType="map">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    update jt_knowledge_base
+    set id = #{record.id,jdbcType=VARCHAR},
+      category = #{record.category,jdbcType=INTEGER},
+      title = #{record.title,jdbcType=VARCHAR},
+      summary = #{record.summary,jdbcType=VARCHAR},
+      source = #{record.source,jdbcType=VARCHAR},
+      status = #{record.status,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      owner = #{record.owner,jdbcType=VARCHAR},
+      release_time = #{record.releaseTime,jdbcType=TIMESTAMP},
+      read_number = #{record.readNumber,jdbcType=INTEGER},
+      comment_number = #{record.commentNumber,jdbcType=INTEGER},
+      star_number = #{record.starNumber,jdbcType=INTEGER},
+      keyword = #{record.keyword,jdbcType=VARCHAR},
+      pic_url = #{record.picUrl,jdbcType=VARCHAR},
+      top = #{record.top,jdbcType=INTEGER},
+      recommend = #{record.recommend,jdbcType=INTEGER},
+      content = #{record.content,jdbcType=LONGVARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbggenerated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Wed Nov 07 10:11:18 CST 2018.
+    -->
+    update jt_knowledge_base
+    set id = #{record.id,jdbcType=VARCHAR},
+      category = #{record.category,jdbcType=INTEGER},
+      title = #{record.title,jdbcType=VARCHAR},
+      summary = #{record.summary,jdbcType=VARCHAR},
+      source = #{record.source,jdbcType=VARCHAR},
+      status = #{record.status,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      owner = #{record.owner,jdbcType=VARCHAR},
+      release_time = #{record.releaseTime,jdbcType=TIMESTAMP},
+      read_number = #{record.readNumber,jdbcType=INTEGER},
+      comment_number = #{record.commentNumber,jdbcType=INTEGER},
+      star_number = #{record.starNumber,jdbcType=INTEGER},
+      keyword = #{record.keyword,jdbcType=VARCHAR},
+      pic_url = #{record.picUrl,jdbcType=VARCHAR},
+      top = #{record.top,jdbcType=INTEGER},
+      recommend = #{record.recommend,jdbcType=INTEGER}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  
+  <!-- 获得列表 -->
+  <select id="getKnowledgeBaseListBySome" parameterType="java.util.Map" resultType="com.goafanti.admin.bo.KnowledgeBaseBo">
+  	select  
+  	v.id, v.category, v.title, v.summary, v.source, v.status, v.create_time as createTime, v.owner, v.release_time as releaseTime,
+  	v.read_number as readNumber, 
+    v.comment_number as commentNumber, v.star_number as starNumber, v.keyword, v.pic_url as picUrl, v.top, v.recommend, a.name as ownerName  
+  	from jt_knowledge_base v
+	left join admin a on v.owner = a.id
+  	where 1=1
+  	<if test='v.title != null and v.title != ""'>
+  	<bind name="n" value="'%' + v.title + '%' " />
+	and v.title like #{n,jdbcType=VARCHAR}
+  	</if>
+  	<if test="v.category != null">
+	and v.category = #{v.category,jdbcType=INTEGER}
+  	</if>
+  	<if test="v.status != null">
+	and v.status = #{v.status,jdbcType=INTEGER}
+  	</if>
+  	<if test="v.status == null">
+	and v.status &lt;&gt; 2
+  	</if>
+  	<if test="v.owner != null">
+	and v.owner = #{v.owner,jdbcType=VARCHAR}
+  	</if>
+  	<if test='v.keyword != null and v.keyword != ""'>
+  	<bind name="kw" value="'%' + v.keyword + '%' "/>
+	and v.keyword like #{kw,jdbcType=VARCHAR}
+  	</if>
+  	<if test="startTime != null and endTime != null">
+  	v.release_time between #{startTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR}
+  	</if>
+  	<if test="v.top != null">
+    and v.top = #{v.top,jdbcType=INTEGER}
+   </if>
+   <if test="v.recommend != null">
+    and v.recommend = #{v.recommend,jdbcType=INTEGER}
+   </if>
+  	<if test="ob == 1">
+	order by v.create_time desc
+  	</if>
+  	<if test="ob == 2">
+	order by v.release_time desc
+  	</if>
+	<if test="page_sql!=null">
+		${page_sql}
+	</if>
+  </select>
+  <!-- 获得总数 -->
+  <select id="getKnowledgeBaseCountBySome" parameterType="java.util.Map" resultType="java.lang.Integer">
+  	select count(*)
+  	from jt_knowledge_base v
+	left join admin a on v.owner = a.id
+  	where 1=1
+  	<if test='v.title != null and v.title != ""'>
+  	<bind name="n" value="'%' + v.title + '%' " />
+	and v.title like #{n,jdbcType=VARCHAR}
+  	</if>
+  	<if test="v.category != null">
+	and v.category = #{v.category,jdbcType=INTEGER}
+  	</if>
+  	<if test="v.status != null">
+	and v.status = #{v.status,jdbcType=INTEGER}
+  	</if>
+  	<if test="v.status == null">
+	and v.status &lt;&gt; 2
+  	</if>
+  	<if test="v.owner != null">
+	and v.owner = #{v.owner,jdbcType=VARCHAR}
+  	</if>
+  	<if test='v.keyword != null and v.keyword != ""'>
+  	<bind name="kw" value="'%' + v.keyword + '%' "/>
+	and v.keyword like #{kw,jdbcType=VARCHAR}
+  	</if>
+  	<if test="v.top != null">
+    and v.top = #{v.top,jdbcType=INTEGER}
+   </if>
+   <if test="v.recommend != null">
+    and v.recommend = #{v.recommend,jdbcType=INTEGER}
+   </if>
+  	<if test="ob == 1">
+	order by v.create_time desc
+  	</if>
+  	<if test="ob == 2">
+	order by v.release_time desc
+  	</if>
+  </select>
+  
+  <!-- 获得一个知识详情数据 -->
+  <select id="getKnowledgeBaseById" parameterType="com.goafanti.common.model.JtKnowledgeBase" resultType="com.goafanti.admin.bo.KnowledgeBaseBo">
+  select  
+  	v.id, v.category, v.title, v.summary, v.source, v.status, v.create_time as createTime, v.owner, v.release_time as releaseTime, v.read_number as readNumber, 
+    v.comment_number as commentNumber, v.star_number as starNumber, v.keyword, v.pic_url as picUrl, v.top, v.recommend, v.content, a.name as ownerName  
+  	from jt_knowledge_base v
+	left join admin a on v.owner = a.id
+  	where 1=1
+   <if test="id != null">
+    and v.id =  #{id,jdbcType=VARCHAR}
+   </if>
+   <if test="category != null">
+   	and v.category = #{category,jdbcType=INTEGER}
+   </if>
+   <if test='title != null and title != ""'>
+   	<bind name="n" value="'%' + title + '%' " />
+    and v.title like #{n,jdbcType=VARCHAR}
+   </if>
+   <if test="summary != null">
+   	<bind name="s" value="'%' + summary + '%' " />
+    and v.summary like #{s,jdbcType=VARCHAR}
+   </if>
+   <if test="source != null">
+    and v.source = #{source,jdbcType=VARCHAR}
+   </if>
+   <if test="status != null">
+    and v.status = #{status,jdbcType=INTEGER}
+   </if>
+   <if test="owner != null">
+    and v.owner #{owner,jdbcType=VARCHAR}
+   </if>
+   <if test="readNumber != null">
+    and v.read_number = #{readNumber,jdbcType=INTEGER}
+   </if>
+   <if test="commentNumber != null">
+    and v.comment_number = #{commentNumber,jdbcType=INTEGER}
+   </if>
+   <if test="starNumber != null">
+    and v.star_Number = #{starNumber,jdbcType=INTEGER}
+   </if>
+   <if test="keyword != null">
+   <bind name="kw" value="'%' + keyword + '%' "/>
+	and v.keyword like #{kw,jdbcType=VARCHAR}
+   </if>
+   <if test="picUrl != null">
+    and v.pic_url = #{picUrl,jdbcType=VARCHAR}
+   </if>
+   <if test="top != null">
+    and v.top = #{top,jdbcType=INTEGER}
+   </if>
+   <if test="recommend != null">
+    and v.recommend = #{recommend,jdbcType=INTEGER}
+   </if>
+  </select>
+  <!-- 修改 -->
+  <update id="updateBySome" parameterType="com.goafanti.common.model.JtKnowledgeBase">
+   update jt_knowledge_base
+    <set>
+      <if test="category != null">
+        category = #{category,jdbcType=INTEGER},
+      </if>
+      <if test="title != null">
+        title = #{title,jdbcType=VARCHAR},
+      </if>
+      <if test="summary != null">
+        summary = #{summary,jdbcType=VARCHAR},
+      </if>
+      <if test="source != null">
+        source = #{source,jdbcType=VARCHAR},
+      </if>
+      <if test="status != null">
+        status = #{status,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="owner != null">
+        owner = #{owner,jdbcType=VARCHAR},
+      </if>
+      <if test="releaseTime != null">
+        release_time = #{releaseTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="picUrl != null">
+        pic_url = #{picUrl,jdbcType=VARCHAR},
+      </if>
+      <if test="top != null">
+        top = #{top,jdbcType=INTEGER},
+      </if>
+      <if test="recommend != null">
+        recommend = #{recommend,jdbcType=INTEGER},
+      </if>
+      <if test="keyword != null">
+        keyword = #{keyword,jdbcType=VARCHAR},
+      </if>
+      <if test="content != null">
+        content = #{content,jdbcType=LONGVARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <!-- 新增一个阅读量 -->
+  <update id="addOneRead" parameterType="java.lang.String">
+  	update jt_knowledge_base set read_number = read_number +1 
+  	where
+  	id = #{_parameter,jdbcType=VARCHAR}
+  </update>
+  <!-- 新增一个评论量 -->
+  <update id="addOneComment" parameterType="java.lang.String">
+  	update jt_knowledge_base set comment_number = comment_number +1 
+  	where
+  	id = #{_parameter,jdbcType=VARCHAR}
+  </update>
+  <!-- 新增一个点赞量 -->
+  <update id="addOneStar" parameterType="java.lang.String">
+  	update jt_knowledge_base set star_number = star_number +1 
+  	where
+  	id = #{_parameter,jdbcType=VARCHAR}
+  </update>
+  <!-- 标题检查 -->
+  <select id="nameCheck" parameterType="java.lang.String" resultType="java.lang.Integer">
+  	select count(*) from jt_knowledge_base where title = #{_parameter,jdbcType=VARCHAR}
+  </select>
+</mapper>

+ 2 - 2
src/main/java/com/goafanti/common/mapper/JtVideoMapper.xml

@@ -524,7 +524,7 @@
     where url = #{url,jdbcType=VARCHAR}
   </update>
   <!-- 查看首页视频 -->
-  <select id="getIndexVideo" parameterType="java.lang.String" resultType="com.goafanti.admin.bo.AdminVideoBo">
+  <select id="getIndexVideo" parameterType="java.lang.Integer" resultType="com.goafanti.admin.bo.AdminVideoBo">
   select 
     id, name, url, type, owner, create_time as createTime, status, summary, cover_url as coverUrl, 
     release_time as releaseTime, transcoding, md5, position
@@ -532,7 +532,7 @@
     where 
     transcoding = 2
     and status = 1
-    and position = 1
+    and position = #{position,jdbcType=INTEGER}
     order by release_time desc
     limit 1
   </select>

+ 585 - 0
src/main/java/com/goafanti/common/model/JtKnowledgeBase.java

@@ -0,0 +1,585 @@
+package com.goafanti.common.model;
+
+import java.util.Date;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.Size;
+
+import com.goafanti.common.constant.ErrorConstants;
+
+public class JtKnowledgeBase {
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.id
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private String id;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.category
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Max(value = 5, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+	@Min(value = 0, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+    private Integer category;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.title
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Size(min = 0, max = 64, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
+    private String title;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.summary
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Size(min = 0, max = 128, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
+    private String summary;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.source
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Size(min = 0, max = 128, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
+    private String source;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.status
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Max(value = 3, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+	@Min(value = 0, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+    private Integer status;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.create_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private Date createTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.owner
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private String owner;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.release_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private Date releaseTime;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.read_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private Integer readNumber;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.comment_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private Integer commentNumber;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.star_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private Integer starNumber;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.keyword
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Size(min = 0, max = 36, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
+    private String keyword;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.pic_url
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Size(min = 0, max = 128, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
+    private String picUrl;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.top
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Max(value = 1, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+	@Min(value = 0, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+    private Integer top;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.recommend
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    @Max(value = 1, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+	@Min(value = 0, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+    private Integer recommend;
+
+    /**
+     *
+     * This field was generated by MyBatis Generator.
+     * This field corresponds to the database column jt_knowledge_base.content
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    private String content;
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.id
+     *
+     * @return the value of jt_knowledge_base.id
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getId() {
+        return id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.id
+     *
+     * @param id the value for jt_knowledge_base.id
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.category
+     *
+     * @return the value of jt_knowledge_base.category
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getCategory() {
+        return category;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.category
+     *
+     * @param category the value for jt_knowledge_base.category
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setCategory(Integer category) {
+        this.category = category;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.title
+     *
+     * @return the value of jt_knowledge_base.title
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.title
+     *
+     * @param title the value for jt_knowledge_base.title
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.summary
+     *
+     * @return the value of jt_knowledge_base.summary
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getSummary() {
+        return summary;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.summary
+     *
+     * @param summary the value for jt_knowledge_base.summary
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setSummary(String summary) {
+        this.summary = summary;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.source
+     *
+     * @return the value of jt_knowledge_base.source
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getSource() {
+        return source;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.source
+     *
+     * @param source the value for jt_knowledge_base.source
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setSource(String source) {
+        this.source = source;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.status
+     *
+     * @return the value of jt_knowledge_base.status
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getStatus() {
+        return status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.status
+     *
+     * @param status the value for jt_knowledge_base.status
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.create_time
+     *
+     * @return the value of jt_knowledge_base.create_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.create_time
+     *
+     * @param createTime the value for jt_knowledge_base.create_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.owner
+     *
+     * @return the value of jt_knowledge_base.owner
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getOwner() {
+        return owner;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.owner
+     *
+     * @param owner the value for jt_knowledge_base.owner
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setOwner(String owner) {
+        this.owner = owner;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.release_time
+     *
+     * @return the value of jt_knowledge_base.release_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Date getReleaseTime() {
+        return releaseTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.release_time
+     *
+     * @param releaseTime the value for jt_knowledge_base.release_time
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setReleaseTime(Date releaseTime) {
+        this.releaseTime = releaseTime;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.read_number
+     *
+     * @return the value of jt_knowledge_base.read_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getReadNumber() {
+        return readNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.read_number
+     *
+     * @param readNumber the value for jt_knowledge_base.read_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setReadNumber(Integer readNumber) {
+        this.readNumber = readNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.comment_number
+     *
+     * @return the value of jt_knowledge_base.comment_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getCommentNumber() {
+        return commentNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.comment_number
+     *
+     * @param commentNumber the value for jt_knowledge_base.comment_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setCommentNumber(Integer commentNumber) {
+        this.commentNumber = commentNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.star_number
+     *
+     * @return the value of jt_knowledge_base.star_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getStarNumber() {
+        return starNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.star_number
+     *
+     * @param starNumber the value for jt_knowledge_base.star_number
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setStarNumber(Integer starNumber) {
+        this.starNumber = starNumber;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.keyword
+     *
+     * @return the value of jt_knowledge_base.keyword
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getKeyword() {
+        return keyword;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.keyword
+     *
+     * @param keyword the value for jt_knowledge_base.keyword
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setKeyword(String keyword) {
+        this.keyword = keyword;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.pic_url
+     *
+     * @return the value of jt_knowledge_base.pic_url
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getPicUrl() {
+        return picUrl;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.pic_url
+     *
+     * @param picUrl the value for jt_knowledge_base.pic_url
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setPicUrl(String picUrl) {
+        this.picUrl = picUrl;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.top
+     *
+     * @return the value of jt_knowledge_base.top
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getTop() {
+        return top;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.top
+     *
+     * @param top the value for jt_knowledge_base.top
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setTop(Integer top) {
+        this.top = top;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.recommend
+     *
+     * @return the value of jt_knowledge_base.recommend
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public Integer getRecommend() {
+        return recommend;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.recommend
+     *
+     * @param recommend the value for jt_knowledge_base.recommend
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setRecommend(Integer recommend) {
+        this.recommend = recommend;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method returns the value of the database column jt_knowledge_base.content
+     *
+     * @return the value of jt_knowledge_base.content
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public String getContent() {
+        return content;
+    }
+
+    /**
+     * This method was generated by MyBatis Generator.
+     * This method sets the value of the database column jt_knowledge_base.content
+     *
+     * @param content the value for jt_knowledge_base.content
+     *
+     * @mbggenerated Wed Nov 07 10:11:18 CST 2018
+     */
+    public void setContent(String content) {
+        this.content = content;
+    }
+}

Разница между файлами не показана из-за своего большого размера
+ 1333 - 0
src/main/java/com/goafanti/common/model/JtKnowledgeBaseExample.java


+ 14 - 1
src/main/java/com/goafanti/common/model/Policy.java

@@ -2,8 +2,13 @@ package com.goafanti.common.model;
 
 import java.util.Date;
 
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.Size;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat.Shape;
+import com.goafanti.common.constant.ErrorConstants;
 
 public class Policy {
 
@@ -27,36 +32,44 @@ public class Policy {
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.title
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 45, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String title;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.title_img
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 128, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String titleImg;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.author
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 45, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String author;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.type
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Max(value = 99, message = "{" + ErrorConstants.PARAM_ERROR + "}")
+	@Min(value = 0, message = "{" + ErrorConstants.PARAM_ERROR + "}")
 	private Integer type;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.source
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 45, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String source;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.source_url
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 255, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String sourceUrl;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.summary
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
+	@Size(min = 0, max = 144, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String summary;
 	/**
 	 * This field was generated by MyBatis Generator. This field corresponds to the database column policy.audit_status
@@ -88,7 +101,7 @@ public class Policy {
 	 * @mbg.generated  Thu Jun 28 16:23:43 CST 2018
 	 */
 	private String content;
-	
+	@Size(min = 0, max = 64, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String keyword;
 
 	/**

+ 1 - 1
src/main/java/com/goafanti/demand/service/impl/DemandServiceImpl.java

@@ -596,7 +596,7 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 	@Override
 	public int updateByPrimaryKeySelective(Demand d) {
 		int i=demandMapper.updateByPrimaryKeySelective(d);
-		if(collectFlag){
+		if(collectFlag && null != d.getStatus()){
 			if (d.getAuditStatus()==2) {
 				JtCollectSearch r=new JtCollectSearch();
 				r.setFromTable(collectType.DMAND.getDesc());

+ 1 - 1
src/main/java/com/goafanti/news/bo/InputNews.java

@@ -69,7 +69,7 @@ public class InputNews {
 	 * 热门
 	 */
 	private Integer hotspot;
-	
+	@Size(min = 0, max = 64, message = "{" + ErrorConstants.PARAM_SIZE_ERROR + "}")
 	private String keyword;
 	
 	

+ 20 - 3
src/main/java/com/goafanti/news/controller/AdminNewsApiController.java

@@ -26,13 +26,13 @@ import com.goafanti.common.constant.ErrorConstants;
 import com.goafanti.common.constant.PageConstants;
 import com.goafanti.common.controller.BaseApiController;
 import com.goafanti.common.enums.AttachmentType;
+import com.goafanti.common.enums.KnowledgeBaseFields;
 import com.goafanti.common.enums.NewsCacheKey;
 import com.goafanti.common.model.News;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.JDBCIdGenerator;
 import com.goafanti.news.bo.InputNews;
-
 import com.goafanti.news.enums.NewsFields;
 import com.goafanti.news.service.NewsService;
 
@@ -95,8 +95,16 @@ public class AdminNewsApiController extends BaseApiController {
  * 
  * */
 	@RequestMapping(value="/apply",method=RequestMethod.POST)
-public Result apply(InputNews news,BindingResult bindingResult,String[] publishPages) {
+public Result apply(@Valid InputNews news,BindingResult bindingResult,String[] publishPages) {
 		Result result=new Result();
+		if (bindingResult.hasErrors()) {
+			result.getError().add(
+					buildErrorByMsg(bindingResult.getFieldError()
+							.getDefaultMessage(), NewsFields 
+							.getFieldDesc(bindingResult.getFieldError()
+									.getField())));
+			return result;
+		}
 		List<String>webPages=new ArrayList<>();
 		List<String>appPages=new ArrayList<>();
 		PageConstants.putNews(publishPages, webPages, appPages);
@@ -122,9 +130,17 @@ public Result apply(InputNews news,BindingResult bindingResult,String[] publishP
 	 * 
 	 * */
 		@RequestMapping(value="/updateNews",method=RequestMethod.POST)
-	public Result updateNews(InputNews news,BindingResult bindingResult,String[] publishPages) {
+	public Result updateNews(@Valid InputNews news,BindingResult bindingResult,String[] publishPages) {
 			Result result=new Result();
 			
+			if (bindingResult.hasErrors()) {
+				result.getError().add(
+						buildErrorByMsg(bindingResult.getFieldError()
+								.getDefaultMessage(), NewsFields 
+								.getFieldDesc(bindingResult.getFieldError()
+										.getField())));
+				return result;
+			}
 			List<String>webPages=new ArrayList<>();
 			List<String>appPages=new ArrayList<>();
 			PageConstants.putNews(publishPages, webPages, appPages);
@@ -171,6 +187,7 @@ public Result apply(InputNews news,BindingResult bindingResult,String[] publishP
 			if(auditStatus ==2){
 				news.setReleaseDate(new Date());
 				
+				newsService.updateJtCollectSearch(news);
 				newsService.addJtCollectSearch(news);
 				}
 			if(auditStatus ==4){

+ 21 - 3
src/main/java/com/goafanti/news/controller/AdminPolicyApiController.java

@@ -7,6 +7,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Resource;
+import javax.validation.Valid;
 
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +26,7 @@ import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.JDBCIdGenerator;
 import com.goafanti.news.bo.InputNews;
 import com.goafanti.news.bo.newsInterestBo;
+import com.goafanti.news.enums.NewsFields;
 import com.goafanti.news.service.PolicyService;
 
 
@@ -41,8 +43,16 @@ public class AdminPolicyApiController extends BaseApiController {
 	 * 
 	 * */
 		@RequestMapping(value="/apply",method=RequestMethod.POST)
-		public Result insertPolicy(Policy policy,String[]publishPages) {
+		public Result insertPolicy(@Valid Policy policy,String[]publishPages,BindingResult bindingResult) {
 			Result result=new Result();
+			if (bindingResult.hasErrors()) {
+				result.getError().add(
+						buildErrorByMsg(bindingResult.getFieldError()
+								.getDefaultMessage(), NewsFields 
+								.getFieldDesc(bindingResult.getFieldError()
+										.getField())));
+				return result;
+			}
 			disposePolicyParams(policy,result);
 			if(result.getError().size()>0)return result;
 			if(publishPages==null || publishPages.length<1) {
@@ -127,9 +137,16 @@ public class AdminPolicyApiController extends BaseApiController {
 		 * 
 		 * */
 			@RequestMapping(value="/update",method=RequestMethod.POST)
-		public Result updateNews(Policy policy,BindingResult bindingResult,String[] publishPages) {
+		public Result updateNews(@Valid Policy policy,BindingResult bindingResult,String[] publishPages) {
 				Result result=new Result();
-				
+				if (bindingResult.hasErrors()) {
+					result.getError().add(
+							buildErrorByMsg(bindingResult.getFieldError()
+									.getDefaultMessage(), NewsFields 
+									.getFieldDesc(bindingResult.getFieldError()
+											.getField())));
+					return result;
+				}
 				List<String>webPages=new ArrayList<>();
 				List<String>appPages=new ArrayList<>();
 				PageConstants.putPolicy(publishPages, webPages, appPages);
@@ -185,6 +202,7 @@ public class AdminPolicyApiController extends BaseApiController {
 						policy.setAuditStatus(auditStatus); 
 					if(auditStatus ==2){
 						policy.setReleaseDate(new Date());
+						policyService.updateJtCollectSearch(policy);
 						policyService.addJtCollectSearch(policy);
 						}
 					if (auditStatus==4) {

+ 1 - 0
src/main/java/com/goafanti/news/enums/NewsFields.java

@@ -16,6 +16,7 @@ public enum NewsFields {
 	SOURCEURL("sourceUrl", "来源url"),
 	SUMMARY("summary", "简介"),
 	CONTENT("content", "内容"),
+	KEYWORD("keyword", "关键字"),
 	OTHER("", "未知参数");
 	
 	private String	code;

+ 5 - 0
src/main/webapp/WEB-INF/views/common.html

@@ -245,6 +245,11 @@
                          <a th:href="@{/portal/service/safeguarding}">维权</a>
                         </div>
                      </li>                         
+                     <li th:class="${subM}=='special'?active:''" >
+                     	<div>
+                         <a th:href="@{/portal/special}">社区</a>
+                        </div>
+                     </li>                         
                 </ul>
             </div>
             <!-- <div class="logo_photo">全国统一服务热线:400-8800-962</div> -->

+ 130 - 0
src/main/webapp/WEB-INF/views/portal/special/special.html

@@ -0,0 +1,130 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head th:replace="common::header(~{::title},~{::link})">
+		<meta charset="UTF-8">
+		<title>技淘网-产品专栏</title>
+	<link th:href="${portalHost+'/dll/dll.css'}"  rel="stylesheet">
+	<link th:href="${portalHost+'/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost+'/newMenu/special.css'}" rel="stylesheet">
+</head>
+	<body>
+		<div th:replace="common::nav('','special')"></div>  
+		<!-- 公共头部 -->
+		<div class="container">
+			<div class="specialLeft">
+				<div class="input-append">
+					<input class="search" type="text" placeholder="不懂问技淘">
+					<button class="btn" type="button">问技淘</button>
+				</div>
+				<ol class="spType">
+					<li class="active">推荐</li>
+					<li>热门</li>
+					<li>大V说</li>
+				</ol>
+				<ul class="proType">
+					<li>所有分类 > </li>
+					<li class="active" value='0'>所有产品</li>
+					<li value='2'>高新</li>
+					<li value='3'>军工</li>
+					<li value='1'>知识产权</li>
+					<li value="5">科技项目</li>
+				</ul>
+				<hr>
+				<div class="spList ">
+					<ul>
+					
+					</ul>
+				</div>
+				<div class="adviserList">
+					<ul>
+						
+					</ul>
+				</div>
+				<div class="pagination_box">
+					<nav aria-label="Page navigation" class="clearfix">
+						<ul class="pagination">
+							<li class="pagePre">
+								<a href="#" aria-label="Previous">
+									<span aria-hidden="true">首页</span>
+								</a>
+							</li>
+							<li class="pageNumber"><a href="#" value="1">1</a></li>
+							<li class="pageNext">
+								<a href="#" aria-label="Next">
+									<span aria-hidden="true">末页</span>
+								</a>
+							</li>
+						</ul>
+						<div class="inp">
+							<button class="btn btn-default">跳转</button><input type="text" class="form-control">
+						</div>
+						<span class="totalCount">共0条数据</span>
+					</nav>
+				</div>
+			</div>
+			<div class="specialRight">
+				<div class="writeXF">
+					<div>
+						<img th:src="${portalHost+'/img/newMenu/writeDa.png'}" alt="">
+						<p>写答案</p> 
+					</div>
+					<div>
+						<img th:src="${portalHost+'/img/newMenu/writeXf.jpg'}"  alt="">
+						<p>写想法</p>
+					</div>
+				</div>	
+				<div class="collection">
+					<p class="myCollect"><img th:src="${portalHost+'/img/newMenu/shoucang.png'}"  alt="">我的收藏</p>
+					<p class="myFollow"><img th:src="${portalHost+'/img/newMenu/guanzhu.png'}"  alt="">我的关注</p>
+				</div>
+				<div class="videoZs">
+					<h3>视频<a href="/portal/video.html">更多 ></a></h3>
+					<div class="videoImg" th:if="${video != null}">
+						<a th:href="@{/open/protal/videoDetail(id=${video.id})}">
+							<div>
+								<img th:src="${avatarUploadHost+video.coverUrl}" alt="">
+								<h4 th:text="${video.name}">视频标题视频标题视频标题视频标题</h4>
+								<div></div>
+							</div>
+							<p><span th:text="${#strings.abbreviate(video.summary,42)}">视频简介留2行+...视频简介留2行+...视频简介留2行+...视频简介留2行+...</span></p>
+						</a>
+					</div>	
+				</div>
+				<div class="videoZs policy">
+					<h3>前沿政策<a th:href="@{/portal/thinkTank/policyList?type=1}">更多 ></a></h3>
+					<div class="videoImg" th:if="${policy!=null}">
+						<a th:href="@{/portal/news/newsDetail(id=${policy.id},type=0)}">
+							<div>
+								<img th:src="${policy != null? avatarUploadHost+policy.titleImg :portalHost+'/img/newMenu/zhengce.png'}" alt="">
+								<h4 th:text="${#strings.abbreviate(policy.title,15)}">视频标题视频标题视频标题视频标题</h4>
+								<div></div>
+							</div>
+							<p><span th:text="${#strings.abbreviate(policy.summary,42)}">视频简介留2行+...视频简视频简介留2行+...视频简视频简介留2行+...视频简视频简介留2行+...视频简介留2行+...视频简介留2行+...视频简介留2行+...</span></p>
+						</a>
+					</div>	
+				</div>
+				<div class="videoZs policy">
+					<h3>热点资讯<a th:href="@{/portal/thinkTank/policyList?type=0}">更多 ></a></h3>
+					<ul >
+						<li th:each="n:${news}">
+							<a th:href="@{/portal/news/newsDetail(id=${n.id},type=1)}" th:text="${#strings.abbreviate(n.title,30)}">
+								加奖金哦违法爱按金额积分经济积分经济积分经济if啊积分经济交往和居委会看看哇卡哇卡...</h5>
+							</a>
+						</li>
+					</ul>	
+				</div>
+				<img th:src="${portalHost+'/img/newMenu/guandian.png'}" alt="">
+			</div>
+		</div>
+		<!-- 公共底部 -->
+	<footer>
+        <div th:replace="common::copyright"></div>
+		<div th:replace="common::login"></div>
+    </footer>
+    <div th:replace="common::footer(~{::script})">
+    	<script type="text/javascript" th:src="${portalHost + '/dll/dll.js'}"></script>
+    	<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost+'/newMenu/special.js'}"></script>
+	</div>
+	</body>
+</html>

+ 135 - 0
src/main/webapp/WEB-INF/views/portal/special/specialDetail.html

@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
+<head th:replace="common::header(~{::title},~{::link})">
+		<meta charset="UTF-8">
+		<title>产品专栏详情</title>
+	<link th:href="${portalHost+'/dll/dll.css'}"  rel="stylesheet">
+	<link th:href="${portalHost+'/vendors.css'}" rel="stylesheet">
+	<link th:href="${portalHost+'/newMenu/specialDetail.css'}" rel="stylesheet">
+	</head>
+	<body>
+		<div th:replace="common::nav('','specialDetail')"></div>  
+		<!-- 公共头部 -->
+		<div class="container">
+			<hr class="hr">
+			<div class="specialLeft">
+				<div class="detaiTitle">
+					<h3 th:text="${kb.title}">2018高企申报----如何建立健全高企的财务核算体系?</h3>	
+					<p th:text="${#dates.format(kb.createTime,'yyyy年MM月dd日  HH:mm')}">1990/09/18</p>
+					<img th:if="${kb.picUrl != null}"  th:src="${avatarUploadHost+ kb.picUrl}" alt="">  <!-- 若没有图片则不显示此img标签 -->
+				</div>
+				<div class="detailWrapper ql-editor">
+					<P th:utext="${kb.content}">如何建立健全高企的财务核算如何建立健全高企的财务核算如何建立健全高企的财务核算</P>
+				</div>
+				<div class="comment">
+					<ul>
+						<li>阅读(<span th:text="${kb.readNumber}">1231312</span>)</li>
+						<li class="commentDz">评论(<span th:text="${kb.commentNumber}"></span>)</li>
+						<li class="fabulous">点赞(<span th:text="${kb.starNumber}">12313</span>)</li>
+						<li class="fengX">分享
+							<div class="fxWrap"> 
+								<span class="qqHy"><img th:src="${portalHost+'/img/indedImg/qq_yes.png'}" alt=""></span>
+								<span class="qqKj"><img th:src="${portalHost+'/img/indedImg/kj_yes.png'}" alt=""></span>
+								<span class="xlWb"><img th:src="${portalHost+'/img/indedImg/xl_yes.png'}" alt=""></span>
+							</div>
+						</li>
+					</ul>
+				</div>
+				<!-- 评论 -->
+				<div class="commentBody">
+					<div class="input-append">
+						<input class="search" type="text" placeholder="写下您的评论">
+						<button class="btn" type="button">评论</button>
+					</div>
+					<div class="commentList">
+						<p class="totalCommit">1000条评论</p>
+						<ul>
+							
+						</ul>
+						<div class="pagination_box">
+							<nav aria-label="Page navigation" class="clearfix">
+								<ul class="pagination">
+									<li class="pagePre">
+										<a href="#" aria-label="Previous">
+											<span aria-hidden="true">首页</span>
+										</a>
+									</li>
+									<li class="pageNumber"><a href="#" value="1">1</a></li>
+									<li class="pageNext">
+										<a href="#" aria-label="Next">
+											<span aria-hidden="true">末页</span>
+										</a>
+									</li>
+								</ul>
+								<span class="totalCount">共0条数据</span>
+							</nav>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="specialRight">
+				<div class="writeXF">
+					<div>
+						<img th:src="${portalHost+'/img/newMenu/writeDa.png'}" alt="">
+						<p>写答案</p> 
+					</div>
+					<div>
+						<img th:src="${portalHost+'/img/newMenu/writeXf.jpg'}"  alt="">
+						<p>写想法</p>
+					</div>
+				</div>	
+				<div class="collection">
+					<p class="myCollect"><img th:src="${portalHost+'/img/newMenu/shoucang.png'}"  alt="">我的收藏</p>
+					<p class="myFollow"><img th:src="${portalHost+'/img/newMenu/guanzhu.png'}"  alt="">我的关注</p>
+				</div>
+				<div class="videoZs">
+					<h3>视频<a href="/portal/video.html">更多 ></a></h3>
+					<div class="videoImg" th:if="${video != null}">
+						<a th:href="@{/open/protal/videoDetail(id=${video.id})}">
+							<div>
+								<img th:src="${avatarUploadHost+video.coverUrl}" alt="">
+								<h4 th:text="${#strings.abbreviate(video.name,16)}">视频标题视频标题视频标题视频标题</h4>
+								<div></div>
+							</div>
+							<p><span th:text="${#strings.abbreviate(video.summary,42)}">视频简介留2行+...视频简介留2行+...视频简介留2行+...视频简介留2行+...</span></p>
+						</a>
+					</div>	
+				</div>
+				<div class="videoZs policy">
+					<h3>前沿政策<a th:href="@{/portal/thinkTank/policyList?type=1}">更多 ></a></h3>
+					<div class="videoImg" th:if="${policy!=null}">
+						<a th:href="@{/portal/news/newsDetail(id=${policy.id},type=0)}">
+							<div>
+								<img th:src="${policy != null? avatarUploadHost+policy.titleImg :portalHost+'/img/newMenu/zhengce.png'}" alt="">
+								<h4 th:text="${#strings.abbreviate(policy.title,16)}">视频标题视频标题视频标题视频标题</h4>
+								<div></div>
+							</div>
+							<p><span th:text="${#strings.abbreviate(policy.summary,42)}">视频简介留2行+...视频简视频简介留2行+...视频简视频简介留2行+...视频简视频简介留2行+...视频简介留2行+...视频简介留2行+...视频简介留2行+...</span></p>
+						</a>
+					</div>	
+				</div>
+				<div class="videoZs policy">
+					<h3>热点资讯<a th:href="@{/portal/thinkTank/policyList?type=0}">更多 ></a></h3>
+					<ul >
+						<li th:each="n:${news}">
+							<a th:href="@{/portal/news/newsDetail(id=${n.id},type=1)}" th:text="${#strings.abbreviate(n.title,30)}">
+								加奖金哦违法爱按金额积分经济积分经济积分经济if啊积分经济交往和居委会看看哇卡哇卡...</h5>
+							</a>
+						</li>
+					</ul>	
+				</div>
+				<img th:src="${portalHost+'/img/newMenu/guandian.png'}" alt="">
+			</div>
+		</div>
+		<!-- 公共底部 -->
+	<footer>
+        <div th:replace="common::copyright"></div>
+		<div th:replace="common::login"></div>
+    </footer>
+    <div th:replace="common::footer(~{::script})">
+    	<script type="text/javascript" th:src="${portalHost + '/dll/dll.js'}"></script>
+    	<script type="text/javascript" th:src="${portalHost + '/vendors.js'}"></script>
+		<script type="text/javascript" th:src="${portalHost+'/newMenu/specialDetail.js'}"></script>
+	</div>
+	</body>
+</html>

+ 1 - 1
src/main/webapp/WEB-INF/views/portal/video/video.html

@@ -64,7 +64,7 @@
 			</div>
 		</div>	 -->
 		<!-- 下面是公共底部 -->	
-		<footer>
+	<footer>
         <div th:replace="common::copyright"></div>
 		<div th:replace="common::login"></div>
     </footer>