|
@@ -17,14 +17,17 @@ import com.crm.rely.backend.util.HttpUtil;
|
|
|
import com.crm.rely.backend.util.MapUtil;
|
|
import com.crm.rely.backend.util.MapUtil;
|
|
|
import com.crm.rely.backend.model.constant.ConfigConstants;
|
|
import com.crm.rely.backend.model.constant.ConfigConstants;
|
|
|
import com.crm.rely.backend.model.constant.SettlementConstant;
|
|
import com.crm.rely.backend.model.constant.SettlementConstant;
|
|
|
|
|
+import com.crm.rely.backend.model.dto.settlement.vaultody.VaultodyOrderSerialDto;
|
|
|
import com.crm.rely.backend.model.dto.vaultody.TxResult;
|
|
import com.crm.rely.backend.model.dto.vaultody.TxResult;
|
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayPropertyEntity;
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayPropertyEntity;
|
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayWithdrawAddressPropertyEntity;
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayWithdrawAddressPropertyEntity;
|
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayWithdrawPropertyEntity;
|
|
import com.crm.rely.backend.model.entity.property.vaultody.VaultodyPayWithdrawPropertyEntity;
|
|
|
import com.crm.rely.backend.model.entity.settlement.vaultody.VaultodyDepositRequestEntity;
|
|
import com.crm.rely.backend.model.entity.settlement.vaultody.VaultodyDepositRequestEntity;
|
|
|
|
|
+import com.crm.rely.backend.model.entity.settlement.vaultody.VaultodyOrderSerialQueryEntity;
|
|
|
import com.crm.rely.backend.model.entity.settlement.vaultody.VaultodyWithdrawRequestEntity;
|
|
import com.crm.rely.backend.model.entity.settlement.vaultody.VaultodyWithdrawRequestEntity;
|
|
|
import com.crm.rely.backend.model.util.EncryptionHashQueryUtil;
|
|
import com.crm.rely.backend.model.util.EncryptionHashQueryUtil;
|
|
|
import com.crm.settlement.dao.mapper.FinanceDepositAddressMapper;
|
|
import com.crm.settlement.dao.mapper.FinanceDepositAddressMapper;
|
|
|
|
|
+import com.crm.settlement.dao.mapper.SettlementDepositRecordMapper;
|
|
|
import com.crm.settlement.dao.repository.FinanceDepositAddressRepository;
|
|
import com.crm.settlement.dao.repository.FinanceDepositAddressRepository;
|
|
|
import com.crm.settlement.dao.repository.SettlementDepositRecordRepository;
|
|
import com.crm.settlement.dao.repository.SettlementDepositRecordRepository;
|
|
|
import com.crm.settlement.dao.repository.SettlementWithdrawRecordRepository;
|
|
import com.crm.settlement.dao.repository.SettlementWithdrawRecordRepository;
|
|
@@ -67,6 +70,8 @@ public class VaultodyServiceImpl extends BaseSettlementServiceImpl implements Va
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private SettlementWithdrawRecordRepository settlementWithdrawRecordRepository;
|
|
private SettlementWithdrawRecordRepository settlementWithdrawRecordRepository;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
|
+ private SettlementDepositRecordMapper settlementDepositRecordMapper;
|
|
|
|
|
+ @Autowired
|
|
|
private MqSendService mqSendService;
|
|
private MqSendService mqSendService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -320,6 +325,60 @@ public class VaultodyServiceImpl extends BaseSettlementServiceImpl implements Va
|
|
|
return BaseResultDto.success();
|
|
return BaseResultDto.success();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public BaseResultDto getOrderSerialByTransactionIds(VaultodyOrderSerialQueryEntity entity) throws Exception {
|
|
|
|
|
+ if (entity == null || StringUtils.isBlank(entity.getMerchantId())
|
|
|
|
|
+ || entity.getRequestTime() == null || StringUtils.isBlank(entity.getSign())) {
|
|
|
|
|
+ return BaseResultDto.error("params error");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ long serverTimestamp = System.currentTimeMillis();
|
|
|
|
|
+ long timeDiff = Math.abs(serverTimestamp - entity.getRequestTime());
|
|
|
|
|
+ if (timeDiff > 60000) {
|
|
|
|
|
+ log.error("getOrderSerialByTransactionIds time out:{},serverTime:{},requestTime:{},diff:{}",
|
|
|
|
|
+ JSON.toJSONString(entity), serverTimestamp, entity.getRequestTime(), timeDiff);
|
|
|
|
|
+ return BaseResultDto.error("Time out");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (CollectionUtils.isEmpty(entity.getTransactionIds())) {
|
|
|
|
|
+ return BaseResultDto.error("transaction serials is empty");
|
|
|
|
|
+ }
|
|
|
|
|
+ verifySign(entity.getSign(), getOrderSerialSignString(entity), entity.getMerchantId());
|
|
|
|
|
+ List<VaultodyOrderSerialDto> dtos = settlementDepositRecordMapper.getOrderSerialByTransactionIds(
|
|
|
|
|
+ entity.getTransactionIds());
|
|
|
|
|
+ Map<String, String> data = new TreeMap<>();
|
|
|
|
|
+ if (!CollectionUtils.isEmpty(dtos)) {
|
|
|
|
|
+ for (VaultodyOrderSerialDto dto : dtos) {
|
|
|
|
|
+ data.put(dto.getTransactionId(), dto.getSerial());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ return BaseResultDto.success(getOrderSerialResponseMap(entity.getMerchantId(), data));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Map<String, Object> getOrderSerialResponseMap(String merchantId, Map<String, String> data) throws ServiceException {
|
|
|
|
|
+ Long requestTime = System.currentTimeMillis();
|
|
|
|
|
+ Map<String, Object> responseMap = new LinkedHashMap<>();
|
|
|
|
|
+ responseMap.put("data", data);
|
|
|
|
|
+ responseMap.put("requestTime", requestTime);
|
|
|
|
|
+ responseMap.put("sign", getSign(getOrderSerialResponseSignMap(merchantId, requestTime, data), merchantId));
|
|
|
|
|
+ return responseMap;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private Map<String, String> getOrderSerialResponseSignMap(String merchantId, Long requestTime, Map<String, String> data) {
|
|
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
|
|
+ map.put("merchantId", merchantId);
|
|
|
|
|
+ map.put("requestTime", String.valueOf(requestTime));
|
|
|
|
|
+ map.put("data", data == null ? "" :JSON.toJSONString(data));
|
|
|
|
|
+ return map;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private String getOrderSerialSignString(VaultodyOrderSerialQueryEntity entity) {
|
|
|
|
|
+ Map<String, String> map = new HashMap<>();
|
|
|
|
|
+ map.put("merchantId", entity.getMerchantId());
|
|
|
|
|
+ map.put("requestTime", String.valueOf(entity.getRequestTime()));
|
|
|
|
|
+ map.put("transactionIds", StringUtils.join(entity.getTransactionIds(), ","));
|
|
|
|
|
+ return MapUtil.getStringSortByKey(map);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 分配地址
|
|
* 分配地址
|