Browse Source

移除全量锁,增加全量分页缓存

openHj 1 year ago
parent
commit
5761121702

+ 1 - 0
hx-customer/src/main/java/com/fjhx/customer/contants/XiaomanContant.java

@@ -29,4 +29,5 @@ public class XiaomanContant {
 
     /**小满redis缓存key**/
     public static final String TOKEN_KEY = "xiaoman_token_key";
+    public static final String ALL_CUSTOMER_PAGE_INDEX_KEY = "all_customer_page_index_key";
 }

+ 20 - 12
hx-customer/src/main/java/com/fjhx/customer/service/xiaoman/impl/XiaomanApiServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpUtil;
@@ -27,6 +28,7 @@ import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
 import com.fjhx.tenant.entity.dict.po.DictTenantData;
 import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.SecurityUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.data.redis.core.StringRedisTemplate;
@@ -49,24 +51,29 @@ public class XiaomanApiServiceImpl implements XiaomanApiService {
     XiaomanCustomerService xiaomanCustomerService;
     @Resource
     DictTenantDataService dictTenantDataService;
+    @Resource
+    RedisCache redisCache;
 
 //    @DSTransactional
     @Override
     @Async
     public void initAllList() {
-        boolean result = setNxWithExpiration(XiaomanContant.TASK_STATUS_KEY, XiaomanContant.TASK_STATUS_VALUE, XiaomanContant.DELAY_DELETE_KEY_TIME);
-        if (!result) {
-            String mes = stringRedisTemplate.opsForValue().get(XiaomanContant.TASK_STATUS_DESC_KEY);
-            throw new RuntimeException(StrUtil.isBlank(mes)? "全量更新正在进行中" : mes);
-        }
-        stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新正在进行中");
+//        boolean result = setNxWithExpiration(XiaomanContant.TASK_STATUS_KEY, XiaomanContant.TASK_STATUS_VALUE, XiaomanContant.DELAY_DELETE_KEY_TIME);
+//        if (!result) {
+//            String mes = stringRedisTemplate.opsForValue().get(XiaomanContant.TASK_STATUS_DESC_KEY);
+//            throw new RuntimeException(StrUtil.isBlank(mes)? "全量更新正在进行中" : mes);
+//        }
+//        stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新正在进行中");
         try {
             getSelectorData();
 
 
             List<XiaomanCustomerVo> list = xiaomanCustomerService.getList(new XiaomanCustomerSelectDto());
             Set<Long> collect = list.stream().map(XiaomanCustomerVo::getCompanyId).collect(Collectors.toSet());
-            int pageIndex = 1;
+            int pageIndex = redisCache.getCacheObject(XiaomanContant.ALL_CUSTOMER_PAGE_INDEX_KEY);
+            if (!NumberUtil.isValidNumber(pageIndex)) {
+                pageIndex = 1;
+            }
             int totalPage;
             do {
                 XiaomanConfig config = xiaomanConfigService.getCache();
@@ -77,15 +84,16 @@ public class XiaomanApiServiceImpl implements XiaomanApiService {
                 int totalItem = customerListApiVo.getTotalItem();
                 totalPage = (totalItem / XiaomanContant.PAGE_SIZE) + (totalItem % XiaomanContant.PAGE_SIZE > 0 ? 1 : 0);
                 pageIndex++;
+                redisCache.setCacheObject(XiaomanContant.ALL_CUSTOMER_PAGE_INDEX_KEY, pageIndex);
             } while (pageIndex <= totalPage);
         } catch (Exception e) {
             e.printStackTrace();
-            stringRedisTemplate.delete(XiaomanContant.TASK_STATUS_KEY);
-            stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新出现异常,已停止");
-            return;
+//            stringRedisTemplate.delete(XiaomanContant.TASK_STATUS_KEY);
+//            stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新出现异常,已停止");
+//            return;
         }
-        stringRedisTemplate.delete(XiaomanContant.TASK_STATUS_KEY);
-        stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新完成,完成时间:" + DateUtil.now());
+//        stringRedisTemplate.delete(XiaomanContant.TASK_STATUS_KEY);
+//        stringRedisTemplate.opsForValue().set(XiaomanContant.TASK_STATUS_DESC_KEY, "全量更新完成,完成时间:" + DateUtil.now());
     }
 
     /**