package com.lqkj.link.module.zone.controller; import com.lqkj.link.message.MessageBean; import com.lqkj.link.module.authority.service.UserInfoService; import com.lqkj.link.module.base.service.BaseService; import com.lqkj.link.module.jwt.service.JwtService; import com.lqkj.link.module.zone.domain.ModelCategory; import com.lqkj.link.module.zone.domain.ModelInfo; import com.lqkj.link.module.zone.service.ResourceService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.lang3.StringUtils; import org.aspectj.bridge.Message; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; import static com.lqkj.link.APIVersion.VERSION_V1; @RestController @RequestMapping("/resource") @Tag(name = "资源管理", description = "资源管理") public class ResourceController { private final ResourceService resourceService; private final BaseService baseService; private final JwtService jwtService; private final UserInfoService userInfoService; public ResourceController(ResourceService resourceService, BaseService baseService, JwtService jwtService, UserInfoService userInfoService) { this.resourceService = resourceService; this.baseService = baseService; this.jwtService = jwtService; this.userInfoService = userInfoService; } @Operation( summary = "5.1.3.5 资源分页接口", description = "5.1.3.1 资源分页接口", parameters = { @Parameter(name = "name", description = "搜索关键词"), @Parameter(name = "page", description = "页码"), @Parameter(name = "pageSize", description = "每页数据条数") } ) @PostMapping("/manage/pageQuery") public MessageBean> pageQueryTemplate(@RequestParam(required = false, defaultValue = "") String name, @RequestParam(required = false, defaultValue = "0") Integer page, @RequestParam(required = false, defaultValue = "10") Integer pageSize){ return MessageBean.ok(resourceService.pageQuery(name, page, pageSize), "资源分页接口"); } @Operation( summary = "5.1.3.25 资源详情接口", description = "5.1.3.25 资源详情接口", parameters = { @Parameter(name = "categoryId", description = "资源ID") } ) @PostMapping("/manage/detail") public MessageBean detail(@RequestParam Integer categoryId) { return MessageBean.ok(resourceService.detail(categoryId), "获取资源详情"); } @Operation( summary = "5.1.3.26 上传图标文件", description = "5.1.3.26 上传图标文件", parameters = { @Parameter(name = "file", description = "图标文件", required = true) } ) @PostMapping("/manage/uploadImg") public MessageBean uploadImg(@RequestParam MultipartFile file) { return baseService.uploadImg(file, "resource/icon/"); } @Operation( summary = "5.1.3.6 资源保存接口", description = "5.1.3.6 资源保存接口", requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( description = "资源信息对象", required = true, content = @Content( mediaType = "application/json", schema = @Schema(implementation = ModelCategory.class) ) ) ) @PostMapping("/manage/save") public MessageBean save(@RequestBody ModelCategory category) throws IOException, ArchiveException { String msg = resourceService.save(category); if (StringUtils.isNotBlank(msg)) return MessageBean.error(msg); return MessageBean.ok(null, "资源保存接口"); } @Operation( summary = "5.1.3.7 模型上传接口", description = "5.1.3.7 模型上传接口", parameters = { @Parameter(name = "file", description = "模型文件", required = true) } ) @PostMapping({"/manage/addModel", "/" + VERSION_V1 + "/addModel"}) public MessageBean addModel(MultipartFile file, HttpServletRequest request) { String authHeader = request.getHeader("Authorization"); String userCode = jwtService.decryptUsernameWithHeader(authHeader); Integer userId = userInfoService.detailByUserCode(userCode).getUserId(); return baseService.uploadModel(file, "resource/model/" + userId + "/"); } @Operation( summary = "5.1.3.33 空间信息json文件上传接口", description = "5.1.3.33 空间信息json文件上传接口", parameters = { @Parameter(name = "file", description = "空间信息json文件上传接口", required = true) } ) @PostMapping({"/" + VERSION_V1 + "/addJsonFile"}) public MessageBean addJsonFile(MultipartFile file) { return baseService.uploadJsonFile(file, "resource/model/json/"); } @Operation( summary = "5.1.3.7 模型压缩文件上传接口", description = "5.1.3.7 模型压缩文件上传接口", parameters = { @Parameter(name = "file", description = "模型压缩文件,只支持zip格式", required = true) } ) @PostMapping({"/manage/addModelCompress"}) public MessageBean addModelCompress(MultipartFile file) { return baseService.uploadModelCompress(file, "resource/model/"); } @Operation( summary = "5.1.3.8 资源删除接口", description = "5.1.3.8 资源删除接口", parameters = { @Parameter(name = "categoryId", description = "资源分类ID", required = true) } ) @PostMapping({"/manage/delete", "/" + VERSION_V1 + "/deletePersonal"}) public MessageBean delete(@RequestParam List categoryId) { resourceService.deleteCategory(categoryId); return MessageBean.ok(null, "删除资源"); } @Operation( summary = "5.1.3.27 模型删除接口", description = "5.1.3.27 模型删除接口", parameters = { @Parameter(name = "modelId", description = "模型信息ID", required = true) } ) @PostMapping({"/manage/deleteModel","/" + VERSION_V1 + "/deleteModel"}) public MessageBean deleteModel(@RequestParam Integer modelId) { resourceService.deleteModel(modelId); return MessageBean.ok(null, "模型删除接口"); } @Operation( summary = "5.1.2.19 资源分类列表接口", description = "5.1.2.19 资源分类列表接口" ) @PostMapping("/" + VERSION_V1 + "/categories") public List> resourceCategory(HttpServletRequest request) { String authHeader = request.getHeader("Authorization"); String userCode = jwtService.decryptUsernameWithHeader(authHeader); return resourceService.resourceCategory(userCode); } @Operation( summary = "5.1.2.20 模型列表接口", description = "5.1.2.20 模型列表接口" ) @PostMapping("/" + VERSION_V1 + "/models") public List models(HttpServletRequest request) { String authHeader = request.getHeader("Authorization"); String userCode = jwtService.decryptUsernameWithHeader(authHeader); return resourceService.models(userCode); } @Operation( summary = "5.1.2.21 个人文件夹保存接口", description = "5.1.2.21 个人文件夹保存接口", requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( description = "资源信息对象", required = true, content = @Content( mediaType = "application/json", schema = @Schema(implementation = ModelCategory.class) ) ) ) @PostMapping("/" + VERSION_V1 + "/savePersonal") public MessageBean savePersonal(@RequestBody ModelCategory category, HttpServletRequest request) { String authHeader = request.getHeader("Authorization"); String userCode = jwtService.decryptUsernameWithHeader(authHeader); Map result = resourceService.savePersonal(category, userCode); if (result.containsKey("msg")) return MessageBean.error(String.valueOf(result.get("msg"))); return MessageBean.ok((ModelCategory) result.get("category"), "个人文件夹保存接口"); } @Operation( summary = "5.1.2.31 模型信息保存接口", description = "5.1.2.31 模型信息保存接口", requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody( description = "模型信息对象", required = true, content = @Content( mediaType = "application/json", schema = @Schema(implementation = ModelInfo.class) ) ) ) @PostMapping("/" + VERSION_V1 + "/saveModel") public MessageBean saveModel(@RequestBody ModelInfo modelInfo) { return MessageBean.ok(resourceService.saveModel(modelInfo), "个人文件夹保存接口"); } @PostMapping("/" + VERSION_V1 + "/needRefresh") public MessageBean needRefresh(HttpServletRequest request) { String authHeader = request.getHeader("Authorization"); String userCode = jwtService.decryptUsernameWithHeader(authHeader); return MessageBean.ok(resourceService.needRefreshResource(userCode), "资源更新检查"); } }