大覓網03Day


實現輪播圖接口

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 當出現圖中結果時,則說明接口沒有問題。

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM