| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package com.crm.manager.controller;
- import com.crm.manager.service.VaultodyService;
- import com.crm.rely.backend.core.dto.base.BaseResultDto;
- import com.crm.rely.backend.model.dto.export.TransactionItemExport;
- import com.crm.rely.backend.model.entity.vaultody.vaults.VaultTransactionsEntity;
- import com.crm.rely.backend.model.entity.vaultody.vaults.VaultTransactionsSearchEntity;
- import com.crm.rely.backend.model.pojo.table.TransactionItemTable;
- import com.crm.rely.backend.util.DateUtil;
- import com.crm.rely.backend.util.ExportUtil;
- import com.crm.rely.backend.util.FileProcessUtil;
- import com.google.common.collect.Lists;
- import jakarta.servlet.http.HttpServletResponse;
- import org.apache.commons.lang3.StringUtils;
- import org.hibernate.service.spi.ServiceException;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.time.Instant;
- import java.time.LocalDateTime;
- import java.time.ZoneId;
- import java.time.format.DateTimeFormatter;
- import java.util.List;
- @RestController
- @RequestMapping("/vaultody")
- public class VaultodyController {
- @Autowired
- private VaultodyService vaultodyService;
- /**
- * 保险箱列表
- *
- */
- @PostMapping("/vaults/list")
- public BaseResultDto vaultsList() throws Exception {
- return vaultodyService.vaultsList();
- }
- /**
- * 保险箱交易详情分页查询
- * @param entity
- * @return
- * @throws Exception
- */
- @PostMapping("/transaction/search/list")
- public BaseResultDto searchList(@RequestBody VaultTransactionsSearchEntity entity) throws Exception {
- if (StringUtils.isBlank(entity.getVaultId())) {
- throw new ServiceException("vault_id_not_null_error");
- }
- return vaultodyService.searchList(entity);
- }
- /**
- * 导出保险箱交易记录
- * @param entity
- * @param response
- * @throws Exception
- */
- @PostMapping("/export")
- public void export(@RequestBody VaultTransactionsEntity entity, HttpServletResponse response) throws Exception {
- List<TransactionItemTable> items = vaultodyService.queryExportItems(entity);
- List<TransactionItemExport> exportDtos = Lists.newArrayList();
- for (TransactionItemTable item : items) {
- TransactionItemExport exportDto = new TransactionItemExport();
- BeanUtils.copyProperties(item, exportDto);
- if("ETH".equals(exportDto.getRecipientAmountUnit())){
- exportDto.setTransactionId("https://etherscan.io/tx/"+exportDto.getTransactionId());
- }else {
- exportDto.setTransactionId("https://tronscan.org/#/transaction/"+exportDto.getTransactionId());
- }
- exportDto.setCreatedTimestamp(secondToDateTimeStr(item.getCreatedTimestamp()));
- exportDtos.add(exportDto);
- }
- ExportUtil.transferToResponse(FileProcessUtil.genExportFileName("VAULTODY_VAULT_TRANSACTIONS"), exportDtos,
- TransactionItemExport.class, response);
- }
- // 常用格式:yyyy-MM-dd HH:mm:ss
- public static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
- /**
- * 秒级时间戳 → 日期字符串
- * @param secondTimestamp 秒级时间戳 (如 1735458266)
- * @return yyyy-MM-dd HH:mm:ss
- */
- public static String secondToDateTimeStr(long secondTimestamp) {
- if (secondTimestamp <= 0) {
- return null;
- }
- // 秒级时间戳转 Instant
- Instant instant = Instant.ofEpochSecond(secondTimestamp);
- // 转东八区时间(中国时区)
- LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
- // 格式化字符串
- return localDateTime.format(FORMATTER);
- }
- }
|