Browse Source

默认defaultDelayTime

hr~ 3 tuần trước cách đây
mục cha
commit
96407ec6c7

+ 6 - 1
lot/src/main/java/cn/hobbystocks/auc/handle/impl/tradition/AbstractTraditionRuleHandler.java

@@ -75,7 +75,7 @@ public abstract class AbstractTraditionRuleHandler implements RuleHandler {
         }
         traditionLive.setCurrentStartTime(Math.max(lot.getStartTime().getTime(), System.currentTimeMillis()));
         traditionLive.setCurrentEndTime(lot.getEndTime().getTime());
-        traditionLive.setRemainingAllDelayTime(traditionRule.getAllDelayTime());
+        traditionLive.setRemainingAllDelayTime(defaultDelayTime(traditionRule.getAllDelayTime()));
 
         traditionLive.setTraditionRule(traditionRule);
         traditionLive.setLot(lot);
@@ -401,6 +401,7 @@ public abstract class AbstractTraditionRuleHandler implements RuleHandler {
             TraditionLive traditionLive = new TraditionLive();
             traditionLive.setEasyAddPrice(traditionRule.getEasyAddPrice());
             traditionLive.setCurrentEndTime(lot.getEndTime().getTime());
+            traditionLive.setRemainingAllDelayTime(defaultDelayTime(traditionRule.getAllDelayTime()));
             traditionLive.setRound((long)bids.size());
             traditionLive.setBidId(bids.get(0).getId());
             traditionLive.setAvatar(bids.get(0).getAvatar());
@@ -448,4 +449,8 @@ public abstract class AbstractTraditionRuleHandler implements RuleHandler {
         }
     }
 
+    protected long defaultDelayTime(Long delayTime) {
+        return Objects.isNull(delayTime) ? 0L : delayTime;
+    }
+
 }

+ 15 - 5
lot/src/main/java/cn/hobbystocks/auc/handle/impl/tradition/TraditionRuleHandler.java

@@ -28,7 +28,12 @@ public class TraditionRuleHandler extends AbstractTraditionRuleHandler {
     @Override
     protected void delay(TraditionLive traditionLive) {
         //计算当前结束时间和剩余总计延时时间
-        Long onceDelayTime = Math.min(traditionLive.getRemainingAllDelayTime(), traditionLive.getTraditionRule().getOnceDelayTime());
+        long remainingAllDelayTime = defaultDelayTime(traditionLive.getRemainingAllDelayTime());
+        long onceDelayTime = Math.min(remainingAllDelayTime, defaultDelayTime(traditionLive.getTraditionRule().getOnceDelayTime()));
+        traditionLive.setRemainingAllDelayTime(remainingAllDelayTime);
+        if (onceDelayTime <= 0) {
+            return;
+        }
         if ((System.currentTimeMillis() + onceDelayTime * 1000) > traditionLive.getCurrentEndTime()) {
             traditionLive.setCurrentEndTime(traditionLive.getCurrentEndTime() + onceDelayTime * 1000);
             traditionLive.setRemainingAllDelayTime(traditionLive.getRemainingAllDelayTime() - onceDelayTime);
@@ -42,11 +47,16 @@ public class TraditionRuleHandler extends AbstractTraditionRuleHandler {
      */
     @Override
     protected void delaySync(TraditionLive traditionLive, List<Bid> bids) {
-        Long allDelayTime = traditionLive.getTraditionRule().getAllDelayTime();
+        long allDelayTime = defaultDelayTime(traditionLive.getTraditionRule().getAllDelayTime());
+        long onceDelayTime = defaultDelayTime(traditionLive.getTraditionRule().getOnceDelayTime());
+        traditionLive.setRemainingAllDelayTime(allDelayTime);
+        if (onceDelayTime <= 0) {
+            return;
+        }
         for (int index = bids.size() - 1; index >= 0; index--) {
-            if ((bids.get(index).getCreateTime().getTime() + traditionLive.getTraditionRule().getOnceDelayTime() * 1000) > traditionLive.getCurrentEndTime()) {
-                allDelayTime = allDelayTime - traditionLive.getTraditionRule().getOnceDelayTime();
-                traditionLive.setCurrentEndTime(traditionLive.getCurrentEndTime() + traditionLive.getTraditionRule().getOnceDelayTime() * 1000);
+            if ((bids.get(index).getCreateTime().getTime() + onceDelayTime * 1000) > traditionLive.getCurrentEndTime()) {
+                allDelayTime = allDelayTime - onceDelayTime;
+                traditionLive.setCurrentEndTime(traditionLive.getCurrentEndTime() + onceDelayTime * 1000);
             }
             traditionLive.setRemainingAllDelayTime(allDelayTime > 0 ? allDelayTime : 0);
         }

+ 1 - 2
lot/src/main/resources/mapper/LotMapper.xml

@@ -92,8 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 and status ='Sold'
             </if>
             <if test="lot.status==4">
-<!-- 当前数据库utc时间 -->
-                and now()+ interval '9 hour'>end_time and status in ('Starting','Bidding')
+                and now()+ interval '1 hour'>end_time and status in ('Starting','Bidding')
             </if>
 
         </where>