Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/saas-platform into dev

hy 7 years ago
parent
commit
05c69af2cc
34 changed files with 426 additions and 185 deletions
  1. 11 9
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/RemindReqDTO.java
  2. 1 1
      applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/RemindRspDTO.java
  3. 18 10
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java
  4. 6 6
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleService.java
  5. 78 29
      applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java
  6. 17 9
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/api/InquiryApi.java
  7. 0 13
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/config/InquiryFeignConfig.java
  8. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Attach.java
  9. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Enterprise.java
  10. 13 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/IPage.java
  11. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/InquiryEnRemind.java
  12. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/InquiryRemind.java
  13. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Product.java
  14. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/ProductMatchResult.java
  15. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiry.java
  16. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiryItem.java
  17. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiryReply.java
  18. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiry.java
  19. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryInfo.java
  20. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryItem.java
  21. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryItemInfo.java
  22. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurchaseInquiryReply.java
  23. 1 1
      applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/User.java
  24. 40 4
      applications/transfers/mall-api/src/test/java/com/usoftchina/inquiry/test/InquiryApiTest.java
  25. 25 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/ExpirationMessagePostProcessor.java
  26. 44 32
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/RabbitConfig.java
  27. 11 0
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/BrokerMessageLogMapper.java
  28. 53 25
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/BaseRabbitReceiveService.java
  29. 14 4
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/RabbitReceiveService.java
  30. 13 5
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/RabbitSendService.java
  31. 15 6
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java
  32. 25 5
      applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/SendService.java
  33. 11 1
      applications/transfers/transfers-server/src/main/resources/application.yml
  34. 16 10
      applications/transfers/transfers-server/src/test/java/com/usoftchina/saas/transfers/service/RabbitSendServiceTest.java

+ 11 - 9
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/EnremindReqDTO.java → applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/RemindReqDTO.java

@@ -3,11 +3,11 @@ package com.usoftchina.saas.sale.dto;
 import java.io.Serializable;
 
 /**
- * @Description 公司商机请求参数对象
+ * @Description 商机请求参数对象
  * @Author chenwei
  * @Date 2019/01/07
  */
-public class EnremindReqDTO implements Serializable {
+public class RemindReqDTO implements Serializable {
     /**
      * 页码
      */
@@ -27,12 +27,14 @@ public class EnremindReqDTO implements Serializable {
     /**
      * 筛选开始时间
      */
-    private String fromDate;
+    private Long fromDate;
     /**
      * 筛选截止时间
      */
-    private String endDate;
-
+    private Long endDate;
+    /**
+     * 是否已报价, 1:已报价,0:未报价,null 全部
+     */
     private Integer quoted;
 
     public int getPageNumber() {
@@ -67,19 +69,19 @@ public class EnremindReqDTO implements Serializable {
         this.keyword = keyword;
     }
 
-    public String getFromDate() {
+    public Long getFromDate() {
         return fromDate;
     }
 
-    public void setFromDate(String fromDate) {
+    public void setFromDate(Long fromDate) {
         this.fromDate = fromDate;
     }
 
-    public String getEndDate() {
+    public Long getEndDate() {
         return endDate;
     }
 
-    public void setEndDate(String endDate) {
+    public void setEndDate(Long endDate) {
         this.endDate = endDate;
     }
 

+ 1 - 1
applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/EnremindRspDTO.java → applications/sale/sale-dto/src/main/java/com/usoftchina/saas/sale/dto/RemindRspDTO.java

@@ -8,7 +8,7 @@ import java.util.Date;
  * @Author chenwei
  * @Date 2019/01/07
  */
-public class EnremindRspDTO implements Serializable {
+public class RemindRspDTO implements Serializable {
 
     /**
      * 客户名称

+ 18 - 10
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/controller/SaleController.java

@@ -1,21 +1,20 @@
 package com.usoftchina.saas.sale.controller;
 
 import com.github.pagehelper.PageInfo;
+import com.usoftchina.inquiry.po.inquiry.IPage;
 import com.usoftchina.saas.base.Result;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.sale.dto.EnremindReqDTO;
-import com.usoftchina.saas.sale.dto.EnremindRspDTO;
+import com.usoftchina.saas.sale.dto.RemindReqDTO;
+import com.usoftchina.saas.sale.dto.RemindRspDTO;
 import com.usoftchina.saas.sale.dto.SaleFormDTO;
 import com.usoftchina.saas.sale.po.SaleList;
 import com.usoftchina.saas.sale.service.SaleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
-
 /**
  * @author: guq
  * @create: 2018-10-22 11:28
@@ -196,15 +195,24 @@ public class SaleController {
         return Result.success(baseDTO);
     }
 
+    /**
+     * 企业商机
+     * @param remindReqDTO
+     * @return
+     */
     @GetMapping("/enterprise/businessChance")
-    public Result getEnremind(EnremindReqDTO enremindReqDTO){
-        List<EnremindRspDTO> enremindRspDTOList =  saleService.getEnremind(enremindReqDTO);
-        return Result.success(enremindRspDTOList);
+    public Result getEnremind(RemindReqDTO remindReqDTO){
+        IPage<RemindRspDTO> remindRspDTOIPage =  saleService.getEnremind(remindReqDTO);
+        return Result.success(remindRspDTOIPage);
     }
 
+    /**
+     * 个人商机
+     * @return
+     */
     @GetMapping("/personal/businessChance")
-    public Result getPersonalBusinessChance(){
-
-        return Result.success();
+    public Result getPersonalBusinessChance(RemindReqDTO remindReqDTO){
+        IPage<RemindRspDTO> remindRspDTOIPage = saleService.findRemindByUserInfo(remindReqDTO);
+        return Result.success(remindRspDTOIPage);
     }
 }

+ 6 - 6
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/SaleService.java

@@ -1,18 +1,16 @@
 package com.usoftchina.saas.sale.service;
 
 import com.github.pagehelper.PageInfo;
-import com.usoftchina.saas.base.service.CommonBaseService;
+import com.usoftchina.inquiry.po.inquiry.IPage;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.ListReqDTO;
 import com.usoftchina.saas.page.PageRequest;
-import com.usoftchina.saas.sale.dto.EnremindReqDTO;
-import com.usoftchina.saas.sale.dto.EnremindRspDTO;
+import com.usoftchina.saas.sale.dto.RemindReqDTO;
+import com.usoftchina.saas.sale.dto.RemindRspDTO;
 import com.usoftchina.saas.sale.dto.SaleFormDTO;
 import com.usoftchina.saas.sale.po.SaleList;
 
-import java.util.List;
-
 /**
  * @author: guq
  * @create: 2018-10-22 11:28
@@ -51,5 +49,7 @@ public interface SaleService {
 
     DocBaseDTO saleTurnPurchase(Long id);
 
-    List<EnremindRspDTO> getEnremind(EnremindReqDTO enremindReqDTO);
+    IPage<RemindRspDTO> getEnremind(RemindReqDTO remindReqDTO);
+
+    IPage<RemindRspDTO> findRemindByUserInfo(RemindReqDTO remindReqDTO);
 }

+ 78 - 29
applications/sale/sale-server/src/main/java/com/usoftchina/saas/sale/service/impl/SaleServiceImpl.java

@@ -3,8 +3,9 @@ package com.usoftchina.saas.sale.service.impl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.usoftchina.inquiry.api.InquiryApi;
-import com.usoftchina.inquiry.po.IPage;
-import com.usoftchina.inquiry.po.InquiryEnRemind;
+import com.usoftchina.inquiry.po.inquiry.IPage;
+import com.usoftchina.inquiry.po.inquiry.InquiryEnRemind;
+import com.usoftchina.inquiry.po.inquiry.InquiryRemind;
 import com.usoftchina.saas.account.api.AccountApi;
 import com.usoftchina.saas.account.api.CompanyApi;
 import com.usoftchina.saas.base.Result;
@@ -35,6 +36,7 @@ import com.usoftchina.saas.storage.po.ProdInOut;
 import com.usoftchina.saas.utils.BeanMapper;
 import com.usoftchina.saas.utils.CollectionUtils;
 import com.usoftchina.saas.utils.DateUtils;
+import com.usoftchina.saas.utils.JsonUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -664,50 +666,97 @@ public class SaleServiceImpl implements SaleService{
 
     /**
      * 获取企业商机
-     * @param enremindReqDTO
+     * @param remindReqDTO
      * @return
      */
     @Override
-    public List<EnremindRspDTO> getEnremind(EnremindReqDTO enremindReqDTO) {
-        /*Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
+    public IPage<RemindRspDTO> getEnremind(RemindReqDTO remindReqDTO) {
+        Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
         if (userUU == null){
             userUU = 0L;
         }
         Long enUU = companyApi.getCompanyById(BaseContextHolder.getCompanyId()).getData().getUu();
-        */
-        Long userUU = 1000002503L, enUU = 10041559L;
-        IPage<InquiryEnRemind> inquiryEnRemindIPage = inquiryApi.findEnRemind(userUU, enUU, enremindReqDTO.getPageNumber(),
-                enremindReqDTO.getPageSize(), enremindReqDTO.getEnableOffer(), enremindReqDTO.getKeyword(), enremindReqDTO.getQuoted());
+        //Long userUU = 1000002503L, enUU = 10041559L;
+        IPage<InquiryEnRemind> inquiryEnRemindIPage = inquiryApi.findEnRemind(userUU, enUU, remindReqDTO.getPageNumber(),
+                remindReqDTO.getPageSize(), remindReqDTO.getEnableOffer(), remindReqDTO.getKeyword(), /*remindReqDTO.getQuoted(),*/
+                remindReqDTO.getFromDate(), remindReqDTO.getEndDate());
         List<InquiryEnRemind> inquiryEnRemindList = inquiryEnRemindIPage.getContent();
         if (CollectionUtils.isEmpty(inquiryEnRemindList)){
             return null;
         }
-        List<EnremindRspDTO> enremindRspDTOList = convertToEnremindRspDTO(inquiryEnRemindList);
-        return enremindRspDTOList;
+        List<RemindRspDTO> remindRspDTOList = convertToRemindRspDTO(JsonUtils.toJsonString(inquiryEnRemindList), "enterprise");
+        //转换成分页对象
+        IPage<RemindRspDTO> remindRspDTOIPage = new IPage<RemindRspDTO>(inquiryEnRemindIPage.getNumber(), inquiryEnRemindIPage.getSize(),
+                inquiryEnRemindIPage.getNumberOfElements(),remindRspDTOList, inquiryEnRemindIPage.isFirst(), inquiryEnRemindIPage.isLast(),
+                inquiryEnRemindIPage.getTotalElements());
+        return remindRspDTOIPage;
+    }
+
+    /**
+     * 获取个人商机
+     * @param remindReqDTO
+     * @return
+     */
+    @Override
+    public IPage<RemindRspDTO> findRemindByUserInfo(RemindReqDTO remindReqDTO) {
+        Long userUU = accountApi.getAccountById(BaseContextHolder.getUserId()).getData().getUu();
+        Long enUU = companyApi.getCompanyById(BaseContextHolder.getCompanyId()).getData().getUu();
+        IPage<InquiryRemind> inquiryRemindIpage = inquiryApi.findRemindByUserInfo(userUU, enUU, remindReqDTO.getPageNumber(), remindReqDTO.getPageSize(),
+                remindReqDTO.getEnableOffer(),remindReqDTO.getKeyword(), remindReqDTO.getQuoted(),
+                remindReqDTO.getFromDate(), remindReqDTO.getEndDate());
+        List<InquiryRemind> inquiryRemindList = inquiryRemindIpage.getContent();
+        if (CollectionUtils.isEmpty(inquiryRemindList)){
+            return null;
+        }
+        List<RemindRspDTO> remindRspDTOList = convertToRemindRspDTO(JsonUtils.toJsonString(inquiryRemindList), "personal");
+        //转换成分页对象
+        IPage<RemindRspDTO> remindRspDTOIPage = new IPage<RemindRspDTO>(inquiryRemindIpage.getNumber(), inquiryRemindIpage.getSize(),
+                inquiryRemindIpage.getNumberOfElements(),remindRspDTOList, inquiryRemindIpage.isFirst(), inquiryRemindIpage.isLast(),
+                inquiryRemindIpage.getTotalElements());
+        return remindRspDTOIPage;
     }
 
     /**
      * 将平台返回的结果集转成SAAS的传输对象
-     * @param inquiryEnRemindList
+     * @param data
+     * @param type
      * @return
      */
-    private List<EnremindRspDTO> convertToEnremindRspDTO(List<InquiryEnRemind> inquiryEnRemindList) {
-        List<EnremindRspDTO> enremindRspDTOList = new ArrayList<EnremindRspDTO>();
-        EnremindRspDTO enremindRspDTO = null;
-        for (InquiryEnRemind inquiryEnRemind : inquiryEnRemindList){
-            enremindRspDTO = new EnremindRspDTO();
-            enremindRspDTO.setCustName(inquiryEnRemind.getEnName());
-            enremindRspDTO.setProdBrand(inquiryEnRemind.getInbrand());
-            enremindRspDTO.setProdName(inquiryEnRemind.getProdTitle());
-            enremindRspDTO.setProdOrispeccode(inquiryEnRemind.getCmpCode());
-            enremindRspDTO.setProdSpec(inquiryEnRemind.getSpec());
-            //enremindRspDTO.setProdUnit(inquiryEnRemind.get);
-            enremindRspDTO.setNeedQty(inquiryEnRemind.getNeedQty());
-            enremindRspDTO.setStartDate(inquiryEnRemind.getReDate());
-            enremindRspDTO.setEndDate(inquiryEnRemind.getEndDate());
-            enremindRspDTOList.add(enremindRspDTO);
-        }
-        return enremindRspDTOList;
+    private List<RemindRspDTO> convertToRemindRspDTO(String data, String type) {
+        List<RemindRspDTO> remindRspDTOList = new ArrayList<RemindRspDTO>();
+        RemindRspDTO remindRspDTO = null;
+        if ("enterprise".equals(type)){
+            List<InquiryEnRemind> inquiryEnRemindList = JsonUtils.fromJsonArray(data, InquiryEnRemind.class);
+            for (InquiryEnRemind inquiryEnRemind : inquiryEnRemindList){
+                remindRspDTO = new RemindRspDTO();
+                remindRspDTO.setCustName(inquiryEnRemind.getEnName());
+                remindRspDTO.setProdBrand(inquiryEnRemind.getInbrand());
+                remindRspDTO.setProdName(inquiryEnRemind.getProdTitle());
+                remindRspDTO.setProdOrispeccode(inquiryEnRemind.getCmpCode());
+                remindRspDTO.setProdSpec(inquiryEnRemind.getSpec());
+                remindRspDTO.setProdUnit("PCS");
+                remindRspDTO.setNeedQty(inquiryEnRemind.getNeedQty());
+                remindRspDTO.setStartDate(inquiryEnRemind.getReDate());
+                remindRspDTO.setEndDate(inquiryEnRemind.getEndDate());
+                remindRspDTOList.add(remindRspDTO);
+            }
+        }else if("personal".equals(type)){
+            List<InquiryRemind> inquiryRemindList = JsonUtils.fromJsonArray(data, InquiryRemind.class);
+            for (InquiryRemind inquiryRemind : inquiryRemindList){
+                remindRspDTO = new RemindRspDTO();
+                remindRspDTO.setCustName(inquiryRemind.getEnName());
+                remindRspDTO.setProdBrand(inquiryRemind.getInbrand());
+                remindRspDTO.setProdName(inquiryRemind.getProdTitle());
+                remindRspDTO.setProdOrispeccode(inquiryRemind.getCmpCode());
+                remindRspDTO.setProdSpec(inquiryRemind.getSpec());
+                remindRspDTO.setProdUnit("PCS");
+                remindRspDTO.setNeedQty(inquiryRemind.getNeedQty());
+                remindRspDTO.setStartDate(inquiryRemind.getReDate());
+                remindRspDTO.setEndDate(inquiryRemind.getEndDate());
+                remindRspDTOList.add(remindRspDTO);
+            }
+        }
+        return remindRspDTOList;
     }
 
     //更新最新销售总额

+ 17 - 9
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/api/InquiryApi.java

@@ -1,6 +1,6 @@
 package com.usoftchina.inquiry.api;
 
-import com.usoftchina.inquiry.po.*;
+import com.usoftchina.inquiry.po.inquiry.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
@@ -28,13 +28,16 @@ public interface InquiryApi {
      * @param enableOffer   是否能报价的:1为是 0为否,作为搜索条件。  值为0或null时,筛选所有
      * @param keyword       关键词
      * @param quoted        1是已报价 0是未报价 查看全部不传
+     * @param fromDate      起始时间
+     * @param endDate       截止时间
      * @return
      */
     @GetMapping("/sale/enremind")
     IPage<InquiryEnRemind> findEnRemind(@RequestParam("useruu") Long useruu, @RequestParam("enuu") Long enuu,
                                         @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize,
                                         @RequestParam("enableOffer") Integer enableOffer, @RequestParam("keyword") String keyword,
-                                        @RequestParam("quoted") Integer quoted);
+                                        /*@RequestParam("quoted") Integer quoted, */@RequestParam("fromDate") Long fromDate,
+                                        @RequestParam("endDate") Long endDate);
 
     /**
      * 查看(个人商机)
@@ -44,12 +47,17 @@ public interface InquiryApi {
      * @param pageSize
      * @param enableOffer   是否能报价的:1为是 0为否,作为搜索条件。  值为0或null时,筛选所有
      * @param keyword       关键词,做筛选用
+     * @param quoted        1是已报价 0是未报价 查看全部不传
+     * @param fromDate      起始时间
+     * @param endDate       截止时间
      * @return
      */
     @GetMapping("/sale/remind")
-    IPage<InquiryRemind> findByUserInfo(@RequestParam("useruu") Long useruu, @RequestParam("enuu") Long enuu,
-                                        @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize,
-                                        @RequestParam("enableOffer") Integer enableOffer, @RequestParam("keyword") String keyword);
+    IPage<InquiryRemind> findRemindByUserInfo(@RequestParam("useruu") Long useruu, @RequestParam("enuu") Long enuu,
+                                              @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize,
+                                              @RequestParam("enableOffer") Integer enableOffer, @RequestParam("keyword") String keyword,
+                                              @RequestParam("quoted") Integer quoted, @RequestParam("fromDate") Long fromDate,
+                                              @RequestParam("endDate") Long endDate);
 
     /**
      * 保存报价接口
@@ -78,8 +86,8 @@ public interface InquiryApi {
      */
     @GetMapping("/buyer/list")
     IPage<PurcInquiryItemInfo> getInquiryList(@RequestParam("enUU") Long enUU, @RequestParam("overdue") Integer overdue,
-                                             @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize,
-                                             @RequestParam("state") String state);
+                                              @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize,
+                                              @RequestParam("state") String state);
 
     /**
      * 查看已报价列表
@@ -91,8 +99,8 @@ public interface InquiryApi {
      */
     @GetMapping("/buyer/quotations")
     IPage<PurcInquiryItemInfo> findQuotationsByPage(@RequestParam(value = "state", defaultValue = "done") String state,
-                                                   @RequestParam("enUU") Long enUU,
-                                                   @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize);
+                                                    @RequestParam("enUU") Long enUU,
+                                                    @RequestParam("pageNumber") int pageNumber, @RequestParam("pageSize") int pageSize);
 
     /**
      * 采纳

+ 0 - 13
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/config/InquiryFeignConfig.java

@@ -1,13 +0,0 @@
-package com.usoftchina.inquiry.config;
-
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @Author chenwei
- * @Date 2019/01/04
- */
-public class InquiryFeignConfig {
-
-    private String baseUrl;
-
-}

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/Attach.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Attach.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/Enterprise.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Enterprise.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 

+ 13 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/IPage.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/IPage.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.List;
@@ -60,4 +60,16 @@ public class IPage<T> implements Serializable {
         this.last = last;
     }
 
+    public IPage(int number, int size, int numberOfElements, List<T> content, boolean first, boolean last, long totalElements) {
+        this.number = number;
+        this.size = size;
+        this.numberOfElements = numberOfElements;
+        this.content = content;
+        this.first = first;
+        this.last = last;
+        this.totalElements = totalElements;
+    }
+
+    public IPage() {
+    }
 }

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/InquiryEnRemind.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/InquiryEnRemind.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/InquiryRemind.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/InquiryRemind.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/Product.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/Product.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.util.Date;
 import java.util.Set;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/ProductMatchResult.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/ProductMatchResult.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 
 import java.io.Serializable;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PublicInquiry.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiry.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PublicInquiryItem.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiryItem.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import org.springframework.util.CollectionUtils;
 

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PublicInquiryReply.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PublicInquiryReply.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PurcInquiry.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiry.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 import java.util.Date;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PurcInquiryInfo.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryInfo.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 
 import java.io.Serializable;

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PurcInquiryItem.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryItem.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.util.*;
 

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PurcInquiryItemInfo.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurcInquiryItemInfo.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.util.*;
 

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/PurchaseInquiryReply.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/PurchaseInquiryReply.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 

+ 1 - 1
applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/User.java → applications/transfers/mall-api/src/main/java/com/usoftchina/inquiry/po/inquiry/User.java

@@ -1,4 +1,4 @@
-package com.usoftchina.inquiry.po;
+package com.usoftchina.inquiry.po.inquiry;
 
 import java.io.Serializable;
 

+ 40 - 4
applications/transfers/mall-api/src/test/java/com/usoftchina/inquiry/test/InquiryApiTest.java

@@ -1,7 +1,7 @@
 package com.usoftchina.inquiry.test;
 
 import com.usoftchina.inquiry.api.InquiryApi;
-import com.usoftchina.inquiry.po.*;
+import com.usoftchina.inquiry.po.inquiry.*;
 import com.usoftchina.saas.utils.JsonUtils;
 import org.junit.FixMethodOrder;
 import org.junit.Test;
@@ -9,11 +9,13 @@ import org.junit.runner.RunWith;
 import org.junit.runners.MethodSorters;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.data.domain.Page;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.ui.ModelMap;
 
 import javax.naming.directory.InvalidSearchFilterException;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * 询报价接口测试
@@ -42,13 +44,13 @@ public class InquiryApiTest {
 
     @Test
     public void testB_findEnRemind(){
-        IPage<InquiryEnRemind> inquiryEnRemindIPage = inquiryApi.findEnRemind(userUU, enUU, pageNum, pageSize, 1, "", 0);
+        IPage<InquiryEnRemind> inquiryEnRemindIPage = inquiryApi.findEnRemind(userUU, enUU, pageNum, pageSize, 0, "", /*0,*/ null, null);
         System.out.println(JsonUtils.toJsonString(inquiryEnRemindIPage));
     }
 
     @Test
     public void testC_findByUserInfo(){
-        IPage<InquiryRemind> inquiryRemindIPage = inquiryApi.findByUserInfo(userUU, enUU, pageNum, pageSize, 1, "1");
+        IPage<InquiryRemind> inquiryRemindIPage = inquiryApi.findRemindByUserInfo(userUU, enUU, pageNum, pageSize, 1, "1", 0, null, null);
         System.out.println(JsonUtils.toJsonString(inquiryRemindIPage));
     }
 
@@ -62,6 +64,40 @@ public class InquiryApiTest {
     @Test
     public void testE_saveInquiry(){
         PurcInquiry purcInquiry = new PurcInquiry();
+        purcInquiry.setEnUU(10050573L);
+        //企业信息
+        Enterprise enterprise = new Enterprise();
+        enterprise.setAdminUU(1000012297L);
+        enterprise.setBusinesscode("SAASTRADE201812121465");
+        enterprise.setEnAddress("江苏省南京市玄武区峡谷之巅");
+        enterprise.setEnName("何炎");
+        enterprise.setEnTel("13978887888");
+        enterprise.setUu(10050573L);
+
+        purcInquiry.setEnterprise(enterprise);
+        purcInquiry.setEnName("何炎");
+        purcInquiry.setRecorderUU(1000012297L);
+        purcInquiry.setDate(new Date());
+        purcInquiry.setRecorder("何炎");
+        purcInquiry.setEndDate(new Date(System.currentTimeMillis() + 3 * 24 * 60 * 60 * 1000));
+        purcInquiry.setSourceapp("sp");
+        purcInquiry.setShip("江苏省南京市玄武区峡谷之巅");
+
+        //询价明细
+        PurcInquiryItem purcInquiryItem = new PurcInquiryItem();
+        purcInquiryItem.setCmpCode("MT8783V");
+        purcInquiryItem.setUserUU(1000012297L);
+        purcInquiryItem.setUserName("何炎");
+        purcInquiryItem.setUserTel("13978887888");
+        purcInquiryItem.setProdCode("CPU0000001");
+        purcInquiryItem.setProdTitle("控制器IC");
+        purcInquiryItem.setSpec("MT8783V/CT,VFBGA641,SMD,无卤");
+        purcInquiryItem.setInbrand("MTK");
+
+        Set<PurcInquiryItem> purcInquiryItemSet = new HashSet<PurcInquiryItem>();
+        purcInquiryItemSet.add(purcInquiryItem);
+        purcInquiry.setInquiryItems(purcInquiryItemSet);
+
         PurcInquiry result = inquiryApi.saveInquiry(purcInquiry);
         System.out.println(JsonUtils.toJsonString(result));
     }

+ 25 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/ExpirationMessagePostProcessor.java

@@ -0,0 +1,25 @@
+package com.usoftchina.saas.transfers.config;
+
+import org.springframework.amqp.AmqpException;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessagePostProcessor;
+
+/**
+ * @author: guq
+ * @create: 2019-01-07 18:27
+ **/
+public class ExpirationMessagePostProcessor implements MessagePostProcessor {
+
+    private final Long ttl; // 毫秒
+
+    public ExpirationMessagePostProcessor(Long ttl) {
+        this.ttl = ttl;
+    }
+
+    @Override
+    public Message postProcessMessage(Message message) throws AmqpException {
+        message.getMessageProperties() .setExpiration(ttl.toString());
+        // 设置message的失效时间
+        return message;
+    }
+}

+ 44 - 32
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/config/RabbitConfig.java

@@ -1,6 +1,8 @@
 package com.usoftchina.saas.transfers.config;
 
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.Configuration;
 
 import java.io.Serializable;
 
@@ -9,57 +11,67 @@ import java.io.Serializable;
  * @Author chenwei
  * @Date 2018/12/28
  */
-@ConfigurationProperties("spring.rabbitmq")
+@ConfigurationProperties(prefix = "rabbit.config")
 public class RabbitConfig implements Serializable {
 
-//    @Value("${spring.rabbitmq.host}")
-    private String host;
-//    @Value("${spring.rabbitmq.port}")
-    private int port;
-//    @Value("${spring.rabbitmq.username}")
-    private String username;
-//    @Value("${spring.rabbitmq.password}")
-    private String password;
-//    @Value("${spring.rabbitmq.virtual-host}")
-    private String virtualHost;
-
-    public String getHost() {
-        return host;
+    private String exchange;
+
+    private String dlexchange;
+
+    private String queue;
+
+    private String dlqueue;
+
+    private String routingkey;
+
+    private Long expired;
+
+    public String getExchange() {
+        return exchange;
     }
 
-    public void setHost(String host) {
-        this.host = host;
+    public void setExchange(String exchange) {
+        this.exchange = exchange;
     }
 
-    public int getPort() {
-        return port;
+    public String getDlexchange() {
+        return dlexchange;
     }
 
-    public void setPort(int port) {
-        this.port = port;
+    public void setDlexchange(String dlexchange) {
+        this.dlexchange = dlexchange;
     }
 
-    public String getUsername() {
-        return username;
+    public String getQueue() {
+        return queue;
     }
 
-    public void setUsername(String username) {
-        this.username = username;
+    public void setQueue(String queue) {
+        this.queue = queue;
     }
 
-    public String getPassword() {
-        return password;
+    public Long getExpired() {
+        return expired;
+    }
+
+    public void setExpired(Long expired) {
+        this.expired = expired;
+    }
+
+    public String getDlqueue() {
+
+        return dlqueue;
     }
 
-    public void setPassword(String password) {
-        this.password = password;
+    public void setDlqueue(String dlqueue) {
+        this.dlqueue = dlqueue;
     }
 
-    public String getVirtualHost() {
-        return virtualHost;
+    public String getRoutingkey() {
+        return routingkey;
     }
 
-    public void setVirtualHost(String virtualHost) {
-        this.virtualHost = virtualHost;
+    public void setRoutingkey(String routingkey) {
+        this.routingkey = routingkey;
     }
 }

+ 11 - 0
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/mapper/BrokerMessageLogMapper.java

@@ -0,0 +1,11 @@
+package com.usoftchina.saas.transfers.mapper;
+
+import com.usoftchina.saas.transfers.po.BrokerMessagelog;
+
+/**
+ * @author: guq
+ * @create: 2019-01-07 20:37
+ **/
+public interface BrokerMessageLogMapper {
+    BrokerMessagelog getMessage(String msgId);
+}

+ 53 - 25
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/BaseRabbitReceiveService.java

@@ -1,3 +1,4 @@
+/*
 package com.usoftchina.saas.transfers.service;
 
 import com.rabbitmq.client.AMQP;
@@ -24,11 +25,13 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
+*/
 /**
  * @Description RabbitMq 消息接收处理基类
  * @Author chenwei
  * @Date 2018/12/27
- */
+ *//*
+
 public abstract class BaseRabbitReceiveService implements ChannelAwareMessageListener {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(BaseRabbitReceiveService.class);
@@ -47,10 +50,12 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
     protected int requestedHeartBeat = 30;
     protected String delayQueueName;
 
-    /**
+    */
+/**
      * 初始化连接
      * @return
-     */
+     *//*
+
     private ConnectionFactory initConnectionFactory(){
         if (StringUtils.isEmpty(host)) {
             throw new IllegalArgumentException("host为空");
@@ -77,10 +82,12 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         return connectionFactory;
     }
 
-    /**
+    */
+/**
      * 动态创建消息监听
      * @return
-     */
+     *//*
+
     @Bean
     protected SimpleMessageListenerContainer simpleMessageListenerContainer(){
         if (!isDynamicCreate){
@@ -110,24 +117,28 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         processMessage(messageJson, channel, tag, queueName);
     }
 
-    /**
+    */
+/**
      * 接收消息处理
      * @param messageBytes
      * @param channel
      * @param headers
-     */
+     *//*
+
     @RabbitHandler
     public void receiveMessage(byte[] messageBytes, Channel channel, @Headers Map<String, Object> headers) {
         receiveMessage(new String(messageBytes), channel, headers);
     }
 
-    /**
+    */
+/**
      * 接收消息处理
      *
      * @param messageJson
      * @param channel
      * @param headers
-     */
+     *//*
+
     @RabbitHandler
     public void receiveMessage(String messageJson, Channel channel, @Headers Map<String, Object> headers) {
         long tag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
@@ -135,13 +146,15 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         processMessage(messageJson, channel, tag, queueName);
     }
 
-    /**
+    */
+/**
      * 处理消息
      * @param messageJson
      * @param channel
      * @param tag
      * @param queueName
-     */
+     *//*
+
     private void processMessage(String messageJson, Channel channel, long tag, String queueName) {
         MessageInfo messageInfo = getMessageInfo(messageJson);
         //当消息不符合格式MessageInfo格式时,丢弃消息
@@ -164,11 +177,13 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         }
     }
 
-    /**
+    */
+/**
      * 获取消息内容
      * @param messageJson
      * @return
-     */
+     *//*
+
     private MessageInfo getMessageInfo(String messageJson) {
         MessageInfo messageInfo = null;
         try {
@@ -180,15 +195,18 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         return messageInfo;
     }
 
-    /**
+    */
+/**
      * 发送延时消息
      * @param messageInfo
      * @param channel
      * @param queueName
-     */
+     *//*
+
     private void sendDelayMessage(MessageInfo messageInfo, Channel channel, String queueName) {
         //重试次数+1
-        /*messageInfo.setRetryCount(messageInfo.getRetryCount() + 1);
+        */
+/*messageInfo.setRetryCount(messageInfo.getRetryCount() + 1);
         String messageJson = JsonUtils.toJsonString(messageInfo);
         try {
             String dQueueName = getDelayQueueName(channel, queueName);
@@ -199,16 +217,19 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
             LOGGER.info("发送延时消息[BaseRabbitReceiveService.sendDelayMessage].正常,messageJson:{},queueName:{}", messageJson, queueName);
         } catch (IOException e) {
             LOGGER.error("发送延时消息[BaseRabbitReceiveService.sendDelayMessage].异常,messageJson:{},queueName:{}", messageJson, queueName, e);
-        }*/
+        }*//*
+
     }
 
-    /**
+    */
+/**
      * 获取延时队列
      * @param channel
      * @param queueName
      * @return
      * @throws IOException
-     */
+     *//*
+
     private String getDelayQueueName(Channel channel, String queueName) throws IOException {
         if (!StringUtils.isEmpty(delayQueueName)) {
             return delayQueueName;
@@ -223,11 +244,13 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         return dQueueName;
     }
 
-    /**
+    */
+/**
      * 消息应答No
      * @param channel
      * @param tag
-     */
+     *//*
+
     private void basicNack(Channel channel, long tag) {
         try {
             channel.basicNack(tag, false, false);
@@ -237,11 +260,13 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         }
     }
 
-    /**
+    */
+/**
      * 消息应答Yes
      * @param channel
      * @param tag
-     */
+     *//*
+
     private void basicAck(Channel channel, long tag) {
         try {
             channel.basicAck(tag, false);
@@ -251,11 +276,14 @@ public abstract class BaseRabbitReceiveService implements ChannelAwareMessageLis
         }
     }
 
-    /**
+    */
+/**
      * 处理消息
      * @param messageInfo
      * @throws Exception
-     */
+     *//*
+
     public abstract void processMessage(MessageInfo messageInfo) throws Exception;
 
 }
+*/

+ 14 - 4
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/RabbitReceiveService.java

@@ -1,3 +1,4 @@
+/*
 package com.usoftchina.saas.transfers.service;
 
 import com.usoftchina.saas.transfers.config.RabbitConfig;
@@ -10,11 +11,13 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 
+*/
 /**
  * @Description 消息消费
  * @Author chenwei
  * @Date 2018/12/28
- */
+ *//*
+
 @Service
 @EnableConfigurationProperties(RabbitConfig.class)
 public class RabbitReceiveService extends BaseRabbitReceiveService {
@@ -47,14 +50,20 @@ public class RabbitReceiveService extends BaseRabbitReceiveService {
     }
 
     private void processMessageForReceivable(String bizId, String bizType) throws Exception {
-        /*  根据不同的bizType,方案:1.调用不同的方法.    2.处理自己需要变量操作,调用同一个方法  */
+        */
+/*  根据不同的bizType,方案:1.调用不同的方法.    2.处理自己需要变量操作,调用同一个方法  *//*
+
        switch (bizType){
            case "PURCHASE":
-               /* 执行必要的操作 */
+               */
+/* 执行必要的操作 *//*
+
                execute();
                break;
            case "PURCHASECHANGE":
-               /* 执行必要的操作 */
+               */
+/* 执行必要的操作 *//*
+
                break;
            default:
                throw new Exception();
@@ -66,3 +75,4 @@ public class RabbitReceiveService extends BaseRabbitReceiveService {
     }
 
 }
+*/

+ 13 - 5
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/RabbitSendService.java

@@ -1,3 +1,4 @@
+/*
 package com.usoftchina.saas.transfers.service;
 
 import com.usoftchina.saas.transfers.po.MessageInfo;
@@ -15,11 +16,13 @@ import org.springframework.stereotype.Service;
 import javax.annotation.PostConstruct;
 import java.util.UUID;
 
+*/
 /**
  * @Description RabbitMQ发送消息
  * @Author chenwei
  * @Date 2018/12/27
- */
+ *//*
+
 @Service
 public class RabbitSendService implements RabbitTemplate.ConfirmCallback, RabbitTemplate.ReturnCallback {
 
@@ -38,7 +41,8 @@ public class RabbitSendService implements RabbitTemplate.ConfirmCallback, Rabbit
         rabbitTemplate.setReturnCallback(this);
     }
 
-    /**
+    */
+/**
      *
      * @param queueName 队列名
      * @param userId    用户ID
@@ -46,18 +50,21 @@ public class RabbitSendService implements RabbitTemplate.ConfirmCallback, Rabbit
      * @param bizType   业务类型
      * @param bizId     业务ID
      * @return  消息ID
-     */
+     *//*
+
     public String sendMessage(String queueName, String userId, String appId, String bizType, String bizId){
         MessageInfo messageInfo = new MessageInfo(userId, appId, bizType, bizId);
         return sendMessage(queueName, messageInfo);
     }
 
-    /**
+    */
+/**
      * 发送消息
      * @param queueName     队列名
      * @param messageInfo   消息体
      * @return
-     */
+     *//*
+
     public String sendMessage(String queueName, MessageInfo messageInfo){
         if (StringUtils.isEmpty(queueName)){
             throw new IllegalArgumentException("QueueName(队列名)不能为空!");
@@ -95,3 +102,4 @@ public class RabbitSendService implements RabbitTemplate.ConfirmCallback, Rabbit
                 message, replyCode, replyText, exchange, routingKey);
     }
 }
+*/

+ 15 - 6
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/ReceiveService.java

@@ -1,9 +1,13 @@
 package com.usoftchina.saas.transfers.service;
 
 import com.rabbitmq.client.Channel;
+import com.usoftchina.saas.transfers.config.RabbitConfig;
 import com.usoftchina.saas.transfers.po.MessageInfo;
 import org.springframework.amqp.rabbit.annotation.*;
 import org.springframework.amqp.support.AmqpHeaders;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.messaging.handler.annotation.Headers;
 import org.springframework.messaging.handler.annotation.Payload;
 import org.springframework.stereotype.Service;
@@ -17,31 +21,36 @@ import java.util.Map;
  **/
 @Service
 public class ReceiveService {
+
+    private final static String EXCHANGE = "saas_trade_dev_exchange";
+    private final static String DLEXCHANGE = "saas_trade_dev_dlexchange";
+    private final static String QUEUE = "saas_trade_dev_queue";
+    private final static String DLQUEUE = "saas_trade_dev_dlqueue";
+    private final static String ROUTINGKEY = "saas_trade_dev_dl.*";
+
     //配置监听的哪一个队列,同时在没有queue和exchange的情况下会去创建并建立绑定关系
-    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = "test_dev",durable = "true"),
-            exchange = @Exchange(name="test",durable = "true",type = "topic"),
-            key = "abc.*"))
+    @RabbitListener(bindings = @QueueBinding(value = @Queue(value = QUEUE,durable = "true"),
+            exchange = @Exchange(name= DLEXCHANGE ,durable = "true",type = "topic"),
+            key = ROUTINGKEY))
     @RabbitHandler
     public void onMessage(@Payload MessageInfo info, @Headers Map<String,Object> headers, Channel channel)
             throws IOException {
         //消费者操作
         System.out.println("---------收到消息,开始消费---------");
         System.out.println("订单ID:" + info.getBizId());
+        System.out.println("信息ID:" + info.getMsgId());
 
         /**
          * Delivery Tag 用来标识信道中投递的消息。RabbitMQ 推送消息给 Consumer 时,会附带一个 Delivery Tag,
          * 以便 Consumer 可以在消息确认时告诉 RabbitMQ 到底是哪条消息被确认了。
          * RabbitMQ 保证在每个信道中,每条消息的 Delivery Tag 从 1 开始递增。
          */
-
         Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
 
-
         /**
          *  multiple 取值为 false 时,表示通知 RabbitMQ 当前消息被确认
          *  如果为 true,则额外将比第一个参数指定的 delivery tag 小的消息一并确认
          */
-
         boolean multiple = false;
 
         //ACK,确认一条消息已经被消费

+ 25 - 5
applications/transfers/transfers-server/src/main/java/com/usoftchina/saas/transfers/service/SendService.java

@@ -1,9 +1,16 @@
 package com.usoftchina.saas.transfers.service;
 
+import com.usoftchina.saas.transfers.config.ExpirationMessagePostProcessor;
+import com.usoftchina.saas.transfers.config.RabbitConfig;
+import com.usoftchina.saas.transfers.mapper.BrokerMessageLogMapper;
+import com.usoftchina.saas.transfers.po.BrokerMessagelog;
 import com.usoftchina.saas.transfers.po.MessageInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.amqp.rabbit.support.CorrelationData;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.stereotype.Service;
 
 /**
@@ -11,11 +18,20 @@ import org.springframework.stereotype.Service;
  * @create: 2019-01-06 22:04
  **/
 @Service
+@EnableConfigurationProperties(RabbitConfig.class)
 public class SendService {
 
     @Autowired
     private RabbitTemplate rabbitTemplate;
 
+    @Autowired
+    private RabbitConfig rabbitConfig;
+
+    @Autowired
+    private BrokerMessageLogMapper brokerMessageLogMapper;
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
 
     //发送消息方法调用: 构建自定义对象消息
     public void sendMessage(MessageInfo info) {
@@ -23,7 +39,7 @@ public class SendService {
         rabbitTemplate.setConfirmCallback(confirmCallback);
         //消息唯一ID
         CorrelationData correlationData = new CorrelationData(info.getMsgId());
-        rabbitTemplate.convertAndSend("test", "abc.eqw", info, correlationData);
+        rabbitTemplate.convertAndSend(rabbitConfig.getDlexchange(), rabbitConfig.getRoutingkey(), info, correlationData);
     }
 
     //发送消息方法调用: 构建自定义对象消息
@@ -32,22 +48,26 @@ public class SendService {
         rabbitTemplate.setConfirmCallback(delayConfirmCallback);
         //消息唯一ID
         CorrelationData correlationData = new CorrelationData(info.getMsgId());
-        rabbitTemplate.convertAndSend("test", "abc.eqw", info, correlationData);
+        rabbitTemplate.convertAndSend(rabbitConfig.getExchange(), rabbitConfig.getRoutingkey(), info,
+                new ExpirationMessagePostProcessor(rabbitConfig.getExpired()), correlationData);
     }
 
     //回调函数: confirm确认
     final RabbitTemplate.ConfirmCallback confirmCallback = new RabbitTemplate.ConfirmCallback() {
         @Override
         public void confirm(CorrelationData correlationData, boolean confirm, String cause) {
-            System.err.println("correlationData: " + correlationData);
+            System.out.println("correlationData: " + correlationData);
             String messageId = correlationData.getId();
             if (confirm) {
-                System.out.println("发射成功");
+                logger.info("msgId={},已发送服务器", correlationData.getId());
                 //如果confirm返回成功 则进行更新
                 // brokerMessageLogMapper.changeBrokerMessageLogStatus(messageId, Constants.ORDER_SEND_SUCCESS, new Date());
             } else {
                 //失败则进行具体的后续操作:重试 或者补偿等手段
-                System.err.println("发送失败,原因:" + cause);
+                BrokerMessagelog message = brokerMessageLogMapper.getMessage(correlationData.getId());
+                // sendDelayMessage((MessageInfo) message.getMessage());
+                logger.error("msgId={},发送失败:{}", correlationData.getId(), cause);
+
             }
         }
     };

+ 11 - 1
applications/transfers/transfers-server/src/main/resources/application.yml

@@ -14,6 +14,8 @@ spring:
     virtual-host: dev
     username: saas
     password: select123***
+    publisher-returns: true
+    publisher-confirms: true
   zipkin:
     sender:
       type: rabbit
@@ -62,4 +64,12 @@ auth:
   public-key: auth/pub.key
 ribbon:
   ReadTimeout: 10000
-  ConnectTimeout: 10000
+  ConnectTimeout: 10000
+rabbit:
+  config:
+    exchange: saas_trade_dev_exchange
+    dlexchange: saas_trade_dev_dlexchange
+    queue: saas_trade_dev_queue
+    dlqueue: saas_trade_dev_dlqueue
+    routingkey: saas_trade_dev_dl.*
+    expired: 30000

+ 16 - 10
applications/transfers/transfers-server/src/test/java/com/usoftchina/saas/transfers/service/RabbitSendServiceTest.java

@@ -1,5 +1,6 @@
 package com.usoftchina.saas.transfers.service;
 
+import com.usoftchina.saas.transfers.po.MessageInfo;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,19 +19,24 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 public class RabbitSendServiceTest {
 
     @Autowired
-    private RabbitSendService rabbitSendService;
-
-    private final String QUEUENAME = "saas_trade";
-    private final String USERID = "1";
-    private final String APPID = "trade";
-    private final String BIZTYPE = "PURCHASE";
-    private final String BIZID = "1";
+    private SendService sendService;
 
+    @Test
+    public void TestA_Send() {
+        MessageInfo msg = new MessageInfo();
+        msg.setBizId("测试");
+        msg.setMsgId("测试0001");
+        sendService.sendMessage(msg);
+    }
 
     @Test
-    public void sendMessage() throws Exception {
-        String messageId = rabbitSendService.sendMessage(QUEUENAME, USERID, APPID, BIZTYPE, BIZID);
-        System.out.println(messageId);
+    public void TestB_SendDelay() {
+        MessageInfo msg = new MessageInfo();
+        msg.setBizId("测试");
+        msg.setMsgId("测试延迟0001");
+        sendService.sendDelayMessage(msg);
     }
 
+
+
 }