ResourceController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.lqkj.link.module.zone.controller;
  2. import com.lqkj.link.message.MessageBean;
  3. import com.lqkj.link.module.authority.service.UserInfoService;
  4. import com.lqkj.link.module.base.service.BaseService;
  5. import com.lqkj.link.module.jwt.service.JwtService;
  6. import com.lqkj.link.module.zone.domain.ModelCategory;
  7. import com.lqkj.link.module.zone.domain.ModelInfo;
  8. import com.lqkj.link.module.zone.service.ResourceService;
  9. import io.swagger.v3.oas.annotations.Operation;
  10. import io.swagger.v3.oas.annotations.Parameter;
  11. import io.swagger.v3.oas.annotations.media.Content;
  12. import io.swagger.v3.oas.annotations.media.Schema;
  13. import io.swagger.v3.oas.annotations.tags.Tag;
  14. import jakarta.servlet.http.HttpServletRequest;
  15. import org.apache.commons.compress.archivers.ArchiveException;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.aspectj.bridge.Message;
  18. import org.springframework.data.domain.Page;
  19. import org.springframework.web.bind.annotation.*;
  20. import org.springframework.web.multipart.MultipartFile;
  21. import java.io.IOException;
  22. import java.util.List;
  23. import java.util.Map;
  24. import static com.lqkj.link.APIVersion.VERSION_V1;
  25. @RestController
  26. @RequestMapping("/resource")
  27. @Tag(name = "资源管理", description = "资源管理")
  28. public class ResourceController {
  29. private final ResourceService resourceService;
  30. private final BaseService baseService;
  31. private final JwtService jwtService;
  32. private final UserInfoService userInfoService;
  33. public ResourceController(ResourceService resourceService, BaseService baseService, JwtService jwtService, UserInfoService userInfoService) {
  34. this.resourceService = resourceService;
  35. this.baseService = baseService;
  36. this.jwtService = jwtService;
  37. this.userInfoService = userInfoService;
  38. }
  39. @Operation(
  40. summary = "5.1.3.5 资源分页接口",
  41. description = "5.1.3.1 资源分页接口",
  42. parameters = {
  43. @Parameter(name = "name", description = "搜索关键词"),
  44. @Parameter(name = "page", description = "页码"),
  45. @Parameter(name = "pageSize", description = "每页数据条数")
  46. }
  47. )
  48. @PostMapping("/manage/pageQuery")
  49. public MessageBean<Page<ModelCategory>> pageQueryTemplate(@RequestParam(required = false, defaultValue = "") String name,
  50. @RequestParam(required = false, defaultValue = "0") Integer page,
  51. @RequestParam(required = false, defaultValue = "10") Integer pageSize){
  52. return MessageBean.ok(resourceService.pageQuery(name, page, pageSize), "资源分页接口");
  53. }
  54. @Operation(
  55. summary = "5.1.3.25 资源详情接口",
  56. description = "5.1.3.25 资源详情接口",
  57. parameters = {
  58. @Parameter(name = "categoryId", description = "资源ID")
  59. }
  60. )
  61. @PostMapping("/manage/detail")
  62. public MessageBean<ModelCategory> detail(@RequestParam Integer categoryId) {
  63. return MessageBean.ok(resourceService.detail(categoryId), "获取资源详情");
  64. }
  65. @Operation(
  66. summary = "5.1.3.26 上传图标文件",
  67. description = "5.1.3.26 上传图标文件",
  68. parameters = {
  69. @Parameter(name = "file", description = "图标文件", required = true)
  70. }
  71. )
  72. @PostMapping("/manage/uploadImg")
  73. public MessageBean<String> uploadImg(@RequestParam MultipartFile file) {
  74. return baseService.uploadImg(file, "resource/icon/");
  75. }
  76. @Operation(
  77. summary = "5.1.3.6 资源保存接口",
  78. description = "5.1.3.6 资源保存接口",
  79. requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
  80. description = "资源信息对象",
  81. required = true,
  82. content = @Content(
  83. mediaType = "application/json",
  84. schema = @Schema(implementation = ModelCategory.class)
  85. )
  86. )
  87. )
  88. @PostMapping("/manage/save")
  89. public MessageBean<Object> save(@RequestBody ModelCategory category) throws IOException, ArchiveException {
  90. String msg = resourceService.save(category);
  91. if (StringUtils.isNotBlank(msg)) return MessageBean.error(msg);
  92. return MessageBean.ok(null, "资源保存接口");
  93. }
  94. @Operation(
  95. summary = "5.1.3.7 模型上传接口",
  96. description = "5.1.3.7 模型上传接口",
  97. parameters = {
  98. @Parameter(name = "file", description = "模型文件", required = true)
  99. }
  100. )
  101. @PostMapping({"/manage/addModel", "/" + VERSION_V1 + "/addModel"})
  102. public MessageBean<String> addModel(MultipartFile file,
  103. HttpServletRequest request) {
  104. String authHeader = request.getHeader("Authorization");
  105. String userCode = jwtService.decryptUsernameWithHeader(authHeader);
  106. Integer userId = userInfoService.detailByUserCode(userCode).getUserId();
  107. return baseService.uploadModel(file, "resource/model/" + userId + "/");
  108. }
  109. @Operation(
  110. summary = "5.1.3.33 空间信息json文件上传接口",
  111. description = "5.1.3.33 空间信息json文件上传接口",
  112. parameters = {
  113. @Parameter(name = "file", description = "空间信息json文件上传接口", required = true)
  114. }
  115. )
  116. @PostMapping({"/" + VERSION_V1 + "/addJsonFile"})
  117. public MessageBean<String> addJsonFile(MultipartFile file) {
  118. return baseService.uploadJsonFile(file, "resource/model/json/");
  119. }
  120. @Operation(
  121. summary = "5.1.3.7 模型压缩文件上传接口",
  122. description = "5.1.3.7 模型压缩文件上传接口",
  123. parameters = {
  124. @Parameter(name = "file", description = "模型压缩文件,只支持zip格式", required = true)
  125. }
  126. )
  127. @PostMapping({"/manage/addModelCompress"})
  128. public MessageBean<String> addModelCompress(MultipartFile file) {
  129. return baseService.uploadModelCompress(file, "resource/model/");
  130. }
  131. @Operation(
  132. summary = "5.1.3.8 资源删除接口",
  133. description = "5.1.3.8 资源删除接口",
  134. parameters = {
  135. @Parameter(name = "categoryId", description = "资源分类ID", required = true)
  136. }
  137. )
  138. @PostMapping({"/manage/delete", "/" + VERSION_V1 + "/deletePersonal"})
  139. public MessageBean<String > delete(@RequestParam List<Integer> categoryId) {
  140. resourceService.deleteCategory(categoryId);
  141. return MessageBean.ok(null, "删除资源");
  142. }
  143. @Operation(
  144. summary = "5.1.3.27 模型删除接口",
  145. description = "5.1.3.27 模型删除接口",
  146. parameters = {
  147. @Parameter(name = "modelId", description = "模型信息ID", required = true)
  148. }
  149. )
  150. @PostMapping({"/manage/deleteModel","/" + VERSION_V1 + "/deleteModel"})
  151. public MessageBean<Object> deleteModel(@RequestParam Integer modelId) {
  152. resourceService.deleteModel(modelId);
  153. return MessageBean.ok(null, "模型删除接口");
  154. }
  155. @Operation(
  156. summary = "5.1.2.19 资源分类列表接口",
  157. description = "5.1.2.19 资源分类列表接口"
  158. )
  159. @PostMapping("/" + VERSION_V1 + "/categories")
  160. public List<Map<String, Object>> resourceCategory(HttpServletRequest request) {
  161. String authHeader = request.getHeader("Authorization");
  162. String userCode = jwtService.decryptUsernameWithHeader(authHeader);
  163. return resourceService.resourceCategory(userCode);
  164. }
  165. @Operation(
  166. summary = "5.1.2.20 模型列表接口",
  167. description = "5.1.2.20 模型列表接口"
  168. )
  169. @PostMapping("/" + VERSION_V1 + "/models")
  170. public List<ModelInfo> models(HttpServletRequest request) {
  171. String authHeader = request.getHeader("Authorization");
  172. String userCode = jwtService.decryptUsernameWithHeader(authHeader);
  173. return resourceService.models(userCode);
  174. }
  175. @Operation(
  176. summary = "5.1.2.21 个人文件夹保存接口",
  177. description = "5.1.2.21 个人文件夹保存接口",
  178. requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
  179. description = "资源信息对象",
  180. required = true,
  181. content = @Content(
  182. mediaType = "application/json",
  183. schema = @Schema(implementation = ModelCategory.class)
  184. )
  185. )
  186. )
  187. @PostMapping("/" + VERSION_V1 + "/savePersonal")
  188. public MessageBean<ModelCategory> savePersonal(@RequestBody ModelCategory category,
  189. HttpServletRequest request) {
  190. String authHeader = request.getHeader("Authorization");
  191. String userCode = jwtService.decryptUsernameWithHeader(authHeader);
  192. Map<String, Object> result = resourceService.savePersonal(category, userCode);
  193. if (result.containsKey("msg")) return MessageBean.error(String.valueOf(result.get("msg")));
  194. return MessageBean.ok((ModelCategory) result.get("category"), "个人文件夹保存接口");
  195. }
  196. @Operation(
  197. summary = "5.1.2.31 模型信息保存接口",
  198. description = "5.1.2.31 模型信息保存接口",
  199. requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
  200. description = "模型信息对象",
  201. required = true,
  202. content = @Content(
  203. mediaType = "application/json",
  204. schema = @Schema(implementation = ModelInfo.class)
  205. )
  206. )
  207. )
  208. @PostMapping("/" + VERSION_V1 + "/saveModel")
  209. public MessageBean<ModelInfo> saveModel(@RequestBody ModelInfo modelInfo) {
  210. return MessageBean.ok(resourceService.saveModel(modelInfo), "个人文件夹保存接口");
  211. }
  212. @PostMapping("/" + VERSION_V1 + "/needRefresh")
  213. public MessageBean<Boolean> needRefresh(HttpServletRequest request) {
  214. String authHeader = request.getHeader("Authorization");
  215. String userCode = jwtService.decryptUsernameWithHeader(authHeader);
  216. return MessageBean.ok(resourceService.needRefreshResource(userCode), "资源更新检查");
  217. }
  218. }