轮播图模块
轮播图也是一个简单的模块功能,
对数据的CRUD,增删改查
添加轮播图
添加轮播图前,要上传图片,然后返回访问的ID,然后拼接成url
这样子创建轮播图的bean,就可以提交了。
接口:
@PreAuthorize("@permission.admin()")
@PostMapping
public ResponseResult addLoop(@RequestBody Looper looper) {
return loopService.addLoop(looper);
}
@Override
public ResponseResult addLoop(Looper looper) {
//检查数据
String title = looper.getTitle();
if (TextUtils.isEmpty(title)) {
return ResponseResult.FAILED("标题不可以为空.");
}
String imageUrl = looper.getImageUrl();
if (TextUtils.isEmpty(imageUrl)) {
return ResponseResult.FAILED("图片不可以为空.");
}
String targetUrl = looper.getTargetUrl();
if (TextUtils.isEmpty(targetUrl)) {
return ResponseResult.FAILED("跳转链接不可以为空.");
}
//补充数据
looper.setId(idWorker.nextId() + "");
looper.setCreateTime(new Date());
looper.setUpdateTime(new Date());
//保存数据
loopDao.save(looper);
//返回结果
return ResponseResult.SUCCESS("轮播图添加成功.");
}
- 对于增删改查的套路就是:
- 权限有没有
- 不能为空的数据进行检查
- 数据格式进行检查
- 补充数据
- 保存数据
- 返回结果
更新轮播图
接口:
@PreAuthorize("@permission.admin()")
@PutMapping("/{loopId}")
public ResponseResult updateLoop(@PathVariable("loopId") String loopId, @RequestBody Looper looper) {
return loopService.updateLoop(loopId,looper);
}
实现:
@Override
public ResponseResult updateLoop(String loopId, Looper looper) {
//找出来
Looper loopFromDb = loopDao.findOneById(loopId);
if (loopFromDb == null) {
return ResponseResult.FAILED("轮播图不存在.");
}
//不可以为空的,要判空
String title = looper.getTitle();
if (!TextUtils.isEmpty(title)) {
loopFromDb.setTitle(title);
}
String targetUrl = looper.getTargetUrl();
if (!TextUtils.isEmpty(targetUrl)) {
loopFromDb.setTargetUrl(targetUrl);
}
String imageUrl = looper.getImageUrl();
if (!TextUtils.isEmpty(imageUrl)) {
loopFromDb.setImageUrl(imageUrl);
}
if (!TextUtils.isEmpty(looper.getState())) {
loopFromDb.setState(looper.getState());
}
loopFromDb.setOrder(looper.getOrder());
loopFromDb.setUpdateTime(new Date());
//可以为空的直接设置
//保存回去
loopDao.save(loopFromDb);
return ResponseResult.SUCCESS("轮播图更新成功.");
}
更新的思想,可以通过update语句
有些课程可能会直接保存对象,这样子是不安全的
我们需要对数据不可以为空的字段进行检查,可以为空的直接设置也没关系。
删除轮播图
删除轮播图接口:
@PreAuthorize("@permission.admin()")
@DeleteMapping("/{loopId}")
public ResponseResult deleteLoop(@PathVariable("loopId") String loopId) {
return loopService.deleteLoop(loopId);
}
接口实现
话不多说,直接删除,前端可以弹窗警告
@Override
public ResponseResult deleteLoop(String loopId) {
loopDao.deleteById(loopId);
return ResponseResult.SUCCESS("删除成功.");
}
获取轮播图列表
除了前端,后台也是要获取轮播图列表的,因为我们要管理它呀
@PreAuthorize("@permission.admin()")
@GetMapping("/list")
public ResponseResult listLoops() {
return loopService.listLoops();
}
接口实现
@Override
public ResponseResult listLoops() {
Sort sort = new Sort(Sort.Direction.DESC, "createTime");
SobUser sobUser = userService.checkSobUser();
List<Looper> all;
if (sobUser == null || !Constants.User.ROLE_ADMIN.equals(sobUser.getRoles())) {
//只能获取到正常的category
all = loopDao.listLoopByState("1");
} else {
//查询
all = loopDao.findAll(sort);
}
return ResponseResult.SUCCESS("获取轮播图列表成功.").setData(all);
}
如果是前端,只能获取到状态正常的轮播图
管理员则可以获取到所有的轮播图
获取轮播图
获取轮播图,这个是获取单个
其实,有没有都可以的
使用场景就是获取完轮播图列表,如果你要更新轮播图,你可以调用此接口获取到它的内容。
如果不获取也可以,直接从列表里获取,因为我们的列表内容是全的。
接口:
@PreAuthorize("@permission.admin()")
@GetMapping("/{loopId}")
public ResponseResult getLoop(@PathVariable("loopId") String loopId) {
return loopService.getLoop(loopId);
}
接口实现:
@Override
public ResponseResult getLoop(String loopId) {
Looper loop = loopDao.findOneById(loopId);
if (loop == null) {
return ResponseResult.FAILED("轮播图不存在.");
}
return ResponseResult.SUCCESS("轮播图获取成功.").setData(loop);
}