大觅网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 ,当出现图中结果时,则说明接口没有问题。
最新文章
- Android代码优化——使用Android lint工具
- BZOJ 1452: [JSOI2009]Count 二维树状数组
- hdu 4424 并查集
- Vijos P1325桐桐的糖果计划
- Unity3D Asset Server搭建 .
- OD: Kernel Vulnerabilities
- HBASE API操作问题总结
- fcitx 输入框纵向
- SDL显示内存中的图像
- 添加保存less报错
- hdu_1026(最短路)
- Django入门开发之数据模型01
- Intellij Error:Cannot build Artifact &#39;XXX:war exploded&#39; because it is included into a circular dependency
- Complex类的设计与改进
- 【手记】MTK之TASK创建及使用
- 常见的web攻击手段
- 3D Slicer Programmatically Set Slice Offset and Intersections 用代码修改Slicer中的切片偏移和交叉点显示
- camera按键采集图像及waitKey的用法(转)
- Keras学习笔记——Hello Keras
- codeforces 516c// Drazil and Park// Codeforces Round #292(Div. 1)
热门文章
- 二维数组转化为json数组
- swoole 定时器 swoole_time_tick 和 swoole_time_after
- Java-DatabaseConnectionPool工具类
- robotframework 模拟滚动鼠标到底部
- 浮动float和清除clear
- mysql修改数据存储路径报错处理
- 坚果Pro2刷魔趣系统教程,刷回锤子系统教程
- js实现网页上图片循环播放
- 深度学习笔记(十一)网络 Inception, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv
- vue子路由设置、全局组件、局部组件的原生写法