tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/service/AppHealthPopularizationService.java
@@ -6,6 +6,7 @@ import com.tcm.training.admin.live.entity.HealthPopularization; import com.tcm.training.admin.live.mapper.HealthPopularizationMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Collections; @@ -58,10 +59,14 @@ } /** * 获取 APP 健康科普详情页数据。 * 获取 APP 健康科普详情页数据,并在每次访问时累加点击量。 */ @Transactional public AppHealthPopularizationDetailVO detail(Long popularizationId) { HealthPopularization item = requireEnabledItem(popularizationId); // 参考项目介绍,APP 进入详情后累加点击量并回写。 item.setClickCount(defaultNumber(item.getClickCount()) + 1); healthPopularizationMapper.updateById(item); AppHealthPopularizationDetailVO detailVO = new AppHealthPopularizationDetailVO(); detailVO.setId(item.getId()); detailVO.setTitle(trimToEmpty(item.getTitle())); @@ -72,6 +77,7 @@ detailVO.setVideoUrl(trimToEmpty(item.getVideoUrl())); detailVO.setVideoFileName(trimToEmpty(item.getVideoFileName())); detailVO.setVideoDescription(trimToEmpty(item.getVideoDescription())); detailVO.setClickCount(defaultNumber(item.getClickCount())); return detailVO; } tcm-training-admin-backend/src/main/java/com/tcm/training/admin/app/popularization/vo/AppHealthPopularizationDetailVO.java
@@ -27,4 +27,6 @@ private String videoFileName; private String videoDescription; private Integer clickCount; } traditionalApp/pages/articleDetail/articleDetail.vue
@@ -100,7 +100,8 @@ const contentNodes = computed(() => buildRichTextNodes(detail.value.content, '暂无详情内容')) /** * 初始化导航栏所需的状态栏高度。 * 初始化导航栏所需的状态栏高度;详情加载已在 onLoad 中完成, * 此处仅在 onLoad 未取到主键时做一次兜底,避免详情接口被请求两次。 */ onMounted(() => { uni.getSystemInfo({ @@ -108,12 +109,15 @@ statusBarHeight.value = res.statusBarHeight || 0 } }) if (popularizationId.value) { return } setTimeout(() => { const pageOptions = getCurrentPageOptions() if (!popularizationId.value) { popularizationId.value = normalizeRouteParam(pageOptions?.id) popularizationId.value = normalizeRouteParam(pageOptions?.id) if (popularizationId.value) { loadDetail() } loadDetail() }, 0) })