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 getBlogHomeInfo() { return ResultVO.ok(auroraInfoService.getAuroraHomeInfo()); } // 获取系统后台管理信息(后台管理界面用) @ApiOperation(value = "获取系统后台信息") @GetMapping("/admin") // 处理HTTP GET请求,路径为/admin public ResultVO 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 getWebsiteConfig() { return ResultVO.ok(auroraInfoService.getWebsiteConfig()); } // 查看关于我信息(前台展示接口) @ApiOperation(value = "查看关于我信息") @GetMapping("/about")//处理GET请求的普通接口。普通用户也可访问 public ResultVO 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 savePhotoAlbumCover(MultipartFile file) { //通过上传策略上下文执行文件上传,FilePathEnum.CONFIG.getPath()指定配置文件存储路径 return ResultVO.ok(uploadStrategyContext.executeUploadStrategy(file, FilePathEnum.CONFIG.getPath())); } }