返回资源分类的资源数量

This commit is contained in:
none 2023-03-15 11:31:42 +08:00
parent cca6d050bc
commit 3b67766ab2
12 changed files with 116 additions and 20 deletions

View File

@ -1,5 +1,6 @@
package xyz.playedu.api.controller.backend;
import cn.hutool.core.lang.hash.Hash;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -69,7 +70,14 @@ public class CourseController {
filter.setDepIds(depIds);
PaginationResult<Course> result = courseService.paginate(page, size, filter);
return JsonResponse.data(result);
HashMap<String, Object> data = new HashMap<>();
data.put("data", result.getData());
data.put("total", result.getTotal());
data.put("category_count", courseService.getCategoryCount());
data.put("pure_total", courseService.total());
return JsonResponse.data(data);
}
@BackendPermissionMiddleware(slug = BPermissionConstant.COURSE)

View File

@ -77,6 +77,8 @@ public class ResourceController {
HashMap<String, Object> data = new HashMap<>();
data.put("result", result);
data.put("category_count", resourceService.getCategoryCount(type));
data.put("pure_total", resourceService.total(type));
if (type.equals(BackendConstant.RESOURCE_TYPE_VIDEO)) {
List<ResourceVideo> resourceVideos = resourceVideoService.chunksByRids(result.getData().stream().map(Resource::getId).toList());

View File

@ -3,6 +3,9 @@ package xyz.playedu.api.mapper;
import org.apache.ibatis.annotations.Mapper;
import xyz.playedu.api.domain.Course;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import xyz.playedu.api.types.mapper.CourseCategoryCountMapper;
import java.util.List;
/**
* @author tengteng
@ -13,6 +16,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@Mapper
public interface CourseMapper extends BaseMapper<Course> {
List<CourseCategoryCountMapper> getCategoryCount();
}

View File

@ -3,18 +3,25 @@ package xyz.playedu.api.mapper;
import org.apache.ibatis.annotations.Mapper;
import xyz.playedu.api.domain.Resource;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import xyz.playedu.api.types.mapper.ResourceCategoryCountMapper;
import java.util.List;
import java.util.Map;
/**
* @author tengteng
* @description 针对表resources的数据库操作Mapper
* @createDate 2023-03-13 10:25:30
* @Entity xyz.playedu.api.domain.Resource
*/
* @author tengteng
* @description 针对表resources的数据库操作Mapper
* @createDate 2023-03-13 10:25:30
* @Entity xyz.playedu.api.domain.Resource
*/
@Mapper
public interface ResourceMapper extends BaseMapper<Resource> {
List<ResourceCategoryCountMapper> getCategoryCount(String type);
}

View File

@ -7,6 +7,7 @@ import xyz.playedu.api.types.paginate.CoursePaginateFiler;
import xyz.playedu.api.types.paginate.PaginationResult;
import java.util.List;
import java.util.Map;
/**
* @author tengteng
@ -42,4 +43,8 @@ public interface CourseService extends IService<Course> {
List<Course> chunks(List<Integer> ids, List<String> fields);
List<Course> chunks(List<Integer> ids);
Map<Integer, Integer> getCategoryCount();
Integer total();
}

View File

@ -7,6 +7,7 @@ import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.types.paginate.ResourcePaginateFilter;
import java.util.List;
import java.util.Map;
/**
* @author tengteng
@ -29,4 +30,7 @@ public interface ResourceService extends IService<Resource> {
List<Resource> chunks(List<Integer> ids, List<String> fields);
Map<Integer, Integer> getCategoryCount(String type);
Integer total(String type);
}

View File

@ -15,14 +15,13 @@ import xyz.playedu.api.service.CourseService;
import xyz.playedu.api.mapper.CourseMapper;
import org.springframework.stereotype.Service;
import xyz.playedu.api.service.internal.ResourceCourseCategoryService;
import xyz.playedu.api.types.mapper.CourseCategoryCountMapper;
import xyz.playedu.api.types.paginate.CoursePaginateFiler;
import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.util.HelperUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author tengteng
@ -208,6 +207,16 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
public List<Course> chunks(List<Integer> ids) {
return list(query().getWrapper().in("id", ids));
}
@Override
public Map<Integer, Integer> getCategoryCount() {
return getBaseMapper().getCategoryCount().stream().collect(Collectors.toMap(CourseCategoryCountMapper::getCid, CourseCategoryCountMapper::getTotal));
}
@Override
public Integer total() {
return Math.toIntExact(count());
}
}

View File

@ -14,15 +14,14 @@ import xyz.playedu.api.mapper.ResourceMapper;
import org.springframework.stereotype.Service;
import xyz.playedu.api.service.ResourceVideoService;
import xyz.playedu.api.service.internal.ResourceCategoryRelationService;
import xyz.playedu.api.types.mapper.ResourceCategoryCountMapper;
import xyz.playedu.api.types.paginate.PaginationResult;
import xyz.playedu.api.types.paginate.ResourcePaginateFilter;
import xyz.playedu.api.util.HelperUtil;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author tengteng
@ -155,6 +154,16 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
public List<Resource> chunks(List<Integer> ids, List<String> fields) {
return list(query().getWrapper().in("id", ids).select(fields));
}
@Override
public Map<Integer, Integer> getCategoryCount(String type) {
return getBaseMapper().getCategoryCount(type).stream().collect(Collectors.toMap(ResourceCategoryCountMapper::getCid, ResourceCategoryCountMapper::getTotal));
}
@Override
public Integer total(String type) {
return Math.toIntExact(count(query().getWrapper().eq("type", type)));
}
}

View File

@ -0,0 +1,16 @@
package xyz.playedu.api.types.mapper;
import lombok.Data;
/**
* @Author 杭州白书科技有限公司
* @create 2023/3/15 11:18
*/
@Data
public class CourseCategoryCountMapper {
private Integer cid;
private Integer total;
}

View File

@ -0,0 +1,16 @@
package xyz.playedu.api.types.mapper;
import lombok.Data;
/**
* @Author 杭州白书科技有限公司
* @create 2023/3/15 11:11
*/
@Data
public class ResourceCategoryCountMapper {
private Integer cid;
private Integer total;
}

View File

@ -17,8 +17,14 @@
</resultMap>
<sql id="Base_Column_List">
id,title,thumb,
charge,class_hour,is_show,
id,title,thumb,
charge,class_hour,is_show,
created_at,updated_at,deleted_at
</sql>
<select id="getCategoryCount" resultType="xyz.playedu.api.types.mapper.CourseCategoryCountMapper">
SELECT `resource_course_category`.`cid` as `cid`, count(*) as `total`
FROM `resource_course_category`
GROUP BY `resource_course_category`.`category_id`;
</select>
</mapper>

View File

@ -21,10 +21,19 @@
</resultMap>
<sql id="Base_Column_List">
id,admin_id,type,
name,extension,size,
disk,file_id,path,
url,created_at,parent_id,
id,admin_id,type,
name,extension,size,
disk,file_id,path,
url,created_at,parent_id,
is_hidden
</sql>
<select id="getCategoryCount" resultType="xyz.playedu.api.types.mapper.ResourceCategoryCountMapper">
SELECT `resource_category`.`cid` as `cid`, count(*) as `total`
FROM `resources`
INNER JOIN `resource_category` ON `resource_category`.`rid` = `resources`.`id`
WHERE `resources`.`type` = #{type}
GROUP BY `resource_category`.`cid`;
</select>
</mapper>