mirror of
https://github.com/PlayEdu/PlayEdu
synced 2025-06-21 03:12:44 +08:00
后台新增:学员的最近课时学习记录api,学员的线上课学习进度api
This commit is contained in:
parent
ad07f20dd7
commit
6e65fc9aa0
@ -37,11 +37,11 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class ExceptionController {
|
public class ExceptionController {
|
||||||
|
|
||||||
@ExceptionHandler(Exception.class)
|
// @ExceptionHandler(Exception.class)
|
||||||
public JsonResponse exceptionHandler(Exception e) {
|
// public JsonResponse exceptionHandler(Exception e) {
|
||||||
log.error(e.getMessage());
|
// log.error(e.getMessage());
|
||||||
return JsonResponse.error("系统错误", 500);
|
// return JsonResponse.error("系统错误", 500);
|
||||||
}
|
// }
|
||||||
|
|
||||||
@ExceptionHandler(ServiceException.class)
|
@ExceptionHandler(ServiceException.class)
|
||||||
public JsonResponse serviceExceptionHandler(ServiceException e) {
|
public JsonResponse serviceExceptionHandler(ServiceException e) {
|
||||||
|
@ -29,8 +29,8 @@ import xyz.playedu.api.request.backend.CourseUserDestroyRequest;
|
|||||||
import xyz.playedu.api.service.UserCourseRecordService;
|
import xyz.playedu.api.service.UserCourseRecordService;
|
||||||
import xyz.playedu.api.service.UserService;
|
import xyz.playedu.api.service.UserService;
|
||||||
import xyz.playedu.api.types.JsonResponse;
|
import xyz.playedu.api.types.JsonResponse;
|
||||||
import xyz.playedu.api.types.paginate.CourseUserPaginateFilter;
|
|
||||||
import xyz.playedu.api.types.paginate.PaginationResult;
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -64,7 +64,7 @@ public class CourseUserController {
|
|||||||
String email = MapUtils.getString(params, "email");
|
String email = MapUtils.getString(params, "email");
|
||||||
String idCard = MapUtils.getString(params, "id_card");
|
String idCard = MapUtils.getString(params, "id_card");
|
||||||
|
|
||||||
CourseUserPaginateFilter filter = new CourseUserPaginateFilter();
|
UserCourseRecordPaginateFilter filter = new UserCourseRecordPaginateFilter();
|
||||||
filter.setCourseId(courseId);
|
filter.setCourseId(courseId);
|
||||||
filter.setName(name);
|
filter.setName(name);
|
||||||
filter.setEmail(email);
|
filter.setEmail(email);
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
package xyz.playedu.api.controller.backend;
|
package xyz.playedu.api.controller.backend;
|
||||||
|
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import org.apache.commons.collections4.MapUtils;
|
import org.apache.commons.collections4.MapUtils;
|
||||||
@ -28,19 +29,18 @@ import xyz.playedu.api.BCtx;
|
|||||||
import xyz.playedu.api.constant.BPermissionConstant;
|
import xyz.playedu.api.constant.BPermissionConstant;
|
||||||
import xyz.playedu.api.constant.CConfig;
|
import xyz.playedu.api.constant.CConfig;
|
||||||
import xyz.playedu.api.constant.SystemConstant;
|
import xyz.playedu.api.constant.SystemConstant;
|
||||||
import xyz.playedu.api.domain.Department;
|
import xyz.playedu.api.domain.*;
|
||||||
import xyz.playedu.api.domain.User;
|
|
||||||
import xyz.playedu.api.domain.UserDepartment;
|
|
||||||
import xyz.playedu.api.event.UserDestroyEvent;
|
import xyz.playedu.api.event.UserDestroyEvent;
|
||||||
import xyz.playedu.api.exception.NotFoundException;
|
import xyz.playedu.api.exception.NotFoundException;
|
||||||
import xyz.playedu.api.middleware.BackendPermissionMiddleware;
|
import xyz.playedu.api.middleware.BackendPermissionMiddleware;
|
||||||
import xyz.playedu.api.request.backend.UserImportRequest;
|
import xyz.playedu.api.request.backend.UserImportRequest;
|
||||||
import xyz.playedu.api.request.backend.UserRequest;
|
import xyz.playedu.api.request.backend.UserRequest;
|
||||||
import xyz.playedu.api.service.DepartmentService;
|
import xyz.playedu.api.service.*;
|
||||||
import xyz.playedu.api.service.UserService;
|
|
||||||
import xyz.playedu.api.service.internal.UserDepartmentService;
|
import xyz.playedu.api.service.internal.UserDepartmentService;
|
||||||
import xyz.playedu.api.types.JsonResponse;
|
import xyz.playedu.api.types.JsonResponse;
|
||||||
import xyz.playedu.api.types.paginate.PaginationResult;
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter;
|
||||||
import xyz.playedu.api.types.paginate.UserPaginateFilter;
|
import xyz.playedu.api.types.paginate.UserPaginateFilter;
|
||||||
import xyz.playedu.api.util.HelperUtil;
|
import xyz.playedu.api.util.HelperUtil;
|
||||||
|
|
||||||
@ -65,6 +65,14 @@ public class UserController {
|
|||||||
|
|
||||||
@Autowired private ApplicationContext context;
|
@Autowired private ApplicationContext context;
|
||||||
|
|
||||||
|
@Autowired private UserCourseHourRecordService userCourseHourRecordService;
|
||||||
|
|
||||||
|
@Autowired private UserCourseRecordService userCourseRecordService;
|
||||||
|
|
||||||
|
@Autowired private CourseHourService courseHourService;
|
||||||
|
|
||||||
|
@Autowired private CourseService courseService;
|
||||||
|
|
||||||
@BackendPermissionMiddleware(slug = BPermissionConstant.USER_INDEX)
|
@BackendPermissionMiddleware(slug = BPermissionConstant.USER_INDEX)
|
||||||
@GetMapping("/index")
|
@GetMapping("/index")
|
||||||
public JsonResponse index(@RequestParam HashMap<String, Object> params) {
|
public JsonResponse index(@RequestParam HashMap<String, Object> params) {
|
||||||
@ -352,4 +360,85 @@ public class UserController {
|
|||||||
|
|
||||||
return JsonResponse.success();
|
return JsonResponse.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}/latest-learn-hours")
|
||||||
|
@SneakyThrows
|
||||||
|
public JsonResponse latestLearnHours(
|
||||||
|
@PathVariable(name = "id") Integer id, @RequestParam HashMap<String, Object> params) {
|
||||||
|
Integer page = MapUtils.getInteger(params, "page", 1);
|
||||||
|
Integer size = MapUtils.getInteger(params, "size", 10);
|
||||||
|
String sortField = MapUtils.getString(params, "sort_field");
|
||||||
|
String sortAlgo = MapUtils.getString(params, "sort_algo");
|
||||||
|
Integer isFinished = MapUtils.getInteger(params, "is_finished");
|
||||||
|
|
||||||
|
UserCourseHourRecordPaginateFilter filter = new UserCourseHourRecordPaginateFilter();
|
||||||
|
filter.setSortAlgo(sortAlgo);
|
||||||
|
filter.setSortField(sortField);
|
||||||
|
filter.setUserId(id);
|
||||||
|
filter.setIsFinished(isFinished);
|
||||||
|
|
||||||
|
PaginationResult<UserCourseHourRecord> result =
|
||||||
|
userCourseHourRecordService.paginate(page, size, filter);
|
||||||
|
|
||||||
|
HashMap<String, Object> data = new HashMap<>();
|
||||||
|
data.put("data", result.getData());
|
||||||
|
data.put("total", result.getTotal());
|
||||||
|
data.put(
|
||||||
|
"hours",
|
||||||
|
courseHourService
|
||||||
|
.chunk(
|
||||||
|
result.getData().stream()
|
||||||
|
.map(UserCourseHourRecord::getHourId)
|
||||||
|
.toList())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.groupingBy(CourseHour::getId)));
|
||||||
|
|
||||||
|
return JsonResponse.data(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}/latest-learn-courses")
|
||||||
|
public JsonResponse latestLearnCourses(
|
||||||
|
@PathVariable(name = "id") Integer id, @RequestParam HashMap<String, Object> params) {
|
||||||
|
Integer page = MapUtils.getInteger(params, "page", 1);
|
||||||
|
Integer size = MapUtils.getInteger(params, "size", 10);
|
||||||
|
String sortField = MapUtils.getString(params, "sort_field");
|
||||||
|
String sortAlgo = MapUtils.getString(params, "sort_algo");
|
||||||
|
Integer isFinished = MapUtils.getInteger(params, "is_finished");
|
||||||
|
|
||||||
|
UserCourseRecordPaginateFilter filter = new UserCourseRecordPaginateFilter();
|
||||||
|
filter.setSortAlgo(sortAlgo);
|
||||||
|
filter.setSortField(sortField);
|
||||||
|
filter.setUserId(id);
|
||||||
|
filter.setIsFinished(isFinished);
|
||||||
|
|
||||||
|
PaginationResult<UserCourseRecord> result =
|
||||||
|
userCourseRecordService.paginate(page, size, filter);
|
||||||
|
|
||||||
|
HashMap<String, Object> data = new HashMap<>();
|
||||||
|
data.put("data", result.getData());
|
||||||
|
data.put("total", result.getTotal());
|
||||||
|
data.put(
|
||||||
|
"courses",
|
||||||
|
courseService
|
||||||
|
.chunks(
|
||||||
|
result.getData().stream()
|
||||||
|
.map(UserCourseRecord::getCourseId)
|
||||||
|
.toList())
|
||||||
|
.stream()
|
||||||
|
.collect(Collectors.groupingBy(Course::getId)));
|
||||||
|
|
||||||
|
return JsonResponse.data(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}/learn-stats")
|
||||||
|
@SneakyThrows
|
||||||
|
public JsonResponse learn(@PathVariable(name = "id") Integer id) {
|
||||||
|
User user = userService.findOrFail(id);
|
||||||
|
|
||||||
|
// 学习时长统计
|
||||||
|
// 今天、昨天、本周、本月
|
||||||
|
// 最近一个月的每天学习时长
|
||||||
|
|
||||||
|
return JsonResponse.data(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import org.apache.ibatis.annotations.Mapper;
|
|||||||
|
|
||||||
import xyz.playedu.api.domain.UserCourseHourRecord;
|
import xyz.playedu.api.domain.UserCourseHourRecord;
|
||||||
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -35,4 +36,8 @@ public interface UserCourseHourRecordMapper extends BaseMapper<UserCourseHourRec
|
|||||||
|
|
||||||
List<UserCourseHourRecordCountMapper> getUserCourseHourCount(
|
List<UserCourseHourRecordCountMapper> getUserCourseHourCount(
|
||||||
Integer userId, List<Integer> courseIds, Integer isFinished);
|
Integer userId, List<Integer> courseIds, Integer isFinished);
|
||||||
|
|
||||||
|
List<UserCourseHourRecord> paginate(UserCourseHourRecordPaginateFilter filter);
|
||||||
|
|
||||||
|
Long paginateCount(UserCourseHourRecordPaginateFilter filter);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
|||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import xyz.playedu.api.domain.UserCourseRecord;
|
import xyz.playedu.api.domain.UserCourseRecord;
|
||||||
import xyz.playedu.api.types.paginate.CourseUserPaginateFilter;
|
import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface UserCourseRecordMapper extends BaseMapper<UserCourseRecord> {
|
public interface UserCourseRecordMapper extends BaseMapper<UserCourseRecord> {
|
||||||
List<UserCourseRecord> paginate(CourseUserPaginateFilter filter);
|
List<UserCourseRecord> paginate(UserCourseRecordPaginateFilter filter);
|
||||||
|
|
||||||
long paginateTotal(CourseUserPaginateFilter filter);
|
long paginateTotal(UserCourseRecordPaginateFilter filter);
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
|
|
||||||
import xyz.playedu.api.domain.UserCourseHourRecord;
|
import xyz.playedu.api.domain.UserCourseHourRecord;
|
||||||
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
||||||
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -49,4 +51,7 @@ public interface UserCourseHourRecordService extends IService<UserCourseHourReco
|
|||||||
|
|
||||||
List<UserCourseHourRecordCountMapper> getUserCourseHourCount(
|
List<UserCourseHourRecordCountMapper> getUserCourseHourCount(
|
||||||
Integer userId, List<Integer> courseIds, Integer isFinished);
|
Integer userId, List<Integer> courseIds, Integer isFinished);
|
||||||
|
|
||||||
|
PaginationResult<UserCourseHourRecord> paginate(
|
||||||
|
int page, int size, UserCourseHourRecordPaginateFilter filter);
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ package xyz.playedu.api.service;
|
|||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
|
||||||
import xyz.playedu.api.domain.UserCourseRecord;
|
import xyz.playedu.api.domain.UserCourseRecord;
|
||||||
import xyz.playedu.api.types.paginate.CourseUserPaginateFilter;
|
|
||||||
import xyz.playedu.api.types.paginate.PaginationResult;
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ public interface UserCourseRecordService extends IService<UserCourseRecord> {
|
|||||||
List<UserCourseRecord> chunk(Integer userId, List<Integer> courseIds);
|
List<UserCourseRecord> chunk(Integer userId, List<Integer> courseIds);
|
||||||
|
|
||||||
PaginationResult<UserCourseRecord> paginate(
|
PaginationResult<UserCourseRecord> paginate(
|
||||||
int page, int size, CourseUserPaginateFilter filter);
|
int page, int size, UserCourseRecordPaginateFilter filter);
|
||||||
|
|
||||||
void destroy(Integer courseId, List<Integer> ids);
|
void destroy(Integer courseId, List<Integer> ids);
|
||||||
|
|
||||||
|
@ -43,9 +43,11 @@ import java.util.stream.Collectors;
|
|||||||
@Service
|
@Service
|
||||||
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements CourseService {
|
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements CourseService {
|
||||||
|
|
||||||
@Autowired private CourseDepartmentService courseDepartmentService;
|
@Autowired
|
||||||
|
private CourseDepartmentService courseDepartmentService;
|
||||||
|
|
||||||
@Autowired private ResourceCourseCategoryService courseCategoryService;
|
@Autowired
|
||||||
|
private ResourceCourseCategoryService courseCategoryService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PaginationResult<Course> paginate(int page, int size, CoursePaginateFiler filter) {
|
public PaginationResult<Course> paginate(int page, int size, CoursePaginateFiler filter) {
|
||||||
@ -201,6 +203,9 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Course> chunks(List<Integer> ids) {
|
public List<Course> chunks(List<Integer> ids) {
|
||||||
|
if (ids == null || ids.size() == 0) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
return list(query().getWrapper().in("id", ids));
|
return list(query().getWrapper().in("id", ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ import xyz.playedu.api.event.UserCourseHourFinishedEvent;
|
|||||||
import xyz.playedu.api.mapper.UserCourseHourRecordMapper;
|
import xyz.playedu.api.mapper.UserCourseHourRecordMapper;
|
||||||
import xyz.playedu.api.service.UserCourseHourRecordService;
|
import xyz.playedu.api.service.UserCourseHourRecordService;
|
||||||
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper;
|
||||||
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -137,4 +139,18 @@ public class UserCourseHourRecordServiceImpl
|
|||||||
public void remove(Integer userId, Integer courseId) {
|
public void remove(Integer userId, Integer courseId) {
|
||||||
remove(query().getWrapper().eq("user_id", userId).eq("course_id", courseId));
|
remove(query().getWrapper().eq("user_id", userId).eq("course_id", courseId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PaginationResult<UserCourseHourRecord> paginate(
|
||||||
|
int page, int size, UserCourseHourRecordPaginateFilter filter) {
|
||||||
|
int pageStart = (page - 1) * size;
|
||||||
|
filter.setPageStart(pageStart);
|
||||||
|
filter.setPageSize(size);
|
||||||
|
|
||||||
|
PaginationResult<UserCourseHourRecord> pageResult = new PaginationResult<>();
|
||||||
|
pageResult.setData(getBaseMapper().paginate(filter));
|
||||||
|
pageResult.setTotal(getBaseMapper().paginateCount(filter));
|
||||||
|
|
||||||
|
return pageResult;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@ import org.springframework.stereotype.Service;
|
|||||||
import xyz.playedu.api.domain.UserCourseRecord;
|
import xyz.playedu.api.domain.UserCourseRecord;
|
||||||
import xyz.playedu.api.mapper.UserCourseRecordMapper;
|
import xyz.playedu.api.mapper.UserCourseRecordMapper;
|
||||||
import xyz.playedu.api.service.UserCourseRecordService;
|
import xyz.playedu.api.service.UserCourseRecordService;
|
||||||
import xyz.playedu.api.types.paginate.CourseUserPaginateFilter;
|
|
||||||
import xyz.playedu.api.types.paginate.PaginationResult;
|
import xyz.playedu.api.types.paginate.PaginationResult;
|
||||||
|
import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@ -98,7 +98,7 @@ public class UserCourseRecordServiceImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PaginationResult<UserCourseRecord> paginate(
|
public PaginationResult<UserCourseRecord> paginate(
|
||||||
int page, int size, CourseUserPaginateFilter filter) {
|
int page, int size, UserCourseRecordPaginateFilter filter) {
|
||||||
Integer pageStart = (page - 1) * size;
|
Integer pageStart = (page - 1) * size;
|
||||||
filter.setPageStart(pageStart);
|
filter.setPageStart(pageStart);
|
||||||
filter.setPageSize(size);
|
filter.setPageSize(size);
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2023 杭州白书科技有限公司
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package xyz.playedu.api.types.paginate;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author 杭州白书科技有限公司
|
||||||
|
*
|
||||||
|
* @create 2023/4/17 17:10
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class UserCourseHourRecordPaginateFilter {
|
||||||
|
private Integer userId;
|
||||||
|
private Integer pageStart;
|
||||||
|
private Integer pageSize;
|
||||||
|
private String sortField;
|
||||||
|
private String sortAlgo;
|
||||||
|
private Integer isFinished;
|
||||||
|
}
|
@ -23,7 +23,7 @@ import lombok.Data;
|
|||||||
* @create 2023/3/24 16:10
|
* @create 2023/3/24 16:10
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class CourseUserPaginateFilter {
|
public class UserCourseRecordPaginateFilter {
|
||||||
private Integer courseId;
|
private Integer courseId;
|
||||||
private String email;
|
private String email;
|
||||||
private String name;
|
private String name;
|
||||||
@ -32,4 +32,6 @@ public class CourseUserPaginateFilter {
|
|||||||
private String sortAlgo;
|
private String sortAlgo;
|
||||||
private Integer pageStart;
|
private Integer pageStart;
|
||||||
private Integer pageSize;
|
private Integer pageSize;
|
||||||
|
private Integer userId;
|
||||||
|
private Integer isFinished;
|
||||||
}
|
}
|
@ -19,8 +19,7 @@
|
|||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id
|
id,user_id,course_id,
|
||||||
,user_id,course_id,
|
|
||||||
hour_id,total_duration,finished_duration,
|
hour_id,total_duration,finished_duration,
|
||||||
real_duration,is_finished,finished_at,
|
real_duration,is_finished,finished_at,
|
||||||
created_at,updated_at
|
created_at,updated_at
|
||||||
@ -51,4 +50,69 @@
|
|||||||
</if>
|
</if>
|
||||||
GROUP BY `course_id`;
|
GROUP BY `course_id`;
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="paginate" resultType="xyz.playedu.api.domain.UserCourseHourRecord">
|
||||||
|
SELECT *
|
||||||
|
FROM `user_course_hour_records` as `t`
|
||||||
|
<where>
|
||||||
|
<if test="userId != null">
|
||||||
|
AND `t`.`user_id` = #{userId}
|
||||||
|
</if>
|
||||||
|
<if test="isFinished != null">
|
||||||
|
AND `t`.`is_finisehd` = #{isFinished}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
<if test="sortAlgo == 'asc'">
|
||||||
|
<choose>
|
||||||
|
<when test="sortField == 'finished_at'">
|
||||||
|
ORDER BY `t`.`finished_at` ASC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'created_at'">
|
||||||
|
ORDER BY `t`.`created_at` ASC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'updated_at'">
|
||||||
|
ORDER BY `t`.`updated_at` ASC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'real_duration'">
|
||||||
|
ORDER BY `t`.`real_duration` ASC
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
ORDER BY `t`.`id` ASC
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</if>
|
||||||
|
<if test="sortAlgo != 'asc'">
|
||||||
|
<choose>
|
||||||
|
<when test="sortField == 'finished_at'">
|
||||||
|
ORDER BY `t`.`finished_at` DESC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'created_at'">
|
||||||
|
ORDER BY `t`.`created_at` DESC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'updated_at'">
|
||||||
|
ORDER BY `t`.`updated_at` DESC
|
||||||
|
</when>
|
||||||
|
<when test="sortField == 'real_duration'">
|
||||||
|
ORDER BY `t`.`real_duration` DESC
|
||||||
|
</when>
|
||||||
|
<otherwise>
|
||||||
|
ORDER BY `t`.`id` DESC
|
||||||
|
</otherwise>
|
||||||
|
</choose>
|
||||||
|
</if>
|
||||||
|
LIMIT #{pageStart}, #{pageSize};
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="paginateCount" resultType="java.lang.Long">
|
||||||
|
SELECT count(1)
|
||||||
|
FROM `user_course_hour_records` as `t`
|
||||||
|
<where>
|
||||||
|
<if test="userId != null">
|
||||||
|
AND `t`.`user_id` = #{userId}
|
||||||
|
</if>
|
||||||
|
<if test="isFinished != null">
|
||||||
|
AND `t`.`is_finisehd` = #{isFinished}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -31,6 +31,12 @@
|
|||||||
<if test="courseId != null">
|
<if test="courseId != null">
|
||||||
AND `user_course_records`.`course_id` = #{courseId}
|
AND `user_course_records`.`course_id` = #{courseId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="isFinished != null">
|
||||||
|
AND `user_course_records`.`is_finished` = #{isFinished}
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
AND `user_course_records`.`user_id` = #{userId}
|
||||||
|
</if>
|
||||||
<if test="name != null and name != ''">
|
<if test="name != null and name != ''">
|
||||||
AND `users`.`name` LIKE concat('%',#{name},'%')
|
AND `users`.`name` LIKE concat('%',#{name},'%')
|
||||||
</if>
|
</if>
|
||||||
@ -50,6 +56,12 @@
|
|||||||
<if test="courseId != null">
|
<if test="courseId != null">
|
||||||
AND `user_course_records`.`course_id` = #{courseId}
|
AND `user_course_records`.`course_id` = #{courseId}
|
||||||
</if>
|
</if>
|
||||||
|
<if test="isFinished != null">
|
||||||
|
AND `user_course_records`.`is_finished` = #{isFinished}
|
||||||
|
</if>
|
||||||
|
<if test="userId != null">
|
||||||
|
AND `user_course_records`.`user_id` = #{userId}
|
||||||
|
</if>
|
||||||
<if test="name != null and name != ''">
|
<if test="name != null and name != ''">
|
||||||
AND `users`.`name` LIKE concat('%',#{name},'%')
|
AND `users`.`name` LIKE concat('%',#{name},'%')
|
||||||
</if>
|
</if>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user