From d74032da9b0a6a893a8a03e3fa64d2f0ae2a9f2b Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 25 Sep 2021 17:19:39 +0800
Subject: [PATCH] add rabbitmq
---
src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 22 ++++
src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java | 44 ++++++++
src/test/java/cc/mrbird/febs/AgentTest.java | 24 ++++
src/main/resources/application-prod.yml | 8 +
src/main/resources/application-test.yml | 8 +
pom.xml | 17 +++
src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java | 10 ++
src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 50 ++++++++++
src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java | 10 ++
src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 10 ++
src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 47 +++++++++
src/main/resources/application-dev.yml | 8 +
src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 4
13 files changed, 257 insertions(+), 5 deletions(-)
diff --git a/pom.xml b/pom.xml
index 455780a..9e4f7c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -267,6 +267,23 @@
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-amqp</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
<build>
diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
new file mode 100644
index 0000000..96a523b
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java
@@ -0,0 +1,50 @@
+package cc.mrbird.febs.common.configure;
+
+import cc.mrbird.febs.rabbit.constants.ExchangeConstants;
+import cc.mrbird.febs.rabbit.constants.QueueConstants;
+import cc.mrbird.febs.rabbit.constants.RouteKeyConstants;
+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.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.config.ConfigurableBeanFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Scope;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Configuration
+public class RabbitConfigure {
+
+ @Resource
+ private ConnectionFactory connectionFactory;
+
+ @Bean
+ @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
+ public RabbitTemplate rabbitTemplate() {
+ return new RabbitTemplate(connectionFactory);
+ }
+
+ @Bean
+ public DirectExchange defaultExchange() {
+ return new DirectExchange(ExchangeConstants.EXCHANGE_DEFAULT);
+ }
+
+ @Bean
+ public Queue defaultQueue() {
+ return new Queue(QueueConstants.QUEUE_DEFAULT);
+ }
+
+ @Bean
+ public Binding defaultBind() {
+ return BindingBuilder.bind(defaultQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT);
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
new file mode 100644
index 0000000..86b661e
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java
@@ -0,0 +1,44 @@
+package cc.mrbird.febs.mall.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Data
+public class AgentInfo {
+
+ /**
+ * 下单数量要求 1-直推 2-团队
+ */
+ private Integer orderType;
+
+ /**
+ * 下单数量
+ */
+ private Integer orderCnt;
+
+ /**
+ * 需要上一级的数量
+ */
+ private Integer lastCnt;
+
+ /**
+ * 直推收益
+ */
+ private BigDecimal directIncome;
+
+ /**
+ * 团队收益
+ */
+ private BigDecimal TeamIncome;
+
+ /**
+ * 团队收益 1-指定金额 2-比例
+ */
+ private BigDecimal teamIncomeType;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java
new file mode 100644
index 0000000..aec9654
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java
@@ -0,0 +1,10 @@
+package cc.mrbird.febs.rabbit.constants;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+public class ExchangeConstants {
+
+ public static final String EXCHANGE_DEFAULT = "exchange_default";
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
new file mode 100644
index 0000000..2656088
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java
@@ -0,0 +1,10 @@
+package cc.mrbird.febs.rabbit.constants;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+public class QueueConstants {
+
+ public static final String QUEUE_DEFAULT = "queue_default";
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java
new file mode 100644
index 0000000..f9d7c1f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java
@@ -0,0 +1,10 @@
+package cc.mrbird.febs.rabbit.constants;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+public class RouteKeyConstants {
+
+ public static final String ROUTE_KEY_DEFAULT = "route_key_default";
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
new file mode 100644
index 0000000..79f201f
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java
@@ -0,0 +1,22 @@
+package cc.mrbird.febs.rabbit.consumer;
+
+import cc.mrbird.febs.rabbit.constants.QueueConstants;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Slf4j
+@Component
+public class AgentConsumer {
+
+ @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT)
+ public void agentReturn(Message message, Channel channel) {
+ log.info("消费者:{}", new String(message.getBody()));
+ }
+}
diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
new file mode 100644
index 0000000..8e4f150
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java
@@ -0,0 +1,47 @@
+package cc.mrbird.febs.rabbit.producter;
+
+import cc.mrbird.febs.rabbit.constants.ExchangeConstants;
+import cc.mrbird.febs.rabbit.constants.RouteKeyConstants;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.rabbit.connection.CorrelationData;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Slf4j
+@Component
+public class AgentProducer implements RabbitTemplate.ConfirmCallback {
+
+ /**
+ * 配置中配置的RabbitTemplate的是prototype类型,不能直接注入
+ */
+ private RabbitTemplate rabbitTemplate;
+
+ /**
+ * 在构造方法上注入RabbitTemplate
+ *
+ * @param
+ */
+ @Autowired
+ public AgentProducer(RabbitTemplate rabbitTemplate) {
+ this.rabbitTemplate = rabbitTemplate;
+ rabbitTemplate.setConfirmCallback(this);
+ }
+
+ @Override
+ public void confirm(CorrelationData correlationData, boolean ack, String cause) {
+
+ }
+
+ public void sendOrderReturn(Long id) {
+ log.info("发送消息:{}", id);
+ CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
+ rabbitTemplate.convertAndSend(ExchangeConstants.EXCHANGE_DEFAULT, RouteKeyConstants.ROUTE_KEY_DEFAULT, id, correlationData);
+ }
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index ae941c0..0afbd49 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -40,4 +40,10 @@
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
- timeout: 5000
\ No newline at end of file
+ timeout: 5000
+ rabbitmq:
+ host: 120.27.238.55
+ port: 5672
+ username: ct_rabbit
+ password: 123456
+ publisher-confirm-type: correlated
\ No newline at end of file
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 04d0df9..1285e7e 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -46,4 +46,10 @@
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
- timeout: 5000
\ No newline at end of file
+ timeout: 5000
+ rabbitmq:
+ host: 120.27.238.55
+ port: 5672
+ username: ct_rabbit
+ password: 123456
+ publisher-confirm-type: correlated
\ No newline at end of file
diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml
index 394582a..a5d65d6 100644
--- a/src/main/resources/application-test.yml
+++ b/src/main/resources/application-test.yml
@@ -40,4 +40,10 @@
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
- timeout: 5000
\ No newline at end of file
+ timeout: 5000
+ rabbitmq:
+ host: 120.27.238.55
+ port: 5672
+ username: ct_rabbit
+ password: 123456
+ publisher-confirm-type: correlated
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index e01b963..bbe021b 100644
--- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
+++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
@@ -14,10 +14,10 @@
from mall_money_flow a
inner join mall_member b on a.member_id=b.id
<where>
- <if test="record.type == 2">
+ <if test="record.type == 3">
and a.amount > 0
</if>
- <if test="record.type == 3">
+ <if test="record.type == 2">
and 0 > a.amount
</if>
<if test="record.memberId != null">
diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java
new file mode 100644
index 0000000..9b1f167
--- /dev/null
+++ b/src/test/java/cc/mrbird/febs/AgentTest.java
@@ -0,0 +1,24 @@
+package cc.mrbird.febs;
+
+import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+/**
+ * @author wzy
+ * @date 2021-09-25
+ **/
+@Slf4j
+@SpringBootTest
+public class AgentTest {
+
+ @Autowired
+ private AgentProducer agentProducer;
+
+ @Test
+ public void agentTest() {
+ agentProducer.sendOrderReturn(1L);
+ }
+}
--
Gitblit v1.9.1