From 1510401ccc792f864a74fead9b1b532806773381 Mon Sep 17 00:00:00 2001 From: Xubx <1827135378@qq.com> Date: Fri, 1 Nov 2024 16:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=8D=9A=E5=AE=A2=E4=B8=AD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=88=86=E7=B1=BB=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=B0=81=E9=9D=A2=E4=B8=8A=E4=BC=A0=EF=BC=8C?= =?UTF-8?q?=E5=BC=95=E5=85=A5=E4=B8=83=E7=89=9B=E4=BA=91=E5=AD=98=E5=82=A8?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86token=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 25 +++--- .../xubx/springboot_01demo/Poi/PoiTest.java | 67 -------------- .../configuration/QiniuConfig.java | 32 +++++++ .../controller/BlogsController.java | 54 ++++++++--- .../controller/UploadController.java | 39 ++++++++ .../controller/UserController.java | 8 -- .../dto/blog/addBlogDto.java | 31 +++++++ .../springboot_01demo/mapper/BlogsMapper.java | 13 ++- .../xubx/springboot_01demo/pojo/Blogs.java | 89 +++++++++---------- .../service/BlogService.java | 3 +- .../service/Uploadservice.java | 8 ++ .../service/impl/BlogsServiceImpl.java | 23 ++++- .../service/impl/UploadServiceImpl.java | 18 ++++ .../springboot_01demo/utils/api/Result.java | 8 ++ .../utils/token/RedisUtil.java | 28 ------ .../utils/token/TokenGenerate.java | 19 +--- .../utils/token/TokenInterceptor.java | 11 +-- src/main/resources/application.properties | 18 ---- src/main/resources/application.yml | 30 +++++++ src/main/resources/mapper/BlogsMapper.xml | 4 + src/main/resources/mapper/UserMapper.xml | 14 +-- 21 files changed, 308 insertions(+), 234 deletions(-) delete mode 100644 src/main/java/com/xubx/springboot_01demo/Poi/PoiTest.java create mode 100644 src/main/java/com/xubx/springboot_01demo/configuration/QiniuConfig.java create mode 100644 src/main/java/com/xubx/springboot_01demo/controller/UploadController.java create mode 100644 src/main/java/com/xubx/springboot_01demo/dto/blog/addBlogDto.java create mode 100644 src/main/java/com/xubx/springboot_01demo/service/Uploadservice.java create mode 100644 src/main/java/com/xubx/springboot_01demo/service/impl/UploadServiceImpl.java delete mode 100644 src/main/java/com/xubx/springboot_01demo/utils/token/RedisUtil.java delete mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/application.yml diff --git a/pom.xml b/pom.xml index b304c61..bc02df4 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ com.xubx - Springboot_01Demo + XubxBlog 0.0.1-SNAPSHOT Springboot_01Demo Springboot_01Demo @@ -101,18 +101,6 @@ springfox-swagger-ui 2.7.0 - - - org.apache.poi - poi - 5.0.0 - - - - org.apache.poi - poi-ooxml - 5.0.0 - org.springframework.boot @@ -139,6 +127,17 @@ aliyun-java-sdk-dysmsapi 1.0.0 + + + com.qiniu + qiniu-java-sdk + [7.16.0, 7.16.99] + + + jakarta.validation + jakarta.validation-api + 2.0.2 + diff --git a/src/main/java/com/xubx/springboot_01demo/Poi/PoiTest.java b/src/main/java/com/xubx/springboot_01demo/Poi/PoiTest.java deleted file mode 100644 index 79d7cbd..0000000 --- a/src/main/java/com/xubx/springboot_01demo/Poi/PoiTest.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.xubx.springboot_01demo.Poi; - -import org.apache.poi.xssf.usermodel.XSSFRow; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; - -//POI操作Excel -public class PoiTest { - //写入 - public static void write() throws Exception{ - //在内存中创建一个Excel文件 - XSSFWorkbook workbook = new XSSFWorkbook(); - //在Excel文件中创建一个sheet - XSSFSheet sheet = workbook.createSheet("info"); - //在sheet中创建行对象,rownum编号从0开始 - XSSFRow row = sheet.createRow(0); - //创建单元格并写入文件内容 - row.createCell(0).setCellValue("姓名"); - row.createCell(1).setCellValue("城市"); - - //创建一个新的行 - XSSFRow row1 = sheet.createRow(1); - row1.createCell(0).setCellValue("张三"); - row1.createCell(1).setCellValue("北京"); - - //创建一个新的行 - XSSFRow row2 = sheet.createRow(2); - row2.createCell(0).setCellValue("李四"); - row2.createCell(1).setCellValue("上海"); - //通过输出流将workbook对象输出到磁盘 - FileOutputStream out = new FileOutputStream(new File("C:\\info.xlsx")); - - //关闭资源 - workbook.write(out); - out.close(); - } - //读取 - public static void read() throws Exception{ - FileInputStream fileInputStream = new FileInputStream(new File("C:\\Users\\Xubx\\info.xlsx")); - //读取Excel文件 - XSSFWorkbook excel = new XSSFWorkbook(fileInputStream); - //读取第一个sheet - XSSFSheet sheet = excel.getSheetAt(0); - //获取sheet中的最后一行行号 - int lastRowNum = sheet.getLastRowNum(); - for (int i = 0; i <= lastRowNum; i++) { - //获取行对象 - XSSFRow row = sheet.getRow(i); - //获取单元格对象 - String name = row.getCell(0).getStringCellValue(); - String city = row.getCell(1).getStringCellValue(); - System.out.println(name + " " + city); - } - //关闭资源 - excel.close(); - fileInputStream.close(); - } - - public static void main(String[] args) throws Exception { -// write(); - read(); - } -} diff --git a/src/main/java/com/xubx/springboot_01demo/configuration/QiniuConfig.java b/src/main/java/com/xubx/springboot_01demo/configuration/QiniuConfig.java new file mode 100644 index 0000000..f7c7208 --- /dev/null +++ b/src/main/java/com/xubx/springboot_01demo/configuration/QiniuConfig.java @@ -0,0 +1,32 @@ +package com.xubx.springboot_01demo.configuration; + +import com.qiniu.storage.Region; +import com.qiniu.util.Auth; +import com.qiniu.util.StringMap; +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +@Data +@Component +@Configuration +@ConfigurationProperties(prefix = "qiniu") +public class QiniuConfig { + private String accessKey; + private String secretKey; + private String bucket; + @Bean + public String getUpToken() { + Auth auth = Auth.create(accessKey, secretKey); + StringMap putPolicy = new StringMap(); //创建上传策略 + //指定返回的json格式,key(文件名称)、hash(文件内容的哈希值,用于校验文件一致性)、bucket(文件所属的空间名)和 fsize(文件大小) + putPolicy.put("returnBody", "{\"key\":\"$(key)\",\"hash\":\"$(etag)\",\"bucket\":\"$(bucket)\",\"fsize\":$(fsize)}"); + // 设置 Token 的过期时间为 3600 秒(1 小时) + long expireSeconds = 3600; + String upToken = auth.uploadToken(bucket, null, expireSeconds, putPolicy); + return upToken; + } + +} diff --git a/src/main/java/com/xubx/springboot_01demo/controller/BlogsController.java b/src/main/java/com/xubx/springboot_01demo/controller/BlogsController.java index 00ded3a..07e69fa 100644 --- a/src/main/java/com/xubx/springboot_01demo/controller/BlogsController.java +++ b/src/main/java/com/xubx/springboot_01demo/controller/BlogsController.java @@ -1,15 +1,22 @@ package com.xubx.springboot_01demo.controller; +import com.alibaba.fastjson.JSONObject; +import com.xubx.springboot_01demo.dto.blog.addBlogDto; import com.xubx.springboot_01demo.pojo.Blogs; import com.xubx.springboot_01demo.service.BlogService; +import com.xubx.springboot_01demo.utils.api.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.validation.Valid; import java.util.List; @RestController //注解标识这是一个控制器类 @@ -25,55 +32,74 @@ public class BlogsController { * 获取所有博客 */ @GetMapping("/getBlogs") - @Cacheable(value = "blogs") @ApiOperation("获取所有博客") - public List getBlogs (){ - log.info("博客展示"); - return blogService.findAllBlogs(); + public ResponseEntity> getBlogs() { + log.info("获取所有博客"); + return ResponseEntity.ok(blogService.findAllBlogs()); } /** * 获取博客详情 + * * @param id * @return */ @GetMapping("/getBlogDetail") - @Cacheable(value = "blogDetail") @ApiOperation("获取博客详情") - public Blogs getBlogDetail(@RequestParam("blogId") int id){ - return blogService.findByIdBlogs(id); + public ResponseEntity getBlogDetail(@RequestParam("blogId") int id) { + log.info("获取博客详情,ID: {}", id); + Blogs blog = blogService.findByIdBlogs(id); + if (blog == null) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + return ResponseEntity.ok(blog); } /** * 新增博客 + * * @param blogs */ @PostMapping("/addBlog") - @CacheEvict(value = "blogs",allEntries = true) @ApiOperation("新增博客") - public void addBlog(@RequestBody Blogs blogs){ - blogService.addBlogs(blogs); + public ResponseEntity addBlog(@Valid @RequestBody addBlogDto blogs, BindingResult bindingResult) { + log.info("新增博客入参:{}", JSONObject.toJSONString(blogs)); + + if (bindingResult.hasErrors()) { + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(bindingResult.getFieldError().getDefaultMessage()); + } + try { + blogService.addBlogs(blogs); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("博客新增失败"); + } + + return ResponseEntity.status(HttpStatus.CREATED).body("博客新增成功"); } /** * 修改博客 + * * @param blogs */ @PostMapping("/updateBlog") - @CacheEvict(value = "blogs",allEntries = true) @ApiOperation("修改博客") - public void updateBlog(@RequestBody Blogs blogs){ + public ResponseEntity updateBlog(@RequestBody Blogs blogs) { blogService.updateBlogs(blogs); + return ResponseEntity.ok("博客更新成功"); } /** * 删除博客 + * * @param id */ @GetMapping("/deleteBlog") - @CacheEvict(value = "blogs",allEntries = true) @ApiOperation("删除博客") - public void deleteBlog(@RequestParam("blogId") int id){ + public ResponseEntity deleteBlog(@RequestParam("blogId") int id) { blogService.deleteBlogs(id); + return ResponseEntity.ok("博客删除成功"); } + + } diff --git a/src/main/java/com/xubx/springboot_01demo/controller/UploadController.java b/src/main/java/com/xubx/springboot_01demo/controller/UploadController.java new file mode 100644 index 0000000..42dd46e --- /dev/null +++ b/src/main/java/com/xubx/springboot_01demo/controller/UploadController.java @@ -0,0 +1,39 @@ +package com.xubx.springboot_01demo.controller; + +import com.xubx.springboot_01demo.service.Uploadservice; +import com.xubx.springboot_01demo.utils.api.Result; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +@Controller //注解标识这是一个控制器类 +@CrossOrigin //加上CrossOrigin可解决跨域问题 +@Slf4j +@Api(tags = "文件上传接口") +@RequestMapping("/upload") +public class UploadController { + @Resource + Uploadservice uploadservice; + + /** + * 获取上传凭证 + * @return {@link Result }<{@link String }> + */ + @RequestMapping("/getUploadCredentials") + @ApiOperation("value = \"获取上传凭证\"") + public ResponseEntity getUploadCredentials() { + log.info("获取上传凭证"); + try { + String uploadCredentials = uploadservice.getUploadCredentials(); + return ResponseEntity.ok(uploadCredentials); + } catch (Exception e) { + return ResponseEntity.badRequest().body(e.getMessage()); + } + } +} diff --git a/src/main/java/com/xubx/springboot_01demo/controller/UserController.java b/src/main/java/com/xubx/springboot_01demo/controller/UserController.java index b774b3b..4ac8313 100644 --- a/src/main/java/com/xubx/springboot_01demo/controller/UserController.java +++ b/src/main/java/com/xubx/springboot_01demo/controller/UserController.java @@ -1,13 +1,9 @@ package com.xubx.springboot_01demo.controller; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.xubx.springboot_01demo.pojo.Relationship; import com.xubx.springboot_01demo.pojo.User; import com.xubx.springboot_01demo.service.UserService; -import com.xubx.springboot_01demo.utils.api.Result; -import com.xubx.springboot_01demo.utils.token.RedisUtil; import com.xubx.springboot_01demo.utils.token.RequestHolder; import com.xubx.springboot_01demo.utils.token.TokenGenerate; import io.swagger.annotations.Api; @@ -22,7 +18,6 @@ import javax.annotation.Resource; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; -import java.util.List; @RestController //注解标识这是一个控制器类 @CrossOrigin //加上CrossOrigin可解决跨域问题 @@ -32,8 +27,6 @@ import java.util.List; public class UserController { @Resource UserService userService; - @Resource - RedisUtil redisUtil; // 注入session @Resource private HttpSession session; @@ -81,7 +74,6 @@ public class UserController { String token = new TokenGenerate().generateToken(user.getUsername()); //将username存入session session.setAttribute("username", user.getUsername()); - redisUtil.addTokens(user.getUsername(), token); return token; } return "false"; diff --git a/src/main/java/com/xubx/springboot_01demo/dto/blog/addBlogDto.java b/src/main/java/com/xubx/springboot_01demo/dto/blog/addBlogDto.java new file mode 100644 index 0000000..2119a6e --- /dev/null +++ b/src/main/java/com/xubx/springboot_01demo/dto/blog/addBlogDto.java @@ -0,0 +1,31 @@ +package com.xubx.springboot_01demo.dto.blog; + +import lombok.Data; + +import java.util.List; +import javax.validation.constraints.NotBlank; + + +/** + * 新增博客入参 + * @author Xubx + * @date 2024/11/01 + */ +@Data +public class addBlogDto { + @NotBlank + private String title; + + @NotBlank + private String description; + + @NotBlank + private List categories; + + @NotBlank + private String content; + + private String coverImage; + + private String status; +} diff --git a/src/main/java/com/xubx/springboot_01demo/mapper/BlogsMapper.java b/src/main/java/com/xubx/springboot_01demo/mapper/BlogsMapper.java index 2775ccb..479a46e 100644 --- a/src/main/java/com/xubx/springboot_01demo/mapper/BlogsMapper.java +++ b/src/main/java/com/xubx/springboot_01demo/mapper/BlogsMapper.java @@ -1,18 +1,27 @@ package com.xubx.springboot_01demo.mapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xubx.springboot_01demo.dto.blog.addBlogDto; import com.xubx.springboot_01demo.pojo.Blogs; import java.util.List; -public interface BlogsMapper { +public interface BlogsMapper extends BaseMapper { //获取所有博客文章信息 List findAllBlogs(); //根据id获取博客 Blogs findByIdBlogs(int id); //新增博客 - void addBlogs(Blogs blogs); + void addBlogs(addBlogDto blogs); //更新博客 void updateBlogs(Blogs blogs); //删除博客 void deleteBlogs(int id); + + /** + * 插入博客分类中间表 + * @param blogId + * @param categoryId + */ + void insertCategory(int blogId, String categoryId); } diff --git a/src/main/java/com/xubx/springboot_01demo/pojo/Blogs.java b/src/main/java/com/xubx/springboot_01demo/pojo/Blogs.java index 2ccbd29..9ffe3d3 100644 --- a/src/main/java/com/xubx/springboot_01demo/pojo/Blogs.java +++ b/src/main/java/com/xubx/springboot_01demo/pojo/Blogs.java @@ -1,70 +1,65 @@ package com.xubx.springboot_01demo.pojo; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + import java.io.Serializable; import java.sql.Timestamp; /** * 博客实体类 + * + * @author Xubx + * @date 2024/11/01 */ +@Data +@ApiModel(description = "博客实体类") +@TableName("blog") public class Blogs implements Serializable { + /** + *开启了主键回填 + */ + @ApiModelProperty(value = "id") + @TableId(type = IdType.AUTO) private int id; - /**标题*/ + + @ApiModelProperty(value = "标题") private String title; - /**描述*/ + + @ApiModelProperty(value = "描述") private String description; - /**内容*/ + + @ApiModelProperty(value = "内容") private String content; - /**创建时间*/ - private Timestamp created; - @Override - public String toString() { - return "Blogs{" + - "id=" + id + - ", title='" + title + '\'' + - ", description='" + description + '\'' + - ", content='" + content + '\'' + - ", create='" + created + '\'' + - '}'; - } + @ApiModelProperty(value = "封面图片") + private String coverImage; - public int getId() { - return id; - } + @ApiModelProperty(value = "作者id") + private String authorId; - public void setId(int id) { - this.id = id; - } + @ApiModelProperty(value = "点赞数") + private int likeCount; - public String getTitle() { - return title; - } + @ApiModelProperty(value = "浏览数") + private int viewCount; - public void setTitle(String title) { - this.title = title; - } + @ApiModelProperty(value = "收藏数") + private int favoriteCount; - public String getDescription() { - return description; - } + @ApiModelProperty(value = "分享数") + private int shareCount; - public void setDescription(String description) { - this.description = description; - } + @ApiModelProperty(value = "状态") + private String status; - public String getContent() { - return content; - } + @ApiModelProperty(value = "更新时间") + private Timestamp updatedTime; - public void setContent(String content) { - this.content = content; - } - - public Timestamp getCreated() { - return created; - } - - public void setCreated(Timestamp create) { - this.created = create; - } + @ApiModelProperty(value = "创建时间") + private Timestamp createdTime; } diff --git a/src/main/java/com/xubx/springboot_01demo/service/BlogService.java b/src/main/java/com/xubx/springboot_01demo/service/BlogService.java index 45077dc..00f84bd 100644 --- a/src/main/java/com/xubx/springboot_01demo/service/BlogService.java +++ b/src/main/java/com/xubx/springboot_01demo/service/BlogService.java @@ -1,5 +1,6 @@ package com.xubx.springboot_01demo.service; +import com.xubx.springboot_01demo.dto.blog.addBlogDto; import com.xubx.springboot_01demo.pojo.Blogs; import java.util.List; @@ -11,7 +12,7 @@ public interface BlogService { //根据id获取博客 Blogs findByIdBlogs(int id); //添加博客 - void addBlogs(Blogs blogs); + void addBlogs(addBlogDto blogs); //更新博客 void updateBlogs(Blogs blogs); //删除博客 diff --git a/src/main/java/com/xubx/springboot_01demo/service/Uploadservice.java b/src/main/java/com/xubx/springboot_01demo/service/Uploadservice.java new file mode 100644 index 0000000..870bfee --- /dev/null +++ b/src/main/java/com/xubx/springboot_01demo/service/Uploadservice.java @@ -0,0 +1,8 @@ +package com.xubx.springboot_01demo.service; + +public interface Uploadservice { + /** + * @return {@link String } + */ + String getUploadCredentials(); +} diff --git a/src/main/java/com/xubx/springboot_01demo/service/impl/BlogsServiceImpl.java b/src/main/java/com/xubx/springboot_01demo/service/impl/BlogsServiceImpl.java index bd9c5ee..dafd256 100644 --- a/src/main/java/com/xubx/springboot_01demo/service/impl/BlogsServiceImpl.java +++ b/src/main/java/com/xubx/springboot_01demo/service/impl/BlogsServiceImpl.java @@ -1,11 +1,15 @@ package com.xubx.springboot_01demo.service.impl; +import com.xubx.springboot_01demo.dto.blog.addBlogDto; import com.xubx.springboot_01demo.mapper.BlogsMapper; import com.xubx.springboot_01demo.pojo.Blogs; import com.xubx.springboot_01demo.service.BlogService; +import com.xubx.springboot_01demo.utils.token.RequestHolder; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.sql.Timestamp; +import java.time.LocalDateTime; import java.util.List; @Service @@ -23,8 +27,23 @@ public class BlogsServiceImpl implements BlogService { } @Override - public void addBlogs(Blogs blogs) { - blogsMapper.addBlogs(blogs); + public void addBlogs(addBlogDto blogDto) { + LocalDateTime now = LocalDateTime.now(); + // 博客内容的插入 + Blogs blog = new Blogs(); + blog.setTitle(blogDto.getTitle()); + blog.setDescription(blogDto.getDescription()); + blog.setContent(blogDto.getContent()); + blog.setCoverImage(blogDto.getCoverImage()); + blog.setStatus(blogDto.getStatus()); + blog.setAuthorId(RequestHolder.getuserId()); + // TODO 后续改为AOP切面统一进行创建、更新时间的插入 + blog.setCreatedTime(Timestamp.valueOf(now)); + blogsMapper.insert(blog); + // 插入博客分类中间表 + blogDto.getCategories().forEach(category -> { + blogsMapper.insertCategory(blog.getId(), category); + }); } @Override diff --git a/src/main/java/com/xubx/springboot_01demo/service/impl/UploadServiceImpl.java b/src/main/java/com/xubx/springboot_01demo/service/impl/UploadServiceImpl.java new file mode 100644 index 0000000..da5f5aa --- /dev/null +++ b/src/main/java/com/xubx/springboot_01demo/service/impl/UploadServiceImpl.java @@ -0,0 +1,18 @@ +package com.xubx.springboot_01demo.service.impl; + +import com.xubx.springboot_01demo.configuration.QiniuConfig; +import com.xubx.springboot_01demo.service.Uploadservice; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class UploadServiceImpl implements Uploadservice { + @Autowired + QiniuConfig qiniuConfig; + @Override + public String getUploadCredentials() { + return qiniuConfig.getUpToken(); + } +} diff --git a/src/main/java/com/xubx/springboot_01demo/utils/api/Result.java b/src/main/java/com/xubx/springboot_01demo/utils/api/Result.java index 66b04a5..e4f812e 100644 --- a/src/main/java/com/xubx/springboot_01demo/utils/api/Result.java +++ b/src/main/java/com/xubx/springboot_01demo/utils/api/Result.java @@ -1,5 +1,6 @@ package com.xubx.springboot_01demo.utils.api; +import com.xubx.springboot_01demo.pojo.Blogs; import lombok.Data; import java.util.List; @@ -33,6 +34,13 @@ public class Result { r.setResult(resultData); return r; } + public static Result error(String message) { + Result r = new Result<>(); + r.setCode(500); + r.setMessage(message); + return r; + } + @Override public String toString() { diff --git a/src/main/java/com/xubx/springboot_01demo/utils/token/RedisUtil.java b/src/main/java/com/xubx/springboot_01demo/utils/token/RedisUtil.java deleted file mode 100644 index 6966085..0000000 --- a/src/main/java/com/xubx/springboot_01demo/utils/token/RedisUtil.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.xubx.springboot_01demo.utils.token; - -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.core.ValueOperations; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; - - -@Service -public class RedisUtil { - @Resource - private RedisTemplate stringRedisTemplate;//这是一个使用redis的API,可以直接用StringRedisTemplate - - public void addTokens(String username,String token) {//存入token - ValueOperations valueOperations = stringRedisTemplate.opsForValue(); - valueOperations.set(username, token); - } - public String getTokens(String token) {//获取token - //根据token获取用户信息 - String username = TokenGenerate.getUsername(token); - return stringRedisTemplate.opsForValue().get(username); - } - - public void delTokens(String username) {//删除token在前端已经进行 - stringRedisTemplate.delete(username); - } -} diff --git a/src/main/java/com/xubx/springboot_01demo/utils/token/TokenGenerate.java b/src/main/java/com/xubx/springboot_01demo/utils/token/TokenGenerate.java index c2074b9..9d594dd 100644 --- a/src/main/java/com/xubx/springboot_01demo/utils/token/TokenGenerate.java +++ b/src/main/java/com/xubx/springboot_01demo/utils/token/TokenGenerate.java @@ -9,7 +9,7 @@ import java.util.Date; public class TokenGenerate { - private static final long EXPIRE_TIME = 60 * 60 * 1000; + private static final long EXPIRE_TIME = 24 * 60 * 60 * 1000; private static final String TOKEN_SECRET = "tokenqkj"; //密钥盐 public String generateToken(String username) { @@ -50,21 +50,4 @@ public class TokenGenerate { } } - /** - * 获取token中的username - */ - public static String getUsername(String token) { - try { - //去掉token的第一个和最后一个引号 - if (token != null && token.startsWith("\"") && token.endsWith("\"")) { - token = token.substring(1, token.length() - 1); - } - JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET)).withIssuer("auth0").build(); - DecodedJWT jwt = verifier.verify(token); - return jwt.getClaim("username").asString(); - } catch (Exception e) { - return null; - } - } - } diff --git a/src/main/java/com/xubx/springboot_01demo/utils/token/TokenInterceptor.java b/src/main/java/com/xubx/springboot_01demo/utils/token/TokenInterceptor.java index e7d3b02..2eda3a5 100644 --- a/src/main/java/com/xubx/springboot_01demo/utils/token/TokenInterceptor.java +++ b/src/main/java/com/xubx/springboot_01demo/utils/token/TokenInterceptor.java @@ -12,8 +12,6 @@ import javax.servlet.http.HttpServletResponse; // 在提供一个有效的token时才能通过验证,否则给出认证失败的响应。 @Component public class TokenInterceptor implements HandlerInterceptor { - @Resource - RedisUtil redisUtil; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { @@ -26,14 +24,9 @@ public class TokenInterceptor implements HandlerInterceptor { response.setCharacterEncoding("utf-8"); // 从请求头中获取token String token = request.getHeader("Authorization"); - // 从redis中获取token - String redisToken = redisUtil.getTokens(token); // 验证token - if (redisToken != null) { - boolean result = TokenGenerate.verify(token); - if (result) { - return true; - } + if (token != null && TokenGenerate.verify(token)) { + return true; } response.setCharacterEncoding("UTF-8"); response.getWriter().write("认证失败,错误码:50000"); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index 9bff138..0000000 --- a/src/main/resources/application.properties +++ /dev/null @@ -1,18 +0,0 @@ -spring.datasource.driverClassName=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://62.234.217.137:3306/vue -spring.datasource.username=root -spring.datasource.password=nWZpHMb8mNxWE5Xk -server.port=8088 -#spring.web.resources.static-locations=classpath:/static/ -spring.web.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ -mybatis.mapper-locations=classpath:mapper/*.xml -mybatis.type-aliases-package=com.xubx.springboot_01demo.pojo - - -spring.redis.host=62.234.217.137 -spring.redis.port=6379 -spring.redis.password=LSHCwjr6ZN4hzCxS - -logging.level.com.xubx.springboot_01demo.mapper= debug -#Path???????ant_path_matcher -spring.mvc.pathmatch.matching-strategy=ant_path_matcher diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..ed6b1ca --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,30 @@ +server: + port: 8088 + +spring: + datasource: + driver-class-name: com.mysql.jdbc.Driver + url: jdbc:mysql://62.234.217.137:3306/vue + username: root + password: nWZpHMb8mNxWE5Xk + redis: + host: 62.234.217.137 + port: 6379 + password: LSHCwjr6ZN4hzCxS + web: + resources: + static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ + mvc: + pathmatch: + matching-strategy: ant_path_matcher +mybatis: + mapper-locations: classpath:mapper/*.xml + type-aliases-package: com.xubx.springboot_01demo.pojo + +logging: + level: + com.xubx.springboot_01demo.mapper: debug +qiniu: + accessKey: McJYQOg3S6PhkljCg2DQeggBQTcGcUZyK_s6vkxy + secretKey: 5hUuHs-BEzJIEKPCEj292h14evv5L59bDSZuYXa- + bucket: xubx-blog \ No newline at end of file diff --git a/src/main/resources/mapper/BlogsMapper.xml b/src/main/resources/mapper/BlogsMapper.xml index 8f45712..22ae3fb 100644 --- a/src/main/resources/mapper/BlogsMapper.xml +++ b/src/main/resources/mapper/BlogsMapper.xml @@ -25,6 +25,10 @@ insert into blog (title, description, content, created) values (#{title}, #{description}, #{content}, #{created}) + + insert into blog_category(blog_id, category_id) + values (#{blogId}, #{categoryId}) + diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 9ed79f7..1852461 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -11,36 +11,36 @@ - insert into register(username, password) values(#{username}, #{password}) + insert into user(username, password) values(#{username}, #{password}) - UPDATE register + UPDATE user SET avatar = #{path} WHERE username = #{username}; - UPDATE register + UPDATE user SET username = #{username} WHERE username = #{usernameNow} - UPDATE register + UPDATE user SET password = #{newPassword} WHERE username = #{username} \ No newline at end of file