Quellcode durchsuchen

fix 课程分类及资源

ct vor 1 Woche
Ursprung
Commit
38aba33bfe

+ 50 - 54
fs-admin-saas/src/main/java/com/fs/course/controller/FsUserCourseCategoryController.java

@@ -3,6 +3,7 @@ package com.fs.course.controller;
 import java.util.List;
 import java.util.List;
 
 
 import com.fs.common.core.domain.R;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.ServletUtils;
 import com.fs.course.dto.FsCourseCategoryImportDTO;
 import com.fs.course.dto.FsCourseCategoryImportDTO;
 import com.fs.framework.web.service.TokenService;
 import com.fs.framework.web.service.TokenService;
@@ -61,16 +62,15 @@ public class FsUserCourseCategoryController extends BaseController
     @GetMapping("/list")
     @GetMapping("/list")
     public AjaxResult list(FsUserCourseCategory fsUserCourseCategory)
     public AjaxResult list(FsUserCourseCategory fsUserCourseCategory)
     {
     {
-//        com.fs.framework.security.LoginUser loginUser = (com.fs.framework.security.LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        Long userId = loginUser.getCompanyUser().getUserId();
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-//        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
-//            fsUserCourseCategory.setUserId(userId);
-//        }
-//        List<FsUserCourseCategory> list = fsUserCourseCategoryService.selectFsUserCourseCategoryList(fsUserCourseCategory);
-//        return AjaxResult.success(list);
-        throw new RuntimeException("未实现");
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long userId = loginUser.getUserId();
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
+            fsUserCourseCategory.setUserId(userId);
+        }
+        List<FsUserCourseCategory> list = fsUserCourseCategoryService.selectFsUserCourseCategoryList(fsUserCourseCategory);
+        return AjaxResult.success(list);
     }
     }
 
 
     /**
     /**
@@ -81,17 +81,16 @@ public class FsUserCourseCategoryController extends BaseController
     @GetMapping("/export")
     @GetMapping("/export")
     public AjaxResult export(FsUserCourseCategory fsUserCourseCategory)
     public AjaxResult export(FsUserCourseCategory fsUserCourseCategory)
     {
     {
-//        com.fs.framework.security.LoginUser loginUser = (com.fs.framework.security.LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        Long userId = loginUser.getCompanyUser().getUserId();
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-//        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
-//            fsUserCourseCategory.setUserId(userId);
-//        }
-//        List<FsUserCourseCategory> list = fsUserCourseCategoryService.selectFsUserCourseCategoryList(fsUserCourseCategory);
-//        ExcelUtil<FsUserCourseCategory> util = new ExcelUtil<FsUserCourseCategory>(FsUserCourseCategory.class);
-//        return util.exportExcel(list, "课堂分类数据");
-        throw new RuntimeException("未实现");
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long userId = loginUser.getUserId();
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
+            fsUserCourseCategory.setUserId(userId);
+        }
+        List<FsUserCourseCategory> list = fsUserCourseCategoryService.selectFsUserCourseCategoryList(fsUserCourseCategory);
+        ExcelUtil<FsUserCourseCategory> util = new ExcelUtil<FsUserCourseCategory>(FsUserCourseCategory.class);
+        return util.exportExcel(list, "课堂分类数据");
     }
     }
 
 
     /**
     /**
@@ -112,15 +111,14 @@ public class FsUserCourseCategoryController extends BaseController
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody FsUserCourseCategory fsUserCourseCategory)
     public AjaxResult add(@RequestBody FsUserCourseCategory fsUserCourseCategory)
     {
     {
-//        com.fs.framework.security.LoginUser loginUser = (com.fs.framework.security.LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        Long userId = loginUser.getCompanyUser().getUserId();
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-//        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
-//            fsUserCourseCategory.setUserId(userId);
-//        }
-//        return toAjax(fsUserCourseCategoryService.insertFsUserCourseCategory(fsUserCourseCategory));
-        throw new RuntimeException("未实现");
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long userId = loginUser.getUserId();
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
+            fsUserCourseCategory.setUserId(userId);
+        }
+        return toAjax(fsUserCourseCategoryService.insertFsUserCourseCategory(fsUserCourseCategory));
     }
     }
 
 
     /**
     /**
@@ -159,17 +157,16 @@ public class FsUserCourseCategoryController extends BaseController
     @GetMapping("/getCatePidList")
     @GetMapping("/getCatePidList")
     public R getCatePidList()
     public R getCatePidList()
     {
     {
-//        com.fs.framework.security.LoginUser loginUser = (com.fs.framework.security.LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        Long userId = loginUser.getCompanyUser().getUserId();
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-//        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
-//            List<OptionsVO> list = fsUserCourseCategoryService.selectFsUserCourseCategoryPidList(userId);
-//            return R.ok().put("data", list);
-//        }
-//        List<OptionsVO> list = fsUserCourseCategoryService.selectFsUserCourseCategoryPidList();
-//        return R.ok().put("data", list);
-        throw new RuntimeException("未实现");
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long userId = loginUser.getUserId();
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        if (ObjectUtil.isNotEmpty(config.getIsBound())&&config.getIsBound()){
+            List<OptionsVO> list = fsUserCourseCategoryService.selectFsUserCourseCategoryPidList(userId);
+            return R.ok().put("data", list);
+        }
+        List<OptionsVO> list = fsUserCourseCategoryService.selectFsUserCourseCategoryPidList();
+        return R.ok().put("data", list);
     }
     }
 
 
     //获取总分类下子分类
     //获取总分类下子分类
@@ -191,19 +188,18 @@ public class FsUserCourseCategoryController extends BaseController
     @PreAuthorize("@ss.hasPermi('course:userCourseCategory:importData')")
     @PreAuthorize("@ss.hasPermi('course:userCourseCategory:importData')")
     @PostMapping("/importData")
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file) throws Exception {
     public AjaxResult importData(MultipartFile file) throws Exception {
-//        ExcelUtil<FsCourseCategoryImportDTO> util = new ExcelUtil<>(FsCourseCategoryImportDTO.class);
-//        List<FsCourseCategoryImportDTO> list = util.importExcel(file.getInputStream());
-//
-//        com.fs.framework.security.LoginUser loginUser = (com.fs.framework.security.LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        Long userId = loginUser.getCompanyUser().getUserId();
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
-//        if (ObjectUtil.isEmpty(config.getIsBound()) || !config.getIsBound()){
-//            userId = null;
-//        }
-//
-//        return AjaxResult.success(fsUserCourseCategoryService.importData(list, userId));
-        throw new RuntimeException("未实现");
+        ExcelUtil<FsCourseCategoryImportDTO> util = new ExcelUtil<>(FsCourseCategoryImportDTO.class);
+        List<FsCourseCategoryImportDTO> list = util.importExcel(file.getInputStream());
+
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        Long userId = loginUser.getUserId();
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = JSONUtil.toBean(json, CourseConfig.class);
+        if (ObjectUtil.isEmpty(config.getIsBound()) || !config.getIsBound()){
+            userId = null;
+        }
+
+        return AjaxResult.success(fsUserCourseCategoryService.importData(list, userId));
     }
     }
 
 
     @PreAuthorize("@ss.hasPermi('course:userCourseCategory:exportFail')")
     @PreAuthorize("@ss.hasPermi('course:userCourseCategory:exportFail')")

+ 88 - 90
fs-admin-saas/src/main/java/com/fs/course/controller/FsVideoResourceController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.fs.common.annotation.Log;
 import com.fs.common.annotation.Log;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.model.LoginUser;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.core.page.TableDataInfo;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.enums.BusinessType;
 import com.fs.common.utils.ServletUtils;
 import com.fs.common.utils.ServletUtils;
@@ -67,30 +68,29 @@ public class FsVideoResourceController extends BaseController {
                               @RequestParam(required = false) Integer typeSubId,
                               @RequestParam(required = false) Integer typeSubId,
                               @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                               @RequestParam(required = false, defaultValue = "1") Integer pageNum,
                               @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
                               @RequestParam(required = false, defaultValue = "10") Integer pageSize) {
-//        Map<String, Object> params = new HashMap<>();
-//        params.put("resourceName", resourceName);
-//        params.put("fileName", fileName);
-//        params.put("typeId", typeId);
-//        params.put("typeSubId", typeSubId);
-//        LoginUser loginUser = (LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = null;
-//        if (json != null && !json.isEmpty()) {
-//            try {
-//                config = JSONUtil.toBean(json, CourseConfig.class);
-//            } catch (Exception e) {
-//                log.warn("解析course.config失败: {}", e.getMessage());
-//            }
-//        }
-//        if (config != null && ObjectUtil.isNotEmpty(config.getIsBound()) && config.getIsBound()) {
-//            if (loginUser.getCompanyUser() != null) {
-//                params.put("userId", loginUser.getCompanyUser().getUserId());
-//            }
-//        }
-//        PageHelper.startPage(pageNum, pageSize);
-//        List<FsVideoResourceVO> list = fsVideoResourceService.selectVideoResourceListByMap(params);
-//        return getDataTable(list);
-        throw new RuntimeException("未实现");
+        Map<String, Object> params = new HashMap<>();
+        params.put("resourceName", resourceName);
+        params.put("fileName", fileName);
+        params.put("typeId", typeId);
+        params.put("typeSubId", typeSubId);
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = null;
+        if (json != null && !json.isEmpty()) {
+            try {
+                config = JSONUtil.toBean(json, CourseConfig.class);
+            } catch (Exception e) {
+                log.warn("解析course.config失败: {}", e.getMessage());
+            }
+        }
+        if (config != null && ObjectUtil.isNotEmpty(config.getIsBound()) && config.getIsBound()) {
+            if (loginUser.getUser() != null) {
+                params.put("userId", loginUser.getUser().getUserId());
+            }
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        List<FsVideoResourceVO> list = fsVideoResourceService.selectVideoResourceListByMap(params);
+        return getDataTable(list);
     }
     }
 
 
 
 
@@ -110,34 +110,33 @@ public class FsVideoResourceController extends BaseController {
     @Log(title = "视频素材库", businessType = BusinessType.INSERT)
     @Log(title = "视频素材库", businessType = BusinessType.INSERT)
     @PostMapping
     @PostMapping
     public AjaxResult add(@RequestBody FsVideoResource fsVideoResource) {
     public AjaxResult add(@RequestBody FsVideoResource fsVideoResource) {
-//        LoginUser loginUser = (LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = null;
-//        if (json != null && !json.isEmpty()) {
-//            try {
-//                config = JSONUtil.toBean(json, CourseConfig.class);
-//            } catch (Exception e) {
-//                log.warn("解析course.config失败: {}", e.getMessage());
-//            }
-//        }
-//        if (config != null && ObjectUtil.isNotEmpty(config.getIsBound()) && config.getIsBound()) {
-//            if (loginUser.getCompanyUser() != null) {
-//                fsVideoResource.setUserId(loginUser.getCompanyUser().getUserId());
-//            }
-//        }
-//
-//        fsVideoResource.setCreateTime(LocalDateTime.now());
-//        boolean save = fsVideoResourceService.save(fsVideoResource);
-//        if (save&&StringUtils.isNotEmpty(fsVideoResource.getHsyVid())){
-//            try {
-//                fsUserCourseVideoService.updateMediaPublishStatus(fsVideoResource.getHsyVid());
-//                log.info("更新视频发布状态成功,hsyVid: {}", fsVideoResource.getHsyVid());
-//            } catch (Exception e) {
-//                log.error("更新视频发布状态失败,hsyVid: {}, 错误: {}", fsVideoResource.getHsyVid(), e.getMessage());
-//            }
-//        }
-//        return AjaxResult.success();
-        throw new RuntimeException("未实现");
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = null;
+        if (json != null && !json.isEmpty()) {
+            try {
+                config = JSONUtil.toBean(json, CourseConfig.class);
+            } catch (Exception e) {
+                log.warn("解析course.config失败: {}", e.getMessage());
+            }
+        }
+        if (config != null && ObjectUtil.isNotEmpty(config.getIsBound()) && config.getIsBound()) {
+            if (loginUser.getUser() != null) {
+                fsVideoResource.setUserId(loginUser.getUser().getUserId());
+            }
+        }
+
+        fsVideoResource.setCreateTime(LocalDateTime.now());
+        boolean save = fsVideoResourceService.save(fsVideoResource);
+        if (save&&StringUtils.isNotEmpty(fsVideoResource.getHsyVid())){
+            try {
+                fsUserCourseVideoService.updateMediaPublishStatus(fsVideoResource.getHsyVid());
+                log.info("更新视频发布状态成功,hsyVid: {}", fsVideoResource.getHsyVid());
+            } catch (Exception e) {
+                log.error("更新视频发布状态失败,hsyVid: {}, 错误: {}", fsVideoResource.getHsyVid(), e.getMessage());
+            }
+        }
+        return AjaxResult.success();
     }
     }
 
 
     /**
     /**
@@ -212,43 +211,42 @@ public class FsVideoResourceController extends BaseController {
     @Log(title = "视频素材库", businessType = BusinessType.INSERT)
     @Log(title = "视频素材库", businessType = BusinessType.INSERT)
     @PostMapping("/batchAddVideoResource")
     @PostMapping("/batchAddVideoResource")
     public AjaxResult batchAddVideoResource(@RequestBody List<FsVideoResource> list) {
     public AjaxResult batchAddVideoResource(@RequestBody List<FsVideoResource> list) {
-//        if (Objects.isNull(list) || list.isEmpty()) {
-//            return AjaxResult.error("数据不能为空");
-//        }
-//        LoginUser loginUser = (LoginUser) tokenService.getLoginUser(ServletUtils.getRequest());
-//        String json = configService.selectConfigByKey("course.config");
-//        CourseConfig config = null;
-//        if (json != null && !json.isEmpty()) {
-//            try {
-//                config = JSONUtil.toBean(json, CourseConfig.class);
-//            } catch (Exception e) {
-//                log.warn("解析course.config失败: {}", e.getMessage());
-//            }
-//        }
-//        final CourseConfig finalConfig = config;
-//        list.forEach(v -> {
-//            v.setCreateTime(LocalDateTime.now());
-//            if (finalConfig != null && ObjectUtil.isNotEmpty(finalConfig.getIsBound()) && finalConfig.getIsBound()) {
-//                if (loginUser.getCompanyUser() != null) {
-//                    v.setUserId(loginUser.getCompanyUser().getUserId());
-//                }
-//            }
-//        });
-//        boolean saveStatus = fsVideoResourceService.saveBatch(list);
-//        if (saveStatus) {
-//            list.forEach(fsVideoResource -> {
-//                // 检查hsyVid是否存在且不为空
-//                if (ObjectUtil.isNotEmpty(fsVideoResource.getHsyVid())) {
-//                    try {
-//                        fsUserCourseVideoService.updateMediaPublishStatus(fsVideoResource.getHsyVid());
-//                        log.info("更新视频发布状态成功,hsyVid: {}", fsVideoResource.getHsyVid());
-//                    } catch (Exception e) {
-//                        log.error("更新视频发布状态失败,hsyVid: {}, 错误: {}", fsVideoResource.getHsyVid(), e.getMessage());
-//                    }
-//                }
-//            });
-//        }
-//        return AjaxResult.success();
-        throw new RuntimeException("未实现");
+        if (Objects.isNull(list) || list.isEmpty()) {
+            return AjaxResult.error("数据不能为空");
+        }
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        String json = configService.selectConfigByKey("course.config");
+        CourseConfig config = null;
+        if (json != null && !json.isEmpty()) {
+            try {
+                config = JSONUtil.toBean(json, CourseConfig.class);
+            } catch (Exception e) {
+                log.warn("解析course.config失败: {}", e.getMessage());
+            }
+        }
+        final CourseConfig finalConfig = config;
+        list.forEach(v -> {
+            v.setCreateTime(LocalDateTime.now());
+            if (finalConfig != null && ObjectUtil.isNotEmpty(finalConfig.getIsBound()) && finalConfig.getIsBound()) {
+                if (loginUser.getUser() != null) {
+                    v.setUserId(loginUser.getUser().getUserId());
+                }
+            }
+        });
+        boolean saveStatus = fsVideoResourceService.saveBatch(list);
+        if (saveStatus) {
+            list.forEach(fsVideoResource -> {
+                // 检查hsyVid是否存在且不为空
+                if (ObjectUtil.isNotEmpty(fsVideoResource.getHsyVid())) {
+                    try {
+                        fsUserCourseVideoService.updateMediaPublishStatus(fsVideoResource.getHsyVid());
+                        log.info("更新视频发布状态成功,hsyVid: {}", fsVideoResource.getHsyVid());
+                    } catch (Exception e) {
+                        log.error("更新视频发布状态失败,hsyVid: {}, 错误: {}", fsVideoResource.getHsyVid(), e.getMessage());
+                    }
+                }
+            });
+        }
+        return AjaxResult.success();
     }
     }
 }
 }

+ 28 - 10
fs-service/src/main/java/com/fs/config/tencent/TencentProperties.java

@@ -2,9 +2,13 @@ package com.fs.config.tencent;
 
 
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import com.fs.common.core.redis.RedisCache;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.common.utils.StringUtils;
 import com.fs.config.saas.ProjectConfig;
 import com.fs.config.saas.ProjectConfig;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.domain.SysConfig;
 import com.fs.system.mapper.SysConfigMapper;
 import com.fs.system.mapper.SysConfigMapper;
+import com.fs.system.service.ISysConfigService;
+import com.fs.system.vo.ObsConfigVO;
+import com.hc.openapi.tool.fastjson.JSON;
 import lombok.Data;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +26,9 @@ public class TencentProperties {
     @Autowired
     @Autowired
     private RedisCache redisCache;
     private RedisCache redisCache;
 
 
+    @Autowired
+    private ISysConfigService configService;
+
     // Redis缓存Key
     // Redis缓存Key
     private static final String PROJECT_CONFIG_CACHE_KEY = "project:config:data";
     private static final String PROJECT_CONFIG_CACHE_KEY = "project:config:data";
     // 缓存时间:30分钟
     // 缓存时间:30分钟
@@ -39,19 +46,30 @@ public class TencentProperties {
                 log.debug("从Redis缓存中获取ProjectConfig配置");
                 log.debug("从Redis缓存中获取ProjectConfig配置");
                 return cachedConfig.getTencentCloudConfig();
                 return cachedConfig.getTencentCloudConfig();
             }
             }
-
-            ProjectConfig projectConfig = ProjectConfig.getFromDB(sysConfigMapper);
-            if (projectConfig == null) {
-                log.warn("未找到腾讯云配置");
-                return null;
+            ProjectConfig projectConfig = new ProjectConfig();
+            ProjectConfig.TencentCloudConfig tencentConfig = null;
+            SysConfig sysConfig = configService.selectConfigByConfigKey("his.adminUi.config");
+            if (sysConfig != null){
+                String configValue = sysConfig.getConfigValue();
+                if (StringUtils.isNotBlank(configValue)){
+                    ObsConfigVO obsConfigVO = JSON.parseObject(configValue, ObsConfigVO.class);
+                    if (obsConfigVO != null) {
+                        ObsConfigVO.CloudStorageConfig tencentCloudConfig = obsConfigVO.getTencentCloudConfig();
+                        if (tencentCloudConfig != null) {
+                            tencentConfig = new ProjectConfig.TencentCloudConfig();
+                            tencentConfig.setAppId(tencentCloudConfig.getAppId());
+                            tencentConfig.setSecretId(tencentCloudConfig.getSecretId());
+                            tencentConfig.setSecretKey(tencentCloudConfig.getSecretKey());
+                            tencentConfig.setRegion(tencentCloudConfig.getRegion());
+                            tencentConfig.setBucket(tencentCloudConfig.getBucket());
+                            tencentConfig.setProxy(tencentCloudConfig.getProxy());
+                            projectConfig.setTencentCloudConfig(tencentConfig);
+                        }
+                    }
+                }
             }
             }
 
 
-            if (projectConfig == null) {
-                log.warn("配置解析失败");
-                return null;
-            }
 
 
-            ProjectConfig.TencentCloudConfig tencentConfig = projectConfig.getTencentCloudConfig();
             if (tencentConfig == null) {
             if (tencentConfig == null) {
                 log.warn("配置中未找到tencentCloudConfig节点");
                 log.warn("配置中未找到tencentCloudConfig节点");
                 return null;
                 return null;

+ 25 - 1
fs-service/src/main/java/com/fs/course/service/HsyAssumeRoleService.java

@@ -1,6 +1,10 @@
 package com.fs.course.service;
 package com.fs.course.service;
 
 
+import com.fs.common.utils.StringUtils;
 import com.fs.config.cloud.CloudHostProper;
 import com.fs.config.cloud.CloudHostProper;
+import com.fs.system.domain.SysConfig;
+import com.fs.system.service.ISysConfigService;
+import com.fs.system.vo.ObsConfigVO;
 import com.hc.openapi.tool.fastjson.JSON;
 import com.hc.openapi.tool.fastjson.JSON;
 import com.volcengine.model.request.AssumeRoleRequest;
 import com.volcengine.model.request.AssumeRoleRequest;
 import com.volcengine.model.response.AssumeRoleResponse;
 import com.volcengine.model.response.AssumeRoleResponse;
@@ -14,6 +18,8 @@ import org.springframework.stereotype.Service;
 public class HsyAssumeRoleService {
 public class HsyAssumeRoleService {
     @Autowired
     @Autowired
     private CloudHostProper cloudHostProper;
     private CloudHostProper cloudHostProper;
+    @Autowired
+    private ISysConfigService configService;
 
 
     @Value("${hsy.role_access_key:''}")
     @Value("${hsy.role_access_key:''}")
     private String role_access_key;
     private String role_access_key;
@@ -23,6 +29,9 @@ public class HsyAssumeRoleService {
 
 
     @Value("${hsy.role_trn:''}")
     @Value("${hsy.role_trn:''}")
     private String role_trn;
     private String role_trn;
+
+    private  static String roleSessionName;
+
     public AssumeRoleResponse getRoleResponse() throws Exception {
     public AssumeRoleResponse getRoleResponse() throws Exception {
         ISTSService stsService = STSServiceImpl.getInstance();
         ISTSService stsService = STSServiceImpl.getInstance();
 
 
@@ -33,7 +42,21 @@ public class HsyAssumeRoleService {
 //        stsService.setSecretKey("WXpjelpUYzFOakF5TUdObE5EZGtNR0ZsWXpKaU1tTmtZakk1WXpObE4yRQ==");
 //        stsService.setSecretKey("WXpjelpUYzFOakF5TUdObE5EZGtNR0ZsWXpKaU1tTmtZakk1WXpObE4yRQ==");
 
 
         AssumeRoleRequest request = new AssumeRoleRequest();
         AssumeRoleRequest request = new AssumeRoleRequest();
-        request.setRoleSessionName(cloudHostProper.getSpaceName());
+//        request.setRoleSessionName(cloudHostProper.getSpaceName());
+        SysConfig sysConfig = configService.selectConfigByConfigKey("his.adminUi.config");
+        if (sysConfig != null){
+            String configValue = sysConfig.getConfigValue();
+            if (StringUtils.isNotBlank(configValue)){
+                ObsConfigVO obsConfigVO = JSON.parseObject(configValue, ObsConfigVO.class);
+                if (obsConfigVO != null){
+                    roleSessionName = obsConfigVO.getVolcanoVodSpace();
+                }
+            }
+        }
+        if (StringUtils.isBlank(roleSessionName)){
+            throw new RuntimeException("点播线路配置不完整");
+        }
+        request.setRoleSessionName(roleSessionName);
         request.setDurationSeconds(900);
         request.setDurationSeconds(900);
         request.setRoleTrn(role_trn);
         request.setRoleTrn(role_trn);
 
 
@@ -41,6 +64,7 @@ public class HsyAssumeRoleService {
         return resp;
         return resp;
     }
     }
 
 
+
     public static void main(String[] args) throws Exception {
     public static void main(String[] args) throws Exception {
         ISTSService stsService = STSServiceImpl.getInstance();
         ISTSService stsService = STSServiceImpl.getInstance();
 
 

+ 89 - 0
fs-service/src/main/java/com/fs/system/vo/ObsConfigVO.java

@@ -0,0 +1,89 @@
+package com.fs.system.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ObsConfigVO {
+
+    /** 腾讯云 COS 配置 */
+    @JsonProperty("tencent_cloud_config")
+    private CloudStorageConfig tencentCloudConfig;
+
+    /** 华为云 OBS 配置(配置键名沿用 tmp_secret_config) */
+    @JsonProperty("tmp_secret_config")
+    private CloudStorageConfig tmpSecretConfig;
+
+    private String videoLinePrimary;
+
+    private String videoLineSecondary;
+
+    private String livePath;
+
+    private String volcanoVideoDomain;
+
+    private String volcanoVodSpace;
+
+    private String liveWebSocketUrl;
+
+    private String courseDefaultType;
+
+    /** 兼容旧版平铺字段(加载后由前端迁移,后端读取时作 fallback) */
+    private String obsAccessKeyId;
+    private String obsSecretAccessKey;
+    private String obsServer;
+    private String obsBucket;
+    private String cosBucket;
+    private String cosRegion;
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    public static class CloudStorageConfig {
+        @JsonProperty("secret_id")
+        private String secretId;
+
+        @JsonProperty("secret_key")
+        private String secretKey;
+
+        private String bucket;
+
+        @JsonProperty("app_id")
+        private String appId;
+
+        private String region;
+
+        private String proxy;
+    }
+
+    public CloudStorageConfig resolveTencentCloudConfig() {
+        if (tencentCloudConfig != null && hasCloudConfig(tencentCloudConfig)) {
+            return tencentCloudConfig;
+        }
+        CloudStorageConfig fallback = new CloudStorageConfig();
+        fallback.setBucket(cosBucket);
+        fallback.setRegion(cosRegion);
+        return fallback;
+    }
+
+    public CloudStorageConfig resolveHuaweiCloudConfig() {
+        if (tmpSecretConfig != null && hasCloudConfig(tmpSecretConfig)) {
+            return tmpSecretConfig;
+        }
+        CloudStorageConfig fallback = new CloudStorageConfig();
+        fallback.setSecretId(obsAccessKeyId);
+        fallback.setSecretKey(obsSecretAccessKey);
+        fallback.setBucket(obsBucket);
+        fallback.setProxy(obsServer);
+        return fallback;
+    }
+
+    private static boolean hasCloudConfig(CloudStorageConfig cfg) {
+        return cfg.getSecretId() != null || cfg.getSecretKey() != null
+                || cfg.getBucket() != null || cfg.getRegion() != null;
+    }
+}