本次目标
1.创建内容管理微服务。
2.通过内容管理微服务实现商品录入。
3.使用文件管理微服务实现文件上传。
PS:我这里只是做了简单实现,商品价格等细节内容还没有添加。因为这个项目主要目地是将各种优秀的技术进行应用,把整个系统每个细节都做出来也不太现实。本次实现商品录入主要是对之前第三节做的图片上传微服务进行整合,并且为后面的Elasticsearch技术的应用做铺垫。
创建内容管理微服务
pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>SpringBootMicroservices</artifactId>
<groupId>liwen.zhao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<!--内容管理微服务-->
<artifactId>ContentManagementMicroservice</artifactId>
<dependencies>
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--持久层-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--Mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<!--alibaba德鲁伊数据源 DruidDataSource-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<!--JDCommons-->
<dependency>
<groupId>liwen.zhao</groupId>
<artifactId>JDCommons</artifactId>
</dependency>
<!--Redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
</dependencies>
</project>
启动类
@SpringBootApplication
@MapperScan("liwen.zhao.mappers")
@EnableEurekaClient
public class ContentManagementStarter {
public static void main(String[] args) {
SpringApplication.run(ContentManagementStarter.class,args);
}
@Bean
public SysResult initSysResult(){
return SysResult.build(500, "服务器异常", null);
}
}
控制器
@Controller
@RestController
@RequestMapping("/article")
public class ArticleController {
@Autowired
SysResult sysResult;
@Autowired
ArticleService articleService;
@RequestMapping(value = "/add",method = RequestMethod.POST)
public SysResult add(Article article){
return articleService.addArticle(article);
}
}
业务层接口
package liwen.zhao.service;
import liwen.zhao.common.jd.pojo.Article;
import liwen.zhao.common.jd.vo.SysResult;
public interface ArticleService {
SysResult addArticle(Article article);
}
业务层接口实现
@Service
public class ArticleServiceImpl implements ArticleService {
@Autowired
SysResult sysResult;
@Autowired(required = false)
ArticleMapper articleMapper;
@Override
public SysResult addArticle(Article article) {
Long time=System.currentTimeMillis()/1000;
article.setContent("");
article.setCtime(time);
article.setUtime(time);
try {
articleMapper.addArticle(article);
return SysResult.ok();
}catch (Exception e){
return sysResult;
}
}
}
持久层映射
略。
更多细节内容,请下载源码查看…
实现商品录入
接口描述
js请求地址 | http://{ip:port}/article/add |
---|---|
后台接收 | /article/add |
请求方式 | POST |
请求参数 | 提交参数 String title;标题 String summary;简介 String img;主图地址 |
返回数据 | 返回SysResult对象的json,其结构:Integer status; 200表示成功,其他表示失败。String msg;成功返回 “ok”,失败返回其他信息。Object data;根据需求携带其他数据。 |
我将会把商品信息通过内容管理系统进行管理。该想法的来源是CMS(内容管理系统)。
其实无论是商品、文章、新闻、网页、公告…,本质上都是在互联网上进行文章内容的发布和展示。你可能会问,那商品还有价格呢?!文章作为虚拟物品,也是可以作为商品售卖的,存在价格字段也不冲突。
前端代码实现
主要还是用到了Vue。
对各种提交参数进行了动态绑定:
<script>
//vue
var vu=new Vue({
el:"#main",
data:{
title:"",
summary:"",
img:""
},
methods:{
test:function () {
alert(this.img);
},
submit:function () {
const url="/article/add";
let datas = {"title":this.title,"summary":this.summary,"img":this.img};
axios.post(url,Qs.stringify(datas)).then(function(resp){
if(resp.data.status!=200){
alert(resp.data.msg);
}else{
alert("添加成功");
}
})/*.catch(resp => {
alert('请求失败');
this.changeValiCode();
});*/
}
}
}
);
</script>
使用文件管理微服务实现文件上传
其中,图片上传,在3.从零开始搭建基于SpringCloud的京东整站_文件上传微服务已经介绍过了,这里不再赘述。
代码地址:https://gitee.com/zhaoliwen/JD_ALL.git