浏览代码

修改计费-弃用redis改为查数据库

xusonglin 4 年之前
父节点
当前提交
d632bcbe3e

+ 4 - 1
src/main/java/com/jkcredit/invoice/hub/mapper/SearchInvoiceResultMapper.java

@@ -3,7 +3,6 @@ package com.jkcredit.invoice.hub.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jkcredit.invoice.hub.model.dto.apiCarFree.InvoiceResultDto;
 import com.jkcredit.invoice.hub.model.dto.searchInvoiceResult.InvoiceRecordDto;
 import com.jkcredit.invoice.hub.model.po.searchInvoiceResult.InvoiceRecordPo;
 import com.jkcredit.invoice.hub.model.po.searchInvoiceResult.SearchInvoiceResultPo;
@@ -21,4 +20,8 @@ public interface SearchInvoiceResultMapper extends BaseMapper<SearchInvoiceResul
     List<SearchInvoiceResultPo> getSearchInvoiceResult(String num, Long userId);
 
     IPage<InvoiceRecordPo> getInvoiceRecords(Page page, @Param("query") InvoiceRecordDto dto);
+
+    List<SearchInvoiceResultPo> getInvoiceByTransactionId(String transactionId);
+
+    List<SearchInvoiceResultPo> getInvoiceByInvoiceNum(String invoiceNum, String invoiceCode);
 }

+ 4 - 6
src/main/java/com/jkcredit/invoice/hub/service/apiCarFree/ApiCarFreeChargeServiceImpl.java

@@ -102,7 +102,8 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
                     BigDecimal balance = userBalanceDto.getBalance();
                     //计费
                     for (InvoiceResult t : newSearchInvoiceResultList) {
-                        if (!redisTemplate.hasKey(CommonConstant.TRANSACTION_ID_KEY + t.getTransactionId())) {
+                        List<InvoiceResult> invoiceResultList = searchInvoiceResultService.getInvoiceByTransactionId(t.getTransactionId());
+                        if (invoiceResultList.size() == 0) {
                             // 计算余额
                             balance = balance.subtract(userDto.getPrice());
                             // 实际扣费数据
@@ -113,8 +114,6 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
                             realChargeDto.setTransactionId(t.getTransactionId());
                             realChargeService.saveRealCharge(realChargeDto);
                             log.warn("计费用户id:{},计费流水号:{},计费日志:{}", po.getUserId(), t.getTransactionId(), JSON.toJSONString(t));
-                            //存入redis交易id
-                            redisTemplate.opsForValue().set(CommonConstant.TRANSACTION_ID_KEY + t.getTransactionId(), t.getTransactionId());
                         }
                     }
                     userBalanceDto.setBalance(balance);
@@ -122,15 +121,14 @@ public class ApiCarFreeChargeServiceImpl implements ApiCarFreeChargeService {
 
                     // 保存发票信息
                     for (InvoiceResult t : invoiceResultDto.getResult()) {
-                        if (!redisTemplate.hasKey(CommonConstant.NUM_FIND_INVOICE_KEY + t.getInvoiceNum() + "_" + t.getInvoiceCode())) {
+                        List<InvoiceResult> invoiceResultList = searchInvoiceResultService.getInvoiceByInvoiceNum(t.getInvoiceNum(), t.getInvoiceCode());
+                        if (invoiceResultList.size() == 0) {
                             SearchInvoiceResultDto dto = new SearchInvoiceResultDto();
                             BeanUtil.copyProperties(dto, t);
                             dto.setUserId(po.getUserId());
                             //插入发票信息
                             searchInvoiceResultService.saveSearchInvoiceResult(dto);
                             log.info("插入的发票信息:{}", JSON.toJSONString(t));
-                            //存入redis发票信息
-                            redisTemplate.opsForValue().set(CommonConstant.NUM_FIND_INVOICE_KEY + t.getInvoiceNum() + "_" + t.getInvoiceCode(), JSON.toJSONString(t));
                         }
                     }
                 }

+ 4 - 0
src/main/java/com/jkcredit/invoice/hub/service/searchInvoiceResult/SearchInvoiceResultService.java

@@ -22,4 +22,8 @@ public interface SearchInvoiceResultService {
     List<InvoiceResult> getSearchInvoiceResult(String num, Long userId);
 
     IPage<InvoiceRecordVo> getInvoiceRecords(Page page, InvoiceRecordDto dto);
+
+    List<InvoiceResult> getInvoiceByTransactionId(String transactionId);
+
+    List<InvoiceResult> getInvoiceByInvoiceNum(String invoiceNum, String invoiceCode);
 }

+ 34 - 0
src/main/java/com/jkcredit/invoice/hub/service/searchInvoiceResult/SearchInvoiceResultServiceImpl.java

@@ -81,4 +81,38 @@ public class SearchInvoiceResultServiceImpl extends BaseService implements Searc
         // 将数据库存储的decimal转double
         return vo;
     }
+
+    @Override
+    public List<InvoiceResult> getInvoiceByTransactionId(String transactionId) {
+        try {
+            List<SearchInvoiceResultPo> poList = mapper.getInvoiceByTransactionId(transactionId);
+            List<InvoiceResult> dtoList = new ArrayList<>();
+            for (SearchInvoiceResultPo po : poList) {
+                InvoiceResult dto = new InvoiceResult();
+                BeanUtil.copyProperties(dto, po);
+                dtoList.add(dto);
+            }
+            return dtoList;
+        } catch (Exception e) {
+            log.error("根据流水号查询发票数据失败,失败原因:{}", e.getMessage());
+            throw new ServiceException("查询发票数据失败");
+        }
+    }
+
+    @Override
+    public List<InvoiceResult> getInvoiceByInvoiceNum(String invoiceNum, String invoiceCode) {
+        try {
+            List<SearchInvoiceResultPo> poList = mapper.getInvoiceByInvoiceNum(invoiceNum, invoiceCode);
+            List<InvoiceResult> dtoList = new ArrayList<>();
+            for (SearchInvoiceResultPo po : poList) {
+                InvoiceResult dto = new InvoiceResult();
+                BeanUtil.copyProperties(dto, po);
+                dtoList.add(dto);
+            }
+            return dtoList;
+        } catch (Exception e) {
+            log.error("根据发票号码发票代码查询发票数据失败,失败原因:{}", e.getMessage());
+            throw new ServiceException("查询发票数据失败");
+        }
+    }
 }

+ 18 - 0
src/main/resources/mapper/SearchInvoiceResultMapper.xml

@@ -65,4 +65,22 @@
             </if>
         </where>
     </select>
+
+    <select id="getInvoiceByTransactionId" resultMap="baseResultMap">
+        select
+            id, waybill_num, transaction_id
+        from
+            h_search_invoice_result
+        where
+            transaction_id = #{transactionId}
+    </select>
+
+    <select id="getInvoiceByInvoiceNum" resultMap="baseResultMap">
+        select
+            id, waybill_num, invoice_num, invoice_code
+        from
+            h_search_invoice_result
+        where
+            invoice_num = #{invoiceNum} and invoice_code = #{invoiceCode}
+    </select>
 </mapper>