校园商铺-9前端展示系统-1前端展示系统的开发

前端展示系统用来对店铺信息和商品信息进行展示,是顾客了解商品的门户。
首页开发:

  • 1.头条读取以及滚动播放
  • 2.一级类别列表的获取,之前只是二级类别的获取

1.头条Dao层

1.1 Dao接口

package com.csj2018.o2o.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.csj2018.o2o.entity.HeadLine;

public interface HeadLineDao {
	/**
	 * 9-1根据传入的查询条件返回头角
	 * @param headLineCondition
	 * @return
	 */
	List<HeadLine> queryHeadLine(@Param("headLineCondition") HeadLine headLineCondition);
}

1.2 mapper实现

<?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.csj2018.o2o.dao.HeadLineDao">
 	<!-- 9-1 -->
 	<select id="queryHeadLine" resultType="com.csj2018.o2o.entity.HeadLine">
 		select 
 			line_id,line_name,line_link,line_img,priority,enable_status,create_time,last_edit_time 
 		from tb_head_line
 		<where>
 			<if test="headLineCondition.enableStatus!=null">
 				and enable_status = #{headLineCondition.enableStatus}
 			</if>
 		</where>
 		order by priority desc
 	</select>
 </mapper>

1.3 Dao单元测试

package com.csj2018.o2o.dao;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.csj2018.o2o.BaseTest;
import com.csj2018.o2o.entity.HeadLine;


public class HeadLineTest extends BaseTest{
	@Autowired
	private HeadLineDao headLineDao;
	
	@Test
	public void testQueryHeadLine() {
		List<HeadLine> headLineList = headLineDao.queryHeadLine(new HeadLine());
		assertEquals(headLineList.size(),0);
	}
}

2.商品类别Dao层

商品列别queryShopCategory只支持二级类别,现在改写支持一级类别

2.1 mapper实现

<?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.csj2018.o2o.dao.ShopCategoryDao">
 	<!-- 9-1 -->
 	<select id="queryShopCategory" resultType="com.csj2018.o2o.entity.ShopCategory" >
 	select 
 	shop_category_id,
 	shop_category_name,
 	shop_category_desc,
 	shop_category_img,
 	priority,create_time,
 	last_edit_time,
 	parent_id 
 	from tb_shop_category 
 	<where>
 		<if test="shopCategoryCondition == null">
 			and parent_id is null
 		</if>
 		<if test="shopCategoryCondition != null">
 			and parent_id is not null
 		</if>
 		<if test="shopCategoryCondition != null and shopCategoryCondition.parent != null and shopCategoryCondition.parent.shopCategoryId != null">
 			and parent_id = #{shopCategoryCondition.parent.shopCategoryId}
 		</if>
 	</where>
 	order by priority desc;
 	</select>
 	<select id="queryAllShopCategory" resultType="com.csj2018.o2o.entity.ShopCategory">
        select shop_category_id,
            shop_category_name,
            shop_category_desc,
            shop_category_img,
            priority,
            create_time,
            last_edit_time,
            parent_id 
            from tb_shop_category order by priority desc
    </select>
 </mapper>

2.2 单元测试

package com.csj2018.o2o.dao;

import static org.junit.Assert.assertEquals;

import java.util.List;

import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.csj2018.o2o.BaseTest;
import com.csj2018.o2o.entity.ShopCategory;

public class ShopCategoryDaoTest extends BaseTest {
	@Autowired
	private ShopCategoryDao shopCategoryDao;

	@Test
	@Ignore
	public void testQueryShopCategory() {
		//parent_id为1
		ShopCategory sonCategory = new ShopCategory();
		ShopCategory parentCategory = new ShopCategory();
		parentCategory.setShopCategoryId(1L);
		sonCategory.setParent(parentCategory);
		List<ShopCategory>shopCategoryList = shopCategoryDao.queryShopCategory(sonCategory);
		System.out.println(shopCategoryList.get(0).getShopCategoryName());
		assertEquals(1,shopCategoryList.size());
	}
	@Test
    @Ignore
    public void testAllCategory() {
		//传入空的类
		List<ShopCategory> shopCategoryList = shopCategoryDao.queryAllShopCategory();
		assertEquals(2,shopCategoryList.size());
        
    }
	//9-1
	@Test
	public void testQueryShopCategory2() {
		List<ShopCategory> shopCategoryList = shopCategoryDao.queryShopCategory(null);
		assertEquals(shopCategoryList.size(),0);
	}
}

3.Service层

3.1 Service接口

package com.csj2018.o2o.service;

import java.io.IOException;
import java.util.List;

import com.csj2018.o2o.entity.HeadLine;

public interface HeadLineService {
	/**
	 * 9-1 根据传入的条件返回指定的头条列表
	 * @param headLineCondition
	 * @return
	 * @throws IOException
	 */
	List<HeadLine> getHeadLineList(HeadLine headLineCondition) throws IOException; 
}

3.2 Service实现类

package com.csj2018.o2o.service.impl;

import java.io.IOException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.csj2018.o2o.dao.HeadLineDao;
import com.csj2018.o2o.entity.HeadLine;
import com.csj2018.o2o.service.HeadLineService;

@Service
public class HeadLineServiceImpl implements HeadLineService{
	@Autowired
	private HeadLineDao headLineDao;
	//9-1
	@Override
	public List<HeadLine> getHeadLineList(HeadLine headLineCondition) throws IOException{
		return headLineDao.queryHeadLine(headLineCondition);
	}
	
}

4. Controller层

4.1 Contrller层

package com.csj2018.o2o.web.frontend;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.csj2018.o2o.entity.HeadLine;
import com.csj2018.o2o.entity.ShopCategory;
import com.csj2018.o2o.service.HeadLineService;
import com.csj2018.o2o.service.ShopCategoryService;

@Controller
@RequestMapping(value="/frontend")
public class MainPageController {
	@Autowired
	private ShopCategoryService shopCategoryService;
	@Autowired
	private HeadLineService headLineService;
	
	/**
	 * 9-1初始化前端展示系统的主页信息,包括获取一级店铺类别列表和头条列表
	 * @return
	 */
	@RequestMapping(value="/listmainpageinfo",method=RequestMethod.GET)
	@ResponseBody
	public Map<String,Object> listMainPageInfo(){
		Map<String,Object> modelMap = new HashMap<String,Object>();
		List<ShopCategory> shopCategoryList = new ArrayList<ShopCategory>();
		try {
			//获取一级店铺类别列表,即parentId为空的shopCategory
			shopCategoryList = shopCategoryService.getShopCategoryList(null);
			modelMap.put("shopCategoryList", shopCategoryList);
		}catch (Exception e) {
			modelMap.put("success", false);
			modelMap.put("errMsg", e.getMessage());
			return modelMap;
		}
		List<HeadLine> headLineList = new ArrayList<HeadLine>();
		try {
			//获取状态为可用1的头条列表
			HeadLine headLineCondition = new HeadLine();
			headLineCondition.setEnableStatus(1);
			headLineList = headLineService.getHeadLineList(headLineCondition);
			modelMap.put("headLineList",headLineList);
		}catch (Exception e) {
			modelMap.put("success", false);
			modelMap.put("errMsg", e.getMessage());
			return modelMap;
		}
		modelMap.put("success", true);
		return modelMap;
	}
}

4.2 controller验证

## 5.插入数据 ```#sql insert into tb_shop_category (shop_category_name,shop_category_desc,priority,shop_category_img) values ('二手市场','二手商品交易',100,'/upload/item/shopcategory/car.jpg'), ('美容美发','美容美发',99,'/upload/item/shopcategory/fair.jpg'), ('美食饮品','美食饮品',98,'/upload/item/shopcategory/food.jpg'), ('休闲娱乐','休闲娱乐',97,'/upload/item/shopcategory/play.jpg'), ('培训教育','培训教育',96,'/upload/item/shopcategory/study.jpg'), ('租赁市场','租赁市场',95,'/upload/item/shopcategory/rent.jpg');

insert into tb_head_line(line_name,line_link,line_img,priority,enable_status)VALUES
('五菱之光','https://www.autohome.com.cn/2456/','/upload/item/headtitle/zhiguang.jpg',4,1),
('五菱宏光','https://www.autohome.com.cn/2139/','/upload/item/headtitle/hongguang.jpg',5,1),
('五零荣光','https://www.autohome.com.cn/2451/','/upload/item/headtitle/rongguang.jpg',7,1);
select line_name,line_link,line_img,priority,enable_status from tb_head_line;

原文地址:https://www.cnblogs.com/csj2018/p/12556040.html