三:crud
1:添加@Slf4j,增加@Api注释。
2:为方法添加@ApiOperation。
3:控制器负责接收数据,检验数据,将数据传到service层,在service层处理数据。返回给控制器。
4:查询操作全部设置为分页查询,方便查询与前端操作。使用mybatis-flex的Page方法,使用的包为com.mybatisflex.core.paginate
5:校验的操作使用了hutool的Validate。参考文档:Document
以下为目前编写的代码,代码受限与个人,而本人能力有限。
@RestController
@Slf4j
@Api(tags = "场地信息管理")
@RequestMapping("/admin/siteInfo")
//控制器负责接受数据,校验数据,然后把数据丢给service,然后返回service给你的结果
public class SiteInfoController {
@Autowired
private SiteInfoService siteInfoService;
//新增场地
@PostMapping("addSite")
@ApiOperation("新增场地")
public Result add(@RequestBody SiteInfo siteInfo)//SiteInfoDto siteInfoDto
{
//校验数据
if(siteInfo.getSiteCode()==null)
{
log.error("空数据");
return Result.error("场地编号不能为空");
}else if (siteInfoService.isExisted(siteInfo.getSiteCode())){//判断是否存在相同的场地编号
log.error("场地编号已存在");
return Result.error("场地编号已存在");
}else if (siteInfo.getSiteState()==null){
log.error("场地状态不能为空");
return Result.error("场地状态不能为空");
}
log.info("新增场地:{}",siteInfo);
siteInfoService.addSite(siteInfo);
return Result.success(siteInfo);
}
@DeleteMapping("remove/{id}")
@ApiOperation("删除场地")
public Result remove(@PathVariable Integer id) {
if (!siteInfoService.isExisted(id)){
log.error("场地id:{}不存在",id);
return Result.error("场地"+id+"不存在");
}
//todo判断是否存在需要删除的字段
//用场地编号删除
else if (siteInfoService.deleteLogically(id)==1){
log.info("已删除场地id:{}",id);
return Result.success();
} else {
return Result.error("删除场地"+id+"失败");
}
}
@PutMapping("updateSiteState")
@ApiOperation("更改场地状态")
public Result updateSiteState(@RequestBody SiteInfo siteInfo)
{
// log.info("更改场地状态:{}",siteInfo);
if (Validator.isEmpty(siteInfo)){
log.error("传入的类型为空");
return Result.error("传入的类型为空");
}
else if (Validator.isEmpty(siteInfo.getSiteCode())){
log.error("场地编号不能为空");
return Result.error("场地编号不能为空");
}else if (Validator.isEmpty(siteInfo.getSiteState())){
log.error("场地状态不能为空");
return Result.error("场地状态不能为空");
}
else if (siteInfoService.isDeletedLogically(siteInfo.getSiteCode())){
log.error("场地已删除");
return Result.error("场地已删除");
}
else if (siteInfoService.setSiteState(siteInfo)){
log.info("更改场地状态:{}",siteInfo.getSiteState());
return Result.success("已更改为"+siteInfo.getSiteState());
}else {
log.error("更改场地状态失败:{}",siteInfo.getSiteState());
return Result.error("更改场地状态失败");
}
// return siteInfoService.getSiteState(siteInfo.getSiteCode());
}
@GetMapping("getSiteState")
@ApiOperation("查询哪些场地被占用")//分页查询
public Result<Page<SiteInfo>> getSiteState() throws SQLException {
Page result=siteInfoService.selectSiteState();
if (siteInfoService.selectSiteState()!=null){
log.info("查询成功,被占用的场地为:{}",result);
return Result.success(result);
}else {
log.error("查询失败");
return Result.error("查询失败");
}
//1.日志输出在返回前端之前 2.控制器校验数据 3.使用统一的返回类型Result
}