|
@@ -10,12 +10,14 @@ import com.ichaoj.ams.common.bean.Wallet;
|
|
|
import com.ichaoj.ams.common.util.WalletUtil;
|
|
|
import com.ichaoj.ams.common.util.ZipUtil;
|
|
|
import com.ichaoj.ams.entity.AmsAddressAccount;
|
|
|
+import com.ichaoj.ams.entity.AmsTradeRecord;
|
|
|
import com.ichaoj.ams.mapper.AmsAddressAccountMapper;
|
|
|
import com.ichaoj.ams.request.address.BatchAddressRequest;
|
|
|
import com.ichaoj.ams.request.address.PageAddressRequest;
|
|
|
import com.ichaoj.ams.request.address.PremiumAddressRequest;
|
|
|
import com.ichaoj.ams.response.address.AddressResponse;
|
|
|
import com.ichaoj.ams.service.IAmsAddressAccountService;
|
|
|
+import com.ichaoj.ams.service.IAmsTradeRecordService;
|
|
|
import com.ichaoj.common.exception.ErrorServiceException;
|
|
|
import com.ichaoj.common.model.PublicPage;
|
|
|
import com.ichaoj.common.model.PublicUserInfo;
|
|
@@ -23,11 +25,17 @@ import com.ichaoj.mybatis.service.SuperWhaleServiceImpl;
|
|
|
import com.ichaoj.web.context.SuperWhaleContext;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.File;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.ichaoj.ams.constant.AmsConstant.WALLET_FILE_PATH;
|
|
@@ -44,6 +52,9 @@ import static com.ichaoj.ams.constant.AmsConstant.WALLET_FILE_PATH;
|
|
|
@Slf4j
|
|
|
public class AmsAddressAccountServiceImpl extends SuperWhaleServiceImpl<AmsAddressAccountMapper, AmsAddressAccount> implements IAmsAddressAccountService {
|
|
|
|
|
|
+ @Resource
|
|
|
+ private IAmsTradeRecordService tradeRecordService;
|
|
|
+
|
|
|
@Override
|
|
|
public List<String> batchCreateAddress(BatchAddressRequest batchAddressRequest) {
|
|
|
String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|
|
@@ -92,35 +103,64 @@ public class AmsAddressAccountServiceImpl extends SuperWhaleServiceImpl<AmsAddre
|
|
|
|
|
|
@Override
|
|
|
public PublicPage<AddressResponse> pageAddress(PageAddressRequest pageAddressRequest) {
|
|
|
- LambdaQueryWrapper<AmsAddressAccount> wrapper = Wrappers.lambdaQuery();
|
|
|
- wrapper.eq(StrUtil.isNotBlank(pageAddressRequest.getGroupName())
|
|
|
- , AmsAddressAccount::getGroupName
|
|
|
- , pageAddressRequest.getGroupName())
|
|
|
- .eq(AmsAddressAccount::getUserId, SuperWhaleContext.getContext(PublicUserInfo.class).getUserId())
|
|
|
- .orderByDesc(AmsAddressAccount::getCreateTime);
|
|
|
-
|
|
|
- Page<AmsAddressAccount> result = this.page(this.buildPageObj(pageAddressRequest), wrapper);
|
|
|
+ String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|
|
|
+ Page<AddressResponse> result = this.baseMapper.pageAddress(this.buildPageObj(pageAddressRequest), pageAddressRequest, userId);
|
|
|
return this.convertPublicPage(result, resp -> BeanUtil.copyProperties(resp, AddressResponse.class));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<String> queryGroupList() {
|
|
|
LambdaQueryWrapper<AmsAddressAccount> wrapper = Wrappers.lambdaQuery();
|
|
|
- wrapper.eq(AmsAddressAccount::getUserId,SuperWhaleContext.getContext(PublicUserInfo.class).getUserId())
|
|
|
+ wrapper.eq(AmsAddressAccount::getUserId, SuperWhaleContext.getContext(PublicUserInfo.class).getUserId())
|
|
|
+ .eq(AmsAddressAccount::getAddressType, 1)
|
|
|
.groupBy(AmsAddressAccount::getGroupName);
|
|
|
return this.list(wrapper).stream().map(AmsAddressAccount::getGroupName).distinct().collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 添加精品号
|
|
|
- *
|
|
|
- * @param request 精品号参数
|
|
|
*/
|
|
|
@Override
|
|
|
- public void addPremiumAddress(PremiumAddressRequest request) {
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void addPremiumAddress(List<PremiumAddressRequest> requestList) {
|
|
|
String userId = SuperWhaleContext.getContext(PublicUserInfo.class).getUserId();
|
|
|
- AmsAddressAccount account = getAddressCountInstance(userId, request.getAddress(), 0, request.getChainId(), request.getGroupName());
|
|
|
- this.save(account);
|
|
|
+ List<AmsAddressAccount> accounts = new ArrayList<>();
|
|
|
+ for (PremiumAddressRequest request : requestList) {
|
|
|
+ verifyDuplicate(requestList.stream().map(PremiumAddressRequest::getGroupName).collect(Collectors.toList()));
|
|
|
+ List<AmsAddressAccount> addresses = this.getByGroupNameAndUserId(request.getGroupName(), userId);
|
|
|
+ if (CollectionUtil.isNotEmpty(addresses)) {
|
|
|
+ throw new ErrorServiceException("你已经创建了" + request.getGroupName() + "精品号,请更换地址组名称重试!");
|
|
|
+ }
|
|
|
+ AmsAddressAccount account = getAddressCountInstance(userId,
|
|
|
+ request.getAddress(),
|
|
|
+ 0,
|
|
|
+ request.getChainId(),
|
|
|
+ request.getGroupName());
|
|
|
+ accounts.add(account);
|
|
|
+ }
|
|
|
+ this.saveBatch(accounts);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证 List<PremiumAddressRequest> 列表是否有重复对象PremiumAddressRequest,如有重复,返回重复对象的下标
|
|
|
+ */
|
|
|
+ public void verifyDuplicate(List<String> list) {
|
|
|
+ List<Integer> duplicates = new ArrayList<>();
|
|
|
+ // 使用Set记录已经出现过的对象
|
|
|
+ Set<String> set = new HashSet<>();
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ String request = list.get(i);
|
|
|
+ // 如果set中已经包含obj,则表示obj重复
|
|
|
+ if (set.contains(request)) {
|
|
|
+ duplicates.add(i + 1);
|
|
|
+ } else {
|
|
|
+ set.add(request);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ String collect = duplicates.stream().map(String::valueOf).collect(Collectors.joining(StrUtil.COMMA));
|
|
|
+ if (StrUtil.isNotBlank(collect)) {
|
|
|
+ throw new ErrorServiceException("你创建的第" + collect + "个精品号是重复的,请更换地址组名称重试!");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -134,13 +174,13 @@ public class AmsAddressAccountServiceImpl extends SuperWhaleServiceImpl<AmsAddre
|
|
|
if (addresses.get(0).getAddressType() != 1) {
|
|
|
throw new ErrorServiceException(groupName + "为非批量号地址组,不允许下载");
|
|
|
}
|
|
|
+
|
|
|
ZipUtil.createZip(groupName, response, userId);
|
|
|
}
|
|
|
|
|
|
private AmsAddressAccount getAddressCountInstance(
|
|
|
String userId, String address,
|
|
|
- Integer addressType, String chainId,
|
|
|
- String groupName) {
|
|
|
+ Integer addressType, String chainId, String groupName) {
|
|
|
AmsAddressAccount account = new AmsAddressAccount();
|
|
|
account.setAddress(address);
|
|
|
account.setAddressType(addressType);
|