You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dsl3/controller/AuroraInfoController.java

110 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.aurora.controller;
import com.aurora.annotation.OptLog;
import com.aurora.model.dto.AboutDTO;
import com.aurora.model.dto.AuroraAdminInfoDTO;
import com.aurora.model.dto.AuroraHomeInfoDTO;
import com.aurora.model.dto.WebsiteConfigDTO;
import com.aurora.enums.FilePathEnum;
import com.aurora.model.vo.ResultVO;
import com.aurora.service.AuroraInfoService;
import com.aurora.strategy.context.UploadStrategyContext;
import com.aurora.model.vo.AboutVO;
import com.aurora.model.vo.WebsiteConfigVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import static com.aurora.constant.OptTypeConstant.UPDATE;
import static com.aurora.constant.OptTypeConstant.UPLOAD;
//AuroraInfoController控制器类用于处理访客上报和首页信息获取的请求
@Api(tags = "aurora信息")// 使用Swagger注解标记本类为API的"aurora信息"分组方便生成交互式API文档
@RestController// 标识本类为RESTful控制器组合了@Controller和@ResponseBody所有方法返回值直接写入HTTP响应体
public class AuroraInfoController {
@Autowired // 使用依赖注入自动装配AuroraInfoService用于处理访客上报和首页信息查询等业务逻辑
private AuroraInfoService auroraInfoService;
@Autowired // 注入文件上传策略上下文,用于处理图片等文件的上传操作
private UploadStrategyContext uploadStrategyContext;
@ApiOperation(value = "上报访客信息")
@PostMapping("/report") // 处理HTTP POST请求路径为/report
// 返回ResultVO<?>表示统一响应格式,?通配符表示返回值类型不确定或无返回体
public ResultVO<?> report() {
// 调用Service层方法处理访客上报的业务如增加访客计数
auroraInfoService.report();
// 返回操作成功的统一响应
return ResultVO.ok();
}
// 获取系统首页信息(前端展示用)
@ApiOperation(value = "获取系统信息")
@GetMapping("/") // 处理HTTP GET请求路径为/(通常是根路径或首页)
// 返回结果封装了AuroraHomeInfoDTO对象包含博客首页所需的各种信息比如文章标题...)
public ResultVO<AuroraHomeInfoDTO> getBlogHomeInfo() {
return ResultVO.ok(auroraInfoService.getAuroraHomeInfo());
}
// 获取系统后台管理信息(后台管理界面用)
@ApiOperation(value = "获取系统后台信息")
@GetMapping("/admin") // 处理HTTP GET请求路径为/admin
public ResultVO<AuroraAdminInfoDTO> getBlogBackInfo() {
// 调用Service获取后台管理信息可能包含统计数据、系统状态等
//AuroraAdminInfoDTO为后台信息的封装类
return ResultVO.ok(auroraInfoService.getAuroraAdminInfo());
}
//网站配置的后台接口
@OptLog(optType = UPDATE)// 自定义操作日志注解记录更新操作UPDATE为操作类型常量
@ApiOperation(value = "更新网站配置")
@PutMapping("/admin/website/config")
public ResultVO<?> updateWebsiteConfig(@Valid @RequestBody WebsiteConfigVO websiteConfigVO) {
// @Valid触发参数校验@RequestBody接收JSON格式的网站配置数据
auroraInfoService.updateWebsiteConfig(websiteConfigVO);
return ResultVO.ok();
}
@ApiOperation(value = "获取网站配置")//获取网站配置的后台接口
@GetMapping("/admin/website/config")
public ResultVO<WebsiteConfigDTO> getWebsiteConfig() {
return ResultVO.ok(auroraInfoService.getWebsiteConfig());
}
// 查看关于我信息(前台展示接口)
@ApiOperation(value = "查看关于我信息")
@GetMapping("/about")//处理GET请求的普通接口。普通用户也可访问
public ResultVO<AboutDTO> getAbout() {
//AboutDTO是“关于我”信息的封装类包含个人介绍头像联系方式等
return ResultVO.ok(auroraInfoService.getAbout());
}
//修改“关于我”信息的后台管理接口
@OptLog(optType = UPDATE) // 记录更新操作日志
@ApiOperation(value = "修改关于我信息")// 修改关于我信息(后台管理)
@PutMapping("/admin/about")
public ResultVO<?> updateAbout(@Valid @RequestBody AboutVO aboutVO) {
// @Valid校验AboutVO参数的合法性
auroraInfoService.updateAbout(aboutVO);
return ResultVO.ok();
}
@OptLog(optType = UPLOAD)// 记录上传操作日志
@ApiOperation(value = "上传博客配置图片")//后台接口
@ApiImplicitParam(name = "file", value = "图片", required = true, dataType = "MultipartFile")
// Swagger参数说明name指定参数名value是描述required=true表示必填dataType是数据类型
@PostMapping("/admin/config/images")
// 返回结果是图片访问路径的字符串
public ResultVO<String> savePhotoAlbumCover(MultipartFile file) {
//通过上传策略上下文执行文件上传FilePathEnum.CONFIG.getPath()指定配置文件存储路径
return ResultVO.ok(uploadStrategyContext.executeUploadStrategy(file, FilePathEnum.CONFIG.getPath()));
}
}