refactor(all): change sql to postgresql

This commit is contained in:
merlin
2025-10-31 10:21:36 +08:00
parent 4f84603d82
commit e4f032a7f0
35 changed files with 154 additions and 587 deletions

View File

@@ -1,259 +0,0 @@
package xin.merlin.myblog_server.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import xin.merlin.myblog_server.config.CustomUserDetails;
import xin.merlin.myblog_server.config.LoginDetails;
import xin.merlin.myblog_server.entity.*;
import xin.merlin.myblog_server.service.impl.*;
import xin.merlin.myblog_server.utils.JwtUtil;
import xin.merlin.myblog_server.utils.RequestBack;
import xin.merlin.myblog_server.utils.SHA256Util;
import xin.merlin.myblog_server.utils.enums.ResultCode;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@RestController
@RequestMapping("/admin")
public class AdminController {
@Autowired
private LoginDetails loginDetails;
@Autowired
private AccountServiceImpl accountService;
@Autowired
private UserServiceImpl userService;
@Autowired
private ArticleServiceImpl articleService;
@Autowired
private NewsServiceImpl newsService;
@Autowired
private CommentServiceImpl commentService;
@Autowired
private ProjectServiceImpl projectService;
@Autowired
private SHA256Util sha256Util;
@Autowired
private JwtUtil jwtUtil;
@Value("${file.image-dir}")
private String avatarDir;
// 登录逻辑p //admin:Blog_779528
@PostMapping("/login")
public RequestBack login(@RequestBody Account account) {
try {
CustomUserDetails userDetails = loginDetails
.loadUserByUsername(account.getU_account());
if(!userDetails.getRole().equals("Admin")) return RequestBack.fail(ResultCode.USER_NOT_FOUND);
account.setU_password(sha256Util
.encryptPassword(account.getU_password(),userDetails.getU_id()));
// 验证密码
if(!account.getU_password().equals(userDetails.getPassword()))
return RequestBack.success(ResultCode.USER_PASSWORD_ERROR,null);
// 生成token
String token = jwtUtil.generateToken(account.getU_account(),userDetails.getU_id());
return RequestBack.success(ResultCode.SUCCESS, Map.of("token",token,"token_type","Bearer","role","Admin"));
} catch (UsernameNotFoundException e) {
System.out.println(e.getMessage());
return RequestBack.fail(ResultCode.SERVER_ERROR);
}
}
// 注册逻辑
@PostMapping("/register")
public RequestBack register(@RequestBody Account account) {
try {
// 分配id
String u_id;
u_id = "A000000001";
// 注册信息初始化
account.setU_id(u_id);
account.setU_password(sha256Util.encryptPassword(account.getU_password(),account.getU_id()));
account.setU_status(0);
account.setRole("Admin");
// 注册
accountService.register(account);
return RequestBack.success(ResultCode.SUCCESS,null);
} catch (Exception e) {
System.out.println(e.getMessage());
return RequestBack.fail(ResultCode.SERVER_ERROR);
}
}
// 获取文章p
@GetMapping("/get/article")
public RequestBack getArticle(@RequestParam Integer current, @RequestParam Integer size) {
Page<Article> page = new Page<> (current,size);
return RequestBack.success(ResultCode.SUCCESS,articleService.page(page));
}
// 发送文章p
@PostMapping("/publish/article")
public RequestBack publishArticle(@RequestBody Article article) {
articleService.publishArticle(article);
return RequestBack.success(ResultCode.SUCCESS);
}
// 修改文章p
@PostMapping("/update/article")
public RequestBack updateArticle(@RequestBody Article article) {
articleService.updateArticle(article);
return RequestBack.success(ResultCode.SUCCESS);
}
// 删除文章p
@PostMapping("/delete/article")
public RequestBack deleteArticle(@RequestBody Article article) {
articleService.deleteArticle(article);
return RequestBack.success(ResultCode.SUCCESS);
}
// 获取新闻p
@GetMapping("/get/news")
public RequestBack getNews(@RequestParam Integer current,@RequestParam Integer size) {
Page<News> page = new Page<>(current,size);
return RequestBack.success(ResultCode.SUCCESS,newsService.page(page));
}
// 发送新闻p
@PostMapping("/publish/news")
public RequestBack publishNews(@RequestBody News news) {
news.setPublished(LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS).toString());
return RequestBack.success(ResultCode.SUCCESS,newsService.save(news));
}
// 删除新闻p
@PostMapping("/delete/news")
public RequestBack deleteNews(@RequestBody News news) {
newsService.deleteNews(news);
return RequestBack.success(ResultCode.SUCCESS);
}
// 查看评论p
@GetMapping("/get/comments")
public RequestBack getComments(@RequestParam Integer current,@RequestParam Integer size) {
Page<Comment> page = new Page<>(current,size);
return RequestBack.success(ResultCode.SUCCESS,commentService.page(page));
}
// 删除评论p
@PostMapping("/delete/comments")
public RequestBack deleteComments(@RequestBody Comment comment){
commentService.deleteComment(comment);
return RequestBack.success(ResultCode.SUCCESS);
}
// 查看用户p
@GetMapping("/get/users")
public RequestBack getUsers(@RequestParam Integer current,@RequestParam Integer size) {
Page<User> page = new Page<>(current,size);
return RequestBack.success(ResultCode.SUCCESS,userService.page(page));
}
// 封禁用户p
@PostMapping("/ban/users")
public RequestBack banUsers(@RequestBody User user) {
String uid= user.getU_id();
UpdateWrapper<Account> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("u_id",uid)
.set("u_status",1);
accountService.update(updateWrapper);
return RequestBack.success(ResultCode.SUCCESS);
}
// 查看联系 //(缓)
@GetMapping("/get/contact")
public RequestBack getContact(@RequestParam Integer current,@RequestParam Integer size) {
return RequestBack.success(ResultCode.SUCCESS);
}
// 允许的文件类型
private static final List<String> ALLOWED_EXTENSIONS = Arrays.asList(".jpg", ".jpeg", ".png", ".gif");
// 上传图片p
@PostMapping("/upload/img")
public RequestBack uploadImg(@RequestParam("image") MultipartFile file) {
try {
File dir = new File(avatarDir);
if (!dir.exists()) dir.mkdirs();
// 取文件扩展名并检查是否合法
String originalFileName = file.getOriginalFilename();
String fileExtension = "";
if (originalFileName != null && originalFileName.contains(".")) {
fileExtension = originalFileName.substring(originalFileName.lastIndexOf(".")).toLowerCase();
}
if (!ALLOWED_EXTENSIONS.contains(fileExtension)) {
throw new IOException("仅支持 JPG, PNG, GIF 格式");
}
// 生成 UUID 作为文件名
String uuid = UUID.randomUUID().toString();
String fileName = uuid+ fileExtension;
Path targetPath = Paths.get(avatarDir, fileName);
Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
return RequestBack.success(ResultCode.SUCCESS,Map.of("url","https://merlin.xin/images/"+fileName));
}catch (Exception e) {
e.printStackTrace();
return RequestBack.fail(ResultCode.SERVER_ERROR);
}
}
// 获取项目p
@GetMapping("/get/projects")
public RequestBack getProjects(@RequestParam Integer current,@RequestParam Integer size) {
Page<Project> page = new Page<>(current,size);
return RequestBack.success(ResultCode.SUCCESS,projectService.page(page));
}
// 发布项目p
@PostMapping("/publish/project")
public RequestBack publishProject(@RequestBody Project project) {
projectService.save(project);
return RequestBack.success(ResultCode.SUCCESS);
}
// 修改项目p
@PostMapping("/update/project")
public RequestBack updateProject(@RequestBody Project project) {
UpdateWrapper<Project> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("p_id",project.getP_id());
projectService.update(project,updateWrapper);
return RequestBack.success(ResultCode.SUCCESS);
}
// 删除项目p
@PostMapping("/delete/project")
public RequestBack deleteProject(@RequestBody Project project) {
projectService.deleteProject(project.getP_id());
return RequestBack.success(ResultCode.SUCCESS);
}
}