Browse Source

mq整合完成

yq 3 years ago
parent
commit
e4dceeab3a

+ 60 - 37
src/main/java/com/usky/dxtop/controller/web/TestController.java

@@ -10,8 +10,7 @@ import com.usky.dxtop.common.utils.http.HttpUtils;
 import com.usky.dxtop.model.Order;
 import com.usky.dxtop.model.Order;
 import com.usky.dxtop.service.OrderService;
 import com.usky.dxtop.service.OrderService;
 import com.usky.dxtop.service.api.TopApi;
 import com.usky.dxtop.service.api.TopApi;
-import com.usky.dxtop.service.config.rabbiemq.CardConfig;
-import com.usky.dxtop.service.config.rabbiemq.PersonConfig;
+import com.usky.dxtop.service.config.RabbitmqConfig;
 import com.usky.dxtop.service.emun.OrderPayType;
 import com.usky.dxtop.service.emun.OrderPayType;
 import com.usky.dxtop.service.emun.OrderStatus;
 import com.usky.dxtop.service.emun.OrderStatus;
 import com.usky.dxtop.service.vo.CardLogsRequest;
 import com.usky.dxtop.service.vo.CardLogsRequest;
@@ -22,6 +21,7 @@ import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -40,12 +40,21 @@ import java.util.*;
 @RestController
 @RestController
 public class TestController {
 public class TestController {
 
 
+
+    @Autowired
+    private RabbitTemplate personRabbitTemplate;
+
     @Autowired
     @Autowired
-    private PersonConfig personConfig;
+    @Qualifier("cartRabbitTemplate")
+    private RabbitTemplate cartRabbitTemplate;
 
 
     @Autowired
     @Autowired
-    private CardConfig cardConfig;
+    @Qualifier("chargeRabbitTemplate")
+    private RabbitTemplate chargeRabbitTemplate;
 
 
+    @Autowired
+    @Qualifier("dishRabbitTemplate")
+    private RabbitTemplate dishRabbitTemplate;
     @GetMapping("/personTest")
     @GetMapping("/personTest")
     public String sendDirectMessage() {
     public String sendDirectMessage() {
         String messageId = String.valueOf(UUID.randomUUID());
         String messageId = String.valueOf(UUID.randomUUID());
@@ -56,7 +65,7 @@ public class TestController {
         map.put("messageData",messageData);
         map.put("messageData",messageData);
         map.put("createTime",createTime);
         map.put("createTime",createTime);
         //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange
         //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange
-        personConfig.rabbitTemplate().convertAndSend(personConfig.getPersonExchange(), personConfig.getPersonRouteKey(), map);
+        personRabbitTemplate.convertAndSend(RabbitmqConfig.PERSON, RabbitmqConfig.PERSON, map);
         return "ok";
         return "ok";
     }
     }
 
 
@@ -70,45 +79,59 @@ public class TestController {
         map.put("messageData",messageData);
         map.put("messageData",messageData);
         map.put("createTime",createTime);
         map.put("createTime",createTime);
         //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange
         //将消息携带绑定键值:TestDirectRouting 发送到交换机TestDirectExchange
-        RabbitTemplate rabbitTemplate = cardConfig.rabbitTemplate();
-        cardConfig.rabbitTemplate().convertAndSend(cardConfig.getCardExchange(), cardConfig.getCardRouteKey(), map);
+        cartRabbitTemplate.convertAndSend(RabbitmqConfig.CARD, RabbitmqConfig.CARD, map);
         return "ok";
         return "ok";
     }
     }
 
 
-    @RabbitListener(queues = "profile_trans_produce", containerFactory = "personListenerFactory")
-    public void dealDeclareMessage(Message message) throws Exception {
-        try {
-            //消息类型
-            String routingKey = message.getMessageProperties().getReceivedRoutingKey();
-            log.info(routingKey);
-            //消息内容
-            String s = new String(message.getBody(), StandardCharsets.UTF_8);
-            //处理你的消息
-            log.info("消息消费"+s);
-        } catch (Exception e) {
-            log.info("你的队列名"+"异常信息:" + e.getMessage());
-        } finally {
 
 
-        }
+    @GetMapping("/chargeTest")
+    public String sendDirectMessageCharge() {
+        Map<String,Object> map = new HashMap<>();
+        map.put("seq",1);
+        map.put("create_date",new Date());
+        map.put("card",1);
+        map.put("card_no",1);
+        map.put("type",1);
+        map.put("term",1);
+        map.put("shop",1);
+        map.put("term_name",1);
+        map.put("shop_name",1);
+        map.put("amt",1);
+        map.put("balance",1);
+        map.put("account",1);
+        chargeRabbitTemplate.convertAndSend(RabbitmqConfig.CHARGE, RabbitmqConfig.CHARGE, map);
+        return "ok";
     }
     }
 
 
 
 
-    @RabbitListener(queues = "card_trans_produce", containerFactory = "cardListenerFactory")
-    public void dealDeclareMessageCart(Message message) throws Exception {
-        try {
-            //消息类型
-            String routingKey = message.getMessageProperties().getReceivedRoutingKey();
-            log.info(routingKey);
-            //消息内容
-            String s = new String(message.getBody(), StandardCharsets.UTF_8);
-            //处理你的消息
-            log.info("消息消费"+s);
-        } catch (Exception e) {
-            log.info("你的队列名"+"异常信息:" + e.getMessage());
-        } finally {
-
-        }
+    @GetMapping("/dishTest")
+    public String sendDirectMessageDish() {
+        Map<String,Object> map = new HashMap<>();
+        map.put("seq",1);
+        map.put("create_date",new Date());
+        map.put("card",1);
+        map.put("card_no",1);
+        map.put("type",1);
+        map.put("term",1);
+        map.put("shop",1);
+        map.put("term_name",1);
+        map.put("shop_name",1);
+        map.put("amt",1);
+        map.put("balance",1);
+        map.put("account",1);
+        Map<String,Object> details = new HashMap<>();
+        details.put("pid",1);
+        details.put("name",1);
+        details.put("price",1);
+        details.put("amt",1);
+        map.put("details",details);
+        Map<String,Object> payments = new HashMap<>();
+        payments.put("type",1);
+        payments.put("amt",1);
+        payments.put("balance",1);
+        map.put("payments",payments);
+        dishRabbitTemplate.convertAndSend(RabbitmqConfig.DISH, RabbitmqConfig.DISH, map);
+        return "ok";
     }
     }
 
 
-
 }
 }

+ 13 - 4
src/main/java/com/usky/dxtop/model/Charge.java

@@ -1,11 +1,16 @@
 package com.usky.dxtop.model;
 package com.usky.dxtop.model;
 
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -22,12 +27,14 @@ public class Charge implements Serializable {
 
 
     private static final long serialVersionUID=1L;
     private static final long serialVersionUID=1L;
 
 
+    @TableId(value = "seq",type = IdType.INPUT)
     private Long seq;
     private Long seq;
 
 
-    private LocalDateTime createTime;
+    @JSONField(name="create_date")
+    private Date createTime;
 
 
     private String card;
     private String card;
-
+    @JSONField(name="card_no")
     private String cardNo;
     private String cardNo;
 
 
     private Integer type;
     private Integer type;
@@ -36,13 +43,15 @@ public class Charge implements Serializable {
 
 
     private Integer shop;
     private Integer shop;
 
 
+    @JSONField(name="term_name")
     private String termName;
     private String termName;
 
 
+    @JSONField(name="shop_name")
     private String shopName;
     private String shopName;
 
 
-    private Double amt;
+    private BigDecimal amt;
 
 
-    private Double balance;
+    private BigDecimal balance;
 
 
     private Integer account;
     private Integer account;
 
 

+ 12 - 7
src/main/java/com/usky/dxtop/model/Dish.java

@@ -1,5 +1,8 @@
 package com.usky.dxtop.model;
 package com.usky.dxtop.model;
 
 
+import com.alibaba.fastjson.annotation.JSONField;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import lombok.experimental.Accessors;
@@ -7,6 +10,7 @@ import lombok.experimental.Accessors;
 import java.io.Serializable;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
+import java.util.Date;
 
 
 /**
 /**
  * <p>
  * <p>
@@ -23,12 +27,13 @@ public class Dish implements Serializable {
 
 
     private static final long serialVersionUID=1L;
     private static final long serialVersionUID=1L;
 
 
+    @TableId(value = "seq",type = IdType.INPUT)
     private Long seq;
     private Long seq;
-
-    private LocalDateTime createTime;
+    @JSONField(name="create_date")
+    private Date createTime;
 
 
     private String card;
     private String card;
-
+    @JSONField(name="card_no")
     private String cardNo;
     private String cardNo;
 
 
     private Integer type;
     private Integer type;
@@ -36,14 +41,14 @@ public class Dish implements Serializable {
     private Integer term;
     private Integer term;
 
 
     private Integer shop;
     private Integer shop;
-
+    @JSONField(name="term_name")
     private String termName;
     private String termName;
-
+    @JSONField(name="shop_name")
     private String shopName;
     private String shopName;
 
 
-    private Double amt;
+    private BigDecimal amt;
 
 
-    private Double balance;
+    private BigDecimal balance;
 
 
     private Integer account;
     private Integer account;
 
 

+ 0 - 58
src/main/java/com/usky/dxtop/service/config/MqProperties.java

@@ -1,58 +0,0 @@
-package com.usky.dxtop.service.config;
-
-import lombok.Data;
-import org.springframework.amqp.core.*;
-import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
-import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.stereotype.Component;
-
-/**
- * @author yq
- * @date 2021/9/7 17:14
- */
-@Data
-@Configuration
-public class MqProperties {
-
-    @Autowired
-    private RabbitProperties rabbitProperties;
-    public ConnectionFactory connectionFactory(String vHost) {
-        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
-        connectionFactory.setHost(rabbitProperties.getHost());
-        connectionFactory.setPort(rabbitProperties.getPort());
-        connectionFactory.setUsername(rabbitProperties.getUsername());
-        connectionFactory.setPassword(rabbitProperties.getPassword());
-        connectionFactory.setVirtualHost(vHost);
-        return connectionFactory;
-    }
-
-    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
-        return new RabbitTemplate(connectionFactory);
-    }
-
-    public SimpleRabbitListenerContainerFactory listenerFactory(
-            SimpleRabbitListenerContainerFactoryConfigurer configurer,
-            ConnectionFactory connectionFactory) {
-        SimpleRabbitListenerContainerFactory listenerContainerFactory = new SimpleRabbitListenerContainerFactory();
-        //设置手动ack
-        listenerContainerFactory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
-        configurer.configure(listenerContainerFactory, connectionFactory);
-        return listenerContainerFactory;
-    }
-
-    public Jackson2JsonMessageConverter messageConverter() {
-        return new Jackson2JsonMessageConverter();
-    }
-
-}

+ 285 - 0
src/main/java/com/usky/dxtop/service/config/RabbitmqConfig.java

@@ -0,0 +1,285 @@
+package com.usky.dxtop.service.config;
+
+import lombok.Data;
+import org.springframework.amqp.core.*;
+import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
+import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
+import org.springframework.amqp.rabbit.connection.ConnectionFactory;
+import org.springframework.amqp.rabbit.core.RabbitAdmin;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.autoconfigure.amqp.RabbitProperties;
+import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+
+/**
+ * @author yq
+ * @date 2021/9/9 13:37
+ */
+@Data
+@Configuration
+public class RabbitmqConfig {
+
+
+
+    public static final String PERSON = "profile_trans_produce";
+    public static final String CARD = "card_trans_produce";
+    public static final String CHARGE = "charge_trans_produce";
+    public static final String DISH = "dish_trade_produce";
+
+    @Autowired
+    private RabbitProperties rabbitProperties;
+
+    /**
+     * 连接工厂
+     * @param vHost
+     * @return
+     */
+    public ConnectionFactory connectionFactory(String vHost) {
+        CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
+        connectionFactory.setHost(rabbitProperties.getHost());
+        connectionFactory.setPort(rabbitProperties.getPort());
+        connectionFactory.setUsername(rabbitProperties.getUsername());
+        connectionFactory.setPassword(rabbitProperties.getPassword());
+        connectionFactory.setVirtualHost(vHost);
+        return connectionFactory;
+    }
+    /**
+     * 发送消息模版
+     * @param connectionFactory
+     * @return
+     */
+    public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
+        RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
+        rabbitTemplate.setMessageConverter(this.messageConverter());
+        return rabbitTemplate;
+    }
+
+    /**
+     * 监听工厂
+     * @param configurer
+     * @param connectionFactory
+     * @return
+     */
+    public SimpleRabbitListenerContainerFactory listenerFactory(
+            SimpleRabbitListenerContainerFactoryConfigurer configurer,
+            ConnectionFactory connectionFactory) {
+        SimpleRabbitListenerContainerFactory listenerContainerFactory = new SimpleRabbitListenerContainerFactory();
+        //设置手动ack
+        listenerContainerFactory.setAcknowledgeMode(AcknowledgeMode.AUTO);
+        configurer.configure(listenerContainerFactory, connectionFactory);
+        return listenerContainerFactory;
+    }
+
+    /**
+     * 序列化
+      * @return
+     */
+    public Jackson2JsonMessageConverter messageConverter() {
+        return new Jackson2JsonMessageConverter();
+    }
+
+    /**
+     * 交换机
+     * @param name
+     * @param amqpAdmin
+     * @return
+     */
+    public DirectExchange exchange(String name, AmqpAdmin amqpAdmin){
+        DirectExchange exchange = new DirectExchange(name, true, false);
+        exchange.setAdminsThatShouldDeclare(amqpAdmin);
+        return exchange;
+    }
+
+    /**
+     * 队列
+     * @param name
+     * @param amqpAdmin
+     * @return
+     */
+    public Queue queue(String name, AmqpAdmin amqpAdmin){
+        Queue queue = new Queue(name, true);
+        queue.setAdminsThatShouldDeclare(amqpAdmin);
+        return queue;
+    }
+
+
+    /**
+     * 连接配置
+     * @return
+     */
+    @Bean(name = "personConnectionFactory")
+    @Primary
+    public ConnectionFactory personConnectionFactory(){
+        return this.connectionFactory(PERSON);
+    }
+
+    @Bean(name = "cartConnectionFactory")
+    public ConnectionFactory cartConnectionFactory(){
+        return this.connectionFactory(CARD);
+    }
+
+    @Bean(name = "chargeConnectionFactory")
+    public ConnectionFactory chargeConnectionFactory(){
+        return this.connectionFactory(CHARGE);
+    }
+
+    @Bean(name = "dishConnectionFactory")
+    public ConnectionFactory dishConnectionFactory(){
+        return this.connectionFactory(DISH);
+    }
+
+    /**
+     * 发送模版配置
+     */
+    @Bean(name = "personRabbitTemplate")
+    @Primary
+    public RabbitTemplate personRabbitTemplate(@Qualifier("personConnectionFactory") ConnectionFactory connectionFactory ) {
+        return this.rabbitTemplate(connectionFactory);
+    }
+
+    @Bean(name = "cartRabbitTemplate")
+    public RabbitTemplate cartRabbitTemplate(@Qualifier("cartConnectionFactory") ConnectionFactory connectionFactory ) {
+        return this.rabbitTemplate(connectionFactory);
+    }
+
+    @Bean(name = "chargeRabbitTemplate")
+    public RabbitTemplate chargeRabbitTemplate(@Qualifier("chargeConnectionFactory") ConnectionFactory connectionFactory ) {
+        return this.rabbitTemplate(connectionFactory);
+    }
+
+    @Bean(name = "dishRabbitTemplate")
+    public RabbitTemplate dishRabbitTemplate(@Qualifier("dishConnectionFactory") ConnectionFactory connectionFactory ) {
+        return this.rabbitTemplate(connectionFactory);
+    }
+
+    /**
+     * 监听工厂配置
+     */
+    @Bean(name = "personListenerFactory")
+    @Primary
+    public SimpleRabbitListenerContainerFactory personListenerFactory(
+            SimpleRabbitListenerContainerFactoryConfigurer configurer,
+            @Qualifier("personConnectionFactory") ConnectionFactory connectionFactory) {
+        return this.listenerFactory(configurer,connectionFactory);
+    }
+
+    @Bean(name = "cartListenerFactory")
+    public SimpleRabbitListenerContainerFactory cartListenerFactory(
+            SimpleRabbitListenerContainerFactoryConfigurer configurer,
+            @Qualifier("cartConnectionFactory") ConnectionFactory connectionFactory) {
+        return this.listenerFactory(configurer,connectionFactory);
+    }
+
+    @Bean(name = "chargeListenerFactory")
+    public SimpleRabbitListenerContainerFactory chargeListenerFactory(
+            SimpleRabbitListenerContainerFactoryConfigurer configurer,
+            @Qualifier("chargeConnectionFactory") ConnectionFactory connectionFactory) {
+        return this.listenerFactory(configurer,connectionFactory);
+    }
+
+    @Bean(name = "dishListenerFactory")
+    public SimpleRabbitListenerContainerFactory dishListenerFactory(
+            SimpleRabbitListenerContainerFactoryConfigurer configurer,
+            @Qualifier("dishConnectionFactory") ConnectionFactory connectionFactory) {
+        return this.listenerFactory(configurer,connectionFactory);
+    }
+
+    /**
+     * admin配置
+     */
+    @Bean("personAdmin")
+    @Primary
+    AmqpAdmin personAmqpAdmin(@Qualifier("personConnectionFactory") ConnectionFactory connectionFactory) {
+        return new RabbitAdmin(connectionFactory);
+    }
+    @Bean("cartAdmin")
+    AmqpAdmin cartAmqpAdmin(@Qualifier("cartConnectionFactory") ConnectionFactory connectionFactory) {
+        return new RabbitAdmin(connectionFactory);
+    }
+    @Bean("chargeAdmin")
+    AmqpAdmin chargeAmqpAdmin(@Qualifier("chargeConnectionFactory") ConnectionFactory connectionFactory) {
+        return new RabbitAdmin(connectionFactory);
+    }
+    @Bean("dishAdmin")
+    AmqpAdmin dishAmqpAdmin(@Qualifier("dishConnectionFactory") ConnectionFactory connectionFactory) {
+        return new RabbitAdmin(connectionFactory);
+    }
+    /**
+     * 交换机
+     */
+    @Bean("personExchange")
+    @Primary
+    public DirectExchange personExchange(@Qualifier("personAdmin") AmqpAdmin amqpAdmin) {
+        return this.exchange(PERSON,amqpAdmin);
+    }
+
+    @Bean("cartExchange")
+    public DirectExchange cartExchange(@Qualifier("cartAdmin") AmqpAdmin amqpAdmin) {
+        return this.exchange(CARD,amqpAdmin);
+    }
+    @Bean("chargeExchange")
+    public DirectExchange chargeExchange(@Qualifier("chargeAdmin") AmqpAdmin amqpAdmin) {
+        return this.exchange(CHARGE,amqpAdmin);
+    }
+    @Bean("dishExchange")
+    public DirectExchange dishExchange(@Qualifier("dishAdmin") AmqpAdmin amqpAdmin) {
+        return this.exchange(DISH,amqpAdmin);
+    }
+
+    /**
+     * 队列
+     */
+    @Bean("personQueue")
+    @Primary
+    Queue personQueue(@Qualifier("personAdmin")AmqpAdmin amqpAdmin) {
+        return this.queue(PERSON,amqpAdmin);
+    }
+
+    @Bean("cartQueue")
+    Queue cartQueue(@Qualifier("cartAdmin")AmqpAdmin amqpAdmin) {
+        return this.queue(CARD,amqpAdmin);
+    }
+    @Bean("chargeQueue")
+    Queue chargeQueue(@Qualifier("chargeAdmin")AmqpAdmin amqpAdmin) {
+        return this.queue(CHARGE,amqpAdmin);
+    }
+    @Bean("dishQueue")
+    Queue dishQueue(@Qualifier("dishAdmin")AmqpAdmin amqpAdmin) {
+        return this.queue(DISH,amqpAdmin);
+    }
+
+    /**
+     * 绑定
+     */
+    @Bean("personBin")
+    @Primary
+    Binding personBindingPersonDirect(@Qualifier("personAdmin")AmqpAdmin amqpAdmin) {
+        Binding binding = BindingBuilder.bind(personQueue(amqpAdmin)).to(personExchange(amqpAdmin)).with(PERSON);
+        binding.setAdminsThatShouldDeclare(amqpAdmin);
+        return binding;
+    }
+
+    @Bean("cartBin")
+    Binding cartBindingPersonDirect(@Qualifier("cartAdmin")AmqpAdmin amqpAdmin) {
+        Binding binding = BindingBuilder.bind(cartQueue(amqpAdmin)).to(cartExchange(amqpAdmin)).with(CARD);
+        binding.setAdminsThatShouldDeclare(amqpAdmin);
+        return binding;
+    }
+    @Bean("chargeBin")
+    Binding chargeBindingPersonDirect(@Qualifier("chargeAdmin")AmqpAdmin amqpAdmin) {
+        Binding binding = BindingBuilder.bind(chargeQueue(amqpAdmin)).to(chargeExchange(amqpAdmin)).with(CHARGE);
+        binding.setAdminsThatShouldDeclare(amqpAdmin);
+        return binding;
+    }
+    @Bean("dishBin")
+    Binding dishBindingPersonDirect(@Qualifier("dishAdmin")AmqpAdmin amqpAdmin) {
+        Binding binding = BindingBuilder.bind(dishQueue(amqpAdmin)).to(dishExchange(amqpAdmin)).with(DISH);
+        binding.setAdminsThatShouldDeclare(amqpAdmin);
+        return binding;
+    }
+}

+ 0 - 96
src/main/java/com/usky/dxtop/service/config/rabbiemq/CardConfig.java

@@ -1,96 +0,0 @@
-package com.usky.dxtop.service.config.rabbiemq;
-
-import com.usky.dxtop.service.config.MqProperties;
-import lombok.Data;
-import org.springframework.amqp.core.*;
-import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
-import org.springframework.amqp.support.converter.MessageConverter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-
-/**
- * @author yq
- * @date 2021/9/8 9:18
- */
-@Data
-@Configuration
-@EnableRabbit
-public class CardConfig {
-
-
-    private static final String NAME = "card_trans_produce";
-    @Autowired
-    private MqProperties mqProperties;
-
-    private String virtualHost = NAME;
-    /**
-     * 人员 exchange
-     */
-    private String cardExchange = NAME;
-
-
-    /**
-     * 人员 queue
-     */
-    private String cardQueue = NAME;
-
-    /**
-     * 人员 route key
-     */
-    private String cardRouteKey = NAME;
-
-
-    @Bean
-    public DirectExchange cardExchange() {
-        DirectExchange exchange = new DirectExchange(cardExchange, true, false);
-        exchange.setAdminsThatShouldDeclare(amqpAdmin());
-        return exchange;
-    }
-
-    @Bean
-    Queue cardQueue() {
-        Queue queue = new Queue(cardQueue, true);
-        queue.setAdminsThatShouldDeclare(amqpAdmin());
-        return queue;
-    }
-
-    @Bean("cartBin")
-    Binding bindingPersonDirect() {
-        Binding binding = BindingBuilder.bind(cardQueue()).to(cardExchange()).with(cardRouteKey);
-        binding.setAdminsThatShouldDeclare(amqpAdmin());
-        return binding;
-    }
-
-    @Bean(name = "cardConnectionFactory")
-    public ConnectionFactory cardConnectionFactory(){
-        return mqProperties.connectionFactory(virtualHost);
-    }
-
-    @Bean("cartAdmin")
-    AmqpAdmin amqpAdmin() {
-        return new RabbitAdmin(cardConnectionFactory());
-    }
-
-    @Bean(name = "cardRabbitTemplate")
-    public RabbitTemplate rabbitTemplate() {
-        RabbitTemplate rabbitTemplate = mqProperties.rabbitTemplate(cardConnectionFactory());
-        rabbitTemplate.setMessageConverter(mqProperties.messageConverter());
-        return rabbitTemplate;
-    }
-
-
-    @Bean(name = "cardListenerFactory")
-    public SimpleRabbitListenerContainerFactory listenerFactory(
-            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-        return mqProperties.listenerFactory(configurer,cardConnectionFactory());
-    }
-}

+ 0 - 80
src/main/java/com/usky/dxtop/service/config/rabbiemq/ChargeConfig.java

@@ -1,80 +0,0 @@
-//package com.usky.dxtop.service.config.rabbiemq;
-//
-//import com.usky.dxtop.service.config.MqProperties;
-//import lombok.Data;
-//import org.springframework.amqp.core.*;
-//import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-//import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-//import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-//import org.springframework.amqp.rabbit.core.RabbitAdmin;
-//import org.springframework.amqp.rabbit.core.RabbitTemplate;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-//import org.springframework.boot.context.properties.ConfigurationProperties;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.context.annotation.Primary;
-//
-///**
-// * @author yq
-// * @date 2021/9/8 9:18
-// */
-//@Data
-//@Configuration
-//@EnableRabbit
-//public class ChargeConfig {
-//
-//    private static final String NAME = "charge_trans_produce";
-//    @Autowired
-//    private MqProperties mqProperties;
-//
-//    private String virtualHost;
-//    /**
-//     * 人员 exchange
-//     */
-//    private String chargeExchange = NAME;
-//
-//
-//    /**
-//     * 人员 queue
-//     */
-//    private String chargeQueue = NAME;
-//
-//    /**
-//     * 人员 route key
-//     */
-//    private String chargeRouteKey = NAME;
-//
-//
-//    @Bean
-//    public DirectExchange chargeExchange() {
-//        return new DirectExchange(chargeExchange, true, false);
-//    }
-//
-//    @Bean
-//    Queue chargeQueue() {
-//        return new Queue(chargeQueue,true);
-//    }
-//
-//    @Bean
-//    Binding bindingPersonDirect() {
-//        return BindingBuilder.bind(chargeQueue()).to(chargeExchange()).with(chargeRouteKey);
-//    }
-//
-//    @Bean(name = "chargeConnectionFactory")
-//    public ConnectionFactory chargeConnectionFactory(){
-//        return mqProperties.connectionFactory(virtualHost);
-//    }
-//
-//    @Bean(name = "chargeRabbitTemplate")
-//    public RabbitTemplate rabbitTemplate() {
-//        return mqProperties.rabbitTemplate(chargeConnectionFactory());
-//    }
-//
-//
-//    @Bean(name = "chargeListenerFactory")
-//    public SimpleRabbitListenerContainerFactory listenerFactory(
-//            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-//        return mqProperties.listenerFactory(configurer,chargeConnectionFactory());
-//    }
-//}

+ 0 - 80
src/main/java/com/usky/dxtop/service/config/rabbiemq/DishConfig.java

@@ -1,80 +0,0 @@
-//package com.usky.dxtop.service.config.rabbiemq;
-//
-//import com.usky.dxtop.service.config.MqProperties;
-//import lombok.Data;
-//import org.springframework.amqp.core.*;
-//import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-//import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-//import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-//import org.springframework.amqp.rabbit.core.RabbitAdmin;
-//import org.springframework.amqp.rabbit.core.RabbitTemplate;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-//import org.springframework.boot.context.properties.ConfigurationProperties;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.context.annotation.Primary;
-//
-///**
-// * @author yq
-// * @date 2021/9/8 9:18
-// */
-//@Data
-//@Configuration
-//@EnableRabbit
-//public class DishConfig {
-//
-//    private static final String NAME = "dish_trade_produce";
-//    @Autowired
-//    private MqProperties mqProperties;
-//
-//    private String virtualHost;
-//    /**
-//     * 人员 exchange
-//     */
-//    private String dishExchange = NAME;
-//
-//
-//    /**
-//     * 人员 queue
-//     */
-//    private String dishQueue = NAME;
-//
-//    /**
-//     * 人员 route key
-//     */
-//    private String dishRouteKey = NAME;
-//
-//
-//    @Bean
-//    public DirectExchange dishExchange() {
-//        return new DirectExchange(dishExchange, true, false);
-//    }
-//
-//    @Bean
-//    Queue dishQueue() {
-//        return new Queue(dishQueue,true);
-//    }
-//
-//    @Bean
-//    Binding bindingPersonDirect() {
-//        return BindingBuilder.bind(dishQueue()).to(dishExchange()).with(dishRouteKey);
-//    }
-//
-//    @Bean(name = "dishConnectionFactory")
-//    public ConnectionFactory dishConnectionFactory(){
-//        return mqProperties.connectionFactory(virtualHost);
-//    }
-//
-//    @Bean(name = "dishRabbitTemplate")
-//    public RabbitTemplate rabbitTemplate() {
-//        return mqProperties.rabbitTemplate(dishConnectionFactory());
-//    }
-//
-//
-//    @Bean(name = "dishListenerFactory")
-//    public SimpleRabbitListenerContainerFactory listenerFactory(
-//            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-//        return mqProperties.listenerFactory(configurer,dishConnectionFactory());
-//    }
-//}

+ 0 - 80
src/main/java/com/usky/dxtop/service/config/rabbiemq/FaceConfig.java

@@ -1,80 +0,0 @@
-//package com.usky.dxtop.service.config.rabbiemq;
-//
-//import com.usky.dxtop.service.config.MqProperties;
-//import lombok.Data;
-//import org.springframework.amqp.core.*;
-//import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-//import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-//import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-//import org.springframework.amqp.rabbit.core.RabbitAdmin;
-//import org.springframework.amqp.rabbit.core.RabbitTemplate;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-//import org.springframework.boot.context.properties.ConfigurationProperties;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.context.annotation.Primary;
-//
-///**
-// * @author yq
-// * @date 2021/9/8 9:18
-// */
-//@Data
-//@Configuration
-//@EnableRabbit
-//public class FaceConfig {
-//
-//    private static final String NAME = "profile_face";
-//    @Autowired
-//    private MqProperties mqProperties;
-//
-//    private String virtualHost;
-//    /**
-//     * 人员 exchange
-//     */
-//    private String faceExchange = NAME;
-//
-//
-//    /**
-//     * 人员 queue
-//     */
-//    private String faceQueue = NAME;
-//
-//    /**
-//     * 人员 route key
-//     */
-//    private String faceRouteKey = NAME;
-//
-//
-//    @Bean
-//    public DirectExchange faceExchange() {
-//        return new DirectExchange(faceExchange, true, false);
-//    }
-//
-//    @Bean
-//    Queue faceQueue() {
-//        return new Queue(faceQueue,true);
-//    }
-//
-//    @Bean
-//    Binding bindingPersonDirect() {
-//        return BindingBuilder.bind(faceQueue()).to(faceExchange()).with(faceRouteKey);
-//    }
-//
-//    @Bean(name = "faceConnectionFactory")
-//    public ConnectionFactory faceConnectionFactory(){
-//        return mqProperties.connectionFactory(virtualHost);
-//    }
-//
-//    @Bean(name = "faceRabbitTemplate")
-//    public RabbitTemplate rabbitTemplate() {
-//        return mqProperties.rabbitTemplate(faceConnectionFactory());
-//    }
-//
-//
-//    @Bean(name = "faceListenerFactory")
-//    public SimpleRabbitListenerContainerFactory listenerFactory(
-//            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-//        return mqProperties.listenerFactory(configurer,faceConnectionFactory());
-//    }
-//}

+ 0 - 105
src/main/java/com/usky/dxtop/service/config/rabbiemq/PersonConfig.java

@@ -1,105 +0,0 @@
-package com.usky.dxtop.service.config.rabbiemq;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.usky.dxtop.service.config.MqProperties;
-import lombok.Data;
-import org.springframework.amqp.core.*;
-import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitAdmin;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
-import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
-import org.springframework.amqp.support.converter.MessageConverter;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.context.annotation.Primary;
-
-/**
- * @author yq
- * @date 2021/9/8 9:18
- */
-@Data
-@Configuration
-@EnableRabbit
-public class PersonConfig {
-
-    private static final String NAME = "profile_trans_produce";
-
-    @Autowired
-    private MqProperties mqProperties;
-
-    private String virtualHost = NAME;
-    /**
-     * 人员 exchange
-     */
-    private String personExchange = NAME;
-
-
-    /**
-     * 人员 queue
-     */
-    private String personQueue = NAME;
-
-    /**
-     * 人员 route key
-     */
-    private String personRouteKey = NAME;
-
-
-    @Bean
-    public DirectExchange personExchange() {
-        DirectExchange exchange = new DirectExchange(personExchange, true, false);
-        exchange.setAdminsThatShouldDeclare(amqpAdmin());
-        return exchange;
-    }
-
-    @Bean
-    Queue personQueue() {
-        Queue queue = new Queue(personQueue, true);
-        queue.setAdminsThatShouldDeclare(amqpAdmin());
-        return queue;
-    }
-
-    @Bean("personBin")
-    @Primary
-    Binding bindingPersonDirect() {
-        Binding binding = BindingBuilder.bind(personQueue()).to(personExchange()).with(personRouteKey);
-        binding.setAdminsThatShouldDeclare(amqpAdmin());
-        return binding;
-    }
-
-    @Bean(name = "personConnectionFactory")
-    @Primary
-    public ConnectionFactory personConnectionFactory(){
-        return mqProperties.connectionFactory(virtualHost);
-    }
-
-    @Bean("personAdmin")
-    @Primary
-    AmqpAdmin amqpAdmin() {
-        return new RabbitAdmin(personConnectionFactory());
-    }
-
-    @Bean(name = "personRabbitTemplate")
-    @Primary
-    public RabbitTemplate rabbitTemplate() {
-        RabbitTemplate rabbitTemplate = mqProperties.rabbitTemplate(personConnectionFactory());
-        rabbitTemplate.setMessageConverter(mqProperties.messageConverter());
-        return rabbitTemplate;
-    }
-
-
-    @Bean(name = "personListenerFactory")
-    @Primary
-    public SimpleRabbitListenerContainerFactory listenerFactory(
-            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-        return mqProperties.listenerFactory(configurer,personConnectionFactory());
-    }
-
-}

+ 0 - 84
src/main/java/com/usky/dxtop/service/config/rabbiemq/ProdConfig.java

@@ -1,84 +0,0 @@
-//package com.usky.dxtop.service.config.rabbiemq;
-//
-//import com.usky.dxtop.service.config.MqProperties;
-//import lombok.Data;
-//import org.springframework.amqp.core.*;
-//import org.springframework.amqp.rabbit.annotation.EnableRabbit;
-//import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
-//import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-//import org.springframework.amqp.rabbit.core.RabbitAdmin;
-//import org.springframework.amqp.rabbit.core.RabbitTemplate;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.beans.factory.annotation.Qualifier;
-//import org.springframework.boot.autoconfigure.amqp.SimpleRabbitListenerContainerFactoryConfigurer;
-//import org.springframework.boot.context.properties.ConfigurationProperties;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.context.annotation.Primary;
-//import org.springframework.stereotype.Component;
-//
-///**
-// * @author yq
-// * @date 2021/9/8 9:19
-// */
-//@Data
-//@Configuration
-//@EnableRabbit
-//public class ProdConfig {
-//
-//    private static final String NAME = "prod_trans_produce";
-//
-//    @Autowired
-//    private MqProperties mqProperties;
-//
-//    private String virtualHost = NAME;
-//
-//    /**
-//     * 人员 exchange
-//     */
-//    private String prodExchange = NAME;
-//    /**
-//     * 人员 queue
-//     */
-//    private String prodQueue = NAME;
-//
-//    /**
-//     * 人员 route key
-//     */
-//    private String prodRouteKey = NAME;
-//
-//
-//    @Bean
-//    public DirectExchange prodExchange() {
-//        return new DirectExchange(prodExchange, true, false);
-//    }
-//
-//    @Bean
-//    Queue prodQueue() {
-//        return new Queue(prodQueue,true);
-//    }
-//
-//    @Bean
-//    Binding bindingPersonDirect() {
-//        return BindingBuilder.bind(prodQueue()).to(prodExchange()).with(prodRouteKey);
-//    }
-//
-//
-//    @Bean(name = "prodConnectionFactory")
-//    public ConnectionFactory prodConnectionFactory(){
-//        return mqProperties.connectionFactory(virtualHost);
-//    }
-//
-//    @Bean(name = "prodRabbitTemplate")
-//    public RabbitTemplate rabbitTemplate() {
-//        return mqProperties.rabbitTemplate(prodConnectionFactory());
-//    }
-//
-//
-//    @Bean(name = "prodListenerFactory")
-//    public SimpleRabbitListenerContainerFactory listenerFactory(
-//            SimpleRabbitListenerContainerFactoryConfigurer configurer) {
-//        return mqProperties.listenerFactory(configurer,prodConnectionFactory());
-//    }
-//
-//}

+ 41 - 0
src/main/java/com/usky/dxtop/service/listener/ChargeMqListener.java

@@ -0,0 +1,41 @@
+package com.usky.dxtop.service.listener;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.dxtop.model.Charge;
+import com.usky.dxtop.service.ChargeService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * @author yq
+ * @date 2021/9/9 11:05
+ */
+@Slf4j
+@Component
+public class ChargeMqListener {
+
+    @Autowired
+    private ChargeService chargeService;
+
+
+    @RabbitListener(queues = "charge_trans_produce", containerFactory = "chargeListenerFactory")
+    public void dealDeclareMessage(Message message) {
+        try {
+            //消息类型
+            String routingKey = message.getMessageProperties().getReceivedRoutingKey();
+            log.info(routingKey);
+            String s = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("charge_trans_produce:接受到的消息"+s);
+            chargeService.saveOrUpdate(JSONObject.parseObject(s, Charge.class));
+        } catch (Exception e) {
+            log.info("charge_trans_produce"+"异常信息:" + e.getMessage());
+        } finally {
+
+        }
+    }
+}

+ 68 - 0
src/main/java/com/usky/dxtop/service/listener/DishMqListener.java

@@ -0,0 +1,68 @@
+package com.usky.dxtop.service.listener;
+
+import com.alibaba.fastjson.JSONObject;
+import com.usky.dxtop.model.Dish;
+import com.usky.dxtop.service.DishService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.logging.log4j.core.util.JsonUtils;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.rabbit.annotation.RabbitListener;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+
+/**
+ * @author yq
+ * @date 2021/9/9 11:05
+ */
+@Slf4j
+@Component
+public class DishMqListener {
+
+    @Autowired
+    private DishService dishService;
+
+
+    @RabbitListener(queues = "dish_trade_produce", containerFactory = "dishListenerFactory")
+    public void dealDeclareMessage(Message message) throws Exception {
+        try {
+            //消息类型
+            String routingKey = message.getMessageProperties().getReceivedRoutingKey();
+            log.info(routingKey);
+            //消息内容
+            String s = new String(message.getBody(), StandardCharsets.UTF_8);
+            log.info("dish_trade_produce获取到的消息"+s);
+            Dish dish = checkDate(s);
+            dishService.saveOrUpdate(dish);
+        } catch (Exception e) {
+            log.info("dish_trade_produce"+"异常信息:" + e.getMessage());
+        } finally {
+
+        }
+    }
+
+
+    public Dish checkDate(String message){
+        JSONObject jsonObject = JSONObject.parseObject(message);
+        Dish dish = JSONObject.parseObject(message, Dish.class);
+        JSONObject details = jsonObject.getJSONObject("details");
+        Optional.ofNullable(details)
+                .ifPresent(de -> {
+                    Optional.ofNullable(de.get("pid")).ifPresent(pId -> dish.setPId(Integer.parseInt(pId.toString())));
+                    Optional.ofNullable(de.get("name")).ifPresent(pName -> dish.setPName(pName.toString()));
+                    Optional.ofNullable(de.get("price")).ifPresent(pPrice -> dish.setPPrice(new BigDecimal(pPrice.toString())));
+                    Optional.ofNullable(de.get("amt")).ifPresent(pAmt -> dish.setPAmt(new BigDecimal(pAmt.toString())));
+                });
+        JSONObject payments = jsonObject.getJSONObject("payments");
+        Optional.ofNullable(payments)
+                .ifPresent(de -> {
+                    Optional.ofNullable(de.get("type")).ifPresent(type -> dish.setPaymentType(Integer.parseInt(type.toString())));
+                    Optional.ofNullable(de.get("amt")).ifPresent(amt -> dish.setPaymentAmt(new BigDecimal(amt.toString())));
+                    Optional.ofNullable(de.get("balance")).ifPresent(balance -> dish.setPaymentBalance(new BigDecimal(balance.toString())));
+                });
+        return dish;
+    }
+}

+ 1 - 1
src/main/resources/mapper/ChargeMapper.xml

@@ -7,7 +7,7 @@
         <id column="seq" property="seq" />
         <id column="seq" property="seq" />
         <result column="create_time" property="createTime" />
         <result column="create_time" property="createTime" />
         <result column="card" property="card" />
         <result column="card" property="card" />
-        <result column="crad_no" property="cradNo" />
+        <result column="card_no" property="cardNo" />
         <result column="type" property="type" />
         <result column="type" property="type" />
         <result column="term" property="term" />
         <result column="term" property="term" />
         <result column="shop" property="shop" />
         <result column="shop" property="shop" />