|
@@ -1,9 +1,12 @@
|
|
|
package com.ichaoj.ams.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.ichaoj.ams.common.bean.Wallet;
|
|
|
import com.ichaoj.ams.common.util.EthWalletPrivate;
|
|
@@ -12,13 +15,17 @@ import com.ichaoj.ams.entity.AmsAddressAccount;
|
|
|
import com.ichaoj.ams.mapper.AmsAddressAccountMapper;
|
|
|
import com.ichaoj.ams.request.address.BatchAddressRequest;
|
|
|
import com.ichaoj.ams.request.address.BatchKeyStoreRequest;
|
|
|
+import com.ichaoj.ams.request.address.PageAddressRequest;
|
|
|
+import com.ichaoj.ams.response.address.AddressResponse;
|
|
|
import com.ichaoj.ams.service.IAmsAddressAccountService;
|
|
|
import com.ichaoj.ams.service.ZipService;
|
|
|
import com.ichaoj.common.exception.ErrorServiceException;
|
|
|
+import com.ichaoj.common.model.PublicPage;
|
|
|
import com.ichaoj.common.model.PublicResult;
|
|
|
import com.ichaoj.common.model.PublicUserInfo;
|
|
|
import com.ichaoj.disk.provider.client.DiskClient;
|
|
|
import com.ichaoj.disk.provider.resp.FileResponse;
|
|
|
+import com.ichaoj.mybatis.service.SuperWhaleServiceImpl;
|
|
|
import com.ichaoj.web.context.SuperWhaleContext;
|
|
|
import lombok.SneakyThrows;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -49,7 +56,7 @@ import static com.ichaoj.ams.constant.AmsConstant.WALLET_FILE_PATH;
|
|
|
*/
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
-public class AmsAddressAccountServiceImpl extends ServiceImpl<AmsAddressAccountMapper, AmsAddressAccount> implements IAmsAddressAccountService {
|
|
|
+public class AmsAddressAccountServiceImpl extends SuperWhaleServiceImpl<AmsAddressAccountMapper, AmsAddressAccount> implements IAmsAddressAccountService {
|
|
|
|
|
|
@Autowired(required = false)
|
|
|
private AmsAddressAccountMapper baseMapper;
|
|
@@ -112,6 +119,16 @@ public class AmsAddressAccountServiceImpl extends ServiceImpl<AmsAddressAccountM
|
|
|
return this.count(wrapper) > 0;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public PublicPage<AddressResponse> pageAddress(PageAddressRequest pageAddressRequest) {
|
|
|
+ LambdaQueryWrapper<AmsAddressAccount> wrapper = Wrappers.lambdaQuery();
|
|
|
+ wrapper.eq(StrUtil.isNotBlank(pageAddressRequest.getGroupName()), AmsAddressAccount::getGroupName, pageAddressRequest.getGroupName())
|
|
|
+ .orderByDesc(AmsAddressAccount::getCreateTime);
|
|
|
+
|
|
|
+ Page<AmsAddressAccount> result = this.page(this.buildPageObj(pageAddressRequest), wrapper);
|
|
|
+ return this.convertPublicPage(result, resp -> BeanUtil.copyProperties(resp, AddressResponse.class));
|
|
|
+ }
|
|
|
+
|
|
|
private String getLocation(String fileId) {
|
|
|
PublicResult<FileResponse> result = diskClient.getFileById(fileId);
|
|
|
FileResponse data = result.getData();
|
|
@@ -135,7 +152,7 @@ public class AmsAddressAccountServiceImpl extends ServiceImpl<AmsAddressAccountM
|
|
|
|
|
|
@Override
|
|
|
@SneakyThrows
|
|
|
- public void batchKeystore(String groupName,String password, HttpServletResponse response) {
|
|
|
+ public void batchKeystore(String groupName, String password, HttpServletResponse response) {
|
|
|
String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|
|
|
boolean existGroup = this.checkGroupName(groupName, userId);
|
|
|
if (!existGroup) {
|
|
@@ -175,61 +192,13 @@ public class AmsAddressAccountServiceImpl extends ServiceImpl<AmsAddressAccountM
|
|
|
InputStream inputStream = new FileInputStream(zipFile);
|
|
|
byte[] buffer = new byte[1024];
|
|
|
OutputStream outputStream = response.getOutputStream();
|
|
|
- int len = 0;
|
|
|
+ int len;
|
|
|
while ((len = inputStream.read(buffer)) > 0) {
|
|
|
outputStream.write(buffer, 0, len);
|
|
|
}
|
|
|
inputStream.close();
|
|
|
outputStream.close();
|
|
|
}
|
|
|
-
|
|
|
- /**
|
|
|
- * 批量下载keystore文件
|
|
|
- *
|
|
|
- * @param keyStoreRequest 请求参数
|
|
|
- * @param response
|
|
|
- */
|
|
|
-
|
|
|
- public void batchKeystoreTemp(BatchKeyStoreRequest keyStoreRequest, HttpServletResponse response) {
|
|
|
- try {
|
|
|
- String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|
|
|
- boolean existGroup = this.checkGroupName(keyStoreRequest.getGroupName(), userId);
|
|
|
- if (!existGroup) {
|
|
|
- throw new ErrorServiceException("The address group name is incorrect");
|
|
|
- }
|
|
|
- Set<File> files = new HashSet<>();
|
|
|
- List<String> addresses = keyStoreRequest.getAddresses();
|
|
|
- if (CollectionUtil.isEmpty(addresses)) {
|
|
|
- LambdaQueryWrapper<AmsAddressAccount> wrapper = Wrappers.lambdaQuery();
|
|
|
- wrapper.eq(AmsAddressAccount::getUserId, userId)
|
|
|
- .eq(AmsAddressAccount::getGroupName, keyStoreRequest.getGroupName());
|
|
|
- List<AmsAddressAccount> list = this.list(wrapper);
|
|
|
- if (CollectionUtil.isNotEmpty(list)) {
|
|
|
- getFiles(keyStoreRequest, files, list);
|
|
|
- }
|
|
|
- } else {
|
|
|
- LambdaQueryWrapper<AmsAddressAccount> wrapper = Wrappers.lambdaQuery();
|
|
|
- wrapper.eq(AmsAddressAccount::getUserId, userId)
|
|
|
- .eq(AmsAddressAccount::getGroupName, keyStoreRequest.getGroupName())
|
|
|
- .in(AmsAddressAccount::getAddress, addresses);
|
|
|
- List<AmsAddressAccount> list = this.list(wrapper);
|
|
|
- if (CollectionUtil.isNotEmpty(list)) {
|
|
|
- getFiles(keyStoreRequest, files, list);
|
|
|
- }
|
|
|
- }
|
|
|
- if (CollectionUtil.isNotEmpty(files)) {
|
|
|
- zipService.create(
|
|
|
- userId,
|
|
|
- WALLET_FILE_PATH
|
|
|
- , WALLET_FILE_PATH
|
|
|
- , WalletUtil.getEncryptPwd(keyStoreRequest.getGroupName())
|
|
|
- , ".zip", response);
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("batchKeystore 方法出错:{}", e.getMessage());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
private void getFiles(BatchKeyStoreRequest keyStoreRequest, Set<File> files, List<AmsAddressAccount> list) {
|
|
|
try {
|
|
|
String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|