实现轮播图接口

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 ,当出现图中结果时,则说明接口没有问题。

大觅网03Day的更多相关文章

  1. 大觅网02Day

    docker环境搭建:(注:请先完成上一次的环境搭建) A.部署环境(导入上次系统的时候修改虚拟机的内存) 1.安装系统自带版本Docker:apt-get install docker.io 2.查 ...

  2. 大觅网01Day

    1.首先在上手之前准备几样开发辅助工具: ①vmware ②ubuntu ③xshell ④xftp 2.创建ubuntu系统 打开vmware创建一个新的虚拟机 在创建虚拟机时有几处需要留意 首先是 ...

  3. 大觅网05Day

    1.Mycat概述 在此前的服务器对数据库的存储数量要求并不高的时候,被经常使用的MySql数据基本能够满足对数据存储的要求. 但随着技术的不断发展,MySql甚至Redis都无法满足现今存储数量的指 ...

  4. 大觅网07day

    分布式日志环境的构建(ELK+Kafka) 主要是搭建分布式日志环境,由ELK+Kafka实现,分为以下四步实现: 一.Elasticsearch环境的搭建和测试 1.删除已经存在的ES容器和镜像,如 ...

  5. 爬虫综合大作业——网易云音乐爬虫 & 数据可视化分析

    作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 爬虫综合大作业 选择一个热点或者你感兴趣的主题. 选择爬取的对象 ...

  6. 腾讯大湘网某处csrf(city.hn.qq.com)可投诉刷留言

    触发点: http://city.hn.qq.com http://city.hn.qq.com/auto/c=shop&m=bbs&id=668 POST /msgboard/mes ...

  7. 腾讯大渝网(esf.cq.qq.com)任意手机注册+短信验证码泄露

    地址在这里:http://esf.cq.qq.com/c=register 直接返回短信验证码, data: {data:您的手机验证码为8453,2小时内有效., auth_code:8453}ti ...

  8. 大二网课ing学习周记

    行稳致远,久久为功! 一个概念套着一个概念哦!码就是关键字,标识属性是也! 1.什么是主码和外码,请举例说明. 关键字也叫码! 首先,在一个关系中,能惟一标识元组的属性or最小属性集称为关系的候选码. ...

  9. 福大软工1816:Alpha(3/10)

    Alpha 冲刺 (3/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.学习qqbot库: 2.实 ...

随机推荐

  1. docker run always

    https://www.cnblogs.com/kaishirenshi/p/10396446.html

  2. WPF界面开发技巧大放送!DevExpress WPF格式化日期时间值

    DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...

  3. 页面初次渲染loading图

    当第一次进入页面时,可能由于网速或其他原因请求接口需要等待很长时间,这是页面一片空白,很难看,切交互性也不好,这是,我们常常放上一个loading等待图给用户以反馈 // 页面尚未加载时的loadin ...

  4. markdown 使用总结

    Markdown介绍 Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber).它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文 ...

  5. 题解 【POJ1952】 BUY LOW, BUY LOWER

    题目意思: 给你一个长度为\(n\)(\(1<=n<=5000\))的序列,并求出最长下降子序列的长度及个数, 并且,如果两个序列中元素的权值完全相同,那么即使它们的位置不一样,也只算一种 ...

  6. 【Python之路】特别篇--Python文件操作

    文件操作 open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open('文件路径', '模式','编码') 打开文件时, ...

  7. web上传整个文件夹

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

  8. nodeJS环境搭建

    1. Node.js是什么 1.1 Node.js是一个基于Chrome V8引擎的[JavaScript运行环境]. Node.js使用了一个事件驱动.非阻塞式I/O 的模型. 1.2 Node.j ...

  9. TTTTTTTTTTTTT CF#365 div2 B 统计点

    B. Mishka and trip time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  10. 灰度图像--图像分割 Sobel算子

    学习DIP第44天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...