MetaResourcesController.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package com.izouma.nineth.web;
  2. import com.izouma.nineth.domain.MetaResources;
  3. import com.izouma.nineth.domain.MetaResourcesLikeRecord;
  4. import com.izouma.nineth.dto.MetaResourcesLikeDTO;
  5. import com.izouma.nineth.dto.MetaRestResult;
  6. import com.izouma.nineth.dto.PageQuery;
  7. import com.izouma.nineth.enums.MetaResourcesType;
  8. import com.izouma.nineth.exception.BusinessException;
  9. import com.izouma.nineth.repo.MetaResourcesLikeRecordRepo;
  10. import com.izouma.nineth.repo.MetaResourcesRepo;
  11. import com.izouma.nineth.service.MetaResourcesService;
  12. import com.izouma.nineth.utils.DateTimeUtils;
  13. import com.izouma.nineth.utils.ObjUtils;
  14. import com.izouma.nineth.utils.excel.ExcelUtils;
  15. import lombok.AllArgsConstructor;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.data.domain.Page;
  18. import org.springframework.web.bind.annotation.*;
  19. import javax.servlet.http.HttpServletResponse;
  20. import java.io.IOException;
  21. import java.time.LocalDate;
  22. import java.time.format.DateTimeFormatter;
  23. import java.util.List;
  24. import java.util.Objects;
  25. @RestController
  26. @RequestMapping("/metaResources")
  27. @AllArgsConstructor
  28. public class MetaResourcesController extends BaseController {
  29. private MetaResourcesService metaResourcesService;
  30. private MetaResourcesRepo metaResourcesRepo;
  31. private MetaResourcesLikeRecordRepo metaResourcesLikeRecordRepo;
  32. //@PreAuthorize("hasRole('ADMIN')")
  33. @PostMapping("/save")
  34. public MetaResources save(@RequestBody MetaResources record) {
  35. MetaResources metaResources = metaResourcesRepo.findByNameAndDel(record.getName(), false);
  36. if (Objects.nonNull(metaResources) && !Objects.equals(metaResources.getId(), record.getId())) {
  37. throw new BusinessException("当前资源名称已经存在!");
  38. }
  39. if (record.getId() != null) {
  40. MetaResources orig = metaResourcesRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  41. ObjUtils.merge(orig, record);
  42. return metaResourcesRepo.save(orig);
  43. }
  44. return metaResourcesRepo.save(record);
  45. }
  46. //@PreAuthorize("hasRole('ADMIN')")
  47. @PostMapping("/all")
  48. public Page<MetaResources> all(@RequestBody PageQuery pageQuery) {
  49. return metaResourcesService.all(pageQuery);
  50. }
  51. @GetMapping("/get/{id}")
  52. public MetaResources get(@PathVariable Long id) {
  53. return metaResourcesRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  54. }
  55. @PostMapping("/del/{id}")
  56. public void del(@PathVariable Long id) {
  57. metaResourcesRepo.softDelete(id);
  58. }
  59. @GetMapping("/excel")
  60. @ResponseBody
  61. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  62. List<MetaResources> data = all(pageQuery).getContent();
  63. ExcelUtils.export(response, data);
  64. }
  65. @GetMapping("/getUrl")
  66. public MetaRestResult<String> getUrl(String name) {
  67. MetaResources metaResources = metaResourcesRepo.findByNameAndDel(name, false);
  68. if (Objects.isNull(metaResources)) {
  69. return MetaRestResult.returnError("不存在该名称的资源");
  70. }
  71. if (StringUtils.isBlank(metaResources.getValue())) {
  72. return MetaRestResult.returnError("该名称的资源文件为空");
  73. }
  74. return MetaRestResult.returnSuccess("查询成功", metaResources.getValue());
  75. }
  76. @PostMapping("/like/{name}/{userId}")
  77. public MetaRestResult<Integer> like(@PathVariable String name, @PathVariable Long userId) {
  78. MetaResources metaResources = metaResourcesRepo.findByNameAndDel(name, false);
  79. if (Objects.isNull(metaResources)) {
  80. return MetaRestResult.returnError("当前资源不存在!");
  81. }
  82. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateTimeUtils.DATE_FORMAT);
  83. LocalDate likeTime = LocalDate.parse(LocalDate.now().format(formatter), formatter);
  84. MetaResourcesLikeRecord metaResourcesLikeRecord = metaResourcesLikeRecordRepo.findByMetaResourcesNameAndUserIdAndLikeTime(name, userId, likeTime);
  85. if (Objects.nonNull(metaResourcesLikeRecord)) {
  86. return MetaRestResult.returnError("该资源今天已经点过赞,不可重复点赞");
  87. }
  88. metaResourcesLikeRecord = new MetaResourcesLikeRecord();
  89. metaResourcesLikeRecord.setMetaResourcesName(name);
  90. metaResourcesLikeRecord.setUserId(userId);
  91. metaResourcesLikeRecord.setLikeTime(likeTime);
  92. metaResourcesLikeRecordRepo.save(metaResourcesLikeRecord);
  93. metaResources.setLikeNum(metaResources.getLikeNum() + 1);
  94. metaResourcesRepo.save(metaResources);
  95. return MetaRestResult.returnSuccess(metaResources.getLikeNum());
  96. }
  97. @GetMapping("/getLikeNum/{name}/{userId}")
  98. public MetaRestResult<MetaResourcesLikeDTO> getLikeNum(@PathVariable String name, @PathVariable Long userId) {
  99. MetaResources metaResources = metaResourcesRepo.findByNameAndDel(name, false);
  100. if (Objects.isNull(metaResources)) {
  101. return MetaRestResult.returnError("当前资源不存在!");
  102. }
  103. MetaResourcesLikeDTO metaResourcesLikeDTO = new MetaResourcesLikeDTO();
  104. metaResourcesLikeDTO.setNum(metaResources.getLikeNum());
  105. DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateTimeUtils.DATE_FORMAT);
  106. LocalDate likeTime = LocalDate.parse(LocalDate.now().format(formatter), formatter);
  107. MetaResourcesLikeRecord metaResourcesLikeRecord = metaResourcesLikeRecordRepo.findByMetaResourcesNameAndUserIdAndLikeTime(name, userId, likeTime);
  108. if (Objects.nonNull(metaResourcesLikeRecord)) {
  109. metaResourcesLikeDTO.setLike(true);
  110. return MetaRestResult.returnSuccess(metaResourcesLikeDTO);
  111. }
  112. return MetaRestResult.returnSuccess(metaResourcesLikeDTO);
  113. }
  114. @GetMapping("/getValue/{type}")
  115. public MetaRestResult<List<MetaResources>> getValue(@PathVariable MetaResourcesType type) {
  116. List<MetaResources> metaResources = metaResourcesRepo.findByTypeAndDel(type,false);
  117. if (Objects.isNull(metaResources)) {
  118. return MetaRestResult.returnError("当前类型不存在!");
  119. }
  120. return MetaRestResult.returnSuccess(metaResources);
  121. }
  122. }