newstyles项目实战(十六)CMS管理系统之内容展示,内容添加

内容展示:

 上几节我们能够创建新的节点,修改节点的名称,通过业务的分析可以知道,这些节点其实就是我们要管理的广告的类目,所以这次我们需要对内容,也就是广告进行管理,由此我们我们需要分析一下内容管理的业务逻辑。

     当我们选择某一个类目时,就会出现此类目下的内容:


     那我们怎么实现呢?

       首先分析一下数据库中的表格,从前面的博客中我们知道子节点的parent_id为父节点的id所以,这些广告内容,也即tb_content表中的内容的categoryId为对应的子节点的id,所以理清楚这个主要的逻辑就可以进行实现了,不过,在这里我们使用pageHelper进行分页处理,所以在完成业务逻辑的同时还需要考虑插件的使用。

     首先我们分析一下呈现数据的content.jsp页面:


        可以看到,这个页面实际上使用div标签构成的,里边使用table标签呈现数据,同时我们已可以看到请求的url的路径为/content/query/list,这个过程是当我们点击加载页面时,就需要先将上节做的分类目录加载进来,然后点我们选择目录是,页面会根据我们选择的目录进行查询,获取其对应的广告内容,所以需要先了解当页面初始化的时候干了那些事:


确实在页面初始化时首先加载了目录树,而且目录树就是我们上一博客中实现的目录树,所以在这里就不要再新去写一个了,继续进行我们的内容:

需求我们已经分析好了,但是我们查询的数据该怎么呈现到页面上呢,其实我们在之前的博客中已经了解到,内容会通过json数据的形式进行返回,所以我们需要使用我们自定义的相应的数据类型:EUDataGridResult。

Dao层:

   此业务也只是对tb_content表格进行内容的查询,为一个单表查询,可以使用之前逆向工程生成的文件,以及其对应的mapper。

Service层:

	@Override
	public EUDataGridResult getContentCateGoryList(long categoryId,int page, int rows) {
		//查询商品列表
		TbContentExample exmaple = new TbContentExample();
		Criteria criteria = exmaple.createCriteria();
		criteria.andCategoryIdEqualTo(categoryId);
		//分页处理
		PageHelper.startPage(page, rows);
		List<TbContent> list = contentMapper.selectByExample(exmaple);
		// TODO Auto-generated method stub
		//创建返回值对象
		EUDataGridResult result = new EUDataGridResult();
		result.setRows(list);
		
		//获取记录的总数
		PageInfo<TbContent> pageInfo = new PageInfo<>(list);
		result.setTotal(pageInfo.getTotal());
		
		return result;
	}

可以注意到,除了传递id,还传递了两个参数,这两个参数为分页插件所必须使用的两个参数,不过需要注意的是,分页插件是在执行查询前就需要引入的,所以我们在查询操作之前防止分页插件。

Controller层:

	/**
	 * 查询对应类目的内容
	 * @param categoryId
	 * @param page
	 * @param rows
	 * @return 状态码
	 */
	@RequestMapping("/content/query/list")
	@ResponseBody
	public EUDataGridResult getContentCateGoryList(long categoryId,int page, int rows){
		EUDataGridResult result = contentService.getContentCateGoryList(categoryId,page,rows);
		return result;
	}

    controller层的代码也完成了,调用了service层的服务,完成列表的查询,测试结果就如上面的图,内容展示就告一段落。

内容添加:

内容添加的操作为我们上图中的那个小的加号,我们点击它会弹出一个内容

 
 

可以看到,当我们选择好对应的类目的时候,添加的按钮会有一个跳转,跳转到content-add.jsp页面,所以切换到目标页面进行分析:

需要注意的是使用到了之前我们完成的图片上传的功能,所以此时在测试的时候重点提醒一下:一定要确保存放图片的nginx服务器正在运行。

可以发现我们提交的内容是通过post将表单内容进行提交,请求的路径为:

返回值:我们可以使用自定义的状态返回类NewstylesResult类对状态进行返回:

Dao层:

     此业务逻辑为对tb_content表格的内容的更行,最终还是归结为tb_content这一个表,所以我们可以使用逆向工程生成的文件,以及mapper。

Service层:

	@Override
	public NewstylesResult insertContent(TbContent content) {
		//补全POJO的内容
		content.setCreated(new Date());
		content.setUpdated(new Date());
		contentMapper.insert(content);		
		return NewstylesResult.ok();
	}

Controller层:

/**
	 * 新增功能
	 * @param content 待添加的广告内容类
	 * @return 状态码
	 */
	@RequestMapping("/content/save")
	@ResponseBody
	public NewstylesResult insertContent(TbContent content){
		NewstylesResult result = contentService.insertContent(content);
		return result;
	}

这样,增加内容的功能实现了。可以完成对应的业务逻辑。


猜你喜欢

转载自blog.csdn.net/qq_18870127/article/details/80162752
今日推荐