Просмотр исходного кода

海康需求:取消交易时标记原始消费记录为删除

xiari 9 месяцев назад
Родитель
Сommit
ba995d7a86

+ 8 - 0
ruoyi-api/ruoyi-api-consume/src/main/java/org/dromara/consume/api/RemoteConsumeService.java

@@ -60,4 +60,12 @@ public interface RemoteConsumeService {
     BigDecimal getUserTotalBalance(Long userId);
     BigDecimal getUserTotalBalance(Long userId);
 
 
     BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance);
     BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance);
+
+    /**
+     * 根据设备编号和设备记录编号取消消费
+     * @param termNo 设备编号
+     * @param termRecordId 设备记录编号
+     * @return 是否成功
+     */
+    boolean cancleDeal(Long termNo,Integer termRecordId);
 }
 }

+ 4 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -622,4 +622,8 @@ public class BaseBusiness {
             totalBoList.add(bo);
             totalBoList.add(bo);
         }
         }
     }
     }
+
+    public boolean deleteOriginalRecord(Long termNo, Integer termRecordId) {
+        return originalService.deleteByTermNoAndTermRecordId(termNo, termRecordId);
+    }
 }
 }

+ 12 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/dubbo/RemoteConsumeServiceImpl.java

@@ -115,4 +115,16 @@ public class RemoteConsumeServiceImpl implements RemoteConsumeService {
     public BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance) {
     public BigDecimal cacheUserTotalBalance(Long userId, BigDecimal balance) {
         return bagService.cacheUserTotalBalance(userId, balance);
         return bagService.cacheUserTotalBalance(userId, balance);
     }
     }
+
+    /**
+     * 根据设备编号和设备记录编号取消消费
+     *
+     * @param termNo       设备编号
+     * @param termRecordId 设备记录编号
+     * @return 是否成功
+     */
+    @Override
+    public boolean cancleDeal(Long termNo, Integer termRecordId) {
+        return baseBusiness.deleteOriginalRecord(termNo, termRecordId);
+    }
 }
 }

+ 9 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/IConsumeDetailOriginalService.java

@@ -97,4 +97,13 @@ public interface IConsumeDetailOriginalService {
     XfConsumeDetailOriginalVo queryByConsumeDate(Long cardNo, Long termNo, Long termRecordId, Date consumeDate);
     XfConsumeDetailOriginalVo queryByConsumeDate(Long cardNo, Long termNo, Long termRecordId, Date consumeDate);
 
 
     List<XfConsumeDetailOriginalVo> queryListByConsumeDate(Date beginDate, Date endDate);
     List<XfConsumeDetailOriginalVo> queryListByConsumeDate(Date beginDate, Date endDate);
+
+    /**
+     * 根据设备机号和机器流水号删除原始消费记录。
+     *
+     * @param termNo       设备机号
+     * @param termRecordId 机器流水号
+     * @return 如果删除成功返回true,否则返回false
+     */
+    boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId);
 }
 }

+ 13 - 0
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/service/impl/ConsumeDetailOriginalServiceImpl.java

@@ -208,4 +208,17 @@ public class ConsumeDetailOriginalServiceImpl implements IConsumeDetailOriginalS
             .gt(XfConsumeDetailOriginal::getConsumeDate, beginDate)
             .gt(XfConsumeDetailOriginal::getConsumeDate, beginDate)
             .le(XfConsumeDetailOriginal::getConsumeDate,endDate));
             .le(XfConsumeDetailOriginal::getConsumeDate,endDate));
     }
     }
+
+    /**
+     * 根据设备机号和机器流水号删除原始消费记录。
+     *
+     * @param termNo       设备机号
+     * @param termRecordId 机器流水号
+     * @return 如果删除成功返回true,否则返回false
+     */
+    @Override
+    public boolean deleteByTermNoAndTermRecordId(Long termNo, Integer termRecordId) {
+        return baseMapper.delete(new LambdaQueryWrapper<XfConsumeDetailOriginal>().eq(XfConsumeDetailOriginal::getTermNo, termNo)
+                                      .eq(XfConsumeDetailOriginal::getTermRecordId, termRecordId)) > 0;
+    }
 }
 }

+ 4 - 1
ruoyi-server/ruoyi-server-hik/src/main/java/org/dromara/server/hik/event/handler/ConsumptionEventHandler.java

@@ -1,5 +1,6 @@
 package org.dromara.server.hik.event.handler;
 package org.dromara.server.hik.event.handler;
 
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
@@ -90,7 +91,9 @@ public class ConsumptionEventHandler implements HikEventHandler {
              */
              */
             Boolean cancel = consumptionEvent.getCancel();
             Boolean cancel = consumptionEvent.getCancel();
             if(cancel !=null && cancel){
             if(cancel !=null && cancel){
-                log.info("消费机消费请求确认事件,取消交易");
+                log.info("消费机消费请求确认事件,取消交易:{}", JSONUtil.toJsonStr(receive));
+                // 将原始记录标记为删除 termVo.getTermNo() consumptionEvent.getSerialNo() TermRecordId
+                remoteConsumeService.cancleDeal(termVo.getTermNo(), consumptionEvent.getSerialNo());
                 return rs;
                 return rs;
             }
             }