Преглед изворни кода

1.历史开课统计
2.修复文件上传名称不统一

honorfire пре 6 месеци
родитељ
комит
c96470ad19

+ 19 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/controller/CourseOpenController.java

@@ -19,12 +19,14 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import vip.xiaonuo.common.annotation.CommonLog;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.common.pojo.CommonValidList;
 import vip.xiaonuo.disk.domain.CourseOpen;
+import vip.xiaonuo.disk.param.courseInfo.CourseInfoPageParam;
 import vip.xiaonuo.disk.param.courseopen.CourseOpenAddParam;
 import vip.xiaonuo.disk.param.courseopen.CourseOpenEditParam;
 import vip.xiaonuo.disk.param.courseopen.CourseOpenIdParam;
@@ -157,7 +159,24 @@ public class CourseOpenController {
         return CommonResult.data(courseOpenService.queryCourseList(semesterId));
     }
 
+    /**
+     * 课程开课-历史开课统计
+     *
+     * @author honorfire
+     * @date  2025/06/20 15:00
+     */
+    @ApiOperationSupport(order = 1)
+    @ApiOperation("课程开课-历史开课统计")
+    @GetMapping("/disk/courseopen/historyProgressPage")
+    public CommonResult<Page<Map<String,Object>>> historyProgressPage(HttpServletRequest req) {
+        Map param =new HashMap();
+        param.put("courseName", req.getParameter("courseName"));
+        param.put("beginTime", req.getParameter("beginTime"));
+        param.put("endTime", req.getParameter("endTime"));
 
+        Page<Map<String,Object>> list=courseOpenService.historyProgressPage(param);
+        return CommonResult.data(list);
+    }
 
 
 

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/mapper/CourseOpenMapper.java

@@ -41,4 +41,9 @@ public interface CourseOpenMapper extends BaseMapper<CourseOpen> {
     List<Map<String, Object>> queryCourseList(String semesterId);
 
     List<String> selectAccount(@Param("semesterId") String semesterId, @Param("courseId") String courseId);
+
+    /**
+     * 课程开课-历史开课统计
+     */
+    Page<Map<String,Object>> historyProgressPage(@Param("param") Map param, @Param("page") Page<Object> page);
 }

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

@@ -348,10 +348,16 @@
                         cch.ID AS hourId,
                         cc.ID AS chapterId,
                         ci.COURSE_ID AS courseId
-                    FROM COURSE_CLASSHOUR cch
-                    LEFT JOIN COURSE_CHAPTER cc ON cc.ID=cch.CHAPTER_ID AND cc.DELETE_FLAG ='NOT_DELETE'
-                    LEFT JOIN COURSE_INFO ci ON ci.COURSE_ID =cc.COURSE_ID AND ci.DELETE_FLAG ='NOT_DELETE'
-                    WHERE cch.DELETE_FLAG ='NOT_DELETE'
+                    FROM (
+                        SELECT ci1.* FROM COURSE_INFO ci1
+                        WHERE ci1.DELETE_FLAG ='NOT_DELETE'
+                        <if test="courseId != null and courseId != ''">
+                            AND ci1.COURSE_ID = #{courseId}
+                        </if>
+                    ) ci
+                    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
                 WHERE 1=1
                 AND t2.hourId IS NOT NULL

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

@@ -107,6 +107,62 @@
           a.SEMESTER_ID = #{semesterId}
         AND a.COURSE_ID = #{courseId}
   </select>
+    <select id="historyProgressPage" resultType="java.util.Map">
+        SELECT
+            t1.COURSE_ID AS courseId,
+            t1.COURSE_NAME AS courseName,
+            IFNULL(t2.courseOpenCount,0) AS courseOpenCount,
+            IFNULL(t3.count,0) AS videoCount,
+            IFNULL(t4.count,0) AS teachMaterialsCount
+        FROM COURSE_INFO t1
+        LEFT JOIN (
+            SELECT
+                ci.COURSE_ID AS courseId,
+                count(cop.ID) AS courseOpenCount
+            FROM COURSE_INFO ci
+            LEFT JOIN COURSE_OPEN cop ON ci.COURSE_ID =cop.COURSE_ID AND cop.DELETE_FLAG='NOT_DELETE'
+            WHERE ci.DELETE_FLAG ='NOT_DELETE'
+            <if test="param.beginTime != null and param.beginTime != ''">
+                AND cop.CREATE_TIME &gt;= #{param.beginTime}
+            </if>
+            <if test="param.endTime != null and param.endTime != ''">
+                AND cop.CREATE_TIME &lt;= #{param.endTime}
+            </if>
+            GROUP BY ci.COURSE_ID
+        )t2 ON t1.COURSE_ID=t2.courseId
+                 LEFT JOIN (
+            SELECT
+                ci.COURSE_ID AS courseId,
+                count(cr.RELATE_ID) AS count
+            FROM COURSE_INFO ci
+                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'
+                LEFT JOIN COURSE_RELATE cr ON cr.MAIN_ID =cch.ID AND cr.FUNC_TYPE ='1' AND cr.INFO_TYPE ='0' AND cr.CHAPTERHOUR_TYPE ='1'
+            WHERE ci.DELETE_FLAG ='NOT_DELETE'
+              AND cch.ID IS NOT NULL
+              AND cc.ID IS NOT NULL
+              AND ci.COURSE_ID IS NOT NULL
+            GROUP BY ci.COURSE_ID
+        )t3 ON t1.COURSE_ID=t3.courseId
+                 LEFT JOIN (
+            SELECT
+                ci.COURSE_ID AS courseId,
+                count(cr.RELATE_ID) AS count
+            FROM COURSE_INFO ci
+                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'
+                LEFT JOIN COURSE_RELATE cr ON cr.MAIN_ID =cch.ID AND cr.FUNC_TYPE ='2' AND cr.INFO_TYPE ='0' AND cr.CHAPTERHOUR_TYPE ='1'
+            WHERE ci.DELETE_FLAG ='NOT_DELETE'
+              AND cch.ID IS NOT NULL
+              AND cc.ID IS NOT NULL
+              AND ci.COURSE_ID IS NOT NULL
+            GROUP BY ci.COURSE_ID
+        )t4 ON t1.COURSE_ID=t4.courseId
+        WHERE t1.DELETE_FLAG ='NOT_DELETE'
+        <if test="param.courseName !=null and param.courseName != ''">
+            and ci.COURSE_NAME like CONCAT('%', #{param.courseName}, '%')
+        </if>
+    </select>
 
 
 </mapper>

+ 5 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/CourseOpenService.java

@@ -111,4 +111,9 @@ public interface CourseOpenService extends IService<CourseOpen> {
      * @return
      */
     List<Map<String,Object>> queryCourseList(String semesterId);
+
+    /**
+     * 课程开课-历史开课统计
+     */
+    Page<Map<String,Object>> historyProgressPage(Map param);
 }

+ 8 - 0
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/CourseOpenServiceImpl.java

@@ -140,5 +140,13 @@ public class CourseOpenServiceImpl extends ServiceImpl<CourseOpenMapper, CourseO
         return courseOpenMapper.queryCourseList(semesterId);
     }
 
+    /**
+     * 课程开课-历史开课统计
+     */
+    @Override
+    public Page<Map<String,Object>> historyProgressPage(Map param)
+    {
+        return courseOpenMapper.historyProgressPage(param,CommonPageRequest.defaultPage());
+    }
 
 }

+ 1 - 1
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/MinioUtil.java

@@ -139,7 +139,7 @@ public class MinioUtil {
                        ResourceUserFile newUserFile=new  ResourceUserFile();
                        BeanUtil.copyProperties(userFile, newUserFile);
                        String fileName=item.getFileName().substring(0,item.getFileName().lastIndexOf("."));
-                       newUserFile.setFileName(fileName+"("+userFileCount+")"+item.getFileSuffix());
+                       newUserFile.setFileName(fileName+"("+userFileCount+")");
                        newUserFile.setMd5(item.getMd5());
                        newUserFile.setIsDir(0);
                        resourceUserFileMapper.insert(newUserFile);