init
This commit is contained in:
@@ -53,6 +53,10 @@ public class PayController {
|
|||||||
return R.fail(600,"支付失败,未找到订单");
|
return R.fail(600,"支付失败,未找到订单");
|
||||||
}
|
}
|
||||||
PayConfig payConfig = payConfigManager.getWxConfig();
|
PayConfig payConfig = payConfigManager.getWxConfig();
|
||||||
|
if(payConfig == null){
|
||||||
|
log.error("支付失败,未找到可用的微信支付配置");
|
||||||
|
return R.fail(600,"支付失败,未找到可用的微信支付");
|
||||||
|
}
|
||||||
String ip = ServletUtils.getClientIP();
|
String ip = ServletUtils.getClientIP();
|
||||||
Map<String, String> params = UnifiedOrderModel
|
Map<String, String> params = UnifiedOrderModel
|
||||||
.builder()
|
.builder()
|
||||||
@@ -103,6 +107,7 @@ public class PayController {
|
|||||||
try {
|
try {
|
||||||
boolean b = payConfigManager.initAliPay();
|
boolean b = payConfigManager.initAliPay();
|
||||||
if(!b){
|
if(!b){
|
||||||
|
log.error("支付失败,未找到可用的支付宝配置");
|
||||||
return R.fail(600,"支付宝支付失败!请联系管理员");
|
return R.fail(600,"支付宝支付失败!请联系管理员");
|
||||||
}
|
}
|
||||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
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.AgreementDTO;
|
||||||
import com.ruoyi.cai.dto.app.vo.GiftVo;
|
import com.ruoyi.cai.dto.app.vo.GiftVo;
|
||||||
import com.ruoyi.cai.dto.app.vo.setting.SettingGoodsVo;
|
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.cai.service.*;
|
||||||
import com.ruoyi.common.annotation.Log;
|
import com.ruoyi.common.annotation.Log;
|
||||||
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.domain.R;
|
||||||
@@ -37,12 +39,17 @@ public class SettingAppController {
|
|||||||
private GiftService giftService;
|
private GiftService giftService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private AgreementSettingService agreementSettingService;
|
private AgreementSettingService agreementSettingService;
|
||||||
|
@Autowired
|
||||||
|
private SystemConfigManager systemConfigManager;
|
||||||
|
|
||||||
@GetMapping("/goods")
|
@GetMapping("/goods")
|
||||||
@Operation(summary = "充值配置")
|
@Operation(summary = "充值配置")
|
||||||
@Log(title = "充值配置", businessType = BusinessType.OTHER, isSaveDb = false)
|
@Log(title = "充值配置", businessType = BusinessType.OTHER, isSaveDb = false)
|
||||||
public R<SettingGoodsVo> goods(){
|
public R<SettingGoodsVo> goods(){
|
||||||
SettingGoodsVo vo = new SettingGoodsVo();
|
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)
|
List<Goods> list = goodsService.list(Wrappers.lambdaQuery(Goods.class)
|
||||||
.eq(Goods::getStatus,0)
|
.eq(Goods::getStatus,0)
|
||||||
.orderByAsc(Goods::getPrice));
|
.orderByAsc(Goods::getPrice));
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ public enum SystemConfigEnum {
|
|||||||
DEFAULT_UNION_ONE_INCOME_RATE("0.07", "默认工会一级提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),
|
DEFAULT_UNION_ONE_INCOME_RATE("0.07", "默认工会一级提成",SystemConfigGroupEnum.BUSINESS, new RateSystemConfigCheck()),
|
||||||
TODAY_GREET_MAX("100", "每日主播群打招呼次数",SystemConfigGroupEnum.BUSINESS,new NumberSystemConfigCheck()),
|
TODAY_GREET_MAX("100", "每日主播群打招呼次数",SystemConfigGroupEnum.BUSINESS,new NumberSystemConfigCheck()),
|
||||||
GREET_INTERVAL_MIN("30", "群打招呼的间隔时间(分钟)",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),
|
SENSITIVE_ENABLE("1", "是否开启手机号脱敏",SystemConfigGroupEnum.SYSTEM),
|
||||||
SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM),
|
SMS_CODE_ADMIN("", "万能验证码",SystemConfigGroupEnum.SYSTEM),
|
||||||
PASSWORD_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.AliPayApiConfig;
|
||||||
import com.ijpay.alipay.AliPayApiConfigKit;
|
import com.ijpay.alipay.AliPayApiConfigKit;
|
||||||
import com.ruoyi.cai.domain.PayConfig;
|
import com.ruoyi.cai.domain.PayConfig;
|
||||||
|
import com.ruoyi.cai.domain.PayTotal;
|
||||||
import com.ruoyi.cai.service.PayConfigService;
|
import com.ruoyi.cai.service.PayConfigService;
|
||||||
|
import com.ruoyi.cai.service.PayTotalService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@@ -21,6 +22,8 @@ public class PayConfigManager {
|
|||||||
private static final Map<Long,PayConfig> PAY_CONFIGS_MAP = new ConcurrentHashMap<>();
|
private static final Map<Long,PayConfig> PAY_CONFIGS_MAP = new ConcurrentHashMap<>();
|
||||||
@Autowired
|
@Autowired
|
||||||
private PayConfigService payConfigService;
|
private PayConfigService payConfigService;
|
||||||
|
@Autowired
|
||||||
|
private PayTotalService payTotalService;
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init(){
|
public void init(){
|
||||||
@@ -55,22 +58,50 @@ public class PayConfigManager {
|
|||||||
|
|
||||||
public PayConfig getWxConfig(){
|
public PayConfig getWxConfig(){
|
||||||
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
||||||
|
Map<String,PayConfig> using = new HashMap<>();
|
||||||
for (PayConfig value : values) {
|
for (PayConfig value : values) {
|
||||||
if(PayTypeEnum.WX.getCode().equals(value.getPayType())){
|
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(){
|
public PayConfig getAliConfig(){
|
||||||
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
Collection<PayConfig> values = PAY_CONFIGS_MAP.values();
|
||||||
|
Map<String,PayConfig> using = new HashMap<>();
|
||||||
for (PayConfig value : values) {
|
for (PayConfig value : values) {
|
||||||
if(PayTypeEnum.ALI.getCode().equals(value.getPayType())){
|
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 com.ruoyi.common.core.domain.PageQuery;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付统计Service接口
|
* 支付统计Service接口
|
||||||
@@ -20,4 +22,8 @@ public interface PayTotalService extends IService<PayTotal> {
|
|||||||
void incsPrice(PayTypeEnum payTypeEnum, String appId, BigDecimal price);
|
void incsPrice(PayTypeEnum payTypeEnum, String appId, BigDecimal price);
|
||||||
|
|
||||||
Page<PayTotalAdminVo> pageAdmin(PageQuery pageQuery, PayTotal bo);
|
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.pay.PayTypeEnum;
|
||||||
import com.ruoyi.cai.service.PayTotalService;
|
import com.ruoyi.cai.service.PayTotalService;
|
||||||
import com.ruoyi.common.core.domain.PageQuery;
|
import com.ruoyi.common.core.domain.PageQuery;
|
||||||
import com.ruoyi.common.core.page.TableDataInfo;
|
|
||||||
import com.ruoyi.common.utils.BeanConvertUtil;
|
import com.ruoyi.common.utils.BeanConvertUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -20,6 +19,7 @@ import java.math.BigDecimal;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -90,5 +90,23 @@ public class PayTotalServiceImpl extends ServiceImpl<PayTotalMapper,PayTotal> im
|
|||||||
return resp;
|
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