package com.izouma.nineth.web; import com.izouma.nineth.domain.DomainOrder; import com.izouma.nineth.dto.excel.DomainCountDTO; import com.izouma.nineth.dto.nftdomain.DomainResult; import com.izouma.nineth.enums.AuthorityName; import com.izouma.nineth.service.DomainOrderService; import com.izouma.nineth.dto.PageQuery; import com.izouma.nineth.exception.BusinessException; import com.izouma.nineth.repo.DomainOrderRepo; import com.izouma.nineth.utils.ObjUtils; import com.izouma.nineth.utils.SecurityUtils; import com.izouma.nineth.utils.excel.ExcelUtils; import lombok.AllArgsConstructor; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.util.List; import java.util.Map; @RestController @RequestMapping("/domainOrder") @AllArgsConstructor public class DomainOrderController extends BaseController { private DomainOrderService domainOrderService; private DomainOrderRepo domainOrderRepo; @PreAuthorize("hasRole('ADMIN')") @PostMapping("/save") public DomainOrder save(@RequestBody DomainOrder record) { if (record.getId() != null) { DomainOrder orig = domainOrderRepo.findById(record.getId()).orElseThrow(new BusinessException("无记录")); ObjUtils.merge(orig, record); return domainOrderRepo.save(orig); } return domainOrderRepo.save(record); } //@PreAuthorize("hasRole('ADMIN')") @PostMapping("/all") public Page all(@RequestBody PageQuery pageQuery) { if (!SecurityUtils.hasRole(AuthorityName.ROLE_ADMIN) & !SecurityUtils.hasRole(AuthorityName.ROLE_ORDERINFO)) { pageQuery.getQuery().put("userId", SecurityUtils.getAuthenticatedUser().getId()); } if (pageQuery.getSize() == 50) { return new PageImpl<>(domainOrderService.newest(), PageRequest.of(0, 50), 50); } return domainOrderService.all(pageQuery); } @PostMapping("/create") public DomainOrder create(Long userId, String domain, BigDecimal price, Long year) { return domainOrderService.create(userId, domain, price, year); } @PostMapping("/search") public List> search(@RequestParam String domain) { return domainOrderService.search(domain); } @PostMapping("/topTen") @Cacheable(value = "domainTopTen") public List topTen() { return domainOrderService.top20(); } @GetMapping("/get/{id}") public DomainOrder get(@PathVariable Long id) { return domainOrderRepo.findById(id).orElseThrow(new BusinessException("无记录")); } @PreAuthorize("hasAnyRole('ADMIN','ORDERINFO')") @GetMapping("/excel") @ResponseBody public void excel(HttpServletResponse response, PageQuery pageQuery) throws IOException { List data = all(pageQuery).getContent(); ExcelUtils.export(response, data); } @PostMapping("/pass") @PreAuthorize("hasRole('ADMIN')") public void pass(Long id) { domainOrderService.pass(id); } @PostMapping("/deny") @PreAuthorize("hasRole('ADMIN')") public void deny(Long id) { domainOrderService.deny(id, "系统审核不通过"); } @PostMapping("/newestOrder") @Cacheable(value = "newestOrder") public List newestOrder() { return domainOrderService.newestOrder(); } }