|
|
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()));
|
|
|
}
|
|
|
|
|
|
}
|