From 353bfcd3faee906d4897be77b39b6a6cb6e9eaa0 Mon Sep 17 00:00:00 2001 From: wangzhibiao Date: Fri, 9 Oct 2026 21:49:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=9B=86=E6=88=90=EF=BC=9A?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=AF=BE=E7=A8=8B=E8=B5=84=E6=BA=90=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E8=A1=A8=E6=9D=83=E5=A8=81=E5=AD=98=E5=82=A8=E4=B8=8E?= =?UTF-8?q?=E6=97=A7=E5=AD=97=E6=AE=B5=E5=85=BC=E5=AE=B9=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 11 ++++------- .../java/com/ruoyi/train/domain/TrainCourse.java | 15 +++++++++++++++ .../com/ruoyi/train/domain/vo/CourseDetailVO.java | 14 ++++++++++++++ .../service/impl/TrainCourseServiceImpl.java | 10 +++++++++- .../resources/mapper/train/TrainCourseMapper.xml | 6 +++++- ...12_pilot_20261010_course_resource_relation.sql | 8 +++++++- 6 files changed, 54 insertions(+), 10 deletions(-) diff --git a/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml b/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml index 00f3ea4a7..e0054237f 100644 --- a/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml +++ b/RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml @@ -94,6 +94,10 @@ train: identity: encryption-key: ${TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY:} hash-key: ${TRAIN_STUDENT_IDENTITY_HASH_KEY:} + mock: + device: + # 模拟设备打卡接口开关 (生产环境与公共配置必须默认关闭,仅允许在测试环境显式开启) + enabled: ${TRAIN_MOCK_DEVICE_ENABLED:false} # token配置 token: @@ -142,10 +146,3 @@ xss: # 匹配链接 urlPatterns: /system/*,/monitor/*,/tool/* -# 培训业务配置 -train: - mock: - device: - # 模拟设备打卡接口开关 (生产环境与公共配置必须默认关闭,仅允许在测试环境显式开启) - enabled: false - diff --git a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/TrainCourse.java b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/TrainCourse.java index e2d379227..d2f09f3ce 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/TrainCourse.java +++ b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/TrainCourse.java @@ -43,6 +43,10 @@ public class TrainCourse extends BaseEntity @Excel(name = "课程内容") private String courseContent; + /** 关联教学资源ID (历史兼容字段,新系统权威关联存储为 train_course_resource) */ + @Excel(name = "课程资源ID") + private String resourceId; + /** 课程状态 (1:正常, 0:停用) */ @Excel(name = "课程状态", readConverterExp = "1=正常,0=停用") private Integer status; @@ -180,6 +184,16 @@ public class TrainCourse extends BaseEntity return courseContent; } + public void setResourceId(String resourceId) + { + this.resourceId = resourceId; + } + + public String getResourceId() + { + return resourceId; + } + public void setStatus(Integer status) { this.status = status; @@ -210,6 +224,7 @@ public class TrainCourse extends BaseEntity .append("cDuration", getcDuration()) .append("teachingObjective", getTeachingObjective()) .append("courseContent", getCourseContent()) + .append("resourceId", getResourceId()) .append("status", getStatus()) .append("delFlag", getDelFlag()) .append("createBy", getCreateBy()) diff --git a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/CourseDetailVO.java b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/CourseDetailVO.java index 2c5029f8e..d3caec1c0 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/CourseDetailVO.java +++ b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/vo/CourseDetailVO.java @@ -60,6 +60,9 @@ public class CourseDetailVO implements Serializable @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + /** 关联教学资源ID (兼容旧接口,优先使用关系表首个资源ID) */ + private String resourceId; + /** * 已关联的教学资源列表 */ @@ -89,6 +92,7 @@ public class CourseDetailVO implements Serializable vo.setCreateTime(course.getCreateTime()); vo.setUpdateBy(course.getUpdateBy()); vo.setUpdateTime(course.getUpdateTime()); + vo.setResourceId(course.getResourceId()); return vo; } @@ -282,6 +286,16 @@ public class CourseDetailVO implements Serializable this.updateTime = updateTime; } + public String getResourceId() + { + return resourceId; + } + + public void setResourceId(String resourceId) + { + this.resourceId = resourceId; + } + public List getResources() { return resources; diff --git a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/impl/TrainCourseServiceImpl.java b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/impl/TrainCourseServiceImpl.java index a29b83473..c5f6ac631 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/impl/TrainCourseServiceImpl.java +++ b/RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/impl/TrainCourseServiceImpl.java @@ -12,6 +12,7 @@ import com.ruoyi.train.mapper.TrainCourseMapper; import com.ruoyi.train.mapper.TrainCourseResourceMapper; import com.ruoyi.train.mapper.TrainPlanCourseMapper; import com.ruoyi.train.domain.TrainCourse; +import com.ruoyi.train.domain.TrainResource; import com.ruoyi.train.domain.vo.CourseDetailVO; import com.ruoyi.train.service.ITrainCourseService; @@ -46,7 +47,14 @@ public class TrainCourseServiceImpl implements ITrainCourseService CourseDetailVO detail = CourseDetailVO.from(course); if (detail != null) { - detail.setResources(trainCourseResourceMapper.selectResourcesByCourseId(cId)); + List resources = trainCourseResourceMapper.selectResourcesByCourseId(cId); + detail.setResources(resources); + // 规范权威读取:优先以 train_course_resource 规范关联表首个资源派生兼容 resourceId; + // 若关系表暂无关联但实体存在历史 resourceId,则保留历史 resourceId + if (resources != null && !resources.isEmpty()) + { + detail.setResourceId(resources.get(0).getResourceId()); + } } return detail; } diff --git a/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainCourseMapper.xml b/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainCourseMapper.xml index 5a0db4dce..51d6b1f5a 100644 --- a/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainCourseMapper.xml +++ b/RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/TrainCourseMapper.xml @@ -12,6 +12,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -22,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select c_id, c_code, c_name, c_type, c_duration, teaching_objective, course_content, status, del_flag, create_by, create_time, update_by, update_time, remark from train_course + select c_id, c_code, c_name, c_type, c_duration, teaching_objective, course_content, resource_id, status, del_flag, create_by, create_time, update_by, update_time, remark from train_course