经过我们组的商讨,后端决定采用springboot,数据库采用mysql,并于本周开始完成后端的管理员系统的初步搭建。
项目起始
首先进行项目的创建,创建一个初始的springboot项目,并引入web依赖和mysql相关依赖,后端起始架构如下:
由于项目要上线,所以需要不同的配置文件,一个用于本地开发,一个用于上线,
Swagger创建在线接口文档
首先引入依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
接着进行swagger的配置,如下:
package com.maomaogougou.qingshan.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMapping;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.basePackage("com.maomaogougou.qingshan.controller"))
.paths(PathSelectors.any())
.build().apiInfo(new ApiInfoBuilder()
.title("青山垃圾分类系统文档")
.description("")
.version("1.0")
.contact(new Contact("青山小组","xxx","xxx"))
.license("青山 Lincense")
.build()
);
}
}
这个配置文件指定了文档的标题等。
之后我们就可以创建controller并实现在线文档了,如下:
@Api(tags = "这个是用户相关接口")
@RestController
public class UserController {
@PostMapping("/user/login")
@ApiOperation(value = "用户登录接口",
notes = "<span style='color:red;'>描述:</span> 登录功能," +
"<span style='color:red;'>参数:</span> username;password。" +
"<span style='color:red;'>请求路径:</span> /user/login")
@ApiResponses({
@ApiResponse(code = 200, message = "登录成功"),
@ApiResponse(code = 404, message = "请求参数有误"),
})
public ResponseVo login(@RequestBody UserLoginForm form){
return new ResponseVo(200,"注册成功");
}
}
效果如下:
之后使用内网穿透就可以让前端同学访问这个在线接口文档,这样就方便了前后端开发。
后台管理系统设计
此项目的与后端有关的功能如下:
经过上面的需求分析,大致确定表的设计方案如下:
- user表:用于用户管理。字段:uid,username,password,coin(积分)。功能:注册,图片验证码登录,登出,添加积分,花费积分,发布回收垃圾的任务,让志愿者来回收;用户任务列表,历史任务,确认任务完成等功能
- history表:识别历史。字段:uid,image,resultType。功能:添加识别垃圾的历史记录,查询历史记录,删除历史记录
- score表:用户做题的成绩。字段:uid,score,time,功能:添加历史成绩,查询历史成绩,删除历史成绩,用户成绩排行榜
- examination表:题目。字段:title,answer。功能:添加题目,删除题目,更改题目答案
- coins表:积分兑换记录。字段:uid,coin,time,marketId(兑换的皮肤编号)。功能:添加,更新,删除
- market表:积分商城的商品。字段:marketId(商品编号),price。功能:添加,更新,删除
- volunteer表:志愿者管理字段:uid,areaId。功能:添加,删除。
- 【task表】:上门回收垃圾的任务。字段:taskId,areaId(管辖区域),uid(任务发布者id),price(完成后获取的报酬),time(发布时间),state(未领取,进行中,已完成),ExecutorUid(谁领取了任务),发布任务,任务列表,志愿者接收任务,任务发布者删除任务,志愿者放弃任务,查询某志愿者的历史任务。
- 【area表】:不同区域。字段:areaId,area。功能:增删改查。