MQ整体优化
This commit is contained in:
parent
010d879982
commit
0ba6b3bd13
|
|
@ -151,6 +151,15 @@ public class CS {
|
|||
/** 用于activemq 发布订阅模式交换机**/
|
||||
String FANOUT_MODIFY_SYS_CONFIG = "fanout.modify.sys.config";
|
||||
|
||||
/** MQ消息类型 **/
|
||||
String MQ_TYPE_MODIFY_MCH_APP = "modify.mch.app";
|
||||
String MQ_TYPE_MODIFY_ISV_INFO = "modify.isv.info";
|
||||
String MQ_TYPE_MODIFY_MCH_INFO = "modify.mch.info";
|
||||
String MQ_TYPE_MODIFY_SYS_CONFIG = "modify.sys.config";
|
||||
String MQ_TYPE_CHANNEL_ORDER_QUERY = "channel.order.query";
|
||||
String MQ_TYPE_PAY_ORDER_MCH_NOTIFY = "pay.order.mch.notify";
|
||||
String MQ_TYPE_MCH_LOGIN_USER_REMOVE = "mch.login.user.remove";
|
||||
|
||||
}
|
||||
|
||||
/** RabbitMQ交换机类型 **/
|
||||
|
|
|
|||
|
|
@ -13,19 +13,28 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
import java.util.Collection;
|
||||
package com.jeequan.jeepay.core.mq;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqMchUserRemoveService {
|
||||
public abstract class MqCommonService {
|
||||
|
||||
public abstract void send(Collection<Long> userIdList);
|
||||
/**
|
||||
* 消息发送
|
||||
* @param msg
|
||||
* @param sendType
|
||||
*/
|
||||
public abstract void send(String msg, String sendType);
|
||||
|
||||
/**
|
||||
* 延迟消息发送
|
||||
* @param msg
|
||||
* @param delay
|
||||
* @param sendType
|
||||
*/
|
||||
public abstract void send(String msg, long delay, String sendType);
|
||||
|
||||
}
|
||||
|
|
@ -19,10 +19,11 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.SysConfig;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
|
@ -49,7 +50,7 @@ import java.util.Map;
|
|||
public class SysConfigController extends CommonCtrl {
|
||||
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -84,7 +85,7 @@ public class SysConfigController extends CommonCtrl {
|
|||
int update = sysConfigService.updateByConfigKey(updateMap);
|
||||
if(update <= 0) return ApiRes.fail(ApiCodeEnum.SYSTEM_ERROR, "更新失败");
|
||||
|
||||
mqSendServiceImpl.sendModifySysConfig(groupKey);
|
||||
mqCommonService.send(groupKey, CS.MQ.MQ_TYPE_MODIFY_SYS_CONFIG);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,10 +20,11 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.IsvInfo;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.IsvInfoService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -45,7 +46,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
public class IsvInfoController extends CommonCtrl {
|
||||
|
||||
@Autowired private IsvInfoService isvInfoService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @author: pangxiaoyu
|
||||
|
|
@ -95,7 +96,7 @@ public class IsvInfoController extends CommonCtrl {
|
|||
@RequestMapping(value="/{isvNo}", method = RequestMethod.DELETE)
|
||||
public ApiRes delete(@PathVariable("isvNo") String isvNo) {
|
||||
isvInfoService.removeByIsvNo(isvNo);
|
||||
mqSendServiceImpl.sendModifyIsvInfo(isvNo); // 推送mq到目前节点进行更新数据
|
||||
mqCommonService.send(isvNo, CS.MQ.MQ_TYPE_MODIFY_ISV_INFO); // 推送mq到目前节点进行更新数据
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
@ -111,7 +112,7 @@ public class IsvInfoController extends CommonCtrl {
|
|||
IsvInfo isvInfo = getObject(IsvInfo.class);
|
||||
isvInfo.setIsvNo(isvNo);
|
||||
boolean result = isvInfoService.updateById(isvInfo);
|
||||
mqSendServiceImpl.sendModifyIsvInfo(isvNo); // 推送mq到目前节点进行更新数据
|
||||
mqCommonService.send(isvNo, CS.MQ.MQ_TYPE_MODIFY_ISV_INFO); // 推送mq到目前节点进行更新数据
|
||||
if (!result) return ApiRes.fail(ApiCodeEnum.SYS_OPERATION_FAIL_UPDATE);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ import com.jeequan.jeepay.core.constants.CS;
|
|||
import com.jeequan.jeepay.core.entity.PayInterfaceConfig;
|
||||
import com.jeequan.jeepay.core.entity.PayInterfaceDefine;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.PayInterfaceConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
|
|
@ -43,7 +43,7 @@ import java.util.List;
|
|||
public class IsvPayInterfaceConfigController extends CommonCtrl {
|
||||
|
||||
@Autowired private PayInterfaceConfigService payInterfaceConfigService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @Author: ZhuXiao
|
||||
|
|
@ -114,7 +114,7 @@ public class IsvPayInterfaceConfigController extends CommonCtrl {
|
|||
if (!result) {
|
||||
return ApiRes.fail(ApiCodeEnum.SYSTEM_ERROR, "配置失败");
|
||||
}
|
||||
mqSendServiceImpl.sendModifyIsvInfo(infoId); // 推送mq到目前节点进行更新数据
|
||||
mqCommonService.send(infoId, CS.MQ.MQ_TYPE_MODIFY_ISV_INFO); // 推送mq到目前节点进行更新数据
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,14 +16,17 @@
|
|||
package com.jeequan.jeepay.mgr.ctrl.merchant;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchApp;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchAppService;
|
||||
import com.jeequan.jeepay.service.impl.MchInfoService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
|
@ -44,7 +47,7 @@ public class MchAppController extends CommonCtrl {
|
|||
|
||||
@Autowired private MchInfoService mchInfoService;
|
||||
@Autowired private MchAppService mchAppService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @Author: ZhuXiao
|
||||
|
|
@ -122,7 +125,9 @@ public class MchAppController extends CommonCtrl {
|
|||
return ApiRes.fail(ApiCodeEnum.SYS_OPERATION_FAIL_UPDATE);
|
||||
}
|
||||
// 推送修改应用消息
|
||||
mqSendServiceImpl.sendModifyMchApp(mchApp.getMchNo(), mchApp.getAppId());
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchApp.getMchNo());
|
||||
jsonObject.put("appId", appId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
@ -140,7 +145,9 @@ public class MchAppController extends CommonCtrl {
|
|||
mchAppService.removeByAppId(appId);
|
||||
|
||||
// 推送mq到目前节点进行更新数据
|
||||
mqSendServiceImpl.sendModifyMchApp(mchApp.getMchNo(), appId);
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchApp.getMchNo());
|
||||
jsonObject.put("appId", appId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ package com.jeequan.jeepay.mgr.ctrl.merchant;
|
|||
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
|
|
@ -25,8 +26,8 @@ import com.jeequan.jeepay.core.constants.CS;
|
|||
import com.jeequan.jeepay.core.entity.MchInfo;
|
||||
import com.jeequan.jeepay.core.entity.SysUser;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchInfoService;
|
||||
import com.jeequan.jeepay.service.impl.SysUserAuthService;
|
||||
import com.jeequan.jeepay.service.impl.SysUserService;
|
||||
|
|
@ -56,7 +57,7 @@ public class MchInfoController extends CommonCtrl {
|
|||
@Autowired private MchInfoService mchInfoService;
|
||||
@Autowired private SysUserService sysUserService;
|
||||
@Autowired private SysUserAuthService sysUserAuthService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @author: pangxiaoyu
|
||||
|
|
@ -113,9 +114,9 @@ public class MchInfoController extends CommonCtrl {
|
|||
public ApiRes delete(@PathVariable("mchNo") String mchNo) {
|
||||
List<Long> userIdList = mchInfoService.removeByMchNo(mchNo);
|
||||
// 推送mq删除redis用户缓存
|
||||
mqSendServiceImpl.sendUserRemove(userIdList);
|
||||
mqCommonService.send(JSONArray.toJSONString(userIdList), CS.MQ.MQ_TYPE_MCH_LOGIN_USER_REMOVE);
|
||||
// 推送mq到目前节点进行更新数据
|
||||
mqSendServiceImpl.sendModifyMchInfo(mchNo);
|
||||
mqCommonService.send(mchNo, CS.MQ.MQ_TYPE_MODIFY_MCH_INFO);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
@ -161,7 +162,7 @@ public class MchInfoController extends CommonCtrl {
|
|||
|
||||
// 推送mq删除redis用户认证信息
|
||||
if (!removeCacheUserIdList.isEmpty()) {
|
||||
mqSendServiceImpl.sendUserRemove(removeCacheUserIdList);
|
||||
mqCommonService.send(JSONArray.toJSONString(removeCacheUserIdList), CS.MQ.MQ_TYPE_MCH_LOGIN_USER_REMOVE);
|
||||
}
|
||||
|
||||
//更新商户信息
|
||||
|
|
@ -170,7 +171,7 @@ public class MchInfoController extends CommonCtrl {
|
|||
}
|
||||
|
||||
// 推送mq到目前节点进行更新数据
|
||||
mqSendServiceImpl.sendModifyMchInfo(mchNo);
|
||||
mqCommonService.send(mchNo, CS.MQ.MQ_TYPE_MODIFY_MCH_INFO);
|
||||
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package com.jeequan.jeepay.mgr.ctrl.merchant;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
|
|
@ -22,8 +23,9 @@ import com.jeequan.jeepay.core.entity.MchApp;
|
|||
import com.jeequan.jeepay.core.entity.PayInterfaceConfig;
|
||||
import com.jeequan.jeepay.core.entity.PayInterfaceDefine;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchAppService;
|
||||
import com.jeequan.jeepay.service.impl.PayInterfaceConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -45,8 +47,8 @@ import java.util.List;
|
|||
public class MchPayInterfaceConfigController extends CommonCtrl {
|
||||
|
||||
@Autowired private PayInterfaceConfigService payInterfaceConfigService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MchAppService mchAppService;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @Author: ZhuXiao
|
||||
|
|
@ -123,8 +125,9 @@ public class MchPayInterfaceConfigController extends CommonCtrl {
|
|||
if (!result) {
|
||||
return ApiRes.fail(ApiCodeEnum.SYSTEM_ERROR, "配置失败");
|
||||
}
|
||||
|
||||
mqSendServiceImpl.sendModifyMchApp(mchApp.getMchNo(), infoId); // 推送mq到目前节点进行更新数据
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchApp.getMchNo());
|
||||
jsonObject.put("appId", infoId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP); // 推送mq到目前节点进行更新数据
|
||||
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,12 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchNotifyRecord;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.mgr.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchNotifyRecordService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -45,7 +46,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|||
public class MchNotifyController extends CommonCtrl {
|
||||
|
||||
@Autowired private MchNotifyRecordService mchNotifyService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @author: pangxiaoyu
|
||||
|
|
@ -106,7 +107,7 @@ public class MchNotifyController extends CommonCtrl {
|
|||
mchNotifyService.getBaseMapper().updateIngAndAddNotifyCountLimit(notifyId);
|
||||
|
||||
//调起MQ重发
|
||||
mqSendServiceImpl.sendPayOrderNotify(notifyId+"");
|
||||
mqCommonService.send(notifyId+"", CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY);
|
||||
|
||||
return ApiRes.ok(mchNotify);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,171 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author pangxiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021-06-07 07:15
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class ActiveMqSend extends MqCommonService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
|
||||
|
||||
@Bean("activeMqSendModifyMchUserRemove")
|
||||
public Queue mqQueue4ModifyMchUserRemove(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_MODIFY_MCH_USER_REMOVE);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendModifyMchUserRemove")
|
||||
private Queue mqQueue4ModifyMchUserRemove;
|
||||
|
||||
@Bean("activeMqSendPayOrderMchNotify")
|
||||
public Queue mqQueue4PayOrderMchNotify(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendPayOrderMchNotify")
|
||||
private Queue mqQueue4PayOrderMchNotify;
|
||||
|
||||
@Bean("activeMqSendModifyIsvInfo")
|
||||
public ActiveMQTopic mqTopic4ModifyIsvInfo(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_ISV_INFO);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendModifyIsvInfo")
|
||||
private ActiveMQTopic mqTopic4ModifyIsvInfo;
|
||||
|
||||
@Bean("activeMqSendModifyMchApp")
|
||||
public ActiveMQTopic mqTopic4ModifyMchApp(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_MCH_APP);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendModifyMchApp")
|
||||
private ActiveMQTopic mqTopic4ModifyMchApp;
|
||||
|
||||
|
||||
@Bean("activeMqSendModifyMchInfo")
|
||||
public ActiveMQTopic mqTopic4ModifyMchInfo(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_MCH_INFO);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendModifyMchInfo")
|
||||
private ActiveMQTopic mqTopic4ModifyMchInfo;
|
||||
|
||||
@Bean("activeMqSendModifySysConfig")
|
||||
public ActiveMQTopic mqTopic4ModifySysConfig(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_SYS_CONFIG);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeMqSendModifySysConfig")
|
||||
private ActiveMQTopic mqTopic4ModifySysConfig;
|
||||
|
||||
@Override
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) { // 商户订单回调
|
||||
queuePayOrderMchNotify(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_ISV_INFO)) { // 服务商信息修改
|
||||
topicModifyIsvInfo(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_APP)) { // 商户应用修改
|
||||
topicModifyMchApp(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_INFO)) { // 商户信息修改
|
||||
topicModifyMchInfo(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_SYS_CONFIG)) { // 系统配置修改
|
||||
topicModifySysConfig(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MCH_LOGIN_USER_REMOVE)) { // 商户登录用户清除信息
|
||||
queueMchLoginUserRemove(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
|
||||
}
|
||||
|
||||
/** 发送商户订单回调消息 **/
|
||||
public void queuePayOrderMchNotify(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4PayOrderMchNotify, msg);
|
||||
}
|
||||
|
||||
/** 发送服务商信息修改消息 **/
|
||||
public void topicModifyIsvInfo(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyIsvInfo, msg);
|
||||
}
|
||||
|
||||
/** 发送商户应用修改消息 **/
|
||||
public void topicModifyMchApp(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyMchApp, msg);
|
||||
}
|
||||
|
||||
/** 发送商户信息修改消息 **/
|
||||
public void topicModifyMchInfo(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyMchInfo, msg);
|
||||
}
|
||||
|
||||
/** 发送系统配置修改消息 **/
|
||||
public void topicModifySysConfig(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifySysConfig, msg);
|
||||
}
|
||||
|
||||
/** 发送商户登录用户清除信息消息 **/
|
||||
public void queueMchLoginUserRemove(String msg) { this.jmsTemplate.convertAndSend(mqQueue4ModifyMchUserRemove, msg); }
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_SYS_CONFIG, containerFactory = "jmsListenerContainer")
|
||||
public void receive(String msg) {
|
||||
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.AmqpTemplate;
|
||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||
import org.springframework.amqp.rabbit.annotation.QueueBinding;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author pangxiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021-06-07 07:15
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqSend extends MqCommonService {
|
||||
|
||||
@Autowired private AmqpTemplate rabbitTemplate;
|
||||
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
|
||||
@Override
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) { // 商户订单回调
|
||||
payOrderMchNotify(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_ISV_INFO)) { // 服务商信息修改
|
||||
directModifyIsvInfo(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_APP)) { // 商户应用修改
|
||||
directModifyMchApp(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_INFO)) { // 商户信息修改
|
||||
directModifyMchInfo(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_SYS_CONFIG)) { // 系统配置修改
|
||||
fanoutModifySysConfig(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_MCH_LOGIN_USER_REMOVE)) { // 商户登录用户清除信息
|
||||
directMchLoginUserRemove(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
|
||||
}
|
||||
|
||||
/** 发送商户订单回调消息 **/
|
||||
public void payOrderMchNotify(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg);
|
||||
}
|
||||
|
||||
/** 发送服务商信息修改消息 **/
|
||||
public void directModifyIsvInfo(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_ISV_INFO, msg);
|
||||
}
|
||||
|
||||
/** 发送商户应用修改消息 **/
|
||||
public void directModifyMchApp(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_APP, msg);
|
||||
}
|
||||
|
||||
/** 发送商户信息修改消息 **/
|
||||
public void directModifyMchInfo(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_INFO, msg);
|
||||
}
|
||||
|
||||
/** 发送系统配置修改消息 **/
|
||||
public void fanoutModifySysConfig(String msg) {
|
||||
this.rabbitTemplate.convertAndSend(CS.FANOUT_EXCHANGE_SYS_CONFIG, CS.MQ.FANOUT_MODIFY_SYS_CONFIG, msg);
|
||||
}
|
||||
|
||||
/** 发送商户登录用户清除信息消息 **/
|
||||
public void directMchLoginUserRemove(String msg) {
|
||||
this.rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.QUEUE_MODIFY_MCH_USER_REMOVE, msg);
|
||||
}
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@RabbitListener(bindings = {@QueueBinding(value = @Queue(),exchange = @Exchange(name = CS.FANOUT_EXCHANGE_SYS_CONFIG,type = "fanout"))})
|
||||
public void receive(String msg) {
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
package com.jeequan.jeepay.mgr.mq.config;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
package com.jeequan.jeepay.mgr.mq.config;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import org.springframework.amqp.core.*;
|
||||
|
|
@ -30,9 +30,9 @@ import org.springframework.context.annotation.Profile;
|
|||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
@Configuration
|
||||
@EnableRabbit
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqConfig {
|
||||
|
||||
@Bean("modifyIsvInfo")
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.queue;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqMchUserRemoveService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 商户用户信息清除
|
||||
*
|
||||
* @author pangxiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021-06-07 07:15
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqQueue4ModifyMchUserRemove extends MqMchUserRemoveService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Bean("activeModifyMchUserRemove")
|
||||
public Queue mqQueue4ModifyMchUserRemove(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_MODIFY_MCH_USER_REMOVE);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeModifyMchUserRemove")
|
||||
private Queue mqQueue4ModifyMchUserRemove;
|
||||
|
||||
@Override
|
||||
public void send(Collection<Long> userIdList) {
|
||||
if(userIdList == null || userIdList.isEmpty()){
|
||||
return ;
|
||||
}
|
||||
this.jmsTemplate.convertAndSend(mqQueue4ModifyMchUserRemove, JSONArray.toJSONString(userIdList));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqPayOrderNotifyService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
|
||||
/**
|
||||
* 商户订单回调MQ通知
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/21 18:03
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqQueue4PayOrderMchNotify extends MqPayOrderNotifyService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Bean("activePayOrderMchNotify")
|
||||
public Queue mqQueue4PayOrderMchNotify(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activePayOrderMchNotify")
|
||||
private Queue mqQueue4PayOrderMchNotify;
|
||||
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4PayOrderMchNotify, msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.queue;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqMchUserRemoveService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.AmqpTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* Rabbitmq
|
||||
* 商户用户信息清除
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMq4ModifyMchUserRemove extends MqMchUserRemoveService {
|
||||
|
||||
@Autowired private AmqpTemplate rabbitTemplate;
|
||||
|
||||
@Override
|
||||
public void send(Collection<Long> userIdList) {
|
||||
if(userIdList == null || userIdList.isEmpty()){
|
||||
return ;
|
||||
}
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_MODIFY_MCH_USER_REMOVE, JSONArray.toJSONString(userIdList));
|
||||
}
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqPayOrderNotifyService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.AmqpTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* Rabbitmq
|
||||
* 商户订单回调MQ通知
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMq4PayOrderMchNotify extends MqPayOrderNotifyService {
|
||||
|
||||
@Autowired
|
||||
private AmqpTemplate rabbitTemplate;
|
||||
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqModifyIsvInfoService {
|
||||
|
||||
public abstract void send(String msg);
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqModifyMchAppService {
|
||||
|
||||
public abstract void send(String mchNo, String appId);
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqModifyMchInfoService {
|
||||
|
||||
public abstract void send(String mchNo);
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqModifySysConfigService {
|
||||
|
||||
public abstract void send(String msg);
|
||||
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqPayOrderNotifyService {
|
||||
|
||||
public abstract void send(String msg);
|
||||
|
||||
}
|
||||
|
|
@ -1,69 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.service;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* mq消息中转
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MqSendServiceImpl {
|
||||
|
||||
@Autowired private MqMchUserRemoveService mqMchUserRemoveService;
|
||||
@Autowired private MqPayOrderNotifyService mqPayOrderNotifyService;
|
||||
@Autowired private MqModifyIsvInfoService mqModifyIsvInfoService;
|
||||
@Autowired private MqModifyMchInfoService mqModifyMchInfoService;
|
||||
@Autowired private MqModifyMchAppService mqModifyMchAppService;
|
||||
@Autowired private MqModifySysConfigService mqModifySysConfigService;
|
||||
|
||||
/** 删除商户用户信息 **/
|
||||
public void sendUserRemove(Collection<Long> userIdList){
|
||||
mqMchUserRemoveService.send(userIdList);
|
||||
}
|
||||
|
||||
/** 订单回调信息 **/
|
||||
public void sendPayOrderNotify(String msg){
|
||||
mqPayOrderNotifyService.send(msg);
|
||||
}
|
||||
|
||||
/** 服务商修改推送 **/
|
||||
public void sendModifyIsvInfo(String msg){ mqModifyIsvInfoService.send(msg); }
|
||||
|
||||
/** 商户修改推送 **/
|
||||
public void sendModifyMchInfo(String msg){ mqModifyMchInfoService.send(msg); }
|
||||
|
||||
/** 商户应用修改推送 **/
|
||||
public void sendModifyMchApp(String mchNo, String appId){
|
||||
mqModifyMchAppService.send(mchNo, appId);
|
||||
}
|
||||
|
||||
/** 系统配置修改推送 **/
|
||||
public void sendModifySysConfig(String msg){
|
||||
mqModifySysConfigService.send(msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,59 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyIsvInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/*
|
||||
* 更改ISV信息
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyIsvInfo extends MqModifyIsvInfoService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Bean("activeModifyIsvInfo")
|
||||
public ActiveMQTopic mqTopic4ModifyIsvInfo(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_ISV_INFO);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeModifyIsvInfo")
|
||||
private ActiveMQTopic mqTopic4ModifyIsvInfo;
|
||||
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyIsvInfo, msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyMchInfoService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/*
|
||||
* 更改商户信息
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyMchInfo extends MqModifyMchInfoService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Bean("activeModifyMchInfo")
|
||||
public ActiveMQTopic mqTopic4ModifyMchInfo(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_MCH_INFO);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeModifyMchInfo")
|
||||
private ActiveMQTopic mqTopic4ModifyMchInfo;
|
||||
|
||||
@Override
|
||||
public void send(String mchNo) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyMchInfo, mchNo);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifySysConfigService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/*
|
||||
* 更改系统配置参数
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:13
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifySysConfig extends MqModifySysConfigService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
|
||||
@Bean("activeModifySysConfig")
|
||||
public ActiveMQTopic mqTopic4ModifySysConfig(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_SYS_CONFIG);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeModifySysConfig")
|
||||
private ActiveMQTopic mqTopic4ModifySysConfig;
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_SYS_CONFIG, containerFactory = "jmsListenerContainer")
|
||||
public void receive(String msg) {
|
||||
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifySysConfig, msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyIsvInfoService;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 服务商信息修改推送
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyIsvInfo extends MqModifyIsvInfoService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_ISV_INFO, msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyMchAppService;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 商户应用修改推送
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyMchApp extends MqModifyMchAppService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String mchNo, String appId) {
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchNo);
|
||||
jsonObject.put("appId", appId);
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_APP, jsonObject.toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyMchInfoService;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 商户信息修改推送
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyMchInfo extends MqModifyMchInfoService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String mchNo) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_INFO, mchNo);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifySysConfigService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.core.AmqpTemplate;
|
||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||
import org.springframework.amqp.rabbit.annotation.QueueBinding;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 系统信息修改推送
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifySysConfig extends MqModifySysConfigService {
|
||||
|
||||
@Autowired private AmqpTemplate rabbitTemplate;
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@RabbitListener(bindings = {@QueueBinding(value = @Queue(),exchange = @Exchange(name = CS.FANOUT_EXCHANGE_SYS_CONFIG,type = "fanout"))})
|
||||
public void receive(String msg) {
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.rabbitTemplate.convertAndSend(CS.FANOUT_EXCHANGE_SYS_CONFIG, CS.MQ.FANOUT_MODIFY_SYS_CONFIG, msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -16,15 +16,18 @@
|
|||
package com.jeequan.jeepay.mch.ctrl.merchant;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.ApiCodeEnum;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchApp;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mch.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchAppService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -43,7 +46,7 @@ import org.springframework.web.bind.annotation.*;
|
|||
public class MchAppController extends CommonCtrl {
|
||||
|
||||
@Autowired private MchAppService mchAppService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @Author: ZhuXiao
|
||||
|
|
@ -125,7 +128,9 @@ public class MchAppController extends CommonCtrl {
|
|||
return ApiRes.fail(ApiCodeEnum.SYS_OPERATION_FAIL_UPDATE);
|
||||
}
|
||||
// 推送修改应用消息
|
||||
mqSendServiceImpl.sendModifyMchApp(getCurrentMchNo(), mchApp.getAppId());
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchApp.getMchNo());
|
||||
jsonObject.put("appId", appId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +152,9 @@ public class MchAppController extends CommonCtrl {
|
|||
mchAppService.removeByAppId(appId);
|
||||
|
||||
// 推送mq到目前节点进行更新数据
|
||||
mqSendServiceImpl.sendModifyMchApp(getCurrentMchNo(), appId);
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchApp.getMchNo());
|
||||
jsonObject.put("appId", appId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP);
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
package com.jeequan.jeepay.mch.ctrl.merchant;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.aop.MethodLog;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchInfo;
|
||||
|
|
@ -22,8 +23,9 @@ import com.jeequan.jeepay.core.entity.PayInterfaceConfig;
|
|||
import com.jeequan.jeepay.core.entity.PayInterfaceDefine;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mch.ctrl.CommonCtrl;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqSendServiceImpl;
|
||||
import com.jeequan.jeepay.service.impl.MchInfoService;
|
||||
import com.jeequan.jeepay.service.impl.PayInterfaceConfigService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -45,8 +47,8 @@ import java.util.List;
|
|||
public class MchPayInterfaceConfigController extends CommonCtrl {
|
||||
|
||||
@Autowired private PayInterfaceConfigService payInterfaceConfigService;
|
||||
@Autowired private MqSendServiceImpl mqSendServiceImpl;
|
||||
@Autowired private MchInfoService mchInfoService;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
/**
|
||||
* @Author: ZhuXiao
|
||||
|
|
@ -124,8 +126,9 @@ public class MchPayInterfaceConfigController extends CommonCtrl {
|
|||
if (!result) {
|
||||
throw new BizException("配置失败");
|
||||
}
|
||||
|
||||
mqSendServiceImpl.sendModifyMchApp(getCurrentMchNo(), infoId); // 推送mq到目前节点进行更新数据
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", getCurrentMchNo());
|
||||
jsonObject.put("appId", infoId);
|
||||
mqCommonService.send(jsonObject.toJSONString(), CS.MQ.MQ_TYPE_MODIFY_MCH_APP);
|
||||
|
||||
return ApiRes.ok();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,12 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mgr.mq.topic;
|
||||
package com.jeequan.jeepay.mch.mq;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mgr.mq.service.MqModifyMchAppService;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -39,26 +37,36 @@ import org.springframework.stereotype.Component;
|
|||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyMchApp extends MqModifyMchAppService {
|
||||
public class ActiveMqSend extends MqCommonService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Bean("activeModifyMchApp")
|
||||
@Bean("activeMqSendModifyMchApp")
|
||||
public ActiveMQTopic mqTopic4ModifyMchApp(){
|
||||
return new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_MCH_APP);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeModifyMchApp")
|
||||
@Qualifier("activeMqSendModifyMchApp")
|
||||
private ActiveMQTopic mqTopic4ModifyMchApp;
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String mchNo, String appId) {
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchNo);
|
||||
jsonObject.put("appId", appId);
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyMchApp, jsonObject.toString());
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_APP)) { // 商户应用修改
|
||||
topicModifyMchApp(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
|
||||
}
|
||||
|
||||
/** 发送商户应用修改信息 **/
|
||||
public void topicModifyMchApp(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqTopic4ModifyMchApp, msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -13,18 +13,14 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.topic;
|
||||
package com.jeequan.jeepay.mch.mq;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqModifyMchAppService;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
|
|
@ -37,17 +33,25 @@ import org.springframework.stereotype.Component;
|
|||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyMchApp extends MqModifyMchAppService {
|
||||
public class RabbitMqSend extends MqCommonService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
/** 推送消息 **/
|
||||
@Override
|
||||
public void send(String mchNo, String appId) {
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchNo);
|
||||
jsonObject.put("appId", appId);
|
||||
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_APP, jsonObject.toString());
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_MODIFY_MCH_APP)) { // 商户应用修改
|
||||
directModifyMchApp(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
|
||||
}
|
||||
|
||||
/** 发送商户应用修改信息 **/
|
||||
public void directModifyMchApp(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.DIRECT_EXCHANGE, CS.MQ.TOPIC_MODIFY_MCH_APP, msg);
|
||||
}
|
||||
}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.queue;
|
||||
package com.jeequan.jeepay.mch.mq.activemq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.mch.mq.receive.MqReceiveServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -36,8 +36,7 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqQueue4ModifyMchUserRemove extends ActiveMQQueue {
|
||||
|
||||
@Autowired
|
||||
private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
public MqQueue4ModifyMchUserRemove(){
|
||||
super(CS.MQ.QUEUE_MODIFY_MCH_USER_REMOVE);
|
||||
|
|
@ -53,6 +52,4 @@ public class MqQueue4ModifyMchUserRemove extends ActiveMQQueue {
|
|||
mqReceiveServiceImpl.mchUserRemove(userIdStr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.topic;
|
||||
package com.jeequan.jeepay.mch.mq.activemq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.mch.mq.receive.MqReceiveServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -49,6 +49,4 @@ public class MqTopic4ModifySysConfig extends ActiveMQTopic{
|
|||
mqReceiveServiceImpl.initDbConfig(msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.topic;
|
||||
package com.jeequan.jeepay.mch.mq.config;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.config;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import org.springframework.amqp.core.Binding;
|
||||
import org.springframework.amqp.core.BindingBuilder;
|
||||
import org.springframework.amqp.core.DirectExchange;
|
||||
import org.springframework.amqp.core.Queue;
|
||||
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 队列交换机注册
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
@Configuration
|
||||
@EnableRabbit
|
||||
public class RabbitMqConfig {
|
||||
|
||||
|
||||
@Bean("modifyMchApp")
|
||||
public Queue modifyMchApp() {
|
||||
return new Queue(CS.MQ.TOPIC_MODIFY_MCH_APP,true);
|
||||
}
|
||||
|
||||
//交换机 起名:directExchange
|
||||
@Bean("directExchange")
|
||||
DirectExchange directExchange() {
|
||||
return new DirectExchange(CS.DIRECT_EXCHANGE,true,false);
|
||||
}
|
||||
|
||||
//绑定 将队列和交换机绑定, 并设置用于匹配键:TOPIC_MODIFY_MCH_APP
|
||||
@Bean
|
||||
Binding bindingMchApp(@Qualifier("modifyMchApp") Queue modifyMchApp, @Qualifier("directExchange") DirectExchange directExchange) {
|
||||
return BindingBuilder.bind(modifyMchApp).to(directExchange).with(CS.MQ.TOPIC_MODIFY_MCH_APP);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.queue;
|
||||
package com.jeequan.jeepay.mch.mq.rabbitmq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.mch.mq.receive.MqReceiveServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -35,8 +35,7 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMq4ModifyMchUserRemove {
|
||||
|
||||
@Autowired
|
||||
private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
/**
|
||||
* @author: pangxiaoyu
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.topic;
|
||||
package com.jeequan.jeepay.mch.mq.rabbitmq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.mch.mq.receive.MqReceiveServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||
|
|
@ -45,7 +45,4 @@ public class RabbitMqDirect4ModifySysConfig {
|
|||
public void receive(String msg) {
|
||||
mqReceiveServiceImpl.initDbConfig(msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.service;
|
||||
package com.jeequan.jeepay.mch.mq.receive;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.jeequan.jeepay.core.cache.RedisUtil;
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.service;
|
||||
|
||||
/**
|
||||
* mq消息中转抽象类
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqModifyMchAppService {
|
||||
|
||||
public abstract void send(String mchNo, String appId);
|
||||
|
||||
}
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.service;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* mq消息中转
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MqSendServiceImpl {
|
||||
|
||||
@Autowired private MqModifyMchAppService mqModifyMchAppService;
|
||||
|
||||
public void sendModifyMchApp(String mchNo, String appId){
|
||||
mqModifyMchAppService.send(mchNo, appId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.mch.mq.topic;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.utils.JsonKit;
|
||||
import com.jeequan.jeepay.mch.mq.service.MqModifyMchAppService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.command.ActiveMQTopic;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/*
|
||||
* 更改商户应用信息
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyMchApp extends MqModifyMchAppService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
/** 推送消息到各个节点 **/
|
||||
@Override
|
||||
public void send(String mchNo, String appId) {
|
||||
JSONObject jsonObject = JsonKit.newJson("mchNo", mchNo);
|
||||
jsonObject.put("appId", appId);
|
||||
this.jmsTemplate.convertAndSend(new ActiveMQTopic(CS.MQ.TOPIC_MODIFY_MCH_APP), jsonObject.toString());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -23,6 +23,7 @@ import com.jeequan.jeepay.core.entity.MchPayPassage;
|
|||
import com.jeequan.jeepay.core.entity.PayOrder;
|
||||
import com.jeequan.jeepay.core.exception.BizException;
|
||||
import com.jeequan.jeepay.core.model.ApiRes;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.SeqKit;
|
||||
import com.jeequan.jeepay.core.utils.SpringBeansUtil;
|
||||
import com.jeequan.jeepay.core.utils.StringKit;
|
||||
|
|
@ -31,8 +32,7 @@ import com.jeequan.jeepay.pay.ctrl.ApiController;
|
|||
import com.jeequan.jeepay.pay.exception.ChannelException;
|
||||
import com.jeequan.jeepay.pay.model.IsvConfigContext;
|
||||
import com.jeequan.jeepay.pay.model.MchAppConfigContext;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
|
||||
import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRQ;
|
||||
import com.jeequan.jeepay.pay.rqrs.payorder.UnifiedOrderRS;
|
||||
|
|
@ -64,8 +64,8 @@ public abstract class AbstractPayOrderController extends ApiController {
|
|||
@Autowired private ConfigContextService configContextService;
|
||||
@Autowired private PayMchNotifyService payMchNotifyService;
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
@Autowired private MqServiceImpl mqServiceImpl;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
@Autowired private MqReceiveCommon receiveCommon;
|
||||
|
||||
|
||||
/** 统一下单 (新建订单模式) **/
|
||||
|
|
@ -326,7 +326,7 @@ public abstract class AbstractPayOrderController extends ApiController {
|
|||
|
||||
//判断是否需要轮询查单
|
||||
if(channelRetMsg.isNeedQuery()){
|
||||
mqServiceImpl.sendChannelOrderQuery(mqReceiveServiceImpl.buildMsg(payOrderId, 1), 5 * 1000);
|
||||
mqCommonService.send(receiveCommon.buildMsg(payOrderId, 1), 5 * 1000, CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,155 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.pay.mq.config.MqThreadExecutor;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.ScheduledMessage;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
import javax.jms.TextMessage;
|
||||
|
||||
/*
|
||||
* 上游渠道订单轮询查单
|
||||
* 如:微信的条码支付,没有回调接口, 需要轮询查单完成交易结果通知。
|
||||
*
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:30
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class ActiveMqMessage extends MqCommonService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
@Bean("activeChannelOrderQuery")
|
||||
public Queue mqQueue4ChannelOrderQuery(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_CHANNEL_ORDER_QUERY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeChannelOrderQuery")
|
||||
private Queue mqQueue4ChannelOrderQuery;
|
||||
|
||||
@Bean("activePayOrderMchNotifyInner")
|
||||
public Queue mqQueue4PayOrderMchNotifyInner(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activePayOrderMchNotifyInner")
|
||||
private Queue mqQueue4PayOrderMchNotifyInner;
|
||||
|
||||
/**
|
||||
* 发送消息
|
||||
* @param msg
|
||||
* @param sendType
|
||||
*/
|
||||
@Override
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY)) {
|
||||
channelOrderQuery(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) {
|
||||
payOrderMchNotify(msg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送延迟消息
|
||||
* @param msg
|
||||
* @param delay
|
||||
* @param sendType
|
||||
*/
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY)) {
|
||||
channelOrderQueryFixed(msg, delay);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) {
|
||||
payOrderMchNotifyFixed(msg, delay);
|
||||
}
|
||||
}
|
||||
|
||||
/** 发送订单查询消息 **/
|
||||
public void channelOrderQuery(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4ChannelOrderQuery, msg);
|
||||
}
|
||||
|
||||
/** 发送订单查询延迟消息 **/
|
||||
public void channelOrderQueryFixed(String msg, long delay) {
|
||||
jmsTemplate.send(mqQueue4ChannelOrderQuery, session -> {
|
||||
TextMessage tm = session.createTextMessage(msg);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1*1000);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
|
||||
return tm;
|
||||
});
|
||||
}
|
||||
|
||||
/** 发送订单回调消息 **/
|
||||
public void payOrderMchNotify(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4PayOrderMchNotifyInner, msg);
|
||||
}
|
||||
|
||||
/** 发送订单回调延迟消息 **/
|
||||
public void payOrderMchNotifyFixed(String msg, long delay) {
|
||||
jmsTemplate.send(mqQueue4PayOrderMchNotifyInner, session -> {
|
||||
TextMessage tm = session.createTextMessage(msg);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1*1000);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
|
||||
return tm;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/** 接收 查单消息 **/
|
||||
@Lazy
|
||||
@JmsListener(destination = CS.MQ.QUEUE_CHANNEL_ORDER_QUERY)
|
||||
public void receiveChannelOrderQuery(String msg) {
|
||||
mqReceiveCommon.channelOrderQuery(msg);
|
||||
}
|
||||
|
||||
/** 接收 支付订单商户回调消息 **/
|
||||
@Lazy
|
||||
@Async(MqThreadExecutor.EXECUTOR_PAYORDER_MCH_NOTIFY)
|
||||
@JmsListener(destination = CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY)
|
||||
public void receivePayOrderMchNotify(String msg) {
|
||||
mqReceiveCommon.payOrderMchNotify(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq;
|
||||
|
||||
import cn.hutool.http.HttpException;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.entity.MchNotifyRecord;
|
||||
import com.jeequan.jeepay.core.entity.PayOrder;
|
||||
import com.jeequan.jeepay.pay.mq.queue.MqQueue4ChannelOrderQuery;
|
||||
import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
|
||||
import com.jeequan.jeepay.pay.service.ChannelOrderReissueService;
|
||||
import com.jeequan.jeepay.pay.service.ConfigContextService;
|
||||
import com.jeequan.jeepay.service.impl.MchNotifyRecordService;
|
||||
import com.jeequan.jeepay.service.impl.PayOrderService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 处理公共接收消息方法
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MqReceiveServiceImpl {
|
||||
|
||||
@Autowired private SysConfigService sysConfigService;
|
||||
@Autowired private ConfigContextService configContextService;
|
||||
@Autowired private PayOrderService payOrderService;
|
||||
@Autowired private MchNotifyRecordService mchNotifyRecordService;
|
||||
@Autowired private ChannelOrderReissueService channelOrderReissueService;
|
||||
@Autowired private MqQueue4ChannelOrderQuery mqQueue4ChannelOrderQuery;
|
||||
|
||||
public void modifyMchInfo(String mchNo) {
|
||||
log.info("接收 [商户配置信息] 的消息, msg={}", mchNo);
|
||||
configContextService.initMchInfoConfigContext(mchNo);
|
||||
}
|
||||
|
||||
public void modifyMchApp(String mchNoAndAppId) {
|
||||
log.info("接收 [商户应用支付参数配置信息] 的消息, msg={}", mchNoAndAppId);
|
||||
JSONObject jsonObject = (JSONObject) JSONObject.parse(mchNoAndAppId);
|
||||
configContextService.initMchAppConfigContext(jsonObject.getString("mchNo"), jsonObject.getString("appId"));
|
||||
}
|
||||
|
||||
public void modifyIsvInfo(String isvNo) {
|
||||
log.info("重置ISV信息, msg={}", isvNo);
|
||||
configContextService.initIsvConfigContext(isvNo);
|
||||
}
|
||||
|
||||
public Integer payOrderMchNotify(String msg) {
|
||||
log.info("接收商户通知MQ, msg={}", msg);
|
||||
Long notifyId = Long.parseLong(msg);
|
||||
MchNotifyRecord record = mchNotifyRecordService.getById(notifyId);
|
||||
if(record == null || record.getState() != MchNotifyRecord.STATE_ING){
|
||||
log.info("查询通知记录不存在或状态不是通知中");
|
||||
return null;
|
||||
}
|
||||
if( record.getNotifyCount() >= record.getNotifyCountLimit() ){
|
||||
log.info("已达到最大发送次数");
|
||||
return null;
|
||||
}
|
||||
|
||||
//1. (发送结果最多6次)
|
||||
Integer currentCount = record.getNotifyCount() + 1;
|
||||
|
||||
String notifyUrl = record.getNotifyUrl();
|
||||
String res = "";
|
||||
try {
|
||||
res = HttpUtil.createPost(notifyUrl).timeout(20000).execute().body();
|
||||
} catch (HttpException e) {
|
||||
log.error("http error", e);
|
||||
}
|
||||
|
||||
if(currentCount == 1){ //第一次通知: 更新为已通知
|
||||
payOrderService.updateNotifySent(record.getOrderId());
|
||||
}
|
||||
|
||||
//通知成功
|
||||
if("SUCCESS".equalsIgnoreCase(res)){
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_SUCCESS, res);
|
||||
}
|
||||
|
||||
//通知次数 >= 最大通知次数时, 更新响应结果为异常, 不在继续延迟发送消息
|
||||
if( currentCount >= record.getNotifyCountLimit() ){
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_FAIL, res);
|
||||
}
|
||||
|
||||
// 继续发送MQ 延迟发送
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_ING, res);
|
||||
|
||||
return currentCount;
|
||||
}
|
||||
|
||||
public void channelOrderQuery(String msg) {
|
||||
|
||||
String [] arr = msg.split(",");
|
||||
String payOrderId = arr[0];
|
||||
int currentCount = Integer.parseInt(arr[1]);
|
||||
log.info("接收轮询查单通知MQ, payOrderId={}, count={}", payOrderId, currentCount);
|
||||
currentCount++ ;
|
||||
|
||||
PayOrder payOrder = payOrderService.getById(payOrderId);
|
||||
if(payOrder == null) {
|
||||
log.warn("查询支付订单为空,payOrderId={}", payOrderId);
|
||||
return;
|
||||
}
|
||||
|
||||
if(payOrder.getState() != PayOrder.STATE_ING) {
|
||||
log.warn("订单状态不是支付中,不需查询渠道.payOrderId={}", payOrderId);
|
||||
return;
|
||||
}
|
||||
|
||||
ChannelRetMsg channelRetMsg = channelOrderReissueService.processPayOrder(payOrder);
|
||||
|
||||
//返回null 可能为接口报错等, 需要再次轮询
|
||||
if(channelRetMsg == null || channelRetMsg.getChannelState() == null || channelRetMsg.getChannelState().equals(ChannelRetMsg.ChannelState.WAITING)){
|
||||
|
||||
//最多查询6次
|
||||
if(currentCount <= 6){
|
||||
mqQueue4ChannelOrderQuery.send(buildMsg(payOrderId, currentCount), 5 * 1000); //延迟5s再次查询
|
||||
}else{
|
||||
|
||||
//TODO 调用【撤销订单】接口
|
||||
|
||||
}
|
||||
|
||||
}else{ //其他状态, 不需要再次轮询。
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public void initDbConfig(String msg) {
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
public static final String buildMsg(String payOrderId, int count){
|
||||
return payOrderId + "," + count;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMQ
|
||||
* 上游渠道订单轮询查单
|
||||
* 如:微信的条码支付,没有回调接口, 需要轮询查单完成交易结果通知。
|
||||
*
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqMessage extends MqCommonService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
@Override
|
||||
public void send(String msg, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY)) {
|
||||
channelOrderQuery(msg);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) {
|
||||
payOrderMchNotify(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(String msg, long delay, String sendType) {
|
||||
if (sendType.equals(CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY)) {
|
||||
channelOrderQueryFixed(msg, delay);
|
||||
}else if (sendType.equals(CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY)) {
|
||||
payOrderMchNotifyFixed(msg, delay);
|
||||
}
|
||||
}
|
||||
|
||||
/** 发送订单查询消息 **/
|
||||
public void channelOrderQuery(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_CHANNEL_ORDER_QUERY, msg);
|
||||
}
|
||||
|
||||
/** 发送订单查询延迟消息 **/
|
||||
public void channelOrderQueryFixed(String msg, long delay) {
|
||||
rabbitTemplate.convertAndSend(CS.DELAYED_EXCHANGE, CS.MQ.QUEUE_CHANNEL_ORDER_QUERY, msg, a ->{
|
||||
a.getMessageProperties().setDelay(Math.toIntExact(delay));
|
||||
return a;
|
||||
});
|
||||
}
|
||||
|
||||
/** 发送订单回调消息 **/
|
||||
public void payOrderMchNotify(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg);
|
||||
}
|
||||
|
||||
/** 发送订单回调延迟消息 **/
|
||||
public void payOrderMchNotifyFixed(String msg, long delay) {
|
||||
rabbitTemplate.convertAndSend(CS.DELAYED_EXCHANGE, CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg, a ->{
|
||||
a.getMessageProperties().setDelay(Math.toIntExact(delay));
|
||||
return a;
|
||||
});
|
||||
}
|
||||
|
||||
/** 接收 查单消息 **/
|
||||
@RabbitListener(queues = CS.MQ.QUEUE_CHANNEL_ORDER_QUERY)
|
||||
public void receiveChannelOrderQuery(String msg) {
|
||||
mqReceiveCommon.channelOrderQuery(msg);
|
||||
}
|
||||
|
||||
/** 接收 支付订单商户回调消息 **/
|
||||
@RabbitListener(queues = CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY)
|
||||
public void receivePayOrderMchNotify(String msg) {
|
||||
mqReceiveCommon.payOrderMchNotify(msg);
|
||||
}
|
||||
}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.activemq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
|
@ -35,12 +35,12 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyIsvInfo{
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_ISV_INFO, containerFactory = "jmsListenerContainer")
|
||||
public void receive(String isvNo) {
|
||||
mqReceiveServiceImpl.modifyIsvInfo(isvNo);
|
||||
mqReceiveCommon.modifyIsvInfo(isvNo);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.activemq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
|
@ -35,7 +35,7 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifyMchInfo{
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 [商户配置信息] 的消息
|
||||
* 已知推送节点:
|
||||
|
|
@ -44,7 +44,7 @@ public class MqTopic4ModifyMchInfo{
|
|||
* **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_MCH_INFO, containerFactory = "jmsListenerContainer")
|
||||
public void receive(String mchNo) {
|
||||
mqReceiveServiceImpl.modifyMchInfo(mchNo);
|
||||
mqReceiveCommon.modifyMchInfo(mchNo);
|
||||
}
|
||||
|
||||
/** 接收 [商户应用支付参数配置信息] 的消息
|
||||
|
|
@ -54,7 +54,7 @@ public class MqTopic4ModifyMchInfo{
|
|||
* **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_MCH_APP, containerFactory = "jmsListenerContainer")
|
||||
public void receiveMchApp(String mchNoAndAppId) {
|
||||
mqReceiveServiceImpl.modifyMchApp(mchNoAndAppId);
|
||||
mqReceiveCommon.modifyMchApp(mchNoAndAppId);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.activemq.topic;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
|
|
@ -35,12 +35,12 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqTopic4ModifySysConfig{
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@JmsListener(destination = CS.MQ.TOPIC_MODIFY_SYS_CONFIG, containerFactory = "jmsListenerContainer")
|
||||
public void receive(String msg) {
|
||||
mqReceiveServiceImpl.initDbConfig(msg);
|
||||
mqReceiveCommon.initDbConfig(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.config;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue.service;
|
||||
package com.jeequan.jeepay.pay.mq.config;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import org.springframework.amqp.core.*;
|
||||
|
|
@ -32,9 +32,9 @@ import java.util.Map;
|
|||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
@Configuration
|
||||
public class DelayedRabbitMqConfig {
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqConfig {
|
||||
|
||||
@Bean("channelOrderQuery")
|
||||
public Queue channelOrderQuery() {
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqChannelOrderQueryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.ScheduledMessage;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
import javax.jms.TextMessage;
|
||||
|
||||
/*
|
||||
* 上游渠道订单轮询查单
|
||||
* 如:微信的条码支付,没有回调接口, 需要轮询查单完成交易结果通知。
|
||||
*
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:30
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqQueue4ChannelOrderQuery extends MqChannelOrderQueryService {
|
||||
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
@Bean("activeChannelOrderQuery")
|
||||
public Queue mqQueue4ChannelOrderQuery(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_CHANNEL_ORDER_QUERY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activeChannelOrderQuery")
|
||||
private Queue mqQueue4ChannelOrderQuery;
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4ChannelOrderQuery, msg);
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg, long delay) {
|
||||
jmsTemplate.send(mqQueue4ChannelOrderQuery, session -> {
|
||||
TextMessage tm = session.createTextMessage(msg);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1*1000);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
|
||||
return tm;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/** 接收 查单消息 **/
|
||||
@JmsListener(destination = CS.MQ.QUEUE_CHANNEL_ORDER_QUERY)
|
||||
public void receive(String msg) {
|
||||
mqReceiveServiceImpl.channelOrderQuery(msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.config.MqThreadExecutor;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqPayOrderMchNotifyService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.activemq.ScheduledMessage;
|
||||
import org.apache.activemq.command.ActiveMQQueue;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.jms.annotation.JmsListener;
|
||||
import org.springframework.jms.core.JmsTemplate;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.Queue;
|
||||
import javax.jms.TextMessage;
|
||||
|
||||
/*
|
||||
* 商户订单回调MQ通知
|
||||
*
|
||||
* @author terrfly
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/8 17:34
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.ACTIVE_MQ)
|
||||
public class MqQueue4PayOrderMchNotify extends MqPayOrderMchNotifyService {
|
||||
|
||||
@Bean("activePayOrderMchNotifyInner")
|
||||
public Queue mqQueue4PayOrderMchNotifyInner(){
|
||||
return new ActiveMQQueue(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY);
|
||||
}
|
||||
|
||||
@Lazy
|
||||
@Autowired
|
||||
@Qualifier("activePayOrderMchNotifyInner")
|
||||
private Queue mqQueue4PayOrderMchNotifyInner;
|
||||
@Autowired private JmsTemplate jmsTemplate;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
public MqQueue4PayOrderMchNotify(){
|
||||
super();
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
this.jmsTemplate.convertAndSend(mqQueue4PayOrderMchNotifyInner, msg);
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg, long delay) {
|
||||
jmsTemplate.send(mqQueue4PayOrderMchNotifyInner, session -> {
|
||||
TextMessage tm = session.createTextMessage(msg);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delay);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1*1000);
|
||||
tm.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
|
||||
return tm;
|
||||
});
|
||||
}
|
||||
|
||||
/** 接收 支付订单商户回调消息 **/
|
||||
@Async(MqThreadExecutor.EXECUTOR_PAYORDER_MCH_NOTIFY)
|
||||
@JmsListener(destination = CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY)
|
||||
public void receive(String msg) {
|
||||
Integer currentCount = mqReceiveServiceImpl.payOrderMchNotify(msg);
|
||||
if (currentCount == null) return;
|
||||
// 通知延时次数
|
||||
// 1 2 3 4 5 6
|
||||
// 0 30 60 90 120 150
|
||||
send(msg, currentCount * 30 * 1000);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqChannelOrderQueryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMQ
|
||||
* 上游渠道订单轮询查单
|
||||
* 如:微信的条码支付,没有回调接口, 需要轮询查单完成交易结果通知。
|
||||
*
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDelayed4ChannelOrderQuery extends MqChannelOrderQueryService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
public static final String buildMsg(String payOrderId, int count){
|
||||
return payOrderId + "," + count;
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_CHANNEL_ORDER_QUERY, msg);
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg, long delay) {
|
||||
rabbitTemplate.convertAndSend(CS.DELAYED_EXCHANGE, CS.MQ.QUEUE_CHANNEL_ORDER_QUERY, msg, a ->{
|
||||
a.getMessageProperties().setDelay(Math.toIntExact(delay));
|
||||
return a;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/** 接收 查单消息 **/
|
||||
@RabbitListener(queues = CS.MQ.QUEUE_CHANNEL_ORDER_QUERY)
|
||||
public void receive(String msg) {
|
||||
mqReceiveServiceImpl.channelOrderQuery(msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqPayOrderMchNotifyService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Profile;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* RabbitMQ
|
||||
* 上游渠道订单轮询查单
|
||||
* 如:微信的条码支付,没有回调接口, 需要轮询查单完成交易结果通知。
|
||||
*
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDelayed4PayOrderMchNotify extends MqPayOrderMchNotifyService {
|
||||
|
||||
@Autowired private RabbitTemplate rabbitTemplate;
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg) {
|
||||
rabbitTemplate.convertAndSend(CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg);
|
||||
}
|
||||
|
||||
/** 发送MQ消息 **/
|
||||
@Override
|
||||
public void send(String msg, long delay) {
|
||||
rabbitTemplate.convertAndSend(CS.DELAYED_EXCHANGE, CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY, msg, a ->{
|
||||
a.getMessageProperties().setDelay(Math.toIntExact(delay));
|
||||
return a;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/** 接收 支付订单商户回调消息 **/
|
||||
@RabbitListener(queues = CS.MQ.QUEUE_PAYORDER_MCH_NOTIFY)
|
||||
public void receive(String msg) {
|
||||
Integer currentCount = mqReceiveServiceImpl.payOrderMchNotify(msg);
|
||||
// 通知延时次数
|
||||
// 1 2 3 4 5 6
|
||||
// 0 30 60 90 120 150
|
||||
send(msg, currentCount * 30 * 1000);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
package com.jeequan.jeepay.pay.mq.queue.service;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 通道订单查询
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqChannelOrderQueryService {
|
||||
|
||||
public abstract void send(String msg);
|
||||
|
||||
public abstract void send(String msg, long delay);
|
||||
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
package com.jeequan.jeepay.pay.mq.queue.service;
|
||||
|
||||
/**
|
||||
* RabbitMq
|
||||
* 商户订单回调
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
public abstract class MqPayOrderMchNotifyService {
|
||||
|
||||
public abstract void send(String msg);
|
||||
|
||||
public abstract void send(String msg, long delay);
|
||||
|
||||
}
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.queue.service;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* mq消息推送
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MqServiceImpl {
|
||||
|
||||
@Autowired private MqChannelOrderQueryService mqChannelOrderQueryService;
|
||||
@Autowired private MqPayOrderMchNotifyService mqPayOrderMchNotifyService;
|
||||
|
||||
/** 通道订单查询推送 **/
|
||||
public void sendChannelOrderQuery(String msg){
|
||||
mqChannelOrderQueryService.send(msg);
|
||||
}
|
||||
|
||||
public void sendChannelOrderQuery(String msg, long delay){
|
||||
mqChannelOrderQueryService.send(msg, delay);
|
||||
}
|
||||
|
||||
/** 商户订单回调 **/
|
||||
public void PayOrderMchNotify(String msg){
|
||||
mqPayOrderMchNotifyService.send(msg);
|
||||
}
|
||||
|
||||
public void PayOrderMchNotify(String msg, long delay){
|
||||
mqPayOrderMchNotifyService.send(msg, delay);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.rabbitmq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -35,12 +35,12 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyIsvInfo {
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 更新服务商信息的消息 **/
|
||||
@RabbitListener(queues = CS.MQ.TOPIC_MODIFY_ISV_INFO)
|
||||
public void receive(String isvNo) {
|
||||
mqReceiveServiceImpl.modifyIsvInfo(isvNo);
|
||||
mqReceiveCommon.modifyIsvInfo(isvNo);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.rabbitmq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.RabbitListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
|
@ -35,7 +35,7 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifyMchInfo {
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 [商户配置信息] 的消息
|
||||
* 已知推送节点:
|
||||
|
|
@ -44,7 +44,7 @@ public class RabbitMqDirect4ModifyMchInfo {
|
|||
* **/
|
||||
@RabbitListener(queues = CS.MQ.TOPIC_MODIFY_MCH_INFO)
|
||||
public void receive(String mchNo) {
|
||||
mqReceiveServiceImpl.modifyMchInfo(mchNo);
|
||||
mqReceiveCommon.modifyMchInfo(mchNo);
|
||||
}
|
||||
|
||||
/** 接收 [商户应用支付参数配置信息] 的消息
|
||||
|
|
@ -54,7 +54,7 @@ public class RabbitMqDirect4ModifyMchInfo {
|
|||
* **/
|
||||
@RabbitListener(queues = CS.MQ.TOPIC_MODIFY_MCH_APP)
|
||||
public void receiveMchApp(String mchNoAndAppId) {
|
||||
mqReceiveServiceImpl.modifyMchApp(mchNoAndAppId);
|
||||
mqReceiveCommon.modifyMchApp(mchNoAndAppId);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -13,10 +13,10 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.topic;
|
||||
package com.jeequan.jeepay.pay.mq.rabbitmq;
|
||||
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.pay.mq.MqReceiveServiceImpl;
|
||||
import com.jeequan.jeepay.pay.mq.receive.MqReceiveCommon;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.amqp.rabbit.annotation.Exchange;
|
||||
import org.springframework.amqp.rabbit.annotation.Queue;
|
||||
|
|
@ -38,12 +38,12 @@ import org.springframework.stereotype.Component;
|
|||
@Profile(CS.MQTYPE.RABBIT_MQ)
|
||||
public class RabbitMqDirect4ModifySysConfig {
|
||||
|
||||
@Autowired private MqReceiveServiceImpl mqReceiveServiceImpl;
|
||||
@Autowired private MqReceiveCommon mqReceiveCommon;
|
||||
|
||||
/** 接收 更新系统配置项的消息 **/
|
||||
@RabbitListener(bindings = {@QueueBinding(value = @Queue(),exchange = @Exchange(name = CS.FANOUT_EXCHANGE_SYS_CONFIG,type = "fanout"))})
|
||||
public void receive(String msg) {
|
||||
mqReceiveServiceImpl.initDbConfig(msg);
|
||||
mqReceiveCommon.initDbConfig(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,184 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2031, 河北计全科技有限公司 (https://www.jeequan.com & jeequan@126.com).
|
||||
* <p>
|
||||
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
* <p>
|
||||
* http://www.gnu.org/licenses/lgpl.html
|
||||
* <p>
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.jeequan.jeepay.pay.mq.receive;
|
||||
|
||||
import cn.hutool.http.HttpException;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchNotifyRecord;
|
||||
import com.jeequan.jeepay.core.entity.PayOrder;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.pay.rqrs.msg.ChannelRetMsg;
|
||||
import com.jeequan.jeepay.pay.service.ChannelOrderReissueService;
|
||||
import com.jeequan.jeepay.pay.service.ConfigContextService;
|
||||
import com.jeequan.jeepay.service.impl.MchNotifyRecordService;
|
||||
import com.jeequan.jeepay.service.impl.PayOrderService;
|
||||
import com.jeequan.jeepay.service.impl.SysConfigService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 处理公共接收消息方法
|
||||
*
|
||||
* @author xiaoyu
|
||||
* @site https://www.jeepay.vip
|
||||
* @date 2021/6/25 17:10
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class MqReceiveCommon {
|
||||
|
||||
@Autowired
|
||||
private SysConfigService sysConfigService;
|
||||
@Autowired
|
||||
private ConfigContextService configContextService;
|
||||
@Autowired
|
||||
private PayOrderService payOrderService;
|
||||
@Autowired
|
||||
private ChannelOrderReissueService channelOrderReissueService;
|
||||
@Autowired
|
||||
private MchNotifyRecordService mchNotifyRecordService;
|
||||
@Autowired
|
||||
private MqCommonService mqCommonService;
|
||||
|
||||
/** 接收 [商户配置信息] 的消息 **/
|
||||
public void modifyMchInfo(String mchNo) {
|
||||
log.info("接收 [商户配置信息] 的消息, msg={}", mchNo);
|
||||
configContextService.initMchInfoConfigContext(mchNo);
|
||||
}
|
||||
|
||||
/** 接收 [商户应用支付参数配置信息] 的消息 **/
|
||||
public void modifyMchApp(String mchNoAndAppId) {
|
||||
log.info("接收 [商户应用支付参数配置信息] 的消息, msg={}", mchNoAndAppId);
|
||||
JSONObject jsonObject = (JSONObject) JSONObject.parse(mchNoAndAppId);
|
||||
configContextService.initMchAppConfigContext(jsonObject.getString("mchNo"), jsonObject.getString("appId"));
|
||||
}
|
||||
|
||||
/** 重置ISV信息 **/
|
||||
public void modifyIsvInfo(String isvNo) {
|
||||
log.info("重置ISV信息, msg={}", isvNo);
|
||||
configContextService.initIsvConfigContext(isvNo);
|
||||
}
|
||||
|
||||
/** 接收商户订单回调通知 **/
|
||||
public void payOrderMchNotify(String msg) {
|
||||
try {
|
||||
log.info("接收商户通知MQ, msg={}", msg);
|
||||
Long notifyId = Long.parseLong(msg);
|
||||
MchNotifyRecord record = mchNotifyRecordService.getById(notifyId);
|
||||
if(record == null || record.getState() != MchNotifyRecord.STATE_ING){
|
||||
log.info("查询通知记录不存在或状态不是通知中");
|
||||
return;
|
||||
}
|
||||
if( record.getNotifyCount() >= record.getNotifyCountLimit() ){
|
||||
log.info("已达到最大发送次数");
|
||||
return;
|
||||
}
|
||||
|
||||
//1. (发送结果最多6次)
|
||||
Integer currentCount = record.getNotifyCount() + 1;
|
||||
|
||||
String notifyUrl = record.getNotifyUrl();
|
||||
String res = "";
|
||||
try {
|
||||
res = HttpUtil.createPost(notifyUrl).timeout(20000).execute().body();
|
||||
} catch (HttpException e) {
|
||||
log.error("http error", e);
|
||||
}
|
||||
|
||||
if(currentCount == 1){ //第一次通知: 更新为已通知
|
||||
payOrderService.updateNotifySent(record.getOrderId());
|
||||
}
|
||||
|
||||
//通知成功
|
||||
if("SUCCESS".equalsIgnoreCase(res)){
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_SUCCESS, res);
|
||||
}
|
||||
|
||||
//通知次数 >= 最大通知次数时, 更新响应结果为异常, 不在继续延迟发送消息
|
||||
if( currentCount >= record.getNotifyCountLimit() ){
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_FAIL, res);
|
||||
}
|
||||
|
||||
// 继续发送MQ 延迟发送
|
||||
mchNotifyRecordService.updateNotifyResult(notifyId, MchNotifyRecord.STATE_ING, res);
|
||||
// 通知延时次数
|
||||
// 1 2 3 4 5 6
|
||||
// 0 30 60 90 120 150
|
||||
mqCommonService.send(msg, currentCount * 30 * 1000, CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY);
|
||||
return;
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/** 接收订单查单通知 **/
|
||||
public void channelOrderQuery(String msg) {
|
||||
try {
|
||||
String [] arr = msg.split(",");
|
||||
String payOrderId = arr[0];
|
||||
int currentCount = Integer.parseInt(arr[1]);
|
||||
log.info("接收轮询查单通知MQ, payOrderId={}, count={}", payOrderId, currentCount);
|
||||
currentCount++ ;
|
||||
|
||||
PayOrder payOrder = payOrderService.getById(payOrderId);
|
||||
if(payOrder == null) {
|
||||
log.warn("查询支付订单为空,payOrderId={}", payOrderId);
|
||||
return;
|
||||
}
|
||||
|
||||
if(payOrder.getState() != PayOrder.STATE_ING) {
|
||||
log.warn("订单状态不是支付中,不需查询渠道.payOrderId={}", payOrderId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (payOrder == null) return;
|
||||
ChannelRetMsg channelRetMsg = channelOrderReissueService.processPayOrder(payOrder);
|
||||
|
||||
//返回null 可能为接口报错等, 需要再次轮询
|
||||
if(channelRetMsg == null || channelRetMsg.getChannelState() == null || channelRetMsg.getChannelState().equals(ChannelRetMsg.ChannelState.WAITING)){
|
||||
|
||||
//最多查询6次
|
||||
if(currentCount <= 6){
|
||||
mqCommonService.send(buildMsg(payOrderId, currentCount), 5 * 1000, CS.MQ.MQ_TYPE_CHANNEL_ORDER_QUERY); //延迟5s再次查询
|
||||
}else{
|
||||
|
||||
//TODO 调用【撤销订单】接口
|
||||
|
||||
}
|
||||
|
||||
}else{ //其他状态, 不需要再次轮询。
|
||||
}
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
return;
|
||||
}
|
||||
}
|
||||
/** 接收系统配置修改通知 **/
|
||||
public void initDbConfig(String msg) {
|
||||
log.info("成功接收更新系统配置的订阅通知, msg={}", msg);
|
||||
sysConfigService.initDBConfig(msg);
|
||||
log.info("系统配置静态属性已重置");
|
||||
}
|
||||
|
||||
public static final String buildMsg(String payOrderId, int count){
|
||||
return payOrderId + "," + count;
|
||||
}
|
||||
}
|
||||
|
|
@ -16,12 +16,13 @@
|
|||
package com.jeequan.jeepay.pay.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.jeequan.jeepay.core.constants.CS;
|
||||
import com.jeequan.jeepay.core.entity.MchNotifyRecord;
|
||||
import com.jeequan.jeepay.core.entity.PayOrder;
|
||||
import com.jeequan.jeepay.core.entity.RefundOrder;
|
||||
import com.jeequan.jeepay.core.mq.MqCommonService;
|
||||
import com.jeequan.jeepay.core.utils.JeepayKit;
|
||||
import com.jeequan.jeepay.core.utils.StringKit;
|
||||
import com.jeequan.jeepay.pay.mq.queue.service.MqServiceImpl;
|
||||
import com.jeequan.jeepay.pay.rqrs.payorder.QueryPayOrderRS;
|
||||
import com.jeequan.jeepay.pay.rqrs.refund.QueryRefundOrderRS;
|
||||
import com.jeequan.jeepay.service.impl.MchNotifyRecordService;
|
||||
|
|
@ -42,8 +43,8 @@ import org.springframework.stereotype.Service;
|
|||
public class PayMchNotifyService {
|
||||
|
||||
@Autowired private MchNotifyRecordService mchNotifyRecordService;
|
||||
@Autowired private MqServiceImpl mqService;
|
||||
@Autowired private ConfigContextService configContextService;
|
||||
@Autowired private MqCommonService mqCommonService;
|
||||
|
||||
|
||||
/** 商户通知信息, 只有订单是终态,才会发送通知, 如明确成功和明确失败 **/
|
||||
|
|
@ -84,7 +85,7 @@ public class PayMchNotifyService {
|
|||
|
||||
//推送到MQ
|
||||
Long notifyId = mchNotifyRecord.getNotifyId();
|
||||
mqService.PayOrderMchNotify(notifyId + "");
|
||||
mqCommonService.send(notifyId + "", CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("推送失败!", e);
|
||||
|
|
@ -129,7 +130,7 @@ public class PayMchNotifyService {
|
|||
|
||||
//推送到MQ
|
||||
Long notifyId = mchNotifyRecord.getNotifyId();
|
||||
mqService.PayOrderMchNotify(notifyId + "");
|
||||
mqCommonService.send(notifyId + "", CS.MQ.MQ_TYPE_PAY_ORDER_MCH_NOTIFY);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("推送失败!", e);
|
||||
|
|
|
|||
Loading…
Reference in New Issue