Commit 7188ae0e authored by Administrator's avatar Administrator

创建项目

parent 09570a5b
package cn.quant.baa.pay.config; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.model.MerchantAcquirerProfile;
import cn.quant.spring.ExistsException; import cn.quant.spring.ExistsException;
import cn.quant.spring.util.StringUtils; import cn.quant.spring.util.StringUtils;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
...@@ -16,18 +15,18 @@ import java.util.Map; ...@@ -16,18 +15,18 @@ import java.util.Map;
/** /**
* Created by Administrator on 2021/8/22 0022. * Created by Administrator on 2021/8/22 0022.
*/ */
public class MerchantAcquirerBuilder { public class AcquirerConfiguration {
private Table<String, String, Collection<MerchantAcquirerProfile>> bigTable = Tables.newCustomTable(Maps.newHashMap() private Table<String, String, Collection<AcquirerProperties>> bigTable = Tables.newCustomTable(Maps.newHashMap()
, new Supplier() { , new Supplier() {
public Map<String, Collection<MerchantAcquirerProfile>> get() { public Map<String, Collection<AcquirerProperties>> get() {
return Maps.newLinkedHashMap(); return Maps.newLinkedHashMap();
} }
}); });
private Map<Long, MerchantAcquirerProfile> map = new HashMap<>(); private Map<Long, AcquirerProperties> map = new HashMap<>();
void add(MerchantAcquirerProfile profile) { void add(AcquirerProperties profile) {
if (map.containsKey(profile.getMchChanId())) { if (map.containsKey(profile.getMchChanId())) {
throw new ExistsException(StringUtils.format("Existing merchant acquirer {}.", profile.getMchChanId())); throw new ExistsException(StringUtils.format("Existing merchant acquirer {}.", profile.getMchChanId()));
} }
...@@ -35,7 +34,7 @@ public class MerchantAcquirerBuilder { ...@@ -35,7 +34,7 @@ public class MerchantAcquirerBuilder {
String appId = profile.getPayAppId(); String appId = profile.getPayAppId();
String chanCode = profile.getPayChanCode(); String chanCode = profile.getPayChanCode();
Collection<MerchantAcquirerProfile> profiles = bigTable.get(appId, chanCode); Collection<AcquirerProperties> profiles = bigTable.get(appId, chanCode);
if (profiles == null) { if (profiles == null) {
profiles = new LinkedList<>(); profiles = new LinkedList<>();
bigTable.put(appId, chanCode, profiles); bigTable.put(appId, chanCode, profiles);
...@@ -43,19 +42,19 @@ public class MerchantAcquirerBuilder { ...@@ -43,19 +42,19 @@ public class MerchantAcquirerBuilder {
profiles.add(profile); profiles.add(profile);
} }
public Map<String, Collection<MerchantAcquirerProfile>> get(String mchId, String channel) { public Map<String, Collection<AcquirerProperties>> get(String mchId, String channel) {
Collection<MerchantAcquirerProfile> profiles = bigTable.get(mchId, channel); Collection<AcquirerProperties> profiles = bigTable.get(mchId, channel);
return toMap(profiles); return toMap(profiles);
} }
public Map<String, Collection<MerchantAcquirerProfile>> get(String mchId) { public Map<String, Collection<AcquirerProperties>> get(String mchId) {
return bigTable.row(mchId); return bigTable.row(mchId);
} }
public Map<String, Collection<MerchantAcquirerProfile>> toMap(Collection<MerchantAcquirerProfile> profiles) { public Map<String, Collection<AcquirerProperties>> toMap(Collection<AcquirerProperties> profiles) {
Map<String, Collection<MerchantAcquirerProfile>> map = new HashMap<>(); Map<String, Collection<AcquirerProperties>> map = new HashMap<>();
for (MerchantAcquirerProfile profile : profiles) { for (AcquirerProperties profile : profiles) {
Collection<MerchantAcquirerProfile> collection = map.get(profile.getPayChanCode()); Collection<AcquirerProperties> collection = map.get(profile.getPayChanCode());
if (collection == null) { if (collection == null) {
collection = new LinkedList<>(); collection = new LinkedList<>();
map.put(profile.getPayChanCode(), collection); map.put(profile.getPayChanCode(), collection);
...@@ -65,7 +64,7 @@ public class MerchantAcquirerBuilder { ...@@ -65,7 +64,7 @@ public class MerchantAcquirerBuilder {
return map; return map;
} }
public MerchantAcquirerProfile get(Long channelId) { public AcquirerProperties get(Long channelId) {
return map.get(channelId); return map.get(channelId);
} }
}; };
\ No newline at end of file
package cn.quant.baa.pay.config; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.jpa.entity.*; import cn.quant.baa.pay.jpa.entity.*;
import cn.quant.baa.pay.model.MerchantAcquirerProfile;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Table; import com.google.common.collect.Table;
...@@ -14,7 +13,7 @@ import java.util.Map; ...@@ -14,7 +13,7 @@ import java.util.Map;
/** /**
* Created by Administrator on 2021/8/22 0022. * Created by Administrator on 2021/8/22 0022.
*/ */
public class AcquirerBuilder { public class AcquirerConfigurer {
private Table<Class, Object, Object> bigTable = Tables.newCustomTable(Maps.newHashMap(), new Supplier() { private Table<Class, Object, Object> bigTable = Tables.newCustomTable(Maps.newHashMap(), new Supplier() {
public Map<Object, Object> get() { public Map<Object, Object> get() {
...@@ -23,22 +22,22 @@ public class AcquirerBuilder { ...@@ -23,22 +22,22 @@ public class AcquirerBuilder {
}); });
public MerchantAcquirerBuilder build(Collection<MchChannelEntity> entities){ public AcquirerConfiguration configure(Collection<MchChannelEntity> entities){
MerchantAcquirerBuilder builder = new MerchantAcquirerBuilder(); AcquirerConfiguration configuration = new AcquirerConfiguration();
for (MchChannelEntity entity : entities) { for (MchChannelEntity entity : entities) {
MerchantAcquirerProfile profile = build(entity); AcquirerProperties profile = configure(entity);
builder.add(profile); configuration.add(profile);
} }
return builder; return configuration;
} }
public void release(){ public void release(){
bigTable.clear(); bigTable.clear();
} }
public MerchantAcquirerProfile build(MchChannelEntity entity) { public AcquirerProperties configure(MchChannelEntity entity) {
MerchantAcquirerProfile profile = new MerchantAcquirerProfile(); AcquirerProperties profile = new AcquirerProperties();
profile.setMchChanId(entity.getId()); profile.setMchChanId(entity.getId());
profile.setPayChanCode(entity.getPayChanCode()); profile.setPayChanCode(entity.getPayChanCode());
profile.setPayAcctId(entity.getPayAcctId()); profile.setPayAcctId(entity.getPayAcctId());
...@@ -81,11 +80,11 @@ public class AcquirerBuilder { ...@@ -81,11 +80,11 @@ public class AcquirerBuilder {
} }
public class PayApp { public class PayApp {
public AcquirerBuilder apps(Collection<PayAppEntity> entities) { public AcquirerConfigurer apps(Collection<PayAppEntity> entities) {
for (PayAppEntity entity : entities) { for (PayAppEntity entity : entities) {
bigTable.put(entity.getClass(), entity.getPayAppId(), entity); bigTable.put(entity.getClass(), entity.getPayAppId(), entity);
} }
return AcquirerBuilder.this; return AcquirerConfigurer.this;
} }
} }
} }
package cn.quant.baa.pay.model; package cn.quant.baa.pay.acquirer;
import cn.quant.baa.pay.dict.AccessCode; import cn.quant.baa.pay.dict.AccessCode;
import cn.quant.baa.pay.dict.AccessType; import cn.quant.baa.pay.dict.AccessType;
...@@ -10,7 +10,7 @@ import java.time.LocalDate; ...@@ -10,7 +10,7 @@ import java.time.LocalDate;
/** /**
* Created by Administrator on 2021/8/22 0022. * Created by Administrator on 2021/8/22 0022.
*/ */
public class MerchantAcquirerProfile implements Serializable{ public class AcquirerProperties implements Serializable{
private static final long serialVersionUID = -9197591972747983682L; private static final long serialVersionUID = -9197591972747983682L;
...@@ -27,9 +27,9 @@ public class MerchantAcquirerProfile implements Serializable{ ...@@ -27,9 +27,9 @@ public class MerchantAcquirerProfile implements Serializable{
private String name; private String name;
private String encryptKey; private String secretKey;
private String encryptType; private String secretType;
private String signType; private String signType;
...@@ -114,20 +114,20 @@ public class MerchantAcquirerProfile implements Serializable{ ...@@ -114,20 +114,20 @@ public class MerchantAcquirerProfile implements Serializable{
this.name = name; this.name = name;
} }
public String getEncryptKey() { public String getSecretKey() {
return encryptKey; return secretKey;
} }
public void setEncryptKey(String encryptKey) { public void setSecretKey(String secretKey) {
this.encryptKey = encryptKey; this.secretKey = secretKey;
} }
public String getEncryptType() { public String getSecretType() {
return encryptType; return secretType;
} }
public void setEncryptType(String encryptType) { public void setSecretType(String secretType) {
this.encryptType = encryptType; this.secretType = secretType;
} }
public String getSignType() { public String getSignType() {
...@@ -284,7 +284,7 @@ public class MerchantAcquirerProfile implements Serializable{ ...@@ -284,7 +284,7 @@ public class MerchantAcquirerProfile implements Serializable{
@Override @Override
public String toString() { public String toString() {
final StringBuilder sb = new StringBuilder("MerchantAcquirerProfile{"); final StringBuilder sb = new StringBuilder("AcquirerProperties{");
sb.append("mchChanId=").append(mchChanId); sb.append("mchChanId=").append(mchChanId);
sb.append(", payChanCode='").append(payChanCode).append('\''); sb.append(", payChanCode='").append(payChanCode).append('\'');
sb.append(", payAcctId='").append(payAcctId).append('\''); sb.append(", payAcctId='").append(payAcctId).append('\'');
......
package cn.quant.baa.pay.acquirer;
import cn.quant.spring.security.Base64Cipher;
import cn.quant.spring.security.CharacterCipher;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
/**
* Created by Administrator on 2021/8/31 0031.
*/
public abstract class MerchantAcquirer {
protected CharacterCipher characterCipher;
protected Cipher cipher;
protected SecretKeySpec secretKey;
public MerchantAcquirer init(AcquirerProperties properties) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException {
characterCipher = new Base64Cipher();
String secretType = properties.getSecretType();
if (secretType.startsWith("AES")) {
secretKey = new SecretKeySpec(properties.getSecretKey().getBytes(), "AES");
}
cipher = Cipher.getInstance(secretType);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
Base64.getEncoder().encodeToString("aaa".getBytes());
// byte[] raw = sKey.getBytes("utf-8");
// SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
// Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");//"算法/模式/补码方式"
// cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
// byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
// return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。
return this;
}
}
package cn.quant.baa.pay.acquirer.weixin;
import cn.quant.baa.pay.acquirer.MerchantAcquirer;
/**
* Created by Administrator on 2021/8/31 0031.
*/
public class WeiXinMerchantAcquirer extends MerchantAcquirer {
}
package cn.quant.baa.pay.config; package cn.quant.baa.pay.config;
import cn.quant.baa.pay.acquirer.AcquirerConfiguration;
import cn.quant.baa.pay.acquirer.AcquirerConfigurer;
import cn.quant.baa.pay.jpa.entity.*; import cn.quant.baa.pay.jpa.entity.*;
import cn.quant.baa.pay.jpa.repository.*; import cn.quant.baa.pay.jpa.repository.*;
import cn.quant.baa.pay.model.DictionaryItem; import cn.quant.baa.pay.model.DictionaryItem;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -31,20 +32,20 @@ public class ServerConfiguration { ...@@ -31,20 +32,20 @@ public class ServerConfiguration {
@Autowired @Autowired
private DictionaryRepository dictionaryRepository; private DictionaryRepository dictionaryRepository;
public AcquirerBuilder acquirerBuilder() { public AcquirerConfigurer configurer() {
List<PayAccountEntity> accounts = payAccountRepository.findAll(); List<PayAccountEntity> accounts = payAccountRepository.findAll();
List<PayFeatureEntity> features = payFeatureRepository.findAll(); List<PayFeatureEntity> features = payFeatureRepository.findAll();
List<PayAppEntity> apps = payAppRepository.findAll(); List<PayAppEntity> apps = payAppRepository.findAll();
AcquirerBuilder builder = new AcquirerBuilder(); AcquirerConfigurer configurer = new AcquirerConfigurer();
builder.accounts(accounts) configurer.accounts(accounts)
.features(features) .features(features)
.apps(apps); .apps(apps);
accounts.clear(); accounts.clear();
features.clear(); features.clear();
apps.clear(); apps.clear();
return builder; return configurer;
} }
@Bean @Bean
...@@ -63,12 +64,12 @@ public class ServerConfiguration { ...@@ -63,12 +64,12 @@ public class ServerConfiguration {
} }
@Bean @Bean
public MerchantAcquirerBuilder merchantAcquirerBuilder() { public AcquirerConfiguration acquirerConfiguration() {
AcquirerBuilder acquirerBuilder = acquirerBuilder(); AcquirerConfigurer configurer = configurer();
List<MchChannelEntity> entities = mchChannelRepository.findAll(); List<MchChannelEntity> entities = mchChannelRepository.findAll();
MerchantAcquirerBuilder builder = acquirerBuilder.build(entities); AcquirerConfiguration configuration = configurer.configure(entities);
acquirerBuilder.release(); configurer.release();
entities.clear(); entities.clear();
return builder; return configuration;
} }
} }
package cn.quant.baa.pay.jpa.entity; package cn.quant.baa.pay.jpa.entity;
import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.context.TransactionSession; import cn.quant.baa.pay.context.TransactionSession;
import cn.quant.baa.pay.dict.*; import cn.quant.baa.pay.dict.*;
import cn.quant.baa.pay.model.GoodsDetail; import cn.quant.baa.pay.model.web.GoodsDetail;
import cn.quant.baa.pay.model.MerchantAcquirerProfile; import cn.quant.baa.pay.model.web.PayRequestData;
import cn.quant.baa.pay.model.PayRequestData;
import cn.quant.spring.util.DateUtils; import cn.quant.spring.util.DateUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -59,7 +59,7 @@ public class EntityBuilder { ...@@ -59,7 +59,7 @@ public class EntityBuilder {
return account; return account;
} }
public static PayHistoryEntity history(AccountEntity account, PayHistoryIds ids, long historyId, PayRequestData data, MerchantAcquirerProfile profile public static PayHistoryEntity history(AccountEntity account, PayHistoryIds ids, long historyId, PayRequestData data, AcquirerProperties profile
, TransactionSession session) { , TransactionSession session) {
BigDecimal discount = new BigDecimal(data.getDiscounts()); BigDecimal discount = new BigDecimal(data.getDiscounts());
......
...@@ -29,11 +29,11 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable { ...@@ -29,11 +29,11 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable {
@Column(name = "NAME", nullable = false, length = 255) @Column(name = "NAME", nullable = false, length = 255)
private String name; private String name;
@Column(name = "ENCRYPT_KEY", nullable = false, length = 64) @Column(name = "SECRET_KEY", nullable = false, length = 64)
private String encryptKey; private String secretKey;
@Column(name = "ENCRYPT_TYPE", nullable = false, length = 32) @Column(name = "SECRET_TYPE", nullable = false, length = 32)
private String encryptType; private String secretType;
@Column(name = "SIGN_TYPE", nullable = false, length = 32) @Column(name = "SIGN_TYPE", nullable = false, length = 32)
private String signType; private String signType;
...@@ -76,20 +76,20 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable { ...@@ -76,20 +76,20 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable {
this.name = name; this.name = name;
} }
public String getEncryptKey() { public String getSecretKey() {
return encryptKey; return secretKey;
} }
public void setEncryptKey(String encryptKey) { public void setSecretKey(String encryptKey) {
this.encryptKey = encryptKey; this.secretKey = encryptKey;
} }
public String getEncryptType() { public String getSecretType() {
return encryptType; return secretType;
} }
public void setEncryptType(String encryptType) { public void setSecretType(String encryptType) {
this.encryptType = encryptType; this.secretType = encryptType;
} }
public String getSignType() { public String getSignType() {
...@@ -136,8 +136,8 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable { ...@@ -136,8 +136,8 @@ public class PayAccountEntity extends OptimisticEntity implements Serializable {
sb.append(", payChanType=").append(payChanType); sb.append(", payChanType=").append(payChanType);
sb.append(", domain='").append(domain).append('\''); sb.append(", domain='").append(domain).append('\'');
sb.append(", name='").append(name).append('\''); sb.append(", name='").append(name).append('\'');
sb.append(", encryptKey='").append(encryptKey).append('\''); sb.append(", secretKey='").append(secretKey).append('\'');
sb.append(", encryptType='").append(encryptType).append('\''); sb.append(", secretType='").append(secretType).append('\'');
sb.append(", signType='").append(signType).append('\''); sb.append(", signType='").append(signType).append('\'');
sb.append(", privateKey='").append(privateKey).append('\''); sb.append(", privateKey='").append(privateKey).append('\'');
sb.append(", payPublicKey='").append(payPublicKey).append('\''); sb.append(", payPublicKey='").append(payPublicKey).append('\'');
......
...@@ -14,6 +14,4 @@ import org.springframework.stereotype.Repository; ...@@ -14,6 +14,4 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface PayHistoryRepository extends JpaRepository<PayHistoryEntity, PayHistoryIds> { public interface PayHistoryRepository extends JpaRepository<PayHistoryEntity, PayHistoryIds> {
@Query("")
int counAAAt(PayHistoryIds ids);
} }
package cn.quant.baa.pay.model;
/**
* Created by Administrator on 2021/8/23 0023.
*/
public class Acquirer {
private String code;
private String name;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model;
import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.model.web.MerchantAcquirerProperties;
import cn.quant.baa.pay.config.DictionaryViewer; import cn.quant.baa.pay.config.DictionaryViewer;
import cn.quant.baa.pay.dict.DictType; import cn.quant.baa.pay.dict.DictType;
import cn.quant.baa.pay.model.web.MerchantChannelResponseData;
import cn.quant.spring.UnsupportedException; import cn.quant.spring.UnsupportedException;
import cn.quant.spring.util.StringUtils; import cn.quant.spring.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -21,8 +24,8 @@ public class ModelBuilder { ...@@ -21,8 +24,8 @@ public class ModelBuilder {
@Autowired @Autowired
private DictionaryViewer dictionaryViewer; private DictionaryViewer dictionaryViewer;
public MerchantAcquirer toModel(MerchantAcquirerProfile profile) { public MerchantAcquirerProperties toModel(AcquirerProperties profile) {
MerchantAcquirer response = new MerchantAcquirer(); MerchantAcquirerProperties response = new MerchantAcquirerProperties();
response.setAccessCode(profile.getAccessCode().name()); response.setAccessCode(profile.getAccessCode().name());
response.setAccessType(profile.getAccessType().name()); response.setAccessType(profile.getAccessType().name());
response.setChanCode(profile.getPayChanCode()); response.setChanCode(profile.getPayChanCode());
...@@ -34,27 +37,30 @@ public class ModelBuilder { ...@@ -34,27 +37,30 @@ public class ModelBuilder {
return response; return response;
} }
public Collection<MerchantAcquirer> toModel(Collection<MerchantAcquirerProfile> profiles) { public Collection<MerchantAcquirerProperties> toModel(Collection<AcquirerProperties> profiles) {
LinkedList<MerchantAcquirer> list = new LinkedList<>(); LinkedList<MerchantAcquirerProperties> list = new LinkedList<>();
for (MerchantAcquirerProfile profile : profiles) { for (AcquirerProperties profile : profiles) {
list.add(toModel(profile)); list.add(toModel(profile));
} }
return list; return list;
} }
public Map<String, MerchantAcquirerBook> toModel(Map<String, Collection<MerchantAcquirerProfile>> profiles) { public Map<String, MerchantChannelResponseData> toModel(Map<String, Collection<AcquirerProperties>> profiles, String access) {
Map<String, MerchantAcquirerBook> models = new HashMap<>(); Map<String, MerchantChannelResponseData> models = new HashMap<>();
for (String code : profiles.keySet()) { for (String code : profiles.keySet()) {
DictionaryItem item = dictionaryViewer.get(DictType.PAY, code); DictionaryItem item = dictionaryViewer.get(DictType.PAY, code);
if (item == null) { if (item == null) {
throw new UnsupportedException(StringUtils.format("Dictionary item is null({}, {}).", DictType.PAY, code)); throw new UnsupportedException(StringUtils.format("Dictionary item is null({}, {}).", DictType.PAY, code));
} }
Collection<MerchantAcquirerProfile> collection = profiles.get(code); Collection<AcquirerProperties> collection = profiles.get(code);
MerchantAcquirerBook book = new MerchantAcquirerBook(); MerchantChannelResponseData book = new MerchantChannelResponseData();
book.setCode(code); book.setCode(code);
book.setName(item.getName()); book.setName(item.getName());
book.setImageUrl(item.getImageUrl()); book.setImageUrl(item.getImageUrl());
for (MerchantAcquirerProfile profile : collection) { for (AcquirerProperties profile : collection) {
if ((access != null) && (!access.equals(profile.getAccessCode().name()))) {
continue;
}
book.add(toModel(profile)); book.add(toModel(profile));
} }
models.put(book.getCode(), book); models.put(book.getCode(), book);
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model.web;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.io.Serializable; import java.io.Serializable;
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model.web;
import java.io.Serializable; import java.io.Serializable;
/** /**
* Created by Administrator on 2021/8/23 0023. * Created by Administrator on 2021/8/23 0023.
*/ */
public class MerchantAcquirer implements Serializable { public class MerchantAcquirerProperties implements Serializable {
private static final long serialVersionUID = 1777009242558105988L; private static final long serialVersionUID = 1777009242558105988L;
private Long chanId; private Long chanId;
private String chanCode; private String chanCode;
...@@ -82,7 +82,7 @@ public class MerchantAcquirer implements Serializable { ...@@ -82,7 +82,7 @@ public class MerchantAcquirer implements Serializable {
@Override @Override
public String toString() { public String toString() {
final StringBuilder sb = new StringBuilder("MerchantAcquirer{"); final StringBuilder sb = new StringBuilder("MerchantAcquirerProperties{");
sb.append("chanId=").append(chanId); sb.append("chanId=").append(chanId);
sb.append(", chanCode='").append(chanCode).append('\''); sb.append(", chanCode='").append(chanCode).append('\'');
sb.append(", chanType='").append(chanType).append('\''); sb.append(", chanType='").append(chanType).append('\'');
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model.web;
import java.io.Serializable; import java.io.Serializable;
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model.web;
import java.io.Serializable; import java.io.Serializable;
import java.util.HashMap; import java.util.HashMap;
...@@ -7,7 +7,7 @@ import java.util.Map; ...@@ -7,7 +7,7 @@ import java.util.Map;
/** /**
* Created by Administrator on 2021/8/23 0023. * Created by Administrator on 2021/8/23 0023.
*/ */
public class MerchantAcquirerBook implements Serializable { public class MerchantChannelResponseData implements Serializable {
private static final long serialVersionUID = -7479646457077040392L; private static final long serialVersionUID = -7479646457077040392L;
private String code; private String code;
...@@ -16,17 +16,17 @@ public class MerchantAcquirerBook implements Serializable { ...@@ -16,17 +16,17 @@ public class MerchantAcquirerBook implements Serializable {
private String imageUrl; private String imageUrl;
private Map<String, MerchantAcquirer> acquirers; private Map<String, MerchantAcquirerProperties> acquirers;
public MerchantAcquirerBook() { public MerchantChannelResponseData() {
acquirers = new HashMap<String, MerchantAcquirer>(); acquirers = new HashMap<String, MerchantAcquirerProperties>();
} }
public Map<String, MerchantAcquirer> getAcquirers() { public Map<String, MerchantAcquirerProperties> getAcquirers() {
return acquirers; return acquirers;
} }
public void add(MerchantAcquirer acquirer) { public void add(MerchantAcquirerProperties acquirer) {
acquirers.put(acquirer.getAccessCode(), acquirer); acquirers.put(acquirer.getAccessCode(), acquirer);
} }
...@@ -56,7 +56,7 @@ public class MerchantAcquirerBook implements Serializable { ...@@ -56,7 +56,7 @@ public class MerchantAcquirerBook implements Serializable {
@Override @Override
public String toString() { public String toString() {
final StringBuilder sb = new StringBuilder("MerchantAcquirerBook{"); final StringBuilder sb = new StringBuilder("MerchantChannelResponseData{");
sb.append("code='").append(code).append('\''); sb.append("code='").append(code).append('\'');
sb.append(", name='").append(name).append('\''); sb.append(", name='").append(name).append('\'');
sb.append(", imageUrl='").append(imageUrl).append('\''); sb.append(", imageUrl='").append(imageUrl).append('\'');
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.model.web;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size; import javax.validation.constraints.Size;
......
package cn.quant.baa.pay.service; package cn.quant.baa.pay.service;
import cn.quant.baa.pay.model.MerchantChannelRequestData; import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.config.MerchantAcquirerBuilder; import cn.quant.baa.pay.model.web.MerchantAcquirerProperties;
import cn.quant.baa.pay.model.MerchantAcquirer; import cn.quant.baa.pay.model.web.MerchantChannelResponseData;
import cn.quant.baa.pay.model.MerchantAcquirerBook; import cn.quant.baa.pay.model.web.MerchantChannelRequestData;
import cn.quant.baa.pay.model.MerchantAcquirerProfile; import cn.quant.baa.pay.acquirer.AcquirerConfiguration;
import cn.quant.baa.pay.model.ModelBuilder; import cn.quant.baa.pay.model.ModelBuilder;
import cn.quant.spring.util.StringUtils; import cn.quant.spring.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -20,39 +20,39 @@ import java.util.Map; ...@@ -20,39 +20,39 @@ import java.util.Map;
@Service @Service
public class MerchantService { public class MerchantService {
@Autowired @Autowired
private MerchantAcquirerBuilder merchantAcquirerBuilder; private AcquirerConfiguration acquirerConfiguration;
@Autowired @Autowired
private ModelBuilder modelBuilder; private ModelBuilder modelBuilder;
@Cacheable(cacheManager = "profileCacheManager" // @Cacheable(cacheManager = "profileCacheManager"
, cacheNames = "LOCAL_PROFILE" // , cacheNames = "LOCAL_PROFILE"
, key = "#requestData.persistenceKey()") // , key = "#requestData.persistenceKey()")
public Map<String, MerchantAcquirerBook> getChannels(MerchantChannelRequestData requestData) { public Map<String, MerchantChannelResponseData> getChannels(MerchantChannelRequestData requestData) {
String mchId = requestData.getMchId(); String mchId = requestData.getMchId();
String channel = requestData.getChannel(); String channel = requestData.getChannel();
Map<String, Collection<MerchantAcquirerProfile>> profiles; Map<String, Collection<AcquirerProperties>> profiles;
if (StringUtils.isEmpty(channel)) { if (StringUtils.isEmpty(channel)) {
profiles = merchantAcquirerBuilder.get(mchId); profiles = acquirerConfiguration.get(mchId);
} else { } else {
profiles = merchantAcquirerBuilder.get(mchId, channel); profiles = acquirerConfiguration.get(mchId, channel);
} }
Map<String, MerchantAcquirerBook> response = modelBuilder.toModel(profiles); Map<String, MerchantChannelResponseData> response = modelBuilder.toModel(profiles, requestData.getAccess());
return response; return response;
} }
public MerchantAcquirer getChannel(MerchantChannelRequestData requestData) { public MerchantAcquirerProperties getChannel(MerchantChannelRequestData requestData) {
return getChannel(Long.parseLong(requestData.getChanId())); return getChannel(Long.parseLong(requestData.getChanId()));
} }
@Cacheable(cacheManager = "profileCacheManager" @Cacheable(cacheManager = "profileCacheManager"
, cacheNames = "LOCAL_PROFILE" , cacheNames = "LOCAL_PROFILE"
, key = "#id") , key = "#id")
public MerchantAcquirer getChannel(Long id) { public MerchantAcquirerProperties getChannel(Long id) {
MerchantAcquirerProfile profile = merchantAcquirerBuilder.get(id); AcquirerProperties profile = acquirerConfiguration.get(id);
return modelBuilder.toModel(profile); return modelBuilder.toModel(profile);
} }
} }
package cn.quant.baa.pay.service; package cn.quant.baa.pay.service;
import cn.quant.baa.pay.config.MerchantAcquirerBuilder; import cn.quant.baa.pay.acquirer.AcquirerConfiguration;
import cn.quant.baa.pay.context.TransactionSession; import cn.quant.baa.pay.context.TransactionSession;
import cn.quant.baa.pay.jpa.entity.*; import cn.quant.baa.pay.jpa.entity.*;
import cn.quant.baa.pay.model.AssertUtils; import cn.quant.baa.pay.util.AssertUtils;
import cn.quant.baa.pay.model.GoodsDetail; import cn.quant.baa.pay.model.web.GoodsDetail;
import cn.quant.baa.pay.model.MerchantAcquirerProfile; import cn.quant.baa.pay.acquirer.AcquirerProperties;
import cn.quant.baa.pay.model.PayRequestData; import cn.quant.baa.pay.model.web.PayRequestData;
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;
...@@ -28,7 +28,7 @@ public class TransactionService extends BusinessService { ...@@ -28,7 +28,7 @@ public class TransactionService extends BusinessService {
private static final Logger logger = LoggerFactory.getLogger(TransactionService.class); private static final Logger logger = LoggerFactory.getLogger(TransactionService.class);
@Autowired @Autowired
private MerchantAcquirerBuilder merchantAcquirerBuilder; private AcquirerConfiguration acquirerConfiguration;
@Transactional(propagation = Propagation.NOT_SUPPORTED) @Transactional(propagation = Propagation.NOT_SUPPORTED)
public void check(PayHistoryIds ids, TransactionSession session) { public void check(PayHistoryIds ids, TransactionSession session) {
...@@ -44,7 +44,7 @@ public class TransactionService extends BusinessService { ...@@ -44,7 +44,7 @@ public class TransactionService extends BusinessService {
validate(data); validate(data);
String chanId = data.getChanId(); String chanId = data.getChanId();
MerchantAcquirerProfile profile = merchantAcquirerBuilder.get(Long.valueOf(chanId)); AcquirerProperties profile = acquirerConfiguration.get(Long.valueOf(chanId));
if (profile == null) { if (profile == null) {
AssertUtils.throwMessage(ACQUIRER_NOSUCH, chanId); AssertUtils.throwMessage(ACQUIRER_NOSUCH, chanId);
} }
......
package cn.quant.baa.pay.model; package cn.quant.baa.pay.util;
import cn.quant.baa.pay.BusinessException; import cn.quant.baa.pay.BusinessException;
import cn.quant.baa.pay.dict.MessageEnum; import cn.quant.baa.pay.dict.MessageEnum;
......
...@@ -20,8 +20,8 @@ import java.time.format.DateTimeFormatter; ...@@ -20,8 +20,8 @@ import java.time.format.DateTimeFormatter;
/** /**
* <p><b>Application VM Option:</b><br/> * <p><b>Application VM Option:</b><br/>
* <code>--spring.config.file=${project.build.directory}/target/config/application-dev.properties </code><br/> * <code>--spring.config.file=${project.configure.directory}/target/config/application-dev.properties </code><br/>
* <code>-Dlogging.config=${project.build.directory}/target/config/logback-spring.xml</code></p> * <code>-Dlogging.config=${project.configure.directory}/target/config/logback-spring.xml</code></p>
* <p><b>Enable Dubbo Annotation: </b><br/> * <p><b>Enable Dubbo Annotation: </b><br/>
* <code>@org.springframework.context.annotation.ImportResource(locations = {"classpath:application-dubbo.xml"})</code></p> * <code>@org.springframework.context.annotation.ImportResource(locations = {"classpath:application-dubbo.xml"})</code></p>
*/ */
......
package cn.quant.baa.pay.rest; package cn.quant.baa.pay.rest;
import cn.quant.baa.pay.model.AssertUtils;
import cn.quant.spring.IllegalParameterException;
import cn.quant.spring.NullException;
import cn.quant.spring.context.ContextLoader;
import cn.quant.spring.context.ServerApplicationContext;
import cn.quant.spring.rest.AbstractController; import cn.quant.spring.rest.AbstractController;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import java.util.Set;
import static cn.quant.baa.pay.dict.MessageEnum.EMPTY_REQ_DATA;
/** /**
* Created by Administrator on 2021/8/28 0028. * Created by Administrator on 2021/8/28 0028.
......
package cn.quant.baa.pay.rest; package cn.quant.baa.pay.rest;
import cn.quant.baa.pay.model.MerchantAcquirer; import cn.quant.baa.pay.model.web.MerchantAcquirerProperties;
import cn.quant.baa.pay.model.MerchantAcquirerBook; import cn.quant.baa.pay.model.web.MerchantChannelResponseData;
import cn.quant.baa.pay.model.MerchantChannelRequestData; import cn.quant.baa.pay.model.web.MerchantChannelRequestData;
import cn.quant.baa.pay.annotation.BusinessMapping; import cn.quant.baa.pay.annotation.BusinessMapping;
import cn.quant.baa.pay.context.TransactionSession; import cn.quant.baa.pay.context.TransactionSession;
import cn.quant.baa.pay.model.AssertUtils; import cn.quant.baa.pay.util.AssertUtils;
import cn.quant.baa.pay.model.BusinessRequest; import cn.quant.baa.pay.model.BusinessRequest;
import cn.quant.baa.pay.service.MerchantService; import cn.quant.baa.pay.service.MerchantService;
import cn.quant.spring.http.HttpResponseData; import cn.quant.spring.http.HttpResponseData;
import cn.quant.spring.rest.AbstractController; import cn.quant.spring.rest.AbstractController;
import cn.quant.spring.util.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager; import org.springframework.cache.CacheManager;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
...@@ -46,7 +45,7 @@ public class MerchantController extends AbstractController { ...@@ -46,7 +45,7 @@ public class MerchantController extends AbstractController {
} }
Map<String, MerchantAcquirerBook> channels = merchantService.getChannels(data); Map<String, MerchantChannelResponseData> channels = merchantService.getChannels(data);
ResponseEntity<HttpResponseData> entity = succeed(session.getRequestId(), channels); ResponseEntity<HttpResponseData> entity = succeed(session.getRequestId(), channels);
return entity; return entity;
} }
...@@ -64,7 +63,7 @@ public class MerchantController extends AbstractController { ...@@ -64,7 +63,7 @@ public class MerchantController extends AbstractController {
} }
MerchantAcquirer channel = merchantService.getChannel(data); MerchantAcquirerProperties channel = merchantService.getChannel(data);
ResponseEntity<HttpResponseData> entity = succeed(session.getRequestId(), channel); ResponseEntity<HttpResponseData> entity = succeed(session.getRequestId(), channel);
return entity; return entity;
} }
......
...@@ -3,18 +3,12 @@ package cn.quant.baa.pay.rest; ...@@ -3,18 +3,12 @@ package cn.quant.baa.pay.rest;
import cn.quant.baa.pay.annotation.BusinessMapping; import cn.quant.baa.pay.annotation.BusinessMapping;
import cn.quant.baa.pay.jpa.entity.PayHistoryEntity; import cn.quant.baa.pay.jpa.entity.PayHistoryEntity;
import cn.quant.baa.pay.model.BusinessRequest; import cn.quant.baa.pay.model.BusinessRequest;
import cn.quant.baa.pay.model.GoodsDetail; import cn.quant.baa.pay.model.web.PayRequestData;
import cn.quant.baa.pay.model.PayRequestData;
import cn.quant.baa.pay.service.TransactionService; import cn.quant.baa.pay.service.TransactionService;
import cn.quant.spring.rest.AbstractController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import java.util.Set;
/** /**
* Created by Administrator on 2021/8/24 0024. * Created by Administrator on 2021/8/24 0024.
*/ */
......
...@@ -11,7 +11,7 @@ import org.springframework.test.context.junit4.SpringRunner; ...@@ -11,7 +11,7 @@ import org.springframework.test.context.junit4.SpringRunner;
/** /**
* <p><b>JUnit VM Option:</b><br/> * <p><b>JUnit VM Option:</b><br/>
* <code>-Dspring.config.file=${project.build.directory}/target/config/application-dev.properties </code><br/> * <code>-Dspring.config.file=${project.configure.directory}/target/config/application-dev.properties </code><br/>
* </p> * </p>
*/ */
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
......
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