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

例外设置增加apollo配置支持提前多天发送

xueyiming 3 недель назад
Родитель
Сommit
f2bbbba0dd

+ 25 - 1
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/service/local/impl/AccountServiceImpl.java

@@ -1,5 +1,7 @@
 package com.tzld.piaoquan.longarticle.service.local.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.piaoquan.longarticle.dao.mapper.longarticle.AccountSpecialSettingsMapper;
 import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettings;
 import com.tzld.piaoquan.longarticle.model.po.longarticle.AccountSpecialSettingsExample;
@@ -9,7 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class AccountServiceImpl implements AccountService {
@@ -17,6 +22,9 @@ public class AccountServiceImpl implements AccountService {
     @Autowired
     private AccountSpecialSettingsMapper accountSpecialSettingsMapper;
 
+    @ApolloJsonValue("${specialBeforeDays:{}}")
+    private Map<String, Integer> specialBeforeDaysMap;
+
     @Override
     public List<AccountSpecialSettings> getAccountSpecialSettings() {
         String dateString = DateUtil.getThatDayDateString();
@@ -31,7 +39,23 @@ public class AccountServiceImpl implements AccountService {
         AccountSpecialSettingsExample example = new AccountSpecialSettingsExample();
         example.createCriteria().andEffectiveDateEqualTo(dateString).andIsDeleteEqualTo(0)
                 .andOpenStatusEqualTo(1);
-        return accountSpecialSettingsMapper.selectByExample(example);
+        List<AccountSpecialSettings> accountSpecialSettings = accountSpecialSettingsMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(accountSpecialSettings)) {
+            accountSpecialSettings = new ArrayList<>();
+        }
+        accountSpecialSettings = accountSpecialSettings.stream().filter(f -> specialBeforeDaysMap.containsKey(f.getSpecialSettingId())).collect(Collectors.toList());
+        for (Map.Entry<String, Integer> entry : specialBeforeDaysMap.entrySet()) {
+            dateString = DateUtil.getAfterDaysDateString(entry.getValue());
+            AccountSpecialSettingsExample accountSpecialSettingsExample = new AccountSpecialSettingsExample();
+            accountSpecialSettingsExample.createCriteria().andEffectiveDateEqualTo(dateString).andIsDeleteEqualTo(0)
+                    .andOpenStatusEqualTo(1).andSpecialSettingIdEqualTo(entry.getKey());
+            List<AccountSpecialSettings> accountSpecialSettingsList = accountSpecialSettingsMapper.selectByExample(accountSpecialSettingsExample);
+            if (!CollectionUtils.isEmpty(accountSpecialSettingsList)) {
+                accountSpecialSettings.addAll(accountSpecialSettingsList);
+            }
+
+        }
+        return accountSpecialSettings;
     }
 
     public void saveOrUpdateAccountSpecialSettings(AccountSpecialSettings accountSpecialSettings) {

+ 6 - 0
long-article-server/src/main/java/com/tzld/piaoquan/longarticle/utils/DateUtil.java

@@ -40,6 +40,12 @@ public class DateUtil {
         return dateFormat.format(tomorrow);
     }
 
+    public static String getAfterDaysDateString(int days) {
+        DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate afterLocalDate = LocalDate.now().minusDays(-days);
+        return dateFormat.format(afterLocalDate);
+    }
+
     public static String getBeforeDayDateString(String format) {
         DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern(format);
         LocalDate today = LocalDate.now();