Просмотр исходного кода

1.课程学习进度bug修复,修复没有章节没有课程导致数据错误
2.加入资源只查数据的类型检索
3.修复课程收藏,以开课为基础,开课有的情况才能在收藏中
4.修复组织人员列表查回数据因部署数据没有对应组织报错,并修改组织接口

honorfire 6 месяцев назад
Родитель
Сommit
515c980cbc
11 измененных файлов с 133 добавлено и 71 удалено
  1. 7 2
      snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/TreeUtil.java
  2. 39 32
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeController.java
  3. 54 16
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceRecordController.java
  4. 1 1
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CollegeMapper.xml
  5. 6 0
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseAuditRecordMapper.xml
  6. 15 11
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseInfoMapper.xml
  7. 6 4
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseStudentCollectMapper.xml
  8. 2 2
      snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/PdfUtils.java
  9. 1 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/controller/SysOrgController.java
  10. 1 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/mapper/mapping/SysOrgMapper.xml
  11. 1 1
      snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml

+ 7 - 2
snowy-base/snowy-common/src/main/java/vip/xiaonuo/common/util/TreeUtil.java

@@ -1,5 +1,7 @@
 package vip.xiaonuo.common.util;
 
+import cn.hutool.core.util.ObjectUtil;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -37,8 +39,11 @@ public class TreeUtil {
     private static List<Map<String,Object>> getChildTree(List<Map<String,Object>> list,String id){
         List<Map<String,Object>> childTree = new ArrayList<>();
         for (Map map:list) {
-            if(map.get("parentId").equals(id)){
-            childTree.add(map);
+            if(ObjectUtil.isNotEmpty(map.get("parentId")))
+            {
+                if(map.get("parentId").equals(id)){
+                    childTree.add(map);
+                }
             }
         }
         return childTree;

+ 39 - 32
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CollegeController.java

@@ -189,40 +189,47 @@ public class CollegeController {
     public CommonResult<List<Map<String,Object>>> orgUserTreeSelector(HttpServletRequest req) {
         Map param=new HashMap();
         Map result = new HashMap();
-        String collegeParentId = "0";
-        if(StringUtils.isNotEmpty(req.getParameter("collegeParentId")))collegeParentId=req.getParameter("collegeParentId");
-        //用于装当前单位的map
-        Map nowData = new HashMap();
-        List<Map<String, Object>> tree = new ArrayList<>();
-        //最终用来化成树的集合
-        List<Map<String,Object>> dataList=new ArrayList<>();
-        //查询该父级id的子级院系
-        List<Map<String,Object>> orgList=collegeService.getOrgUserChildList(param);
-        List<Map<String,Object>> userList=sysUserService.getOrgUserChildList(param);
-        dataList.addAll(orgList);
-        dataList.addAll(userList);
-        for(Map one:dataList)
-        {
-            if(one.get("id").equals(collegeParentId))
+        List<Map<String,Object>> resultList= null;
+        try {
+            String collegeParentId = "0";
+            if(StringUtils.isNotEmpty(req.getParameter("collegeParentId")))collegeParentId=req.getParameter("collegeParentId");
+            //用于装当前单位的map
+            Map nowData = new HashMap();
+            List<Map<String, Object>> tree = new ArrayList<>();
+            //最终用来化成树的集合
+            List<Map<String,Object>> dataList=new ArrayList<>();
+            //查询该父级id的子级院系
+            List<Map<String,Object>> orgList=collegeService.getOrgUserChildList(param);
+            List<Map<String,Object>> userList=sysUserService.getOrgUserChildList(param);
+            System.out.println("----------------------------------------------------------------组织人员树数据打印开始");
+            dataList.addAll(orgList);
+            dataList.addAll(userList);
+            for(Map one:dataList)
             {
-                nowData=one;
-                break;
+                if(one.get("id").equals(collegeParentId))
+                {
+                    nowData=one;
+                    break;
+                }
+                System.out.println("----------------------------------------------------------------组织人员树数据打印逐条数据"+one);
             }
-
-        }
-        tree = TreeUtil.getThree(dataList,collegeParentId);
-
-        //如果传进来的id不为空,则把传进来的id也作为一条数据
-        List<Map<String,Object>> resultList=new ArrayList<>();
-        if(nowData.get("id")!=null)
-        {
-            nowData.put("children",tree);
-            resultList.add(nowData);
-            result.put("result",resultList);
-        }
-        else
-        {
-            resultList.addAll(tree);
+            tree = TreeUtil.getThree(dataList,collegeParentId);
+            System.out.println("----------------------------------------------------------------组织人员树数据打印树数据"+tree);
+            System.out.println("----------------------------------------------------------------组织人员树数据打印结束");
+            //如果传进来的id不为空,则把传进来的id也作为一条数据
+            resultList = new ArrayList<>();
+            if(nowData.get("id")!=null)
+            {
+                nowData.put("children",tree);
+                resultList.add(nowData);
+                result.put("result",resultList);
+            }
+            else
+            {
+                resultList.addAll(tree);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
         }
         return CommonResult.data(resultList);
     }

+ 54 - 16
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/ResourceRecordController.java

@@ -109,6 +109,15 @@ public class ResourceRecordController {
     @GetMapping("/disk/courseauditrecord/courceDownList")
     public CommonResult<Page<Map<String,Object>>> courceDownList(CourseAuditRecordPageParam courseAuditRecordPageParam, HttpServletRequest req) {
         Map param =new HashMap();
+        //是否是视频资源,0否1是,默认为否
+        List<String> extendNameList = new ArrayList<>();
+        String isVedio="0";
+        if(StringUtils.isNotEmpty(req.getParameter("isVedio")))isVedio=req.getParameter("isVedio");
+        if("1".equals(isVedio)){
+            String extendName="wmv,avi,flv,mpeg,mpg,rmvb,mov,mkv";
+            extendNameList = Arrays.asList(extendName.split(","));
+            param.put("extendNameList", extendNameList);
+        }
         //文件名称
         param.put("fileName", req.getParameter("fileName"));
         Page<Map<String,Object>> list=courseAuditRecordService.courceDownList(param);
@@ -246,10 +255,10 @@ public class ResourceRecordController {
             courseAuditRecord.setUserfileId(userFileId);
             if("0".equals(eduIdentity))
             {
-                courseAuditRecord.setVerifyStatus("0");
+                courseAuditRecord.setVerifyStatus("2");
             }else
             {
-                courseAuditRecord.setVerifyStatus("2");
+                courseAuditRecord.setVerifyStatus("0");
             }
             courseAuditRecord.setUploadBatchNum(uploadBatchNum);
             if(StringUtils.isNotEmpty(courseAuditRecordAddParam.getKeywordValue()))courseAuditRecord.setKeywordPinyin(StringUtils.deleteWhitespace(pinyinUtils.toPinyin(courseAuditRecordAddParam.getKeywordValue(),false)));
@@ -260,7 +269,8 @@ public class ResourceRecordController {
             if("1".equals(courseAuditRecordAddParam.getAuthType()))
             {
                 String userRelateIdsStr=courseAuditRecordAddParam.getUserRelateIds();
-                String[] userRelateIdList = userRelateIdsStr.split(",");
+                String[] userRelateIdArray = userRelateIdsStr.split(",");
+                List<String> userRelateIdList=Arrays.asList(userRelateIdArray);
                 List<ResourceRecordUserRelate> resourceRecordUserRelateList = new ArrayList<>();
                 for(String userRelateId:userRelateIdList)
                 {
@@ -269,6 +279,16 @@ public class ResourceRecordController {
                     resourceRecordUserRelate.setResourceRecord(courseAuditRecord.getId());
                     resourceRecordUserRelateList.add(resourceRecordUserRelate);
                 }
+                //权限中如果没勾选自己,需要自动加入自己
+                String selfId=StpLoginUserUtil.getLoginUser().getId();
+                if(!userRelateIdList.contains(selfId))
+                {
+                    ResourceRecordUserRelate resourceRecordUserRelate=new ResourceRecordUserRelate();
+                    resourceRecordUserRelate.setUserId(selfId);
+                    resourceRecordUserRelate.setResourceRecord(courseAuditRecord.getId());
+                    resourceRecordUserRelateList.add(resourceRecordUserRelate);
+                }
+
                 resourceRecordUserRelateService.addBatch(resourceRecordUserRelateList);
             }
 
@@ -317,7 +337,8 @@ public class ResourceRecordController {
             if("1".equals(courseAuditRecordEditParam.getAuthType()))
             {
                 String userRelateIdsStr=courseAuditRecordEditParam.getUserRelateIds();
-                String[] userRelateIdList = userRelateIdsStr.split(",");
+                String[] userRelateIdArray = userRelateIdsStr.split(",");
+                List<String> userRelateIdList=Arrays.asList(userRelateIdArray);
                 List<ResourceRecordUserRelate> resourceRecordUserRelateList = new ArrayList<>();
                 for(String userRelateId:userRelateIdList)
                 {
@@ -326,6 +347,16 @@ public class ResourceRecordController {
                     resourceRecordUserRelate.setResourceRecord(courseAuditRecord.getId());
                     resourceRecordUserRelateList.add(resourceRecordUserRelate);
                 }
+                //权限中如果没勾选自己,需要自动加入自己
+                String selfId=StpLoginUserUtil.getLoginUser().getId();
+                if(!userRelateIdList.contains(selfId))
+                {
+                    ResourceRecordUserRelate resourceRecordUserRelate=new ResourceRecordUserRelate();
+                    resourceRecordUserRelate.setUserId(selfId);
+                    resourceRecordUserRelate.setResourceRecord(courseAuditRecord.getId());
+                    resourceRecordUserRelateList.add(resourceRecordUserRelate);
+                }
+
                 resourceRecordUserRelateService.addBatch(resourceRecordUserRelateList);
             }
         }
@@ -510,20 +541,27 @@ public class ResourceRecordController {
         param.put("id", req.getParameter("id"));
         Map<String,Object> result=courseAuditRecordService.queryInfo(param);
         //2025.8.20会议后,要求直接在详情进行验权
-        //如果资源是公开的,直接放行,没有权限直接返回错误信息
-        String isHaveAuth="0";
-        if("0".equals(result.get("authType")))
-        {
-            isHaveAuth="1";
-        }
-        else if("1".equals(result.get("authType")))//如果是私密的,检查是否有权限
+        String userEduIdentity=StpLoginUserUtil.getLoginUser().getEduIdentity();
+        System.out.println("----------------------------------------------------------------用户教育身份:"+userEduIdentity);
+        //如果管理员直接放行
+        if(!"0".equals(userEduIdentity))
         {
-            param.put("resourceRecord", req.getParameter("id"));
-            param.put("userId", StpLoginUserUtil.getLoginUser().getId());
-            List<ResourceRecordUserRelate> userRelateList=resourceRecordUserRelateService.allList(param);
-            if(userRelateList.size()>0)isHaveAuth="1";
+            //如果资源是公开的,直接放行,没有权限直接返回错误信息
+            String isHaveAuth="0";
+            if("0".equals(result.get("authType")))
+            {
+                isHaveAuth="1";
+            }
+            else if("1".equals(result.get("authType")))//如果是私密的,检查是否有权限
+            {
+                param.put("resourceRecord", req.getParameter("id"));
+                param.put("userId", StpLoginUserUtil.getLoginUser().getId());
+                List<ResourceRecordUserRelate> userRelateList=resourceRecordUserRelateService.allList(param);
+                if(userRelateList.size()>0)isHaveAuth="1";
+            }
+            System.out.println("----------------------------------------------------------------是否有资源查看权限"+isHaveAuth);
+            if("0".equals(isHaveAuth))return CommonResult.error("您没有访问权限");
         }
-        if("0".equals(isHaveAuth))return CommonResult.error("您没有访问权限");
 
         //评论数
         List<UserCommentVo> commentList=userCommentService.queryList(req.getParameter("id"));

+ 1 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CollegeMapper.xml

@@ -6,7 +6,7 @@
         SELECT
             t1.ID AS id,
             t1.NAME AS name,
-            t1.PARENT_ID AS parentId,
+            IFNULL(t1.PARENT_ID,'')  AS parentId,
             'college' AS infoType
         FROM college t1
         WHERE t1.DELETE_FLAG = 'NOT_DELETE'

+ 6 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseAuditRecordMapper.xml

@@ -292,5 +292,11 @@
         <if test="param.fileName!=null and param.fileName != ''">
             and t2.FILE_NAME like CONCAT('%', #{param.fileName}, '%')
         </if>
+        <if test="param.extendNameList !=null and param.extendNameList.size()>0">
+            and t2.EXTEND_NAME in
+            <foreach collection=" param.extendNameList" close=")" index="index" item="item" open="(" separator=",">
+                #{item}
+            </foreach>
+        </if>
     </select>
 </mapper>

+ 15 - 11
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseInfoMapper.xml

@@ -310,17 +310,21 @@
     <select id="getFinishRate" resultType="java.util.Map">
         SELECT
             z2.courseId AS courseId,
-            IFNULL(TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2),0) AS finishRate
+            CASE
+                when z2.allCount=0 or z2.allCount is null then 0
+                else TRUNC(z1.alreadyCount * 1.0 / z2.allCount, 2)
+            END AS finishRate
         FROM (
             SELECT
-            t2.courseId AS courseId,
+            cin.COURSE_ID AS courseId,
             IFNULL(COUNT(t2.courseId AS courseId),0) AS allCount
-            FROM(
+            FROM COURSE_INFO cin
+            LEFT JOIN (
             SELECT
             cch.ID AS hourId,
             cc.ID AS chapterId,
             ci.COURSE_ID AS courseId
-            FROM (
+            FROM(
             SELECT ci1.* FROM COURSE_INFO ci1
             WHERE ci1.DELETE_FLAG ='NOT_DELETE'
             <if test="courseId != null and courseId != ''">
@@ -330,15 +334,15 @@
             LEFT JOIN COURSE_CHAPTER cc ON ci.COURSE_ID =cc.COURSE_ID AND cc.DELETE_FLAG ='NOT_DELETE'
             LEFT JOIN COURSE_CLASSHOUR cch ON cc.ID=cch.CHAPTER_ID AND cch.DELETE_FLAG ='NOT_DELETE'
             WHERE ci.DELETE_FLAG ='NOT_DELETE'
-            )t2
+            AND cch.ID IS NOT NULL
+            AND cc.ID IS NOT NULL
+            AND ci.COURSE_ID IS NOT NULL
+            )t2 ON cin.COURSE_ID=t2.courseId AND cin.DELETE_FLAG ='NOT_DELETE'
             WHERE 1=1
-            AND t2.hourId IS NOT NULL
-            AND t2.chapterId IS NOT NULL
-            AND t2.courseId IS NOT NULL
             <if test="courseId != null and courseId != ''">
-                AND t2.courseId = #{courseId}
+                AND cin.COURSE_ID = #{courseId}
             </if>
-            GROUP BY t2.courseId
+            GROUP BY cin.COURSE_ID
         )z2
         LEFT JOIN(
             SELECT
@@ -365,7 +369,7 @@
             )t1 ON cin.COURSE_ID=t1.courseId AND cin.DELETE_FLAG ='NOT_DELETE'
             WHERE 1=1
             <if test="courseId != null and courseId != ''">
-                AND t1.courseId = #{courseId}
+                AND cin.COURSE_ID=  #{courseId}
             </if>
             GROUP BY cin.COURSE_ID
         )z1 ON z1.courseId=z2.courseId

+ 6 - 4
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/mapping/CourseStudentCollectMapper.xml

@@ -32,17 +32,19 @@
             IFNULL(ci.END_TIME,'') as endTime,
             IFNULL(ci.VIEW_COUNT ,'') as viewCount,
             IFNULL(ci.HOUR_COUNT ,'') as hourCount
-        FROM COURSE_STUDENT_COLLECT csc
-        LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID = csc.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
+        FROM COURSE_INFO ci
+        LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
+        LEFT JOIN SYS_USER stu ON stu.GRADES_ID =cop.GRADES_ID AND stu.DELETE_FLAG='NOT_DELETE'
+        LEFT JOIN COURSE_STUDENT_COLLECT csc ON ci.COURSE_ID = csc.COURSE_ID AND csc.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN DEV_FILE df ON ci.COVER_IMAGE_ID =df.ID AND df.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co ON ci.COLLEGE_ID=co.ID AND co.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co2 ON ci.COLLEGE_TWO_ID=co2.id AND co2.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_ORG co3 ON ci.COLLEGE_THREE_ID=co3.id AND co3.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN major ma ON ci.MAJOR_ID=ma.id AND ma.DELETE_FLAG ='NOT_DELETE'
         LEFT JOIN SYS_USER su ON su.ID=ci.TEACHER_ID AND su.DELETE_FLAG ='NOT_DELETE'
-        WHERE csc.DELETE_FLAG ='NOT_DELETE'
-        AND ci.DELETE_FLAG ='NOT_DELETE'
+        WHERE ci.DELETE_FLAG ='NOT_DELETE'
         <if test="param.userId !=null and param.userId != ''">
+            AND stu.ID=#{param.userId}
             AND csc.USER_ID =#{param.userId}
         </if>
         <if test="param.collegeId !=null and param.collegeId != ''">

+ 2 - 2
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/PdfUtils.java

@@ -71,8 +71,8 @@ public class PdfUtils {
             tempFile = downloadFile(objectName);
 
             // 2. 执行转换
-             outputPath = convertToPdfLocal(tempFile.getName(),tempFile.getAbsolutePath(), "convert");
-
+            outputPath = convertToPdfLocal(tempFile.getName(),tempFile.getAbsolutePath(), "convert");
+            System.out.println("----------------------------------------------------------------转换后文件路径"+outputPath);
             // 3. 上传转换结果
             uploadToMinio(objectName,outputPath, fileId);
 

+ 1 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/controller/SysOrgController.java

@@ -214,7 +214,7 @@ public class SysOrgController {
      */
     @ApiOperationSupport(order = 7)
     @ApiOperation("获取组织人员树-一次查回")
-    @GetMapping("/sys/org/orgUserTreeSelector")
+    @GetMapping("/bus/org/orgUserTreeSelector")
     public CommonResult<List<Map<String,Object>>> orgUserTreeSelector(HttpServletRequest req) {
         Map param=new HashMap();
         param.put("category",req.getParameter("category"));

+ 1 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/org/mapper/mapping/SysOrgMapper.xml

@@ -9,7 +9,7 @@
         SELECT
         t1.ID AS id,
         t1.NAME AS name,
-        t1.PARENT_ID AS parentId,
+        IFNULL(t1.PARENT_ID,'')  AS parentId,
         'college' AS infoType
         FROM SYS_ORG t1
         WHERE t1.DELETE_FLAG = 'NOT_DELETE'

+ 1 - 1
snowy-plugin/snowy-plugin-sys/snowy-plugin-sys-func/src/main/java/vip/xiaonuo/sys/modular/user/mapper/mapping/SysUserMapper.xml

@@ -26,7 +26,7 @@
         SELECT
             t1.ID AS id,
             t1.NAME AS name,
-            t1.COLLEGE_THREE_ID AS parentId,
+            IFNULL(t1.COLLEGE_THREE_ID,'')  AS parentId,
             'user' AS infoType
         FROM SYS_USER t1
         WHERE t1.DELETE_FLAG = 'NOT_DELETE'