MintOrderController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.izouma.nineth.web;
  2. import com.izouma.nineth.converter.LongArrayConverter;
  3. import com.izouma.nineth.domain.MintActivity;
  4. import com.izouma.nineth.domain.MintMaterial;
  5. import com.izouma.nineth.domain.MintOrder;
  6. import com.izouma.nineth.dto.MintOrderDTO;
  7. import com.izouma.nineth.dto.PageQuery;
  8. import com.izouma.nineth.exception.BusinessException;
  9. import com.izouma.nineth.repo.MintActivityRepo;
  10. import com.izouma.nineth.repo.MintMaterialRepo;
  11. import com.izouma.nineth.repo.MintOrderRepo;
  12. import com.izouma.nineth.service.MintOrderService;
  13. import com.izouma.nineth.utils.ObjUtils;
  14. import com.izouma.nineth.utils.SecurityUtils;
  15. import com.izouma.nineth.utils.excel.ExcelUtils;
  16. import io.swagger.annotations.ApiOperation;
  17. import lombok.AllArgsConstructor;
  18. import org.springframework.data.domain.Page;
  19. import org.springframework.security.access.prepost.PreAuthorize;
  20. import org.springframework.web.bind.annotation.*;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.io.IOException;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. @RestController
  26. @RequestMapping("/mintOrder")
  27. @AllArgsConstructor
  28. public class MintOrderController extends BaseController {
  29. private MintOrderService mintOrderService;
  30. private MintOrderRepo mintOrderRepo;
  31. private MintActivityRepo mintActivityRepo;
  32. private MintMaterialRepo mintMaterialRepo;
  33. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  34. @PostMapping("/save")
  35. public MintOrder save(@RequestBody MintOrder record) {
  36. if (record.getId() != null) {
  37. MintOrder orig = mintOrderRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录"));
  38. ObjUtils.merge(orig, record);
  39. return mintOrderRepo.save(orig);
  40. }
  41. return mintOrderRepo.save(record);
  42. }
  43. //@PreAuthorize("hasRole('ADMIN')")
  44. @PostMapping("/all")
  45. public Page<MintOrder> all(@RequestBody PageQuery pageQuery) {
  46. Page<MintOrder> all = mintOrderService.all(pageQuery);
  47. Set<Long> mids = all.map(MintOrder::getMintActivityId).stream().collect(Collectors.toSet());
  48. List<Long> ids = all.map(MintOrder::getId).stream().collect(Collectors.toList());
  49. Map<Long, String> activityMap = mintActivityRepo.findAllByIdInAndDelFalse(mids)
  50. .stream()
  51. .collect(Collectors.toMap(MintActivity::getId, MintActivity::getName));
  52. Map<Long, List<MintMaterial>> materialMap = mintMaterialRepo.findAllByOrderIdInAndDelFalse(ids)
  53. .stream()
  54. .collect(Collectors.groupingBy(MintMaterial::getOrderId));
  55. return all.map(mintOrder -> {
  56. mintOrder.setMintActivity(activityMap.get(mintOrder.getMintActivityId()));
  57. mintOrder.setMaterial(materialMap.get(mintOrder.getId()));
  58. return mintOrder;
  59. });
  60. }
  61. @GetMapping("/get/{id}")
  62. public MintOrder get(@PathVariable Long id) {
  63. MintOrder mintOrder = mintOrderRepo.findById(id).orElseThrow(new BusinessException("无记录"));
  64. if (!Objects.isNull(mintOrder.getMintActivityId())) {
  65. mintActivityRepo.findByIdAndDelFalse(mintOrder.getMintActivityId())
  66. .ifPresent(activity -> mintOrder.setMintActivity(activity.getName()));
  67. }
  68. mintOrder.setMaterial(mintMaterialRepo.findAllByOrderIdAndDelFalse(id));
  69. return mintOrder;
  70. }
  71. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  72. @PostMapping("/del/{id}")
  73. public void del(@PathVariable Long id) {
  74. mintOrderRepo.softDelete(id);
  75. }
  76. @GetMapping("/excel")
  77. @ResponseBody
  78. public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException {
  79. List<MintOrder> data = all(pageQuery).getContent();
  80. ExcelUtils.export(response, data);
  81. }
  82. @PostMapping("/create")
  83. public MintOrder create(@RequestParam String assets, @RequestParam Long mintActivityId, Long addressId) {
  84. LongArrayConverter lc = new LongArrayConverter();
  85. List<Long> assetIds = lc.convertToEntityAttribute(assets);
  86. return mintOrderService.create(SecurityUtils.getAuthenticatedUser(), assetIds, mintActivityId, addressId);
  87. }
  88. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  89. @ApiOperation("导出")
  90. @PostMapping("/excelPhone")
  91. public void excelPhone(HttpServletResponse response, @RequestBody PageQuery pageQuery) throws IOException {
  92. List<MintOrderDTO> data = all(pageQuery).map(MintOrderDTO::new).getContent();
  93. ExcelUtils.export(response, data);
  94. }
  95. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  96. @ApiOperation("订单完成")
  97. @GetMapping("/finish/{id}")
  98. public void finish(@PathVariable Long id) {
  99. mintOrderService.finish(id);
  100. }
  101. @ApiOperation("订单发货")
  102. @GetMapping("/delivery")
  103. public void delivery(@RequestParam Long id, @RequestParam String courierId) {
  104. mintOrderService.dispatch(id, courierId);
  105. }
  106. @GetMapping("/{id}/status")
  107. public Object status(@PathVariable Long id) {
  108. MintOrder order = mintOrderRepo.findById(id).orElseThrow(new BusinessException("订单不存在"));
  109. return new HashMap<>() {{
  110. put("status", order.getStatus());
  111. }};
  112. }
  113. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  114. @PostMapping("/pass")
  115. public void audit(@RequestParam Long id) {
  116. mintOrderService.orderAudit(id, true);
  117. }
  118. @PreAuthorize("hasAnyRole('ADMIN','SAAS')")
  119. @PostMapping("/deny")
  120. public void deny(@RequestParam Long id) {
  121. mintOrderService.orderAudit(id, false);
  122. }
  123. }