List<TSourceTypeConfig> getBySourceType(String sourceType);
- TSourceTypeConfig getBySourceTypeAndAndConfigid(String sourceType, String configid);
+ TSourceTypeConfig getBySourceTypeAndConfigid(String sourceType, String configid);
List<TSourceTypeConfig> getBySourceTypeOrderByConfigid(String paytype);
}
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
Map<String, String> getPaytypeConfigByPaytype(String pattype);
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+ boolean checkRechargeSourcetype(String sourcetype) throws Exception;
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+ boolean checkShopPaytype(String shopaccno, String sourceType, boolean anonymousflag) throws Exception;
+
+ /**
+ * 获取支付能力充值参数全局配置
+ */
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+ Map<String, String> getChargePaytypeConfig(String paytype, boolean ignoreStatus) throws Exception;
+
+ /**
+ * 获取商户支付能力消费参数配置
+ */
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+ Map<String, String> getConsumePaytypeConfig(String paytype, String shopaccno, boolean anonymousflag, boolean ignoreStatus) throws Exception;
+
}
package com.supwisdom.dlpay.api.service.impl;
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeConfigDao;
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeDao;
import com.supwisdom.dlpay.api.dao.SourceTypeConfigDao;
import com.supwisdom.dlpay.api.dao.SourceTypeDao;
+import com.supwisdom.dlpay.api.domain.TShopSourceType;
+import com.supwisdom.dlpay.api.domain.TShopSourceTypeConfig;
import com.supwisdom.dlpay.api.domain.TSourceType;
import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
import com.supwisdom.dlpay.api.service.SourceTypeService;
+import com.supwisdom.dlpay.exception.TransactionProcessException;
+import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.framework.util.TradeErrorCode;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
public class SourceTypeServiceImpl implements SourceTypeService {
private final SourceTypeDao paytypeDao;
private final SourceTypeConfigDao paytypeConfigDao;
+ private final ShopSourceTypeDao shopSourceTypeDao;
+ private final ShopSourceTypeConfigDao shopSourceTypeConfigDao;
- public SourceTypeServiceImpl(SourceTypeDao paytypeDao, SourceTypeConfigDao paytypeConfigDao) {
+ @Autowired
+ public SourceTypeServiceImpl(SourceTypeDao paytypeDao, SourceTypeConfigDao paytypeConfigDao, ShopSourceTypeDao shopSourceTypeDao, ShopSourceTypeConfigDao shopSourceTypeConfigDao) {
this.paytypeDao = paytypeDao;
this.paytypeConfigDao = paytypeConfigDao;
+ this.shopSourceTypeDao = shopSourceTypeDao;
+ this.shopSourceTypeConfigDao = shopSourceTypeConfigDao;
}
+
@Override
@Cacheable(cacheNames = "source_type_cache", keyGenerator = "tenantCacheKey")
public TSourceType getByPaytype(String paytype) {
}
return map;
}
+
+ @Override
+ public boolean checkRechargeSourcetype(String sourcetype) throws Exception {
+ TSourceType tSourceType = paytypeDao.getBySourceType(sourcetype);
+ if (null == tSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[" + sourcetype + "]");
+ } else if (!tSourceType.getEnable() || !tSourceType.getChargeEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统充值未启用支付方式[" + sourcetype + "]");
+ }
+ return true;
+ }
+
+ @Override
+ public boolean checkShopPaytype(String shopaccno, String sourceType, boolean anonymousflag) throws Exception {
+ //step1: 判断系统支付能力是否启用
+ TSourceType tSourceType = paytypeDao.getBySourceType(sourceType);
+ if (null == tSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[" + sourceType + "]");
+ } else {
+ if (!tSourceType.getEnable() || !tSourceType.getConsumeEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统未启用支付方式[" + sourceType + "]消费");
+ }
+ if (anonymousflag && !tSourceType.getAnonymousEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统支付方式[" + sourceType + "]未启用匿名消费");
+ }
+ }
+
+ //step2: 判断商户支付能力是否启用
+ TShopSourceType tShopSourceType = shopSourceTypeDao.getById(sourceType, shopaccno);
+ if (null == tShopSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]未启用支付方式[" + sourceType + "]");
+ } else {
+ if (!tShopSourceType.getConsumeEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]未启用支付方式[" + sourceType + "]消费");
+ }
+ if (anonymousflag && !tShopSourceType.getAnonymousEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]的支付方式[" + sourceType + "]未启用匿名消费");
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public Map<String, String> getChargePaytypeConfig(String paytype, boolean ignoreStatus) throws Exception {
+ TSourceType tSourceType = paytypeDao.getBySourceType(paytype);
+ if (null == tSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[" + paytype + "]");
+ } else if (!ignoreStatus && (!tSourceType.getEnable() || !tSourceType.getChargeEnable())) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统充值未启用支付方式[" + paytype + "]");
+ }
+
+ Map<String, String> result = new HashMap<>(0);
+ List<TSourceTypeConfig> list = paytypeConfigDao.getBySourceType(paytype);
+ if (!StringUtil.isEmpty(list)) {
+ for (TSourceTypeConfig config : list) {
+ result.put(config.getConfigid(), config.getConfigValue());
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public Map<String, String> getConsumePaytypeConfig(String paytype, String shopaccno, boolean anonymousflag, boolean ignoreStatus) throws Exception {
+ //step1: 判断系统支付能力是否启用
+ TSourceType tSourceType = paytypeDao.getBySourceType(paytype);
+ if (null == tSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[" + paytype + "]");
+ } else {
+ if (!ignoreStatus && (!tSourceType.getEnable() || !tSourceType.getConsumeEnable())) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统未启用支付方式[" + paytype + "]消费");
+ }
+ if (!ignoreStatus && anonymousflag && !tSourceType.getAnonymousEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统支付方式[" + paytype + "]未启用匿名消费");
+ }
+ }
+
+ //step2: 判断商户支付能力是否启用
+ TShopSourceType tShopSourceType = shopSourceTypeDao.getById(paytype, shopaccno);
+ if (null == tShopSourceType) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]未启用支付方式[" + paytype + "]");
+ } else {
+ if (!ignoreStatus && !tShopSourceType.getConsumeEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]未启用支付方式[" + paytype + "]消费");
+ }
+ if (!ignoreStatus && anonymousflag && !tShopSourceType.getAnonymousEnable()) {
+ throw new TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[" + shopaccno + "]的支付方式[" + paytype + "]未启用匿名消费");
+ }
+ }
+
+ Map<String, String> result = new HashMap<>(0);
+ List<TSourceTypeConfig> list = paytypeConfigDao.getBySourceType(paytype);
+ if (!StringUtil.isEmpty(list)) {
+ for (TSourceTypeConfig config : list) {
+ if (config.getGlobalflag()) {
+ result.put(config.getConfigid(), config.getConfigValue()); //统用参数
+ }
+ }
+ }
+
+ List<TShopSourceTypeConfig> shoplist = shopSourceTypeConfigDao.getShopSourceTypeConfigs(paytype, shopaccno);
+ if (!StringUtil.isEmpty(shoplist)) {
+ for (TShopSourceTypeConfig shopconfig : shoplist) {
+ result.put(shopconfig.getConfigid(), shopconfig.getConfigValue()); //个性参数
+ }
+ }
+
+ return result;
+ }
+
}
@Entity
@Table(name = "TB_RESOURCE")
-@SequenceGenerator(name = "SEQ_RES", sequenceName = "SEQ_RES", allocationSize = 1)
+@SequenceGenerator(name = "SEQ_RES", sequenceName = "SEQ_RES", allocationSize = 1000)
public class TResource {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_RES")
private Integer id;
@Column(name = "CODE", length = 32)
- @NotNull
private String code;
@Column(name = "NAME", length = 32)
@ResponseBody
public JsonResult addres(@RequestBody TResource resource) {
if (resource != null) {
+ if(null == resource.getTenantId()){
+ resource.setTenantId(TenantContext.getTenantSchema());
+ }
return functionService.saveRes(resource);
} else {
return JsonResult.error("添加失败");
if (null == tPaytype) throw new WebCheckException("支付能力[" + paytype + "]不存在");
for (String key : param.keySet()) {
String value = param.get(key);
- TSourceTypeConfig config = paytypeConfigDao.getBySourceTypeAndAndConfigid(tPaytype.getSourceType(), key);
+ TSourceTypeConfig config = paytypeConfigDao.getBySourceTypeAndConfigid(tPaytype.getSourceType(), key);
if (null == config)
throw new WebCheckException("支付能力[" + tPaytype.getSourceType() + "]不存在配置项[" + key + "],请重新查询");
config.setConfigValue(StringUtil.isEmpty(value) ? null : value.trim());
spc.setSourceType(shopPaytype.getSourceType());
spc.setConfigid(key);
spc.setConfigValue(StringUtil.isEmpty(value) ? null : value.trim());
- TSourceTypeConfig paytypeConfig = sourceTypeConfigDao.getBySourceTypeAndAndConfigid(shopPaytype.getSourceType(), key);
+ TSourceTypeConfig paytypeConfig = sourceTypeConfigDao.getBySourceTypeAndConfigid(shopPaytype.getSourceType(), key);
if (null != paytypeConfig) {
spc.setConfigName(paytypeConfig.getConfigName());
}
package com.supwisdom.dlpay.api.service.impl
import com.supwisdom.dlpay.api.dao.PersondtlDao
-import com.supwisdom.dlpay.api.dao.SourceTypeDao
import com.supwisdom.dlpay.api.dao.TransactionMainDao
import com.supwisdom.dlpay.api.domain.TPersondtl
import com.supwisdom.dlpay.api.domain.TTransactionMain
import com.supwisdom.dlpay.api.service.ChargeApiService
-import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.api.service.SourceTypeService
import com.supwisdom.dlpay.framework.util.StringUtil
-import com.supwisdom.dlpay.framework.util.TradeErrorCode
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
@Service
class ChargeApiServiceImpl : ChargeApiService {
@Autowired
- lateinit var sourceTypeDao: SourceTypeDao
+ lateinit var sourceTypeService: SourceTypeService
@Autowired
lateinit var transactionMainDao: TransactionMainDao
@Autowired
lateinit var persondtlDao: PersondtlDao
override fun checkRechargeSourcetype(sourceType: String): Boolean {
- sourceTypeDao.getBySourceType(sourceType).let {
- if (null == it) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[$sourceType]")
- } else {
- if (!it.enable || !it.chargeEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统充值未启用支付方式[$sourceType]")
- }
- }
- }
-
- return true
+ return sourceTypeService.checkRechargeSourcetype(sourceType)
}
override fun getTransactionMainDtl(refno: String?, billno: String?, outid: String?): TTransactionMain? {
package com.supwisdom.dlpay.api.service.impl
-import com.supwisdom.dlpay.api.dao.SourceTypeDao
-import com.supwisdom.dlpay.api.dao.ShopSourceTypeConfigDao
-import com.supwisdom.dlpay.api.dao.ShopSourceTypeDao
import com.supwisdom.dlpay.api.dao.TransactionMainDao
import com.supwisdom.dlpay.api.domain.TTransactionMain
import com.supwisdom.dlpay.api.service.ConsumePayService
-import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.api.service.SourceTypeService
import com.supwisdom.dlpay.framework.util.StringUtil
-import com.supwisdom.dlpay.framework.util.TradeErrorCode
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
@Service
class ConsumePayServiceImpl : ConsumePayService {
@Autowired
- lateinit var sourceTypeDao: SourceTypeDao
- @Autowired
- lateinit var shopSourceTypeDao: ShopSourceTypeDao
- @Autowired
- lateinit var shopSourceTypeConfigDao: ShopSourceTypeConfigDao
+ lateinit var sourceTypeService: SourceTypeService
@Autowired
lateinit var transactionMainDao: TransactionMainDao
override fun checkShopPaytype(shopaccno: String, sourceType: String, anonymousflag: Boolean?): Boolean {
- sourceTypeDao.getBySourceType(sourceType).let {
- if (null == it) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[$sourceType]")
- } else {
- if (!it.enable || !it.consumeEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统未启用支付方式[$sourceType]消费")
- }
- if (true == anonymousflag && !it.anonymousEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统支付方式[$sourceType]未启用匿名消费")
- }
- }
- }
- shopSourceTypeDao.getById(sourceType, shopaccno).let {
- if (null == it) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$sourceType]")
- } else {
- if (!it.consumeEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$sourceType]")
- }
- if (true == anonymousflag && !it.anonymousEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]的支付方式[$sourceType]未启用匿名消费")
- }
- }
- }
- return true
+ return sourceTypeService.checkShopPaytype(shopaccno, sourceType, true == anonymousflag)
}
override fun getPaytypeConfig(paytype: String, shopaccno: String,
anonymousflag: Boolean?, ignoreStatus: Boolean?): Map<String, String?> {
- sourceTypeDao.getBySourceType(paytype).let {
- if (null == it) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统不支持支付方式[$paytype]")
- } else {
- //对账取配置时不关心状态,不能报错
- if (true != ignoreStatus && (!it.enable || !it.consumeEnable)) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统未启用支付方式[$paytype]消费")
- }
- if (true != ignoreStatus && true == anonymousflag && !it.anonymousEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "系统支付方式[$paytype]未启用匿名消费")
- }
- }
- }
-
- shopSourceTypeDao.getById(paytype, shopaccno).let {
- if (null == it) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$paytype]")
- } else {
- //对账取配置时不关心状态,不能报错
- if (true != ignoreStatus && !it.consumeEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$paytype]")
- }
- if (true != ignoreStatus && true == anonymousflag && !it.anonymousEnable) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]的支付方式[$paytype]未启用匿名消费")
- }
- }
- }
-
- shopSourceTypeConfigDao.getShopSourceTypeConfigs(paytype, shopaccno)?.let {
- if (it.size < 1) {
- throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]的支付方式[$paytype]未配置参数")
- } else {
- val result = mutableMapOf<String, String?>()
- it.forEach { paytypeConfig ->
- result.plus(mapOf(paytypeConfig.configid to paytypeConfig.configValue))
- }
- return result
- }
- }
- ?: throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]的支付方式[$paytype]未配置参数")
+ return sourceTypeService.getConsumePaytypeConfig(paytype, shopaccno, true == anonymousflag, true == ignoreStatus)
}
override fun getTransactionMainDtl(refno: String?, billno: String?, shopaccno: String?): TTransactionMain? {
form.render("checkbox");
laydate.render({
elem: '#shopbusiness-search-startdate',
- max: $("#shopbusiness-hidden-maxdate").val()
+ max: $("#shopbusiness-hidden-maxdate").val(),
+ trigger: 'click'
});
laydate.render({
elem: '#shopbusiness-search-enddate',
- max: $("#shopbusiness-hidden-maxdate").val()
+ max: $("#shopbusiness-hidden-maxdate").val(),
+ trigger: 'click'
});
treeSelect.render({
form.render("checkbox");
laydate.render({
elem: '#subjectday-search-startdate',
- max: $("#subjectday-hidden-maxdate").val()
+ max: $("#subjectday-hidden-maxdate").val(),
+ trigger: 'click'
});
laydate.render({
elem: '#subjectday-search-enddate',
- max: $("#subjectday-hidden-maxdate").val()
+ max: $("#subjectday-hidden-maxdate").val(),
+ trigger: 'click'
});
var renderTable = function (obj) {
form.render("select");
laydate.render({
elem: '#subjectdetail-search-startdate',
- max: $("#subjectdetail-hidden-maxdate").val()
+ max: $("#subjectdetail-hidden-maxdate").val(),
+ trigger: 'click'
});
laydate.render({
elem: '#subjectdetail-search-enddate',
- max: $("#subjectdetail-hidden-maxdate").val()
+ max: $("#subjectdetail-hidden-maxdate").val(),
+ trigger: 'click'
});
treeSelect.render({