實現輪播圖接口
1.在開始工作之前請先准備好以下要用到的軟件以及素材:
MarkdownPad;
POSTMAN;
dm-common(install打包操作-保證本地構建),
dm-base-provider,
dm-eureka-server,
dm-item-consumer
導入數據庫腳本(創建庫,創建表)
2.打開 Idea ,導入我們所需要的項目
3.構建本地maven庫,將 dm-common 包配置到本地maven庫中。
3.1、在執行請步驟之前,請先在 Idea 設置中修改本機對應的 maven 環境地址(File→Settings→Build, Execution, Deployment→Build Tools→Maven)
3.2、maven配置文件修改本地倉庫配置文件:將下列代碼粘貼到 配置文件中的mirrors標簽下
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>CN</id>
<name>OSChina Central</name>
<url>http://maven.oschina.net/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3.3、配置完成后,在 idea 中打開 maven 窗口,依次點擊每個模塊下的install功能,直到本地maven苦衷多出如圖二所示的7個文件夾即可。
4.上一步驟執行結束后,啟動注冊中心,然后打開 dm-base-provider 模塊。
4.1、修改該模塊下的yml文件,將數據庫鏈接地址修改成你虛擬機的ip,或者在hosts文件中修改虛擬主機地址。
5.創建查詢圖片接口。
5.1、設置接口路徑("/queryDmImageList"),通過 targetId :關聯表ID (dm_item中item_id),type :圖片類型(0:無類型 1:輪播圖 2:海報圖),category :圖片分類(0:用戶頭像 1:商品圖片)三個單數查詢圖片參數。
5.2、在 RestDmImageService.java 文件中添加一個新接口 queryDmImageList 通過該接口調用 setDefaultImageList 方法查詢圖片。
@RequestMapping(value = "/queryDmImageList", method = RequestMethod.POST) public List<DmImage> queryDmImageList(@RequestParam("targetId") Long targetId, @RequestParam("type") Integer type, @RequestParam("category") Integer category) throws Exception { Map<String, Object> imageParam = new HashMap<String, Object>(); imageParam.put("targetId", targetId); imageParam.put("type", type); imageParam.put("category", category); List<DmImage> dmImageList = dmImageMapper.getDmImageListByMap(imageParam); return setDefaultImageList(dmImageList, category, type); }
5.3、setDefaultImageList 方法,設置默認圖片,如果獲取到的熱點圖片信息是空值,則將圖片更改為默認圖片
public List<DmImage> setDefaultImageList(List<DmImage> dmImageList, Integer category, Integer type) { if (EmptyUtils.isEmpty(dmImageList)) { dmImageList = new ArrayList<DmImage>(); DmImage dmImage = new DmImage(); dmImage.setType(type); dmImage.setCategory(category); dmImageList.add(dmImage); } for(DmImage dmImage:dmImageList){ if (EmptyUtils.isEmpty(dmImage.getImgUrl())) { dmImage.setImgUrl(Constants.DEFAULT_CAROUSEL); } } return dmImageList; }
5.4、測試接口連通性:在postman中現將請求模式更改為 Post 測試 http://localhost:7002/queryDmImageList?targetId=1&type=1&category=1 ,當出現圖中結果時,則說明接口沒有問題。
6.創建查詢首頁輪播圖接口。
6.1、在 dm-item-consumer 中創建 HomeService.java 、HomeServiceImpl.java 和 HomeController.java 文件
HomeService.java 文件
public interface HomeService { /** * 查詢首頁輪播圖 * @return * @throws Exception */ public List<HotItemVo> queryBanner() throws Exception; }
HomeServiceImpl.java 文件
@Component public class HomeServiceImpl implements HomeService { @Autowired private RestDmItemClient restDmItemClient; @Autowired private RestDmImageClient restDmImageClient; @Override public List<HotItemVo> queryBanner() throws Exception { //查詢輪播圖前5個 Map<String, Object> param = new HashMap<String, Object>(); param.put("isBanner", 1); param.put("beginPos", 0); param.put("pageSize", 5); List<DmItem> dmItemList = restDmItemClient.getDmItemListByMap(param); //組裝接口返回數據 List<HotItemVo> hotItemVoList = new ArrayList<HotItemVo>(); if (EmptyUtils.isEmpty(dmItemList)) { return null; } for (DmItem dmItem : dmItemList) { HotItemVo hotItemVo = new HotItemVo(); BeanUtils.copyProperties(dmItem, hotItemVo); //查詢圖片信息 List<DmImage> dmImageList = restDmImageClient.queryDmImageList(dmItem.getId(), Constants.Image.ImageType.carousel, Constants.Image.ImageCategory.item); //組裝圖片信息 hotItemVo.setImgUrl(EmptyUtils.isEmpty(dmImageList) ? null : dmImageList.get(0).getImgUrl()); hotItemVoList.add(hotItemVo); } return hotItemVoList; } }
HomeController.java 文件
@RestController @RequestMapping("api/p/index") public class HomeController { @Resource private HomeService homeService; @RequestMapping(value = "/queryBanner", method = RequestMethod.POST) public Dto<HotItemVo> queryBanner() throws Exception { List<HotItemVo> hotItemVoList = homeService.queryBanner(); return DtoUtil.returnDataSuccess(hotItemVoList); } }
7.啟動服務列表:
(1)dm-common本地構建
(2)啟動注冊中心 dm-eureka-server
(3)啟動基礎微服務 dm-base-provider
(4)啟動商品生產者 dm-item-provider
(5)啟動商品消費者 dm-item-consumer
8.測試連通性
8.1、在postman中現將請求模式更改為 Post 測試 http://localhost:7201/api/p/index/queryBanner ,當出現圖中結果時,則說明接口沒有問題。