From 47dea21304ee0d02d6b0a539d484ee358fab3eee Mon Sep 17 00:00:00 2001 From: liujiang <569804566@qq.com> Date: Sat, 20 Sep 2025 20:32:32 +0800 Subject: [PATCH] =?UTF-8?q?master=EF=BC=9A=E6=A1=A3=E5=8F=A3=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E9=87=8F=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruoyi/common/constant/CacheConstants.java | 5 +++- .../java/com/ruoyi/quartz/task/XktTask.java | 26 +++++++++++++++++++ .../main/java/com/ruoyi/xkt/domain/Store.java | 4 +++ .../xkt/service/impl/StoreServiceImpl.java | 4 +++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java index b7656ff5b..587c5b6c5 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java @@ -300,6 +300,9 @@ public class CacheConstants { * 充值单号缓存 */ public static final String RECHARGE_BILL_NO_CACHE = "recharge_bill_no_cache:"; - + /** + * 档口访问次数 + */ + public static final String STORE_VISIT_COUNT = "store_visit_count"; } diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/XktTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/XktTask.java index d1aaca5a7..47a99e430 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/XktTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/XktTask.java @@ -804,6 +804,32 @@ public class XktTask { } } + /** + * 凌晨2:05更新档口访问量 + */ + @Transactional + public void updateStoreVisitCount() { + // 档口访问量 + Map storeVisitMap = redisCache.getCacheMap(CacheConstants.STORE_VISIT_COUNT); + if (MapUtil.isEmpty(storeVisitMap)) { + return; + } + List storeList = this.storeMapper.selectList(new LambdaQueryWrapper() + .eq(Store::getDelFlag, Constants.UNDELETED)); + if (CollectionUtils.isEmpty(storeList)) { + return; + } + storeList.forEach(store -> { + Long viewCount = storeVisitMap.getOrDefault(store.getId().toString(), 0L); + Long existViewCount = ObjectUtils.defaultIfNull(store.getViewCount(), 0L); + store.setViewCount(existViewCount + viewCount); + // 清除当日缓存 + redisCache.deleteCacheMapValue(CacheConstants.STORE_VISIT_COUNT, store.getId().toString()); + }); + // 更新档口访问量 + this.storeMapper.updateById(storeList); + } + /** * 每晚22:00:10 更新广告位竞价状态 将biddingTempStatus赋值给biddingStatus diff --git a/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java b/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java index 228b87c82..7f8c0c753 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java +++ b/xkt/src/main/java/com/ruoyi/xkt/domain/Store.java @@ -144,5 +144,9 @@ public class Store extends XktBaseEntity { * 库存系统 1步橘 2天友 3发货宝 */ private Integer stockSys; + /** + * 档口浏览量 + */ + private Long viewCount; } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java index 52b5c919b..c0310c56d 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreServiceImpl.java @@ -217,6 +217,8 @@ public class StoreServiceImpl implements IStoreService { @Override @Transactional(readOnly = true) public StoreAppResDTO getAppInfo(Long storeId) { + // 档口访问次数+1 + redisCache.valueIncr(CacheConstants.STORE_VISIT_COUNT, storeId); Store store = Optional.ofNullable(this.storeMapper.selectOne(new LambdaQueryWrapper() .eq(Store::getId, storeId).eq(Store::getDelFlag, Constants.UNDELETED))) .orElseThrow(() -> new ServiceException("档口不存在!", HttpStatus.ERROR)); @@ -480,6 +482,8 @@ public class StoreServiceImpl implements IStoreService { @Override @Transactional(readOnly = true) public StoreSimpleResDTO getSimpleInfo(Long storeId) { + // 档口访问次数+1 + redisCache.valueIncr(CacheConstants.STORE_VISIT_COUNT, storeId); StoreSimpleResDTO simpleDTO = this.storeMapper.getSimpleInfo(storeId); // 获取档口LOGO if (ObjectUtils.isNotEmpty(simpleDTO.getStoreLogoId())) {