From f6b8f3b4e6419e5675bf400e005b8ba115fb1dc1 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Sat, 25 Sep 2021 17:20:13 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall

---
 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/mapper/modules/MallMemberPaymentMapper.xml                |    2 
 src/main/resources/application-test.yml                                      |    8 +
 pom.xml                                                                      |   17 +++
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java |   22 ++++
 src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java         |   10 ++
 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java                       |    6 +
 src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java           |   50 ++++++++++
 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java    |    2 
 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 
 17 files changed, 287 insertions(+), 7 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/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
index ef1e0cb..af38471 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java
@@ -60,7 +60,7 @@
 
     @ApiOperation(value = "修改用户信息")
     @PostMapping(value = "/modifyInfo")
-    public FebsResponse modifyInfo(ModifyMemberInfoDto modifyMemberInfoDto) {
+    public FebsResponse modifyInfo(@RequestBody ModifyMemberInfoDto modifyMemberInfoDto) {
         return memberService.modifyMemberInfo(modifyMemberInfoDto);
     }
 
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/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
index 7e0522b..10d2594 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java
@@ -211,6 +211,15 @@
             mallMemberVo.setReferrerName(referMember.getName());
         }
 
+        if (StrUtil.isNotBlank(mallMember.getTradePassword())) {
+            mallMemberVo.setHasTradePwd(1);
+        }
+
+        MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id);
+        if (payment != null) {
+            mallMemberVo.setHasPayment(1);
+        }
+
         MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId());
         mallMemberVo.setBalance(wallet.getBalance());
         return new FebsResponse().success().data(mallMemberVo);
@@ -329,6 +338,10 @@
 
         Long memberId = LoginUserUtil.getLoginUser().getId();
         MallMember loginMember = this.baseMapper.selectById(memberId);
+        if (StrUtil.isBlank(loginMember.getTradePassword())) {
+            throw new FebsException("未设置支付密码");
+        }
+
         if (!loginMember.getTradePassword().equals(SecureUtil.md5(transferDto.getTradePwd()))) {
             throw new FebsException("支付密码错误");
         }
@@ -345,6 +358,10 @@
     public void withdrawal(WithdrawalDto withdrawalDto) {
         Long memberId = LoginUserUtil.getLoginUser().getId();
         MallMember mallMember = this.baseMapper.selectById(memberId);
+        if (StrUtil.isBlank(mallMember.getTradePassword())) {
+            throw new FebsException("未设置支付密码");
+        }
+
         if (!mallMember.getTradePassword().equals(SecureUtil.md5(withdrawalDto.getTradePwd()))) {
             throw new FebsException("支付密码错误");
         }
@@ -353,6 +370,11 @@
             throw new FebsException("最小提现金额为100");
         }
 
+        MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(memberId);
+        if (payment == null) {
+            throw new FebsException("未设置收款方式");
+        }
+
         walletService.reduceBalance(withdrawalDto.getAmount(), memberId);
         String orderNo = MallUtils.getOrderNum("W");
         this.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1);
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
index 6751a9d..9fa0379 100644
--- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
+++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java
@@ -54,4 +54,10 @@
     public static final int ACCOUNTSTATUS_Y = 1;
     public static final int ACCOUNTSTATUS_N = 2;
 
+    @ApiModelProperty(value = "是否设置收款方式", example = "1是2否")
+    private Integer hasPayment = 2;
+
+    @ApiModelProperty(value = "是否设置交易密码", example = "1是2否")
+    private Integer hasTradePwd = 2;
+
 }
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/MallMemberPaymentMapper.xml b/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml
index bb80933..18e453f 100644
--- a/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml
+++ b/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml
@@ -3,7 +3,7 @@
 <mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberPaymentMapper">
 
     <select id="selectByMemberId" resultType="cc.mrbird.febs.mall.entity.MallMemberPayment">
-        select * from mall_member_payment where member_id=#{id}
+        select * from mall_member_payment where member_id=#{memberId}
     </select>
 
     <select id="getMallMemberPaymentInfoByMemberId" resultType="cc.mrbird.febs.mall.vo.AdminMallMemberPaymentVo">
diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml
index 69e9ebf..5aa1258 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