feat: 迁移2

This commit is contained in:
mazxd
2025-04-08 08:24:33 +08:00
parent 7025c84a58
commit 0843049b5a
8 changed files with 281 additions and 41 deletions
@@ -0,0 +1,41 @@
package com.mzaxd.bps.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* 文件上传配置
*
* @author mzaxd
* @since 2024-04-06
*/
@Configuration
@ConfigurationProperties(prefix = "file")
public class FileConfig {
/**
* 上传路径
*/
private String uploadPath;
/**
* 访问路径
*/
private String accessPath;
public String getUploadPath() {
return uploadPath;
}
public void setUploadPath(String uploadPath) {
this.uploadPath = uploadPath;
}
public String getAccessPath() {
return accessPath;
}
public void setAccessPath(String accessPath) {
this.accessPath = accessPath;
}
}
@@ -0,0 +1,41 @@
package com.mzaxd.bps.controller;
import com.mzaxd.bps.config.FileConfig;
import com.mzaxd.bps.util.FileUtil;
import com.mzaxd.bps.util.Result;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
/**
* 文件上传Controller
*
* @author mzaxd
* @since 2024-04-06
*/
@RestController
@RequestMapping("/file")
public class FileController {
@Resource
private FileConfig fileConfig;
/**
* 上传文件
*/
@PostMapping("/upload")
public Result<String> upload(@RequestParam("file") MultipartFile file) throws IOException {
String fileName = FileUtil.upload(file, fileConfig.getUploadPath());
return Result.success(fileConfig.getAccessPath() + fileName);
}
/**
* 删除文件
*/
@DeleteMapping("/{fileName}")
public Result<Boolean> delete(@PathVariable String fileName) {
return Result.success(FileUtil.delete(fileConfig.getUploadPath() + fileName));
}
}
@@ -1,50 +1,82 @@
package com.mzaxd.bps.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzaxd.bps.domain.entity.SourceCategory;
import com.mzaxd.bps.domain.vo.SourceCategoryVo;
import com.mzaxd.bps.service.SourceCategoryService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import com.mzaxd.bps.util.Result;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* 网盘分类表(SourceCategory)表控制层
* 网盘分类Controller
*
* @author mzaxd
* @since 2024-04-06 10:00:00
* @since 2024-04-06
*/
@RestController
@RequestMapping("/api/source/category")
@Api(tags = "网盘分类管理")
@RequestMapping("/source/category")
public class SourceCategoryController {
@Autowired
@Resource
private SourceCategoryService sourceCategoryService;
/**
* 分页查询网盘分类
*/
@GetMapping("/page")
public Result<Page<SourceCategory>> page(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String name) {
LambdaQueryWrapper<SourceCategory> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(name != null, SourceCategory::getName, name)
.orderByAsc(SourceCategory::getSort);
return Result.success(sourceCategoryService.page(new Page<>(pageNum, pageSize), queryWrapper));
}
/**
* 获取所有网盘分类
*/
@GetMapping("/list")
@ApiOperation("获取分类列表")
public List<SourceCategoryVo> getCategoryList() {
return sourceCategoryService.getCategoryList();
public Result<List<SourceCategory>> list() {
LambdaQueryWrapper<SourceCategory> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SourceCategory::getStatus, 1)
.orderByAsc(SourceCategory::getSort);
return Result.success(sourceCategoryService.list(queryWrapper));
}
/**
* 获取网盘分类详情
*/
@GetMapping("/{id}")
public Result<SourceCategory> getById(@PathVariable Long id) {
return Result.success(sourceCategoryService.getById(id));
}
/**
* 新增网盘分类
*/
@PostMapping
@ApiOperation("新增分类")
public boolean addCategory(@RequestBody SourceCategory category) {
return sourceCategoryService.addCategory(category);
public Result<Boolean> save(@RequestBody SourceCategory sourceCategory) {
return Result.success(sourceCategoryService.save(sourceCategory));
}
/**
* 修改网盘分类
*/
@PutMapping
@ApiOperation("更新分类")
public boolean updateCategory(@RequestBody SourceCategory category) {
return sourceCategoryService.updateCategory(category);
public Result<Boolean> updateById(@RequestBody SourceCategory sourceCategory) {
return Result.success(sourceCategoryService.updateById(sourceCategory));
}
/**
* 删除网盘分类
*/
@DeleteMapping("/{id}")
@ApiOperation("删除分类")
public boolean deleteCategory(@PathVariable Long id) {
return sourceCategoryService.deleteCategory(id);
public Result<Boolean> removeById(@PathVariable Long id) {
return Result.success(sourceCategoryService.removeById(id));
}
}
@@ -22,6 +22,18 @@ public class SourceController {
@Resource
private SourceService sourceService;
/**
* 搜索网盘资源
*/
@GetMapping("/search")
public Result<Page<Source>> search(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) String keyword,
@RequestParam(required = false) Long categoryId) {
return Result.success(sourceService.search(pageNum, pageSize, keyword, categoryId));
}
/**
* 分页查询网盘资源
*/
@@ -1,42 +1,62 @@
package com.mzaxd.bps.controller;
import com.mzaxd.bps.domain.vo.PageVo;
import com.mzaxd.bps.domain.vo.SourceLogVo;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mzaxd.bps.domain.entity.SourceLog;
import com.mzaxd.bps.service.SourceLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import com.mzaxd.bps.util.Result;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.annotation.Resource;
/**
* 网盘日志表(SourceLog)表控制层
* 网盘日志Controller
*
* @author mzaxd
* @since 2024-04-06 10:00:00
* @since 2024-04-06
*/
@RestController
@RequestMapping("/api/source/log")
@Api(tags = "网盘日志管理")
@RequestMapping("/source/log")
public class SourceLogController {
@Autowired
@Resource
private SourceLogService sourceLogService;
@GetMapping("/list")
@ApiOperation("获取日志列表")
public PageVo<SourceLogVo> getLogList(
/**
* 分页查询网盘日志
*/
@GetMapping("/page")
public Result<Page<SourceLog>> page(
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(required = false) Long sourceId) {
return sourceLogService.getLogList(pageNum, pageSize, sourceId);
LambdaQueryWrapper<SourceLog> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(sourceId != null, SourceLog::getSourceId, sourceId)
.orderByDesc(SourceLog::getCreateTime);
return Result.success(sourceLogService.page(new Page<>(pageNum, pageSize), queryWrapper));
}
@PostMapping("/{sourceId}")
@ApiOperation("添加日志")
public boolean addLog(@PathVariable Long sourceId, HttpServletRequest request) {
String ip = request.getRemoteAddr();
return sourceLogService.addLog(sourceId, ip);
/**
* 获取网盘日志详情
*/
@GetMapping("/{id}")
public Result<SourceLog> getById(@PathVariable Long id) {
return Result.success(sourceLogService.getById(id));
}
/**
* 新增网盘日志
*/
@PostMapping
public Result<Boolean> save(@RequestBody SourceLog sourceLog) {
return Result.success(sourceLogService.save(sourceLog));
}
/**
* 删除网盘日志
*/
@DeleteMapping("/{id}")
public Result<Boolean> removeById(@PathVariable Long id) {
return Result.success(sourceLogService.removeById(id));
}
}
@@ -1,5 +1,6 @@
package com.mzaxd.bps.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mzaxd.bps.domain.entity.Source;
import com.mzaxd.bps.domain.vo.PageVo;
@@ -56,4 +57,15 @@ public interface SourceService extends IService<Source> {
* @return 是否成功
*/
boolean deleteSource(Long id);
/**
* 搜索网盘资源
*
* @param pageNum 页码
* @param pageSize 每页大小
* @param keyword 关键词
* @param categoryId 分类ID
* @return 分页结果
*/
Page<Source> search(Integer pageNum, Integer pageSize, String keyword, Long categoryId);
}
@@ -116,4 +116,31 @@ public class SourceServiceImpl extends ServiceImpl<SourceMapper, Source> impleme
public boolean deleteSource(Long id) {
return removeById(id);
}
@Override
public Page<Source> search(Integer pageNum, Integer pageSize, String keyword, Long categoryId) {
LambdaQueryWrapper<Source> queryWrapper = new LambdaQueryWrapper<>();
// 关键词搜索(标题、描述、代码)
if (StringUtils.hasText(keyword)) {
queryWrapper.and(wrapper -> wrapper
.like(Source::getTitle, keyword)
.or()
.like(Source::getDescription, keyword)
.or()
.like(Source::getCode, keyword));
}
// 分类筛选
if (categoryId != null) {
queryWrapper.eq(Source::getSourceCategoryId, categoryId);
}
// 只查询未删除的资源
queryWrapper.eq(Source::getIsDelete, 0)
.eq(Source::getStatus, 1)
.orderByDesc(Source::getCreateTime);
return page(new Page<>(pageNum, pageSize), queryWrapper);
}
}
@@ -0,0 +1,55 @@
package com.mzaxd.bps.util;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
/**
* 文件操作工具类
*
* @author mzaxd
* @since 2024-04-06
*/
public class FileUtil {
/**
* 上传文件
*
* @param file 文件
* @param path 保存路径
* @return 文件名
*/
public static String upload(MultipartFile file, String path) throws IOException {
// 获取文件名
String originalFilename = file.getOriginalFilename();
// 获取文件后缀
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 生成新文件名
String fileName = UUID.randomUUID().toString() + suffix;
// 创建文件对象
File dest = new File(path + fileName);
// 判断路径是否存在,不存在则创建
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdirs();
}
// 保存文件
file.transferTo(dest);
return fileName;
}
/**
* 删除文件
*
* @param path 文件路径
* @return 是否成功
*/
public static boolean delete(String path) {
File file = new File(path);
if (file.exists() && file.isFile()) {
return file.delete();
}
return false;
}
}