Commit de507dea authored by Administrator's avatar Administrator

创建项目

parent 6241656a
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<mapping class="cn.quant.baa.pay.jpa.entity.DictionaryEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.DictionaryEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.CustomerEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.CustomerEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.AccountEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.AccountEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.PayHistoryEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.PayGoodsDetailEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.PayGoodsDetailEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.StatusCodeEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.StatusCodeEntity"/>
<mapping class="cn.quant.baa.pay.jpa.entity.BatchCycleTriggerEntity"/> <mapping class="cn.quant.baa.pay.jpa.entity.BatchCycleTriggerEntity"/>
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
<packaging>jar</packaging> <packaging>jar</packaging>
<dependencies> <dependencies>
<dependency> <dependency>
...@@ -100,14 +99,14 @@ ...@@ -100,14 +99,14 @@
<!--jpa--> <!--jpa-->
<!--<dependency>--> <!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>--> <!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-data-jpa</artifactId>--> <!--<artifactId>spring-boot-starter-data-jpa</artifactId>-->
<!--<exclusions>--> <!--<exclusions>-->
<!--<exclusion>--> <!--<exclusion>-->
<!--<groupId>org.apache.tomcat</groupId>--> <!--<groupId>org.apache.tomcat</groupId>-->
<!--<artifactId>tomcat-jdbc</artifactId>--> <!--<artifactId>tomcat-jdbc</artifactId>-->
<!--</exclusion>--> <!--</exclusion>-->
<!--</exclusions>--> <!--</exclusions>-->
<!--</dependency>--> <!--</dependency>-->
<dependency> <dependency>
<groupId>cn.quant.spring.data</groupId> <groupId>cn.quant.spring.data</groupId>
......
package cn.quant.baa.pay.acquirer; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity; import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.model.web.*; import cn.quant.baa.pay.model.web.*;
/** /**
...@@ -9,7 +9,7 @@ import cn.quant.baa.pay.model.web.*; ...@@ -9,7 +9,7 @@ import cn.quant.baa.pay.model.web.*;
public interface Acquirer { public interface Acquirer {
Object code(); Object code();
ChannelResponse pay(PayRequestData payRequestData, PayHistoryEntity payHistoryEntity) throws Exception; ChannelResponse pay(PayRequestData payRequestData, TransactionSummaryEntity payHistoryEntity) throws Exception;
ChannelResponse refund(RefundRequestData refundRequestData) throws Exception; ChannelResponse refund(RefundRequestData refundRequestData) throws Exception;
ChannelResponse checkPay(CheckPayRequestData checkPayRequestData) throws Exception; ChannelResponse checkPay(CheckPayRequestData checkPayRequestData) throws Exception;
ChannelResponse checkRefund(CheckRefundRequestData checkRefundRequestData) throws Exception; ChannelResponse checkRefund(CheckRefundRequestData checkRefundRequestData) throws Exception;
......
package cn.quant.baa.pay.acquirer; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
/** /**
......
package cn.quant.baa.pay.acquirer; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity; import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.model.web.*; import cn.quant.baa.pay.model.web.*;
import cn.quant.spring.NotSupportedException; import cn.quant.spring.NotSupportedException;
import cn.quant.spring.security.Base64Cipher; import cn.quant.spring.security.Base64Cipher;
...@@ -64,7 +64,7 @@ public class MerchantAcquirer implements Acquirer { ...@@ -64,7 +64,7 @@ public class MerchantAcquirer implements Acquirer {
} }
@Override @Override
public ChannelResponse pay(PayRequestData request, PayHistoryEntity history) throws Exception { public ChannelResponse pay(PayRequestData request, TransactionSummaryEntity history) throws Exception {
ChannelResponse response = acquirers.get(request.getChanId()).pay(request, history); ChannelResponse response = acquirers.get(request.getChanId()).pay(request, history);
response.setOrderNo(String.valueOf(history.getTransactionId())); response.setOrderNo(String.valueOf(history.getTransactionId()));
return response; return response;
......
...@@ -3,7 +3,7 @@ package cn.quant.baa.pay.acquirer.alipay; ...@@ -3,7 +3,7 @@ package cn.quant.baa.pay.acquirer.alipay;
import cn.quant.baa.pay.acquirer.AcquirerProperties; import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.acquirer.ChannelResponse; import cn.quant.baa.pay.acquirer.ChannelResponse;
import cn.quant.baa.pay.acquirer.MerchantAcquirer; import cn.quant.baa.pay.acquirer.MerchantAcquirer;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity; import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.model.web.*; import cn.quant.baa.pay.model.web.*;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
...@@ -114,7 +114,7 @@ public class AlipayMerchantAcquirer extends MerchantAcquirer { ...@@ -114,7 +114,7 @@ public class AlipayMerchantAcquirer extends MerchantAcquirer {
} }
@Override @Override
public ChannelResponse pay(PayRequestData payRequestData, PayHistoryEntity payHistoryEntity) { public ChannelResponse pay(PayRequestData payRequestData, TransactionSummaryEntity payHistoryEntity) {
ObjectNode bodyNode = objectMapper.createObjectNode(); ObjectNode bodyNode = objectMapper.createObjectNode();
bodyNode.put("out_trade_no", payRequestData.getOutTradeNo()); bodyNode.put("out_trade_no", payRequestData.getOutTradeNo());
bodyNode.put("total_amount", payRequestData.getAmount()); bodyNode.put("total_amount", payRequestData.getAmount());
......
...@@ -4,8 +4,7 @@ import cn.quant.baa.pay.acquirer.AcquirerProperties; ...@@ -4,8 +4,7 @@ import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.acquirer.ChannelResponse; import cn.quant.baa.pay.acquirer.ChannelResponse;
import cn.quant.baa.pay.acquirer.MerchantAcquirer; import cn.quant.baa.pay.acquirer.MerchantAcquirer;
import cn.quant.baa.pay.config.DictionaryViewer; import cn.quant.baa.pay.config.DictionaryViewer;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity; import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.jpa.entity.PayHistoryIds;
import cn.quant.baa.pay.model.dto.DictionaryItemDTO; import cn.quant.baa.pay.model.dto.DictionaryItemDTO;
import cn.quant.baa.pay.model.web.*; import cn.quant.baa.pay.model.web.*;
import cn.quant.spring.NullException; import cn.quant.spring.NullException;
...@@ -100,7 +99,7 @@ public class WeiXinMerchantAcquirer extends MerchantAcquirer { ...@@ -100,7 +99,7 @@ public class WeiXinMerchantAcquirer extends MerchantAcquirer {
} }
@Override @Override
public ChannelResponse pay(PayRequestData request, PayHistoryEntity history) throws Exception { public ChannelResponse pay(PayRequestData request, TransactionSummaryEntity history) throws Exception {
ObjectNode bodyNode = objectMapper.createObjectNode(); ObjectNode bodyNode = objectMapper.createObjectNode();
// 转换金额为分 // 转换金额为分
BigInteger amount = new BigDecimal(request.getAmount()).multiply(new BigDecimal(100)).toBigInteger(); BigInteger amount = new BigDecimal(request.getAmount()).multiply(new BigDecimal(100)).toBigInteger();
......
...@@ -19,7 +19,7 @@ import static cn.quant.baa.pay.Constant.MINI_LOCAL_DATE; ...@@ -19,7 +19,7 @@ import static cn.quant.baa.pay.Constant.MINI_LOCAL_DATE;
*/ */
public class EntityBuilder { public class EntityBuilder {
public static int nextTxnNo(AccountEntity account, PayHistoryEntity history) { public static int nextTxnNo(AccountEntity account, TransactionSummaryEntity history) {
Integer txnNo = account.getNextTxnNo(); Integer txnNo = account.getNextTxnNo();
account.setTxnNo(txnNo); account.setTxnNo(txnNo);
account.setNextTxnNo(txnNo + 1); account.setNextTxnNo(txnNo + 1);
...@@ -60,7 +60,7 @@ public class EntityBuilder { ...@@ -60,7 +60,7 @@ public class EntityBuilder {
return account; return account;
} }
public static PayHistoryEntity payHistory(AccountEntity account, PayHistoryIds ids, long historyId, PayRequestData data, AcquirerProperties properties public static TransactionSummaryEntity payHistory(AccountEntity account, long historyId, PayRequestData data, AcquirerProperties properties
, TransactionSession session) { , TransactionSession session) {
BigDecimal discount = new BigDecimal(data.getDiscounts()); BigDecimal discount = new BigDecimal(data.getDiscounts());
...@@ -70,8 +70,9 @@ public class EntityBuilder { ...@@ -70,8 +70,9 @@ public class EntityBuilder {
BigDecimal amount = new BigDecimal(data.getAmount()); BigDecimal amount = new BigDecimal(data.getAmount());
String signer = data.getGoodsSigner(); String signer = data.getGoodsSigner();
PayHistoryEntity entity = new PayHistoryEntity(); TransactionSummaryEntity entity = new TransactionSummaryEntity();
entity.setIds(ids); entity.setInstitutionId(properties.getInstitutionId());
entity.setProductId(properties.getProductId());
entity.setAccountId(account.getAccountId()); entity.setAccountId(account.getAccountId());
entity.setAddress(data.getAddress()); entity.setAddress(data.getAddress());
entity.setAttachText(data.getAttach()); entity.setAttachText(data.getAttach());
...@@ -80,7 +81,9 @@ public class EntityBuilder { ...@@ -80,7 +81,9 @@ public class EntityBuilder {
entity.setCustomerGenFlag(true); entity.setCustomerGenFlag(true);
entity.setChannelId(properties.getMchChanId()); entity.setChannelId(properties.getMchChanId());
entity.setDiscAmount(discount); entity.setDiscAmount(discount);
entity.setExternalOrderNo(data.getOutTradeNo());
entity.setGenFeeAmount(BigDecimal.ZERO); entity.setGenFeeAmount(BigDecimal.ZERO);
entity.setGenOrderNo("");
entity.setGoodsSigner(signer); entity.setGoodsSigner(signer);
entity.setShopName(data.getShopName()); entity.setShopName(data.getShopName());
entity.setMobilePhone(data.getPhoneNo()); entity.setMobilePhone(data.getPhoneNo());
...@@ -131,7 +134,7 @@ public class EntityBuilder { ...@@ -131,7 +134,7 @@ public class EntityBuilder {
return entity; return entity;
} }
public static BatchCycleTriggerEntity payTrigger(Long triggerId, PayHistoryEntity history) { public static BatchCycleTriggerEntity payTrigger(Long triggerId, TransactionSummaryEntity history) {
Date now = DateUtils.now(); Date now = DateUtils.now();
BatchCycleTriggerEntity entity = new BatchCycleTriggerEntity(); BatchCycleTriggerEntity entity = new BatchCycleTriggerEntity();
entity.setAccountId(history.getAccountId()); entity.setAccountId(history.getAccountId());
......
package cn.quant.baa.pay.jpa.entity;
import cn.quant.spring.data.jpa.entity.PrimaryIds;
import cn.quant.spring.util.StringUtils;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;
import java.util.Objects;
/**
* Created by Administrator on 2021/8/26 0026.
*/
@Embeddable
public class PayHistoryIds extends PrimaryIds implements Serializable {
public final static String CLASS_NAME = PayHistoryEntity.class.getSimpleName();
@Column(name = "INSTITUTION_ID", nullable = false, updatable = false, length = 4)
private String institutionId;
@Column(name = "PRODUCT_ID", nullable = false, updatable = false, length = 4)
private String productId;
@Column(name = "EXTERNAL_ORDER_NO", nullable = false, updatable = false, length = 64)
private String externalOrderNo;
public String getInstitutionId() {
return institutionId;
}
public void setInstitutionId(String institutionId) {
this.institutionId = institutionId;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getExternalOrderNo() {
return externalOrderNo;
}
public void setExternalOrderNo(String externalOrderNo) {
this.externalOrderNo = externalOrderNo;
}
@Override
public String getPersistentKey() {
return StringUtils.toDelimitedString(CLASS_NAME, institutionId, productId, externalOrderNo);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PayHistoryIds that = (PayHistoryIds) o;
return Objects.equals(institutionId, that.institutionId) &&
Objects.equals(productId, that.productId) &&
Objects.equals(externalOrderNo, that.externalOrderNo);
}
@Override
public int hashCode() {
return Objects.hash(CLASS_NAME, institutionId, productId, externalOrderNo);
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("PayHistoryIds{");
sb.append("institutionId='").append(institutionId).append('\'');
sb.append(", productId='").append(productId).append('\'');
sb.append(", externalOrderNo='").append(externalOrderNo).append('\'');
sb.append('}');
return sb.toString();
}
}
...@@ -5,6 +5,7 @@ import cn.quant.baa.pay.dict.CurrencyCode; ...@@ -5,6 +5,7 @@ import cn.quant.baa.pay.dict.CurrencyCode;
import cn.quant.baa.pay.dict.PayMethod; import cn.quant.baa.pay.dict.PayMethod;
import cn.quant.baa.pay.dict.StatusCode; import cn.quant.baa.pay.dict.StatusCode;
import cn.quant.spring.data.jpa.entity.DescribablePartitionEntity; import cn.quant.spring.data.jpa.entity.DescribablePartitionEntity;
import cn.quant.spring.util.StringUtils;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import javax.persistence.*; import javax.persistence.*;
...@@ -20,16 +21,33 @@ import java.util.Objects; ...@@ -20,16 +21,33 @@ import java.util.Objects;
* Created by Administrator on 2021/8/26 0026. * Created by Administrator on 2021/8/26 0026.
*/ */
@Entity @Entity
@Table(name = "pay_history") @Table(name = "transaction_summary")
public class PayHistoryEntity extends DescribablePartitionEntity implements Serializable{ public class TransactionSummaryEntity extends DescribablePartitionEntity implements Serializable {
private static final long serialVersionUID = 6297586921507136281L; private static final long serialVersionUID = 6297586921507136281L;
@EmbeddedId
private PayHistoryIds ids; private static final String CLASS_NAME = TransactionSummaryEntity.class.getSimpleName();
@Column(name = "TRANSACTION_ID", nullable = false, updatable = false) @Column(name = "TRANSACTION_ID", nullable = false, updatable = false)
private Long transactionId; private Long transactionId;
@Id
@Column(name = "CHECK_CODE", nullable = false, updatable = false, length = 32)
private String checkCode;
@Column(name = "INSTITUTION_ID", nullable = false, updatable = false, length = 4)
private String institutionId;
@Column(name = "PRODUCT_ID", nullable = false, updatable = false, length = 4)
private String productId;
@Column(name = "EXTERNAL_ORDER_NO", nullable = false, updatable = false, length = 64)
private String externalOrderNo;
@Column(name = "GEN_ORDER_NO", nullable = false, updatable = false, length = 64)
private String genOrderNo;
@Column(name = "ACCOUNT_ID", nullable = false, updatable = false) @Column(name = "ACCOUNT_ID", nullable = false, updatable = false)
private Long accountId; private Long accountId;
...@@ -122,14 +140,6 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri ...@@ -122,14 +140,6 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri
@Column(name = "ATTACH_TEXT", nullable = true, length = 512) @Column(name = "ATTACH_TEXT", nullable = true, length = 512)
private String attachText; private String attachText;
public PayHistoryIds getIds() {
return ids;
}
public void setIds(PayHistoryIds ids) {
this.ids = ids;
}
public Long getTransactionId() { public Long getTransactionId() {
return transactionId; return transactionId;
} }
...@@ -138,6 +148,46 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri ...@@ -138,6 +148,46 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri
this.transactionId = transactionId; this.transactionId = transactionId;
} }
public String getCheckCode() {
return checkCode;
}
public void setCheckCode(String checkCode) {
this.checkCode = checkCode;
}
public String getInstitutionId() {
return institutionId;
}
public void setInstitutionId(String institutionId) {
this.institutionId = institutionId;
}
public String getProductId() {
return productId;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getExternalOrderNo() {
return externalOrderNo;
}
public void setExternalOrderNo(String externalOrderNo) {
this.externalOrderNo = externalOrderNo;
}
public String getGenOrderNo() {
return genOrderNo;
}
public void setGenOrderNo(String genOrderNo) {
this.genOrderNo = genOrderNo;
}
public Long getAccountId() { public Long getAccountId() {
return accountId; return accountId;
} }
...@@ -190,8 +240,8 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri ...@@ -190,8 +240,8 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri
return txnType; return txnType;
} }
public void setTxnType(String txnTypeCode) { public void setTxnType(String txnType) {
this.txnType = txnTypeCode; this.txnType = txnType;
} }
public String getTxnCode() { public String getTxnCode() {
...@@ -334,8 +384,8 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri ...@@ -334,8 +384,8 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri
return shopName; return shopName;
} }
public void setShopName(String merchantName) { public void setShopName(String shopName) {
this.shopName = merchantName; this.shopName = shopName;
} }
public String getMobilePhone() { public String getMobilePhone() {
...@@ -372,22 +422,29 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri ...@@ -372,22 +422,29 @@ public class PayHistoryEntity extends DescribablePartitionEntity implements Seri
@Override @Override
public String getPersistentKey() { public String getPersistentKey() {
return ids.getPersistentKey(); return StringUtils.toDelimitedString(CLASS_NAME, institutionId, productId, externalOrderNo);
} }
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
PayHistoryEntity that = (PayHistoryEntity) o; TransactionSummaryEntity that = (TransactionSummaryEntity) o;
return Objects.equals(ids, that.ids); return Objects.equals(institutionId, that.institutionId) &&
Objects.equals(productId, that.productId) &&
Objects.equals(externalOrderNo, that.externalOrderNo);
} }
@Override @Override
public String toString() { public String toString() {
final StringBuilder sb = new StringBuilder("PayHistoryEntity{"); final StringBuilder sb = new StringBuilder("TransactionSummaryEntity{");
sb.append("ids=").append(ids); sb.append("transactionId=").append(transactionId);
sb.append(", transactionId=").append(transactionId); sb.append(", checkCode='").append(checkCode).append('\'');
sb.append(", institutionId='").append(institutionId).append('\'');
sb.append(", productId='").append(productId).append('\'');
sb.append(", externalOrderNo='").append(externalOrderNo).append('\'');
sb.append(", genOrderNo='").append(genOrderNo).append('\'');
sb.append(", accountId=").append(accountId); sb.append(", accountId=").append(accountId);
sb.append(", channelId=").append(channelId); sb.append(", channelId=").append(channelId);
sb.append(", subject='").append(subject).append('\''); sb.append(", subject='").append(subject).append('\'');
......
package cn.quant.baa.pay.jpa.repository; package cn.quant.baa.pay.jpa.repository;
import cn.quant.baa.pay.jpa.entity.BatchCycleTriggerEntity; import cn.quant.baa.pay.jpa.entity.BatchCycleTriggerEntity;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity;
import cn.quant.baa.pay.jpa.entity.PayHistoryIds;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
......
package cn.quant.baa.pay.jpa.repository; package cn.quant.baa.pay.jpa.repository;
import cn.quant.baa.pay.jpa.entity.PayFeatureEntity; import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.jpa.entity.PayFeatureIds;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity;
import cn.quant.baa.pay.jpa.entity.PayHistoryIds;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
/** /**
* Created by Administrator on 2021/8/22 0022. * Created by Administrator on 2021/8/22 0022.
*/ */
@Repository @Repository
public interface PayHistoryRepository extends JpaRepository<PayHistoryEntity, PayHistoryIds> { public interface TransactionSummaryRepository extends JpaRepository<TransactionSummaryEntity, String> {
// @Query("") // @Query("")
// int counAAAt(PayHistoryIds ids); // int counAAAt(TransactionSummaryIds ids);
} }
package cn.quant.baa.pay;
import java.util.zip.CRC32;
/**
* Created by Administrator on 2021/9/26 0026.
*/
public class Test {
public static void main(String[] args) {
CRC32 crc32 = new CRC32();
crc32.update("123".getBytes());
System.out.println(Long.toHexString(crc32.getValue()));
}
}
\ No newline at end of file
...@@ -63,9 +63,8 @@ public class TransactionController extends BusinessController { ...@@ -63,9 +63,8 @@ public class TransactionController extends BusinessController {
AcquirerProperties properties = check(requestData); AcquirerProperties properties = check(requestData);
String institutionId = properties.getInstitutionId(); String institutionId = properties.getInstitutionId();
String productId = properties.getProductId(); String productId = properties.getProductId();
String buyerId = requestData.getBuyerId();
String outTradeNo = requestData.getOutTradeNo(); String outTradeNo = requestData.getOutTradeNo();
String redisKey = StringUtils.toDelimitedString(REDIS_NAMESPACE_PAY, institutionId, productId, buyerId, outTradeNo); String redisKey = StringUtils.toDelimitedString(REDIS_NAMESPACE_PAY, institutionId, productId, outTradeNo);
String redisValue = stringRedisTemplate.opsForValue().get(redisKey); String redisValue = stringRedisTemplate.opsForValue().get(redisKey);
if (redisValue != null) { if (redisValue != null) {
return ResponseEntity.ok(deserialize(redisValue)); return ResponseEntity.ok(deserialize(redisValue));
......
...@@ -5,31 +5,21 @@ import cn.quant.baa.pay.acquirer.ChannelResponse; ...@@ -5,31 +5,21 @@ import cn.quant.baa.pay.acquirer.ChannelResponse;
import cn.quant.baa.pay.acquirer.MerchantAcquirer; import cn.quant.baa.pay.acquirer.MerchantAcquirer;
import cn.quant.baa.pay.context.TransactionSession; import cn.quant.baa.pay.context.TransactionSession;
import cn.quant.baa.pay.jpa.EntityBuilder; import cn.quant.baa.pay.jpa.EntityBuilder;
import cn.quant.baa.pay.jpa.entity.*; import cn.quant.baa.pay.jpa.entity.AccountEntity;
import cn.quant.baa.pay.jpa.entity.BatchCycleTriggerEntity;
import cn.quant.baa.pay.jpa.entity.PayGoodsDetailEntity;
import cn.quant.baa.pay.jpa.entity.TransactionSummaryEntity;
import cn.quant.baa.pay.model.web.*; import cn.quant.baa.pay.model.web.*;
import cn.quant.baa.pay.util.AssertUtils; import cn.quant.baa.pay.util.AssertUtils;
import cn.quant.spring.util.StringUtils;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.DigestUtils;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
...@@ -50,11 +40,13 @@ public class TransactionService extends BusinessService { ...@@ -50,11 +40,13 @@ public class TransactionService extends BusinessService {
private MerchantAcquirer acquirer; private MerchantAcquirer acquirer;
@Transactional(propagation = Propagation.NOT_SUPPORTED) @Transactional(propagation = Propagation.NOT_SUPPORTED)
public void check(PayHistoryIds ids, TransactionSession session) { public String check(String institutionId, String productId, String tradeNo, TransactionSession session) {
PayHistoryEntity historyEntity = session.findOne(PayHistoryEntity.class, ids); String md5 = DigestUtils.md5DigestAsHex(String.join(institutionId, productId, tradeNo).getBytes());
TransactionSummaryEntity historyEntity = session.findOne(TransactionSummaryEntity.class, md5);
if (historyEntity != null) { if (historyEntity != null) {
AssertUtils.throwMessage(EXIST_ORDER, ids.getInstitutionId(), ids.getProductId(), ids.getExternalOrderNo()); AssertUtils.throwMessage(EXIST_ORDER, institutionId, productId, tradeNo);
} }
return md5;
} }
@Transactional(propagation = Propagation.REQUIRES_NEW) @Transactional(propagation = Propagation.REQUIRES_NEW)
...@@ -70,11 +62,8 @@ public class TransactionService extends BusinessService { ...@@ -70,11 +62,8 @@ public class TransactionService extends BusinessService {
String buyerId = data.getBuyerId(); String buyerId = data.getBuyerId();
String outTradeNo = data.getOutTradeNo(); String outTradeNo = data.getOutTradeNo();
PayHistoryIds ids = new PayHistoryIds();
ids.setInstitutionId(institutionId); String checkCode = check(institutionId, productId, outTradeNo, session);
ids.setProductId(productId);
ids.setExternalOrderNo(outTradeNo);
check(ids, session);
prepare(institutionId, productId, buyerId, session); prepare(institutionId, productId, buyerId, session);
...@@ -96,12 +85,13 @@ public class TransactionService extends BusinessService { ...@@ -96,12 +85,13 @@ public class TransactionService extends BusinessService {
details.add(detailEntity); details.add(detailEntity);
} }
PayHistoryEntity history = EntityBuilder.payHistory(account, ids, historyId, data, properties, session); TransactionSummaryEntity history = EntityBuilder.payHistory(account, historyId, data, properties, session);
ChannelResponse responseData = acquirer.pay(data, history); ChannelResponse responseData = acquirer.pay(data, history);
if (responseData.getSuccess()) { if (responseData.getSuccess()) {
EntityBuilder.nextTxnNo(account, history); EntityBuilder.nextTxnNo(account, history);
history.setCheckCode(checkCode);
history.setPayDueTime(LocalDateTime.now().plus(PAY_DUE_TIME)); history.setPayDueTime(LocalDateTime.now().plus(PAY_DUE_TIME));
history.setRequestId(responseData.getRequestId()); history.setRequestId(responseData.getRequestId());
history.setDescText(responseData.getNotification()); history.setDescText(responseData.getNotification());
...@@ -126,7 +116,7 @@ public class TransactionService extends BusinessService { ...@@ -126,7 +116,7 @@ public class TransactionService extends BusinessService {
// //
// TransactionSession session = payHistory(data); // TransactionSession session = payHistory(data);
// //
// PayHistoryEntity payHistoryEntity = session.getProperty(PayHistoryEntity.class, PayHistoryEntity.class); // TransactionSummaryEntity payHistoryEntity = session.getProperty(TransactionSummaryEntity.class, TransactionSummaryEntity.class);
// System.currentTimeMillis(); // System.currentTimeMillis();
// return acquirer.pay(data, payHistoryEntity); // return acquirer.pay(data, payHistoryEntity);
// } // }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment