From a2f00daca8d014e0aadb07e2b9aa2e5af8385df6 Mon Sep 17 00:00:00 2001 From: 77 <77@77.com> Date: Tue, 2 Apr 2024 01:22:45 +0800 Subject: [PATCH] 123 --- .../cai/admin/PayConfigController.java | 10 +++ .../web/controller/cai/app/PayController.java | 4 +- .../com/ruoyi/cai/pay/PayConfigManager.java | 65 +++---------------- .../ruoyi/cai/service/PayConfigService.java | 7 ++ .../service/impl/PayConfigServiceImpl.java | 33 ++++++++-- 5 files changed, 55 insertions(+), 64 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/PayConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/PayConfigController.java index 591a3b6f..a900d0c3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/PayConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/admin/PayConfigController.java @@ -79,6 +79,16 @@ public class PayConfigController extends BaseController { return toAjax(payConfigService.updatePayConfig(bo)); } + + @SaCheckPermission("cai:payConfig:edit") + @Log(title = "开启和关闭支付配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/status") + public R status(@Validated(EditGroup.class) @RequestBody PayConfig bo) { + payConfigService.updateStatus(bo.getId(),bo.getEnableStatus()); + return R.ok(); + } + @SaCheckPermission("cai:payConfig:remove") @Log(title = "支付配置", businessType = BusinessType.DELETE) @DeleteMapping("/{id}") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java index 150f5296..21798430 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/cai/app/PayController.java @@ -60,7 +60,7 @@ public class PayController { PayConfig payConfig = payConfigManager.getWxConfig(); if(payConfig == null){ log.error("支付失败,未找到可用的微信支付配置"); - return R.fail(600,"支付失败,未找到可用的微信支付"); + return R.fail(600,"支付失败,未开通微信支付"); } String ip = ServletUtils.getClientIP(); Map params = UnifiedOrderModel @@ -113,7 +113,7 @@ public class PayController { boolean b = payConfigManager.initAliPay(); if(!b){ log.error("支付失败,未找到可用的支付宝配置"); - return R.fail(600,"支付宝支付失败!请联系管理员"); + return R.fail(600,"支付失败!未开通支付宝支付!"); } AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); model.setBody(payOrderInfo.getBody()); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayConfigManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayConfigManager.java index 98ebc109..a960cccd 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayConfigManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/pay/PayConfigManager.java @@ -20,55 +20,22 @@ import java.util.stream.Collectors; @Component @Slf4j public class PayConfigManager { - private static final Map PAY_CONFIGS_MAP = new ConcurrentHashMap<>(); - @Autowired - private PayConfigService payConfigService; @Autowired private PayTotalService payTotalService; @Autowired - private CaiProperties caiProperties; + private PayConfigService payConfigService; - @PostConstruct - public void init(){ - if(caiProperties.isWebsocket()){ - return; - } - List list = payConfigService.list(Wrappers.lambdaQuery(PayConfig.class)); - for (PayConfig payConfig : list) { - PAY_CONFIGS_MAP.put(payConfig.getId(), payConfig); - } - } - - public Collection getAllPayConfig(){ - return PAY_CONFIGS_MAP.values(); - } - - // 1支付宝2微信 - public void addPayConfig(PayConfig payConfig) { - PAY_CONFIGS_MAP.put(payConfig.getId(),payConfig); - } - - public void updatePayConfig(PayConfig payConfig) { - PAY_CONFIGS_MAP.put(payConfig.getId(),payConfig); - if(PayTypeEnum.ALI.getCode().equals(payConfig.getPayType())){ - AliPayApiConfigKit.removeApiConfig(payConfig.getAppid()); - } - } - - public void deletePayConfig(PayConfig payConfig) { - PAY_CONFIGS_MAP.remove(payConfig.getId()); + public void deletePayConfigAli(PayConfig payConfig) { if(PayTypeEnum.ALI.getCode().equals(payConfig.getPayType())){ AliPayApiConfigKit.removeApiConfig(payConfig.getAppid()); } } public PayConfig getWxConfig(){ - Collection values = PAY_CONFIGS_MAP.values(); + List values = payConfigService.listOkByPayType(PayTypeEnum.WX); Map using = new HashMap<>(); for (PayConfig value : values) { - if(value.getEnableStatus().equals(1) && PayTypeEnum.WX.getCode().equals(value.getPayType())){ - using.put(value.getWxMcid(),value); - } + using.put(value.getWxMcid(),value); } if(using.isEmpty()){ return null; @@ -87,12 +54,10 @@ public class PayConfigManager { } public PayConfig getAliConfig(){ - Collection values = PAY_CONFIGS_MAP.values(); + List values = payConfigService.listOkByPayType(PayTypeEnum.ALI); Map using = new HashMap<>(); for (PayConfig value : values) { - if(value.getEnableStatus().equals(1) && PayTypeEnum.ALI.getCode().equals(value.getPayType())){ - using.put(value.getWxMcid(),value); - } + using.put(value.getWxMcid(),value); } if(using.isEmpty()){ return null; @@ -136,22 +101,12 @@ public class PayConfigManager { } public PayConfig getAliConfigByAppId(String appId) { - Collection values = PAY_CONFIGS_MAP.values(); - for (PayConfig value : values) { - if(value.getAppid() != null && value.getAppid().equals(appId)){ - return value; - } - } - return null; + return payConfigService.getOne(Wrappers.lambdaQuery(PayConfig.class).eq(PayConfig::getAppid, appId) + .last("limit 1")); } public PayConfig getWxConfigByMchId(String mchId) { - Collection values = PAY_CONFIGS_MAP.values(); - for (PayConfig value : values) { - if(value.getWxMcid() != null && value.getWxMcid().equals(mchId)){ - return value; - } - } - return null; + return payConfigService.getOne(Wrappers.lambdaQuery(PayConfig.class).eq(PayConfig::getWxMcid, mchId) + .last("limit 1")); } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/PayConfigService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/PayConfigService.java index 7f5505b3..58cffd68 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/PayConfigService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/PayConfigService.java @@ -2,6 +2,9 @@ package com.ruoyi.cai.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.cai.domain.PayConfig; +import com.ruoyi.cai.pay.PayTypeEnum; + +import java.util.List; /** * 支付配置Service接口 @@ -11,9 +14,13 @@ import com.ruoyi.cai.domain.PayConfig; */ public interface PayConfigService extends IService { + List listOkByPayType(PayTypeEnum payType); + boolean addPayConfig(PayConfig payConfig); boolean updatePayConfig(PayConfig payConfig); boolean deletePayConfig(Long id); + + void updateStatus(Long id, Integer enableStatus); } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/PayConfigServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/PayConfigServiceImpl.java index 26b08baf..7085744c 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/PayConfigServiceImpl.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/PayConfigServiceImpl.java @@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * 支付配置Service业务层处理 * @@ -24,6 +26,13 @@ public class PayConfigServiceImpl extends ServiceImpl @Autowired private PayConfigManager payConfigManager; + @Override + public List listOkByPayType(PayTypeEnum payType){ + return this.list(Wrappers.lambdaQuery(PayConfig.class) + .eq(PayConfig::getPayType, payType) + .eq(PayConfig::getEnableStatus,1)); + } + @Override @Transactional(rollbackFor = Exception.class) public boolean addPayConfig(PayConfig payConfig){ @@ -41,11 +50,7 @@ public class PayConfigServiceImpl extends ServiceImpl throw new ServiceException("检测到已经存在的微信商户ID,无法重复添加"); } } - boolean save = this.save(payConfig); - if(save){ - payConfigManager.addPayConfig(payConfig); - } - return save; + return this.save(payConfig); } @Override @@ -70,7 +75,7 @@ public class PayConfigServiceImpl extends ServiceImpl boolean update = this.updateById(payConfig); if(update){ payConfig = this.getById(payConfig.getId()); - payConfigManager.updatePayConfig(payConfig); + payConfigManager.deletePayConfigAli(payConfig); } return update; } @@ -84,10 +89,24 @@ public class PayConfigServiceImpl extends ServiceImpl } boolean b = this.removeById(id); if(b){ - payConfigManager.deletePayConfig(payConfig); + payConfigManager.deletePayConfigAli(payConfig); } return b; } + @Override + public void updateStatus(Long id, Integer enableStatus) { + if(enableStatus == null){ + return; + } + this.update(Wrappers.lambdaUpdate(PayConfig.class) + .eq(PayConfig::getId,id) + .set(PayConfig::getEnableStatus, enableStatus)); + PayConfig payConfig = this.getById(id); + if(enableStatus == 0){ + payConfigManager.deletePayConfigAli(payConfig); + } + } + }