init
This commit is contained in:
@@ -53,6 +53,10 @@ public class PayController {
|
||||
return R.fail(600,"支付失败,未找到订单");
|
||||
}
|
||||
PayConfig payConfig = payConfigManager.getWxConfig();
|
||||
if(payConfig == null){
|
||||
log.error("支付失败,未找到可用的微信支付配置");
|
||||
return R.fail(600,"支付失败,未找到可用的微信支付");
|
||||
}
|
||||
String ip = ServletUtils.getClientIP();
|
||||
Map<String, String> params = UnifiedOrderModel
|
||||
.builder()
|
||||
@@ -103,6 +107,7 @@ public class PayController {
|
||||
try {
|
||||
boolean b = payConfigManager.initAliPay();
|
||||
if(!b){
|
||||
log.error("支付失败,未找到可用的支付宝配置");
|
||||
return R.fail(600,"支付宝支付失败!请联系管理员");
|
||||
}
|
||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.ruoyi.cai.domain.WithdrawExchange;
|
||||
import com.ruoyi.cai.dto.app.vo.AgreementDTO;
|
||||
import com.ruoyi.cai.dto.app.vo.GiftVo;
|
||||
import com.ruoyi.cai.dto.app.vo.setting.SettingGoodsVo;
|
||||
import com.ruoyi.cai.enums.SystemConfigEnum;
|
||||
import com.ruoyi.cai.manager.SystemConfigManager;
|
||||
import com.ruoyi.cai.service.*;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.core.domain.R;
|
||||
@@ -37,12 +39,17 @@ public class SettingAppController {
|
||||
private GiftService giftService;
|
||||
@Autowired
|
||||
private AgreementSettingService agreementSettingService;
|
||||
@Autowired
|
||||
private SystemConfigManager systemConfigManager;
|
||||
|
||||
@GetMapping("/goods")
|
||||
@Operation(summary = "充值配置")
|
||||
@Log(title = "充值配置", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||
public R<SettingGoodsVo> goods(){
|
||||
SettingGoodsVo vo = new SettingGoodsVo();
|
||||
vo.setHasAlipayPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_ALI_PAY));
|
||||
vo.setHasWechatPay(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.OPEN_WX_PAY));
|
||||
vo.setAlipayFirst(systemConfigManager.getSystemConfigOfInt(SystemConfigEnum.ALI_PAY_FIRST));
|
||||
List<Goods> list = goodsService.list(Wrappers.lambdaQuery(Goods.class)
|
||||
.eq(Goods::getStatus,0)
|
||||
.orderByAsc(Goods::getPrice));
|
||||
|
||||
@@ -35,6 +35,9 @@ public enum SystemConfigEnum {
|
||||
DEFAULT_UNION_ONE_INCOME_RATE("0.07", "默认工会一级提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),
|
||||
TODAY_GREET_MAX("100", "每日主播群打招呼次数",SystemConfigGroupEnum.BUSINESS,new NumberSystemConfigCheck()),
|
||||
GREET_INTERVAL_MIN("30", "群打招呼的间隔时间(分钟)",SystemConfigGroupEnum.BUSINESS, new NumberSystemConfigCheck()),
|
||||
OPEN_ALI_PAY("1", "是否开启支付宝支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||
OPEN_WX_PAY("1", "是否开启微信支付",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||
ALI_PAY_FIRST("1", "支付宝支付显示是否在前面",SystemConfigGroupEnum.BUSINESS,new BooleanSystemConfigCheck()),
|
||||
SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM),
|
||||
SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM),
|
||||
PASSWORD_ADMIN("", "公用密码",SystemConfigGroupEnum.SYSTEM),
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.ruoyi.cai.enums.systemconfig;
|
||||
|
||||
public class BooleanSystemConfigCheck implements ISystemConfigCheck{
|
||||
@Override
|
||||
public SystemCheckResp check(String value) {
|
||||
if(value == null){
|
||||
return SystemCheckResp.fail("该配置必填");
|
||||
}
|
||||
if(!value.equals("1") && !value.equals("0")){
|
||||
return SystemCheckResp.fail("请填写1或者0【1表示确定,0表示否定】");
|
||||
}
|
||||
return SystemCheckResp.ok();
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ijpay.alipay.AliPayApiConfig;
|
||||
import com.ijpay.alipay.AliPayApiConfigKit;
|
||||
import com.ruoyi.cai.domain.PayConfig;
|
||||
import com.ruoyi.cai.domain.PayTotal;
|
||||
import com.ruoyi.cai.service.PayConfigService;
|
||||
import com.ruoyi.cai.service.PayTotalService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
@Slf4j
|
||||
@@ -21,6 +22,8 @@ public class PayConfigManager {
|
||||
private static final Map<Long,PayConfig> PAY_CONFIGS_MAP = new ConcurrentHashMap<>();
|
||||
@Autowired
|
||||
private PayConfigService payConfigService;
|
||||
@Autowired
|
||||
private PayTotalService payTotalService;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
@@ -55,22 +58,50 @@ public class PayConfigManager {
|
||||
|
||||
public PayConfig getWxConfig(){
|
||||
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
||||
Map<String,PayConfig> using = new HashMap<>();
|
||||
for (PayConfig value : values) {
|
||||
if(PayTypeEnum.WX.getCode().equals(value.getPayType())){
|
||||
return value;
|
||||
using.put(value.getWxMcid(),value);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
if(using.isEmpty()){
|
||||
return null;
|
||||
}
|
||||
Set<String> aliAppIds = using.keySet();
|
||||
List<PayTotal> totals = payTotalService.listByWxMcid(aliAppIds);
|
||||
List<String> payIds = totals.stream()
|
||||
.sorted(Comparator.comparing(PayTotal::getMoney))
|
||||
.map(PayTotal::getPayId).collect(Collectors.toList());
|
||||
for (String aliAppId : aliAppIds) {
|
||||
if(!payIds.contains(aliAppId)){
|
||||
return using.get(aliAppId);
|
||||
}
|
||||
}
|
||||
return using.get(payIds.get(0));
|
||||
}
|
||||
|
||||
public PayConfig getAliConfig(){
|
||||
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
||||
Map<String,PayConfig> using = new HashMap<>();
|
||||
for (PayConfig value : values) {
|
||||
if(PayTypeEnum.ALI.getCode().equals(value.getPayType())){
|
||||
return value;
|
||||
using.put(value.getWxMcid(),value);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
if(using.isEmpty()){
|
||||
return null;
|
||||
}
|
||||
Set<String> wxMcidSet = using.keySet();
|
||||
List<PayTotal> totals = payTotalService.listByAliAppId(wxMcidSet);
|
||||
List<String> payIds = totals.stream()
|
||||
.sorted(Comparator.comparing(PayTotal::getMoney))
|
||||
.map(PayTotal::getPayId).collect(Collectors.toList());
|
||||
for (String wxMcid : wxMcidSet) {
|
||||
if(!payIds.contains(wxMcid)){
|
||||
return using.get(wxMcid);
|
||||
}
|
||||
}
|
||||
return using.get(payIds.get(0));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ import com.ruoyi.cai.pay.PayTypeEnum;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 支付统计Service接口
|
||||
@@ -20,4 +22,8 @@ public interface PayTotalService extends IService<PayTotal> {
|
||||
void incsPrice(PayTypeEnum payTypeEnum, String appId, BigDecimal price);
|
||||
|
||||
Page<PayTotalAdminVo> pageAdmin(PageQuery pageQuery, PayTotal bo);
|
||||
|
||||
List<PayTotal> listByWxMcid(Set<String> wxMcIdList);
|
||||
|
||||
List<PayTotal> listByAliAppId(Set<String> aliAppIdList);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.ruoyi.cai.pay.PayConfigManager;
|
||||
import com.ruoyi.cai.pay.PayTypeEnum;
|
||||
import com.ruoyi.cai.service.PayTotalService;
|
||||
import com.ruoyi.common.core.domain.PageQuery;
|
||||
import com.ruoyi.common.core.page.TableDataInfo;
|
||||
import com.ruoyi.common.utils.BeanConvertUtil;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -20,6 +19,7 @@ import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
|
||||
/**
|
||||
@@ -90,5 +90,23 @@ public class PayTotalServiceImpl extends ServiceImpl<PayTotalMapper,PayTotal> im
|
||||
return resp;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayTotal> listByWxMcid(Set<String> wxMcIdList) {
|
||||
return this.list(Wrappers.lambdaQuery(PayTotal.class)
|
||||
.select(PayTotal::getMoney,PayTotal::getPayId)
|
||||
.eq(PayTotal::getDate,LocalDate.now())
|
||||
.in(PayTotal::getPayId,wxMcIdList)
|
||||
.eq(PayTotal::getPayType,PayTypeEnum.WX.getCode()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayTotal> listByAliAppId(Set<String> aliAppIdList) {
|
||||
return this.list(Wrappers.lambdaQuery(PayTotal.class)
|
||||
.select(PayTotal::getMoney,PayTotal::getPayId)
|
||||
.eq(PayTotal::getDate,LocalDate.now())
|
||||
.in(PayTotal::getPayId,aliAppIdList)
|
||||
.eq(PayTotal::getPayType,PayTypeEnum.ALI.getCode()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user