|
|
@@ -15,6 +15,7 @@ import com.etotem.cfc.mapper.HealthReportMapper;
|
|
|
import com.etotem.cfc.mapper.HealthReportPermissionMapper;
|
|
|
import com.etotem.cfc.mapper.UserMapper;
|
|
|
import com.etotem.cfc.mapper.FoodMapper;
|
|
|
+import com.etotem.cfc.mapper.ReportBlockMapper;
|
|
|
import com.etotem.cfc.mapper.ReportFoodSuitabilityMapper;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -85,6 +86,9 @@ public class HealthReportService {
|
|
|
@Resource
|
|
|
private ReportFoodSuitabilityMapper reportFoodSuitabilityMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private ReportBlockMapper reportBlockMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private FoodMapper foodMapper;
|
|
|
|
|
|
@@ -1464,4 +1468,40 @@ public class HealthReportService {
|
|
|
log.warn("保存AI解读失败: {}", e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除健康报告(逻辑删除: 设置 status=deleted,同时清理关联数据)
|
|
|
+ */
|
|
|
+ @Transactional
|
|
|
+ public void deleteReport(Long reportId) {
|
|
|
+ // 清理关联指标
|
|
|
+ healthIndicatorMapper.delete(new LambdaQueryWrapper<HealthIndicator>()
|
|
|
+ .eq(HealthIndicator::getReportId, reportId));
|
|
|
+ // 清理菌群数据
|
|
|
+ healthGutFloraMapper.delete(new LambdaQueryWrapper<HealthGutFlora>()
|
|
|
+ .eq(HealthGutFlora::getReportId, reportId));
|
|
|
+ // 清理疾病风险评估
|
|
|
+ healthDiseaseRiskMapper.delete(new LambdaQueryWrapper<HealthDiseaseRisk>()
|
|
|
+ .eq(HealthDiseaseRisk::getReportId, reportId));
|
|
|
+ // 清理查看权限
|
|
|
+ healthReportPermissionMapper.delete(new LambdaQueryWrapper<HealthReportPermission>()
|
|
|
+ .eq(HealthReportPermission::getReportId, reportId));
|
|
|
+ // 清理编辑日志
|
|
|
+ healthReportEditLogMapper.delete(new LambdaQueryWrapper<HealthReportEditLog>()
|
|
|
+ .eq(HealthReportEditLog::getReportId, reportId));
|
|
|
+ // 清理展示块
|
|
|
+ reportBlockMapper.delete(new LambdaQueryWrapper<ReportBlock>()
|
|
|
+ .eq(ReportBlock::getReportId, reportId));
|
|
|
+ // 清理食材适合性
|
|
|
+ reportFoodSuitabilityMapper.delete(new LambdaQueryWrapper<ReportFoodSuitability>()
|
|
|
+ .eq(ReportFoodSuitability::getReportId, reportId));
|
|
|
+ // 逻辑删除报告本身
|
|
|
+ HealthReport report = healthReportMapper.selectById(reportId);
|
|
|
+ if (report != null) {
|
|
|
+ report.setStatus("deleted");
|
|
|
+ report.setUpdatedAt(new Date());
|
|
|
+ healthReportMapper.updateById(report);
|
|
|
+ log.info("健康报告已删除: id={}", reportId);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|